mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-15 05:47:56 -07:00
fb265b610d
It seems like we spend a lot of the game list scanning time in updateAdditionalMetadata, which I suppose makes sense considering how many different files that function attempts to open. With the addition of just one little atomic operation, we can make it safe to call updateAdditionalMetadata without holding a lock.
187 lines
13 KiB
XML
187 lines
13 KiB
XML
<?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>
|
|
<!--The replacement for the old atomic shared_ptr functions was added in C++20, so we can't use it yet-->
|
|
<PreprocessorDefinitions>_SILENCE_CXX20_OLD_SHARED_PTR_ATOMIC_SUPPORT_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>
|