<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ImportGroup Label="PropertySheets" /> <PropertyGroup Label="UserMacros"> <DolphinRelease Condition="'$(DolphinRelease)'!='true' or '$(Configuration)'!='Release'">false</DolphinRelease> <TargetSuffix> </TargetSuffix> <TargetSuffix Condition="'$(Configuration)'=='Debug'">D</TargetSuffix> <DolphinRootDir>$(SolutionDir)..\</DolphinRootDir> <BuildRootDir>$(DolphinRootDir)Build\</BuildRootDir> <BinaryRootDir>$(DolphinRootDir)Binary\</BinaryRootDir> <BinaryOutputDir>$(BinaryRootDir)$(Platform)\</BinaryOutputDir> <ExternalsDir>$(DolphinRootDir)Externals\</ExternalsDir> <CoreDir>$(SolutionDir)Core\</CoreDir> </PropertyGroup> <PropertyGroup> <!-- Opt-in to x64 compiler and tools. Unfortunately we can't set this property here, as it'll be overridden later. Instead, set it from commandline if you're interested in using x64 toolset <PreferredToolArchitecture>x64</PreferredToolArchitecture> --> <IntDir>$(BuildRootDir)$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> <OutDir>$(IntDir)bin\</OutDir> <TargetName Condition="'$(ConfigurationType)'=='Application'">$(ProjectName)$(TargetSuffix)</TargetName> </PropertyGroup> <ItemDefinitionGroup> <!--ClCompile Base--> <ClCompile> <!-- Coagulate all the needed include directories. Order matters! (first hit, first use). Note: Directory containing source file being compiled is always searched first. --> <AdditionalIncludeDirectories>$(CoreDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)Bochs_disasm;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)cpp-optparse;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)cubeb\include;$(ExternalsDir)cubeb\msvc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)curl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)enet\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)ffmpeg\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)GL;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)glslang\glslang\Public;$(ExternalsDir)glslang\SPIRV;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)libpng;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)libusb\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)LZO;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)miniupnpc\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)mbedtls\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)pugixml;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)SFML\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)Vulkan\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)wxWidgets3;$(ExternalsDir)wxWidgets3\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)xxhash;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>HAVE_FFMPEG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>USE_UPNP;USE_USBDK;__LIBUSB__;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_M_X86=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>SFML_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>USE_ANALYTICS=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions Condition="'$(Platform)'=='x64'">_ARCH_64=1;_M_X86_64=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> <!-- Make sure we include a clean version of windows.h. --> <PreprocessorDefinitions Condition="'$(ProjectName)'!='wxWidgets'">WIN32_LEAN_AND_MEAN;NOMINMAX;%(PreprocessorDefinitions)</PreprocessorDefinitions> <!-- This numeral indicates the "minimum system required" to run the resulting program. Dolphin targets Vista+, so it should be 0x0600. However in practice, _WIN32_WINNT just removes up-level API declarations from headers. This is a problem for XAudio2 and XInput, where Dolphin expects to compile against the Win8+ versions of their headers. So while we really need Vista+ level of support, we declare Win8+ here globally. If this becomes a problem, the higher declaration can be contained to just the XAudio2/XInput related code. --> <PreprocessorDefinitions>_WIN32_WINNT=0x0602;%(PreprocessorDefinitions)</PreprocessorDefinitions> <WarningLevel>Level4</WarningLevel> <TreatWarningAsError>true</TreatWarningAsError> <IntrinsicFunctions>true</IntrinsicFunctions> <RuntimeTypeInfo>false</RuntimeTypeInfo> <MinimalRebuild>false</MinimalRebuild> <MultiProcessorCompilation>true</MultiProcessorCompilation> <!--Enable latest C++ standard--> <LanguageStandard>stdcpplatest</LanguageStandard> <!--Enable Standard Conformance--> <AdditionalOptions>/permissive- %(AdditionalOptions)</AdditionalOptions> <!--Enforce some behaviors as standards-conformant when they don't default as such--> <AdditionalOptions>/Zc:inline /Zc:throwingNew /volatile:iso %(AdditionalOptions)</AdditionalOptions> <!--Enable detailed debug info--> <AdditionalOptions>/Zo %(AdditionalOptions)</AdditionalOptions> <!--Treat sources as utf-8--> <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions> <DebugInformationFormat>OldStyle</DebugInformationFormat> <DiagnosticsFormat>Caret</DiagnosticsFormat> <!-- 4996 is for GetVersionEx being marked as deprecated - which is idiotic and there's not much else we can do since many externals use it. The bad part is that there doesn't seem to be a way to only ignore the specific instance we don't care about... 4351 new behavior: elements of array 'array' will be default initialized --> <DisableSpecificWarnings>4996;4351</DisableSpecificWarnings> <!-- Warnings one may want to ignore when using Level4. 4201 nonstandard extension used : nameless struct/union 4127 conditional expression is constant 4100 'identifier' : unreferenced formal parameter 4244 'conversion' conversion from 'type1' to 'type2', possible loss of data Level4 warns if type1==int and there is narrowing 4121 'symbol' : alignment of a member was sensitive to packing 4324 Padding was added at the end of a structure because you specified a __declspec(align) value. 4714 function 'function' marked as __forceinline not inlined --> <DisableSpecificWarnings>4201;4127;4100;4244;4121;4324;4714;%(DisableSpecificWarnings)</DisableSpecificWarnings> <!-- Level4 warnings which should eventually be enabled 4245 'conversion' : conversion from 'type1' to 'type2', signed/unsigned mismatch Currently jits use some annoying code patterns which makes this common --> <DisableSpecificWarnings>4245;%(DisableSpecificWarnings)</DisableSpecificWarnings> <!-- Enable some off-by-default warnings 4263 Non-virtual member function hides base class virtual function 4265 Class has virtual functions, but destructor is not virtual 4946 Reinterpret cast between related types --> <AdditionalOptions>/w44263 /w44265 /w44946 %(AdditionalOptions)</AdditionalOptions> </ClCompile> <!--ClCompile Debug--> <ClCompile Condition="'$(Configuration)'=='Debug'"> <FunctionLevelLinking>true</FunctionLevelLinking> <PreprocessorDefinitions>_DEBUG;_SECURE_SCL=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <Optimization>Disabled</Optimization> </ClCompile> <!--ClCompile Release--> <ClCompile Condition="'$(Configuration)'=='Release'"> <WholeProgramOptimization Condition="'$(DolphinRelease)'=='true'">true</WholeProgramOptimization> <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <OmitFramePointers>true</OmitFramePointers> <StringPooling>true</StringPooling> <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> <BufferSecurityCheck>false</BufferSecurityCheck> <FunctionLevelLinking>false</FunctionLevelLinking> <PreprocessorDefinitions>_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions> </ClCompile> <!--Link Base--> <Link> <GenerateDebugInformation>true</GenerateDebugInformation> <TreatLinkerWarningAsErrors>true</TreatLinkerWarningAsErrors> </Link> <!--Link Release--> <Link Condition="'$(Configuration)'=='Release'"> <LinkTimeCodeGeneration Condition="'$(DolphinRelease)'=='true'">UseLinkTimeCodeGeneration</LinkTimeCodeGeneration> <OptimizeReferences>true</OptimizeReferences> <EnableCOMDATFolding>true</EnableCOMDATFolding> </Link> <!--Link Base:Application--> <Link Condition="'$(ConfigurationType)'=='Application'"> <!--See Common/CompatPatches.cpp--> <ForceSymbolReferences>enableCompatPatches</ForceSymbolReferences> <!--TODO fix up ffmpeg garbage--> <AdditionalOptions>/NODEFAULTLIB:libcmt %(AdditionalOptions)</AdditionalOptions> </Link> <Lib> <TreatLibWarningAsErrors>true</TreatLibWarningAsErrors> <LinkTimeCodeGeneration Condition="'$(DolphinRelease)'=='true'">true</LinkTimeCodeGeneration> </Lib> <!-- Prefer VTune 2015 over 2013 but support both since there is no non-commercial license for 2015 :( --> <ItemDefinitionGroup Condition="Exists('$(VTUNE_AMPLIFIER_XE_2015_DIR)')"> <ClCompile> <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);"$(VTUNE_AMPLIFIER_XE_2015_DIR)\include"</AdditionalIncludeDirectories> </ClCompile> <Link> <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories);"$(VTUNE_AMPLIFIER_XE_2015_DIR)\lib64"</AdditionalLibraryDirectories> </Link> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="Exists('$(VTUNE_AMPLIFIER_XE_2013_DIR)') And !Exists('$(VTUNE_AMPLIFIER_XE_2015_DIR)')"> <ClCompile> <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);"$(VTUNE_AMPLIFIER_XE_2013_DIR)\include"</AdditionalIncludeDirectories> </ClCompile> <Link> <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories);"$(VTUNE_AMPLIFIER_XE_2013_DIR)\lib64"</AdditionalLibraryDirectories> </Link> </ItemDefinitionGroup> </ItemDefinitionGroup> <ItemGroup /> </Project>