aboutsummaryrefslogtreecommitdiff
path: root/mp/src/vpc_scripts/source_win32_base.vpc
blob: 04ef53b875bba2e281bb1b53961517c3a4ed882f (plain) (blame)
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
$Configuration
{
	$General [$VS2012]
	{
		// Request the VS 11 (VS 2012) compiler toolset.
		$PlatformToolset "v110"
	}

	$General [$VS2010 || $VS2012]
	{
		$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 && $VS2012]
	}

	$Compiler
	{
		// When using /analyze (triggered with /define:ANALYZE on the vpc command line) we want
		// to use /MP but not at its most aggressive setting, and we want to forcibly disable lots
		// of warnings (also disabled in platform.h but not everybody includes that).
		// See platform.h for the list of warnings with explanations.
		// warning C6318: Ill-defined __try/__except: use of the constant EXCEPTION_CONTINUE_SEARCH -- bogus
		// warning C6322: Empty _except block
		// Set the stack size threshold to 100,000 to avoid noisy warnings on functions with modest stack usage
		$AdditionalOptions	"/MP3 /analyze /analyze:stacksize100000 /wd6308 /wd6255 /wd6387 /wd6309 /wd6011 /wd6211 /wd6031 /wd6326 /wd6239 " \
		"/wd6285 /wd6237 /wd6235 /wd6240 /wd6323 /wd6326 /wd6335 /wd6320 /wd6250 /wd6384 /wd6318 /wd6322" [$ANALYZE]

		// Specify /define:ALLOWSHADOWING to suppress variable shadowing warnings
		$AdditionalOptions	"$BASE /wd6244 /wd6246" [$ANALYZE && $ALLOWSHADOWING]

		// New warnings in VS 2012 that we want to ignore.
		// warning C4005: 'DXGI_STATUS_OCCLUDED' : macro redefinition
		// warning C6014: Leaking memory 'pThinkParams'. 
		// warning C28159: Consider using 'GetTickCount64' instead of 'GetTickCount'. Reason: GetTickCount overflows roughly every 49 days.
		// warning C28182: Dereferencing NULL pointer. 'pPropMesh' contains the same NULL value as '(CMesh *)=(pPropMesh)' did. 
		// warning C28183: 'entropy->ac_count_ptrs[actbl]' could be '0', and is a copy of the value found in 'entropy->dc_count_ptrs[dctbl]':  this does not adhere to the specification for the function 'memset'. 
		// warning C28197: Possibly leaking memory 'pInfo'.
		// warning C28198: Possibly leaking memory 'kvFrame1' due to an exception.   Is a local catch block needed to clean up memory?
		// warning C28204: 'QueryInterface' : Only one of this overload and the one at c:\program files (x86)\windows kits\8.0\include\um\unknwnbase.h(114) are annotated for _Param_(2): both or neither must be annotated.
		// warning C28247: Model file annotation for function '_vsnprintf': annotation on _Param_(1)/SAL_post, 'RequiresZeroTermination' duplicates header file annotation 'SAL_nullTerminated'. Remove the duplicated annotations from the model file. (Header: c:\program files (x86)\microsoft visual studio 11.0\vc\include\stdio.h(349).)
		// warning C28251: Inconsistent annotation for 'WinMain': this instance has no annotations. See c:\program files (x86)\windows kits\8.0\include\um\winbase.h(2286).
		// warning C28301: No annotations for first declaration of 'InitializeCriticalSection'. See d:\clients\tf3\staging\src\public\tier0\threadtools.h(1373).
		// warning C28195: The function was declared as acquiring memory in 'return' and exited without doing so.
		// warning C6340: Mismatch on sign: 'unsigned short' passed as parameter '6' when some signed type is required in call to 'V_snprintf'.
		// warning C6330: 'const char' passed as parameter '1' when 'unsigned char' is required in call to 'isspace'.
		$AdditionalOptions  "$BASE /wd6014 /wd28159 /wd28182 /wd28183 /wd28197 /wd28198 /wd28204 /wd28247 /wd28251 /wd28301 /wd28195 /wd6340 /wd6330" [$ANALYZE && $VS2012]

		// 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]

		$PreprocessorDefinitions			"$BASE;WIN64;_WIN64;COMPILER_MSVC64" [$WIN64]
		$PreprocessorDefinitions			"$BASE;COMPILER_MSVC32" [$WIN32]

		// Pass on appropriate branch define to preprocessor
		$PreprocessorDefinitions		"$BASE;STAGING_ONLY" [$STAGING_ONLY]
		$PreprocessorDefinitions		"$BASE;TF_BETA" [$TF_BETA]
	}
}