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

$IgnoreRedundancyWarning	"ON"

// Disable frame pointer omission to allow fast stack walking, necessary for
// good ETW profiling.
$Conditional  NOFPO  "1"

$MacroRequired				"SRCDIR"
$MacroRequired				"OUTLIBNAME"
$MacroRequired				"OUTLIBDIR"
$MacroRequired				"LIBPUBLIC"
$MacroRequired				"LIBCOMMON"
$MacroRequired				"PLATSUBDIR"
$MacroRequiredAllowEmpty	"GAMENAME"
$MacroRequiredAllowEmpty	"INTERMEDIATESUBDIR"
$MacroRequiredAllowEmpty	"_UNITYSUBDIR"
$MacroRequiredAllowEmpty	"_STATICSUBDIR"
$Macro						"_SUBDIRSUFFIX"		"$INTERMEDIATESUBDIR$_STATICSUBDIR$GAMENAME$PLATSUBDIR$_UNITYSUBDIR"

$Configuration "Release"
{
	$General
	{
		// General
		$OutputDirectory					"$OUTLIBDIR"
		$IntermediateDirectory				".\Release$_SUBDIRSUFFIX"		[!$RETAIL && !$PROFILE]
		$IntermediateDirectory				".\Retail$_SUBDIRSUFFIX"		[$RETAIL]
		$IntermediateDirectory				".\Profile$_SUBDIRSUFFIX"		[!$RETAIL && $PROFILE]
		$ExtensionsToDeleteOnClean
		$BuildLogFile
		$InheritedProjectPropertySheets

		// Project Defaults
		$ConfigurationType					"Static Library (.lib)"
		$UseOfMFC
		$UseOfATL
		$MinimizeCRTUseInATL
		$CharacterSet						"Use Multi-Byte Character Set"
		$CommonLanguageRuntimeSupport
		$WholeProgramOptimization			"Use Link Time Code Generation" [$LTCG]
	}

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

	$Compiler
	{
		// General
		$AdditionalIncludeDirectories		"$SRCDIR\common;$SRCDIR\public;$SRCDIR\public\tier0;$SRCDIR\public\tier1"
		$Resolve#UsingReferences
		$DebugInformationFormat				"C7 Compatible (/Z7)"
		$SuppressStartupBanner
		$WarningLevel						"Level 4 (/W4)"
		$Detect64bitPortabilityIssues		"Yes (/Wp64)"
		$TreatWarningsAsErrors
		$UseUNICODEResponseFiles			"No"

		// Optimization
		$Optimization						"Maximize Speed (/O2)"
		$InlineFunctionExpansion			"Any Suitable (/Ob2)"
		$EnableIntrinsicFunctions			"Yes (/Oi)"
		$FavorSizeOrSpeed					"Favor Fast Code (/Ot)"
		$OmitFramePointers
		$EnableFiberSafeOptimizations
		$WholeProgramOptimization

		// Preprocessor
		$PreprocessorDefinitions			"$BASE;WIN32;_WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_ALLOW_RUNTIME_LIBRARY_MISMATCH;_ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH;_ALLOW_MSC_VER_MISMATCH;%(PreprocessorDefinitions)"
		$PreprocessorDefinitions			"$BASE;RELEASEASSERTS" [$RELEASEASSERTS]
		$IgnoreStandardIncludePath
		$GeneratePreprocessedFile
		$KeepComments

		// Code Generation
		$EnableStringPooling				"Yes (/GF)"
		$EnableMinimalRebuild
		$EnableC++Exceptions				"No"
		$SmallerTypeCheck
		$BasicRuntimeChecks
		$RuntimeLibrary						"Multi-threaded (/MT)"
		$StructMemberAlignment
		$BufferSecurityCheck                "No"	[$RETAIL]
		$BufferSecurityCheck 				"Yes"	[!$RETAIL]
		$EnableFunctionLevelLinking			"Yes (/Gy)"
		$EnableEnhancedInstructionSet
		$FloatingPointModel					"Fast (/fp:fast)"
		$EnableFloatingPointExceptions

		// Language
		$DisableLanguageExtensions
		$DefaultCharUnsigned
		$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		"No"
		$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)"

		// Enable extra debugging information. This switch requires VS 2013 Update 3.
		// With VS 2013 make sure that Edit-And-Continue is disabled in the debugger settings so that
		// the debugger uses the enhanced debug information.
		// http://randomascii.wordpress.com/2013/09/11/debugging-optimized-codenew-in-visual-studio-2012/
		$AdditionalOptions					"$BASE /Zo"
		$AdditionalOptions					"$BASE /Oy-"	[$NOFPO]
	}

	$Librarian
	{
		// General
		$OutputFile							"$OUTLIBDIR\$OUTLIBNAME.lib"
		$AdditionalDependencies
		$AdditionalLibraryDirectories
		$SuppressStartupBanner				"Yes (/NOLOGO)"
		$ModuleDefinitionFileName
		$IgnoreAllDefaultLibraries
		$IgnoreSpecificLibrary
		$ExportNamedFunctions
		$ForceSymbolReferences
		$UseUNICODEResponseFiles			"No"
		$LinkLibraryDependencies

		// Command Line
		$AdditionalOptions
	}

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

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

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

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

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

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