<?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> <!-- Coagulate external include directories. Order matters! (first hit, first use). Note: Directory containing source file being compiled is always searched first. --> <ExternalIncludePath>$(ExternalsDir)Bochs_disasm;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)bzip2;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)cpp-optparse;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)FreeSurround\include;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)cubeb\include;$(ExternalsDir)cubeb\msvc;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)curl\include;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)discord-rpc\include;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)ed25519;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)enet\include;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)ffmpeg\include;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)fmt\include;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)GL;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)glslang;$(ExternalsDir)glslang\StandAlone;$(ExternalsDir)glslang\glslang\Public;$(ExternalsDir)glslang\SPIRV;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)imgui;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)liblzma\api;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)libpng;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)libusb\libusb;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)LZO;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)mGBA\mgba\include;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)miniupnpc\src;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)minizip;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)mbedtls\include;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)OpenAL\include;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)picojson;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)pugixml;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)rangeset\include;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)SFML\include;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)soundtouch;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)Vulkan\include;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)WIL\include;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)xxhash;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)zlib;$(ExternalIncludePath)</ExternalIncludePath> <ExternalIncludePath>$(ExternalsDir)zstd\lib;$(ExternalIncludePath)</ExternalIncludePath> </PropertyGroup> <ItemDefinitionGroup> <!--ClCompile Base--> <ClCompile> <AdditionalIncludeDirectories>$(CoreDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <!--Base external header policy: ignore all warnings except template instantiations, and disable analyzer--> <ExternalWarningLevel>TurnOffAllWarnings</ExternalWarningLevel> <ExternalTemplatesDiagnostics>true</ExternalTemplatesDiagnostics> <DisableAnalyzeExternal>true</DisableAnalyzeExternal> <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> <PreprocessorDefinitions>HAS_LIBMGBA;%(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> <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> </ItemDefinitionGroup> <ItemGroup /> </Project>