//-----------------------------------------------------------------------------
//	SOURCE_EXE_WIN_WIN32_DEBUG.VPC
//
//	Base Settings for Source(TM) Projects
//-----------------------------------------------------------------------------

$IgnoreRedundancyWarning	"ON"

$MacroRequired				"SRCDIR"
$MacroRequired				"OUTBINNAME"
$MacroRequired				"OUTBINDIR"
$MacroRequired				"LIBPUBLIC"
$MacroRequired				"LIBCOMMON"
$MacroRequired				"PLATSUBDIR"
$MacroRequiredAllowEmpty	"GAMENAME"
$MacroRequiredAllowEmpty	"INTERMEDIATESUBDIR"
$MacroRequiredAllowEmpty	"_UNITYSUBDIR"
$MacroRequiredAllowEmpty	"_STATICSUBDIR"
$Macro						"_SUBDIRSUFFIX"		"$INTERMEDIATESUBDIR$_STATICSUBDIR$GAMENAME$PLATSUBDIR$_UNITYSUBDIR"

$Configuration "Debug"
{
	$General	
	{
		// General
		$OutputDirectory					".\Debug$_SUBDIRSUFFIX"
		$IntermediateDirectory				".\Debug$_SUBDIRSUFFIX"
		$ExtensionsToDeleteOnClean
		$BuildLogFile
		$InheritedProjectPropertySheets

		// Project Defaults
		$ConfigurationType					"Application (.exe)"
		$UseOfMFC
		$UseOfATL
		$MinimizeCRTUseInATL
		$CharacterSet						"Use Multi-Byte Character Set"
		$CommonLanguageRuntimeSupport
		$WholeProgramOptimization
	}

	$Debugging
	{
		// Action
		$Command
		$CommandArguments
		$WorkingDirectory
		$Attach
		$DebuggerType
		$Environment
		$MergeEnvironment
		$SQLDebugging
	}

	$Compiler
	{
		// General
		$AdditionalIncludeDirectories			"$SRCDIR\common;$SRCDIR\public;$SRCDIR\public\tier0;$SRCDIR\public\tier1"
		$Resolve#UsingReferences
		$DebugInformationFormat					"Program Database for Edit & Continue (/ZI)" [$WIN32]
		$DebugInformationFormat					"Program Database (/Zi)" [$WIN64]
		$SuppressStartupBanner		
		$WarningLevel							"Level 4 (/W4)"
		$TreatWarningsAsErrors					"No"
		$UseUNICODEResponseFiles				"No"

		// Optimization
		$Optimization							"Disabled (/Od)"
		$InlineFunctionExpansion
		$EnableIntrinsicFunctions
		$FavorSizeOrSpeed
		$OmitFramePointers
		$EnableFiberSafeOptimizations
		$WholeProgramOptimization

		// Preprocessor
		$PreprocessorDefinitions			"$BASE;WIN32;_WIN32;_DEBUG;DEBUG;_WINDOWS;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)"
		$PreprocessorDefinitions			"$BASE;_HAS_ITERATOR_DEBUGGING=0;_ALLOW_RUNTIME_LIBRARY_MISMATCH;_ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH;_ALLOW_MSC_VER_MISMATCH;" [!$WIN64&&!$VS2015]
		$IgnoreStandardIncludePath
		$GeneratePreprocessedFile
		$KeepComments

		// Code Generation
		$EnableStringPooling					"Yes (/GF)"
		// EnableMinimalRebuild is incompatible with /MP (multi-processor builds)
		// and it also makes it hard to iterate on warnings because the compiler
		// detects that there is no reason to recompile when you request it.
		// It should always be off? It should definitely be off for /analyze builds.
		//$EnableMinimalRebuild				"Yes (/Gm)" [!$ANALYZE]
		$EnableC++Exceptions					"No"
		$SmallerTypeCheck
		$BasicRuntimeChecks						"Default"
		$RuntimeLibrary							"Multi-threaded Debug (/MTd)"
		$StructMemberAlignment
		$BufferSecurityCheck					"Yes"
		$EnableFunctionLevelLinking
		$EnableEnhancedInstructionSet
		$FloatingPointModel						"Fast (/fp:fast)"
		$EnableFloatingPointExceptions

		// Language
		$DisableLanguageExtensions
		$DefaultCharUnsigned					"No"
		$TreatWCHAR_TAsBuiltInType				"Yes (/Zc:wchar_t)"
		$ForceConformanceInForLoopScope			"Yes (/Zc:forScope)"
		$EnableRunTimeTypeInfo					"Yes (/GR)"
		$OpenMPSupport							"No"

		// Precompiled Headers
		$Create/UsePrecompiledHeader			"Not Using Precompiled Headers"
		$Create/UsePCHThroughFile
		$PrecompiledHeaderFile

		// Output Files
		$ExpandAttributedSource					"No"
		$AssemblerOutput						"No Listing"
		$ASMListLocation						"$(IntDir)/"
		$ObjectFileName							"$(IntDir)/"
		$ProgramDatabaseFileName				"$(IntDir)/"
		$GenerateXMLDocumentationFiles
		$XMLDocumentationFileName

		// Browse Information
		$EnableBrowseInformation				"None"
		$BrowseFile								"$(IntDir)/"

		// Advanced
		$CallingConvention
		$CompileAs								"Compile as C++ Code (/TP)"
		$DisableSpecificWarnings
		$ForceIncludes
		$Force#Using
		$ShowIncludes
		$UndefinePreprocessorDefinitions
		$UndefineAllPreprocessorDefinitions
		$UseFullPaths							"Yes (/FC)"
		$OmitDefaultLibraryNames
		$ErrorReporting							"Prompt Immediately (/errorReport:prompt)"

		// Command Line
		$AdditionalOptions
	}

	$Linker
	{
		// General
		$OutputFile								"$(OutDir)/$OUTBINNAME.exe"
		$ShowProgress							"Not Set"
		$Version
		$EnableIncrementalLinking				"Yes (/INCREMENTAL)"
		$SuppressStartupBanner					"Yes (/NOLOGO)"
		$IgnoreImportLibrary
		$RegisterOutput
		$AdditionalLibraryDirectories
		$LinkLibraryDependencies
		$UseLibraryDependencyInputs
		$UseUNICODEResponseFiles				"No"

		// Input
		$AdditionalDependencies
		$IgnoreAllDefaultLibraries
		$IgnoreSpecificLibrary					"libc;libcd;libcmt;libcpmt;libcpmt1"
		$ModuleDefinitionFile
		$AddModuleToAssembly
		$EmbedManagedResourceFile
		$ForceSymbolReferences
		$DelayLoadedDLLs
		$AssemblyLinkResource

		// Manifest File
		$GenerateManifest						"Yes"
		$ManifestFile
		$AdditionalManifestDependencies
		$AllowIsolation
		$UACExecutionLevel

		// Debugging
		$GenerateDebugInfo						"Yes (/DEBUG)"
		$GenerateProgramDatabaseFile			"$(IntDir)/$(TargetName).pdb"
		$StripPrivateSymbols
		$MapExports
		$DebuggableAssembly

		// System
		$SubSystem								"Windows (/SUBSYSTEM:WINDOWS)"
		$HeapReserveSize
		$HeapCommitSize
		$StackReserveSize
		$StackCommitSize
		$EnableLargeAddresses
		$TerminalServer
		$SwapRunFromCD
		$SwapRunFromNetwork
		$Driver

		// DYNAMICBASE/ASLR in debug builds is annoying and not helpful.
		$RandomizedBaseAddress				"false"

		// Optimization
		$References
		$EnableCOMDATFolding
		$OptimizeForWindows98
		$FunctionOrder
		$ProfileGuidedDatabase
		$LinkTimeCodeGeneration

		// Embedded IDL
		$MIDLCommands
		$IgnoreEmbeddedIDL
		$MergeIDLBaseFileName
		$TypeLibrary
		$TypeLibResourceID

		// Advanced
		$EntryPoint
		$NoEntryPoint
		$SetChecksum
		$BaseAddress							"$LOADADDRESS_DEVELOPMENT"
		$FixedBaseAddress
		$TurnOffAssemblyGeneration
		$DelayLoadedDLL
		$ImportLibrary
		$MergeSections
		$TargetMachine						
		$Profile
		$CLRThreadAttribute
		$CLRImageType
		$KeyFile
		$KeyContainer
		$DelaySign
		$ErrorReporting							"Prompt Immediately (/ERRORREPORT:PROMPT)"
		$CLRUnmanagedCodeCheck
		// SAFE_SEH should always be disabled on debug builds.
		$ImageHasSafeExceptionHandlers		"false"

		// Command Line
		$AdditionalOptions						
	}

	$ManifestTool
	{
		// General
		$SuppressStartupBanner				"Yes (/nologo)"
		$VerboseOutput
		$AssemblyIdentity
		$UseUNICODEResponseFiles
		$UseFAT32WorkAround

		// Input And Output
		$AdditionalManifestFiles			"$SRCDIR\public\windows_default.manifest" [!$SOURCESDK]
		$InputResourceManifests
		$EmbedManifest
		$OutputManifestFile
		$ManifestResourceFile
		$GenerateCatalogFiles
		$DependencyInformationFile

		// Isolated COM
		$TypeLibraryFile
		$RegistrarScriptFile
		$ComponentFileName
		$ReplacementsFile

		// Advanced
		$UpdateFileHashes
		$UpdateFileHashesSearchPath

		// Command Line
		$AdditionalOptions						
	}

	$XMLDocumentGenerator
	{
		// General
		$SuppressStartupBanner				"Yes (/nologo)"
		$ValidateIntelliSense
		$AdditionalDocumentFiles
		$OutputDocumentFile
		$DocumentLibraryDependencies
		$UseUNICODEResponseFiles
	}

	$BrowseInformation
	{
		$SuppressStartupBanner				"Yes (/nologo)"	
		$OutputFile							"$(OutDir)/$OUTBINNAME.bsc"
		$AdditionalOptions
	}

	$Resources
	{
		// General
		$PreprocessorDefinitions				"_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)"
		$Culture								"English (United States) (0x409)"
		$AdditionalIncludeDirectories
		$IgnoreStandardIncludePath
		$ShowProgress
		$ResourceFileName

		// Command Line
		$AdditionalOptions						
	}

	$PreBuildEvent
	{
		$CommandLine
		$Description
		$ExcludedFromBuild						"No"
	}

	$PreLinkEvent
	{
		$CommandLine
		$Description
		$ExcludedFromBuild						"No"
	}

	$PostBuildEvent
	{
		$CommandLine
		$Description
		$ExcludedFromBuild						"No"
	}

	$CustomBuildStep
	{
		// General
		$CommandLine
		$Description
		$Outputs
		$AdditionalDependencies
	}
}