<?xml version="1.0" encoding="utf-8"?> <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="Base.Macros.props" Condition="'$(BaseMacrosImported)'==''" /> <PropertyGroup> <IntDir>$(BuildRootDir)$(Platform)\$(Configuration)\$(ProjectName)\</IntDir> <OutDir>$(IntDir)bin\</OutDir> <TargetName Condition="'$(ConfigurationType)'=='Application'">$(ProjectName)$(TargetSuffix)</TargetName> <!--Set link /INCREMENTAL:NO to remove some entropy from builds (assists with /Brepro)--> <LinkIncremental>false</LinkIncremental> </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)Bochs_disasm;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)bzip2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)cpp-optparse;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)FreeSurround\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)cubeb\include;$(ExternalsDir)cubeb\msvc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)curl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)discord-rpc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)ed25519;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)enet\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)ffmpeg\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)fmt\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)GL;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)glslang;$(ExternalsDir)glslang\StandAlone;$(ExternalsDir)glslang\glslang\Public;$(ExternalsDir)glslang\SPIRV;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)imgui;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)liblzma\api;%(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)minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)mbedtls\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)OpenAL\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)picojson;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)pugixml;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)rangeset\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)SFML\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)soundtouch;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)Vulkan\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)WIL\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)xxhash;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ExternalsDir)zstd\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>FMT_HEADER_ONLY=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> <!-- It would be a good idea to disable _CRT_SECURE_NO_WARNINGS and get rid of e.g. C string parsing funcs Unfortunately this also complains about FILE* APIs, which can be inconvenient to replace. --> <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <!--IOS net code uses some ipv4-only functions which are marked as deprecated by winsock2--> <PreprocessorDefinitions>_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <!--Currently needed for some code in StringUtil used only on Android--> <PreprocessorDefinitions>_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>USE_UPNP;USE_USBDK;__LIBUSB__;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>SFML_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>USE_ANALYTICS=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>USE_DISCORD_PRESENCE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIL_SUPPRESS_EXCEPTIONS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>LZMA_API_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions Condition="'$(Platform)'=='x64'">_ARCH_64=1;_M_X86=1;_M_X86_64=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions Condition="'$(Platform)'=='ARM64'">_ARCH_64=1;_M_ARM_64=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions Condition="'$(Platform)'=='x64'">HAVE_FFMPEG;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>USE_GDBSTUB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions Condition="'$(Platform)'!='ARM64'">HAS_OPENGL;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>HAS_VULKAN;%(PreprocessorDefinitions)</PreprocessorDefinitions> <!-- Make sure we include a clean version of windows.h. --> <PreprocessorDefinitions>WIN32_LEAN_AND_MEAN;NOMINMAX;%(PreprocessorDefinitions)</PreprocessorDefinitions> <WarningLevel>Level4</WarningLevel> <TreatWarningAsError>true</TreatWarningAsError> <IntrinsicFunctions>true</IntrinsicFunctions> <RuntimeTypeInfo>false</RuntimeTypeInfo> <MinimalRebuild>false</MinimalRebuild> <FunctionLevelLinking>true</FunctionLevelLinking> <MultiProcessorCompilation>true</MultiProcessorCompilation> <!--Enable latest C++ standard--> <LanguageStandard>stdcpplatest</LanguageStandard> <!--Enable Standard Conformance--> <ConformanceMode>true</ConformanceMode> <!--Enforce some behaviors as standards-conformant when they don't default as such.--> <AdditionalOptions>/Zc:externConstexpr,lambda,preprocessor,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> <!-- 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> <!-- Temporarily disable warnings to enable /Zc:preprocessor compatibility with WinSDK headers. 5105 macro expansion producing 'defined' has undefined behavior --> <DisableSpecificWarnings>5105;%(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> <AdditionalOptions>/Brepro %(AdditionalOptions)</AdditionalOptions> <!-- A (currently) hidden switch, like /Brepro, furthermore enabling warnings about non-deterministic code. This may be advantageous over /Brepro, which inits __DATE__, __TIME__, etc. equal to 1 (and allows them to be redefined), which could have unexpected results. --> <AdditionalOptions>/experimental:deterministic %(AdditionalOptions)</AdditionalOptions> </ClCompile> <!--ClCompile Debug--> <ClCompile Condition="'$(Configuration)'=='Debug'"> <PreprocessorDefinitions>_DEBUG;_SECURE_SCL=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> <Optimization>Disabled</Optimization> </ClCompile> <ClCompile Condition="'$(Configuration)'=='Debug' And '$(EnableASAN)'=='true'"> <BasicRuntimeChecks>Default</BasicRuntimeChecks> </ClCompile> <!--ClCompile Release--> <ClCompile Condition="'$(Configuration)'=='Release'"> <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <OmitFramePointers>true</OmitFramePointers> <StringPooling>true</StringPooling> <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> <BufferSecurityCheck>false</BufferSecurityCheck> <PreprocessorDefinitions>_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalOptions>/Gw %(AdditionalOptions)</AdditionalOptions> <WholeProgramOptimization Condition="'$(DolphinRelease)'=='true'">true</WholeProgramOptimization> </ClCompile> <!--Link Base--> <Link> <GenerateDebugInformation>true</GenerateDebugInformation> <TreatLinkerWarningAsErrors>true</TreatLinkerWarningAsErrors> <AdditionalOptions>/Brepro %(AdditionalOptions)</AdditionalOptions> </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> <AdditionalOptions>/Brepro %(AdditionalOptions)</AdditionalOptions> </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>