forked from hitmen047/Source-PlusPlus
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsource_win32_base.vpc
67 lines (59 loc) · 3.49 KB
/
source_win32_base.vpc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// Settings for /analyze are in a separate .vpc file so that they can be
// changed without triggering a full rebuild of non-analyze builds. On non-analyze
// builds the analyze.vpc file will not be listed as a dependency.
$Include "$SRCDIR\vpc_scripts\source_win32_analyze.vpc" [$ANALYZE]
$Configuration
{
$General
{
// Request a specific compiler toolset.
//$PlatformToolset "v100" [$VS2010]
//$PlatformToolset "v110_xp" [$VS2012 && !$ANALYZE] // VS 2012 targeting Windows XP - http://msdn.microsoft.com/en-us/library/vstudio/jj851139.aspx
//$PlatformToolset "v110" [$VS2012 && $ANALYZE] // VS 2012 for /analyze
//$PlatformToolset "v120_xp" [$VS2013 && !$ANALYZE] // VS 2013 targeting Windows XP - http://msdn.microsoft.com/en-us/library/vstudio/jj851139.aspx
//$PlatformToolset "v120" [$VS2013 && $ANALYZE] // VS 2013 for /analyze
// Force VS 2015
$PlatformToolset "v140"
}
$General
{
$ExecutableDirectories "$(ExecutablePath);$(Path)"
// We need to override mt.exe for Win7 compatibiity. Append paths before $(ExecutablePath) if you need VS to use your tools rather than its own
$ExecutableDirectories "$SRCDIR\devtools\vstools;$BASE"
// VS 2012 compiles fine but does not link. We want to redirect to stub versions of
// the tools (like link.exe and mt.exe) so that the link stage will be NOPed when
// doing /analyze builds.
$ExecutableDirectories "$SRCDIR\devtools\vs_nop_tools;$BASE" [$ANALYZE]
}
$Compiler
{
$MultiProcessorCompilation "True"
// warning C4316: object allocated on the heap may not be aligned 16
// warning C4594: stupid can never be instantiated crap where it thinks parents are inaccessable but it doesn't matter.
// warning C4457 & C4456 & C4458 & C4459: variable shadowing (hiding functions/variables with new var with same name.)
// warning C4624: destructor was implicitly defined as deleted.
// warning C4577: some exception crap. We disable exceptions so this can bugger off.
// Force disable this warning...
$DisableSpecificWarnings "$BASE;4316;4594;4457;4456;4458;4459;4624;4577" //[$VS2013]
// Having lots of warnings makes it harder to notice new, and possibly
// important warnings, both on buildbot and in the output window. Lots
// of warnings also makes it harder to skip through errors in the output
// window since F8 stops on both warnings and errors. The only way to
// keep the warning count down is to have warnings-as-errors.
// We will not be warning free on 64-bit for a while...
$TreatWarningsAsErrors "Yes (/WX)" [!$ANALYZE && !$WIN64]
// Defines to differentiate 32 from 64 bit builds
$PreprocessorDefinitions "$BASE;PLATFORM_64BITS;WIN64;_WIN64;COMPILER_MSVC64" [$WIN64]
$PreprocessorDefinitions "$BASE;COMPILER_MSVC32" [$WIN32]
// Following forced for VS 2015.
// /Gw is a VS 2013 option that puts global and static variables in individual sections so that the
// linker can discard unreferenced data. When building @client /dota with linker optimizations this
// reduces the client.dll size by about 1.14%. When linker optimizations are disabled this has no
// effect. This option does not show up in the IDE so we need to add it in $AdditionalOptions.
// http://blogs.msdn.com/b/vcblog/archive/2013/09/11/introducing-gw-compiler-switch.aspx
$AdditionalOptions "$BASE /Gw" //[$VS2013]
// Strip unreferenced inline functions from object files to shrink .obj files and .lib files,
// improve linker speed, and improve conformance. Requires VS 2013 Update 3
$AdditionalOptions "$BASE /Zc:inline" //[$VS2013]
}
}