summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorShawn Hoffman <godisgovernment@gmail.com>2022-07-31 00:39:35 -0700
committerShawn Hoffman <godisgovernment@gmail.com>2022-08-02 22:24:22 -0700
commitc5da2877cc8059e6bd889e13f9cf91bd8d5798b5 (patch)
treead381bc062212d33134b2b7888fdeab57bccec42 /Source
parent7d2d5d914bf3cacbecbb0bf8a642b616744aad54 (diff)
msbuild: refactor to reduce rebuild events
* moves dolphin-specific settings out of Base.props * creates exports.props for externals, allowing to easily import individual Externals * corrects some cruft that accumulated and probably contributed to msbuild overbuilding
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/DolphinLib.vcxproj31
-rw-r--r--Source/Core/DolphinNoGUI/DolphinNoGUI.vcxproj4
-rw-r--r--Source/Core/DolphinQt/DolphinQt.vcxproj17
-rw-r--r--Source/Core/DolphinTool/DolphinTool.vcxproj8
-rw-r--r--Source/Core/WinUpdater/WinUpdater.vcxproj25
-rw-r--r--Source/DSPTool/DSPTool.vcxproj5
-rw-r--r--Source/PCH/pch.vcxproj2
-rw-r--r--Source/UnitTests/UnitTests.vcxproj4
-rw-r--r--Source/VSProps/Base.Dolphin.props87
-rw-r--r--Source/VSProps/Base.props126
10 files changed, 162 insertions, 147 deletions
diff --git a/Source/Core/DolphinLib.vcxproj b/Source/Core/DolphinLib.vcxproj
index 92398e81ef..ae19db8c19 100644
--- a/Source/Core/DolphinLib.vcxproj
+++ b/Source/Core/DolphinLib.vcxproj
@@ -12,6 +12,7 @@
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VSPropsDir)Base.props" />
+ <Import Project="$(VSPropsDir)Base.Dolphin.props" />
<Import Project="$(VSPropsDir)PCHUse.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
@@ -27,6 +28,36 @@
<Project>{41279555-f94f-4ebc-99de-af863c10c5c4}</Project>
</ProjectReference>
</ItemGroup>
+ <Import Project="$(ExternalsDir)Bochs_disasm\exports.props" />
+ <Import Project="$(ExternalsDir)bzip2\exports.props" />
+ <Import Project="$(ExternalsDir)cpp-optparse\exports.props" />
+ <Import Project="$(ExternalsDir)cubeb\exports.props" />
+ <Import Project="$(ExternalsDir)curl\exports.props" />
+ <Import Project="$(ExternalsDir)discord-rpc\exports.props" />
+ <Import Project="$(ExternalsDir)ed25519\exports.props" />
+ <Import Project="$(ExternalsDir)enet\exports.props" />
+ <Import Project="$(ExternalsDir)FatFs\exports.props" />
+ <Import Project="$(ExternalsDir)fmt\exports.props" />
+ <Import Project="$(ExternalsDir)FreeSurround\exports.props" />
+ <Import Project="$(ExternalsDir)glslang\exports.props" />
+ <Import Project="$(ExternalsDir)imgui\exports.props" />
+ <Import Project="$(ExternalsDir)liblzma\exports.props" />
+ <Import Project="$(ExternalsDir)libspng\exports.props" />
+ <Import Project="$(ExternalsDir)libusb\exports.props" />
+ <Import Project="$(ExternalsDir)LZO\exports.props" />
+ <Import Project="$(ExternalsDir)mbedtls\exports.props" />
+ <Import Project="$(ExternalsDir)mGBA\exports.props" />
+ <Import Project="$(ExternalsDir)miniupnpc\exports.props" />
+ <Import Project="$(ExternalsDir)minizip\exports.props" />
+ <Import Project="$(ExternalsDir)picojson\exports.props" />
+ <Import Project="$(ExternalsDir)pugixml\exports.props" />
+ <Import Project="$(ExternalsDir)SDL\exports.props" />
+ <Import Project="$(ExternalsDir)SFML\exports.props" />
+ <Import Project="$(ExternalsDir)soundtouch\exports.props" />
+ <Import Project="$(ExternalsDir)spirv_cross\exports.props" />
+ <Import Project="$(ExternalsDir)xxhash\exports.props" />
+ <Import Project="$(ExternalsDir)zlib-ng\exports.props" />
+ <Import Project="$(ExternalsDir)zstd\exports.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project> \ No newline at end of file
diff --git a/Source/Core/DolphinNoGUI/DolphinNoGUI.vcxproj b/Source/Core/DolphinNoGUI/DolphinNoGUI.vcxproj
index 1466b68027..b7569a88c5 100644
--- a/Source/Core/DolphinNoGUI/DolphinNoGUI.vcxproj
+++ b/Source/Core/DolphinNoGUI/DolphinNoGUI.vcxproj
@@ -12,6 +12,7 @@
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VSPropsDir)Base.props" />
+ <Import Project="$(VSPropsDir)Base.Dolphin.props" />
<Import Project="$(VSPropsDir)PCHUse.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
@@ -31,7 +32,8 @@
<Project>{0e033be3-2e08-428e-9ae9-bc673efa12b5}</Project>
</ProjectReference>
</ItemGroup>
- <Import Project="$(ExternalsDir)ExternalsReferenceAll.props" />
+ <Import Project="$(ExternalsDir)cpp-optparse\exports.props" />
+ <Import Project="$(ExternalsDir)fmt\exports.props" />
<ItemGroup>
<ClCompile Include="MainNoGUI.cpp" />
<ClCompile Include="Platform.cpp" />
diff --git a/Source/Core/DolphinQt/DolphinQt.vcxproj b/Source/Core/DolphinQt/DolphinQt.vcxproj
index cde2161e7b..7f66765c6f 100644
--- a/Source/Core/DolphinQt/DolphinQt.vcxproj
+++ b/Source/Core/DolphinQt/DolphinQt.vcxproj
@@ -13,6 +13,7 @@
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VSPropsDir)Base.props" />
+ <Import Project="$(VSPropsDir)Base.Dolphin.props" />
<Import Project="$(VSPropsDir)QtCompile.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
@@ -403,7 +404,7 @@
<Project>{0e033be3-2e08-428e-9ae9-bc673efa12b5}</Project>
</ProjectReference>
<!--
- This project doesn't uses its own PCH during compile (because RTTI setting differs),
+ This project uses its own PCH during compile (because RTTI setting differs),
but we must also link the "main" pch for the dependants (DolphinLib)
-->
<ProjectReference Include="$(SourceDir)PCH\pch.vcxproj">
@@ -413,7 +414,19 @@
<UseLibraryDependencyInputs>true</UseLibraryDependencyInputs>
</ProjectReference>
</ItemGroup>
- <Import Project="$(ExternalsDir)ExternalsReferenceAll.props" />
+ <Import Project="$(ExternalsDir)bzip2\exports.props" />
+ <Import Project="$(ExternalsDir)cpp-optparse\exports.props" />
+ <Import Project="$(ExternalsDir)discord-rpc\exports.props" />
+ <Import Project="$(ExternalsDir)enet\exports.props" />
+ <Import Project="$(ExternalsDir)fmt\exports.props" />
+ <Import Project="$(ExternalsDir)imgui\exports.props" />
+ <Import Project="$(ExternalsDir)liblzma\exports.props" />
+ <Import Project="$(ExternalsDir)mbedtls\exports.props" />
+ <Import Project="$(ExternalsDir)mGBA\exports.props" />
+ <Import Project="$(ExternalsDir)picojson\exports.props" />
+ <Import Project="$(ExternalsDir)SFML\exports.props" />
+ <Import Project="$(ExternalsDir)soundtouch\exports.props" />
+ <Import Project="$(ExternalsDir)zstd\exports.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
<!--Copy Exe, Data directory and DLLs which should be located in the executable directory-->
diff --git a/Source/Core/DolphinTool/DolphinTool.vcxproj b/Source/Core/DolphinTool/DolphinTool.vcxproj
index d95dc0c2ec..2ea89a0fce 100644
--- a/Source/Core/DolphinTool/DolphinTool.vcxproj
+++ b/Source/Core/DolphinTool/DolphinTool.vcxproj
@@ -12,6 +12,7 @@
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VSPropsDir)Base.props" />
+ <Import Project="$(VSPropsDir)Base.Dolphin.props" />
<Import Project="$(VSPropsDir)PCHUse.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
@@ -26,7 +27,6 @@
<Project>{0e033be3-2e08-428e-9ae9-bc673efa12b5}</Project>
</ProjectReference>
</ItemGroup>
- <Import Project="$(ExternalsDir)ExternalsReferenceAll.props" />
<ItemGroup>
<ClCompile Include="ConvertCommand.cpp" />
<ClCompile Include="VerifyCommand.cpp" />
@@ -34,6 +34,12 @@
<ClCompile Include="ToolHeadlessPlatform.cpp" />
<ClCompile Include="ToolMain.cpp" />
</ItemGroup>
+ <Import Project="$(ExternalsDir)bzip2\exports.props" />
+ <Import Project="$(ExternalsDir)cpp-optparse\exports.props" />
+ <Import Project="$(ExternalsDir)fmt\exports.props" />
+ <Import Project="$(ExternalsDir)liblzma\exports.props" />
+ <Import Project="$(ExternalsDir)mbedtls\exports.props" />
+ <Import Project="$(ExternalsDir)zstd\exports.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
diff --git a/Source/Core/WinUpdater/WinUpdater.vcxproj b/Source/Core/WinUpdater/WinUpdater.vcxproj
index cd523bb017..37bb9530b9 100644
--- a/Source/Core/WinUpdater/WinUpdater.vcxproj
+++ b/Source/Core/WinUpdater/WinUpdater.vcxproj
@@ -12,6 +12,7 @@
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VSPropsDir)Base.props" />
+ <Import Project="$(VSPropsDir)Base.Dolphin.props" />
<Import Project="$(VSPropsDir)PCHUse.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
@@ -27,30 +28,18 @@
<ProjectReference Include="$(CoreDir)DolphinLib.vcxproj">
<Project>{D79392F7-06D6-4B4B-A39F-4D587C215D3A}</Project>
</ProjectReference>
- <ProjectReference Include="$(ExternalsDir)cpp-optparse\cpp-optparse.vcxproj">
- <Project>{c636d9d1-82fe-42b5-9987-63b7d4836341}</Project>
- </ProjectReference>
- <ProjectReference Include="$(ExternalsDir)curl\curl.vcxproj">
- <Project>{bb00605c-125f-4a21-b33b-7bf418322dcb}</Project>
- </ProjectReference>
- <ProjectReference Include="$(ExternalsDir)ed25519\ed25519.vcxproj">
- <Project>{5bdf4b91-1491-4fb0-bc27-78e9a8e97dc3}</Project>
- </ProjectReference>
- <ProjectReference Include="$(ExternalsDir)fmt\fmt.vcxproj">
- <Project>{4BC5A148-0AB3-440F-A980-A29B4B999190}</Project>
- </ProjectReference>
- <ProjectReference Include="$(ExternalsDir)mbedtls\mbedTLS.vcxproj">
- <Project>{bdb6578b-0691-4e80-a46c-df21639fd3b8}</Project>
- </ProjectReference>
- <ProjectReference Include="$(ExternalsDir)zlib-ng\zlib-ng.vcxproj">
- <Project>{F6EA7144-8D64-4EBB-A13E-76DFBD911EAE}</Project>
- </ProjectReference>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\UpdaterCommon\UpdaterCommon.cpp" />
<ClCompile Include="Main.cpp" />
<ClCompile Include="WinUI.cpp" />
</ItemGroup>
+ <Import Project="$(ExternalsDir)cpp-optparse\exports.props" />
+ <Import Project="$(ExternalsDir)curl\exports.props" />
+ <Import Project="$(ExternalsDir)ed25519\exports.props" />
+ <Import Project="$(ExternalsDir)fmt\exports.props" />
+ <Import Project="$(ExternalsDir)mbedtls\exports.props" />
+ <Import Project="$(ExternalsDir)zlib-ng\exports.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
diff --git a/Source/DSPTool/DSPTool.vcxproj b/Source/DSPTool/DSPTool.vcxproj
index 20401a4ddb..ec0e269e42 100644
--- a/Source/DSPTool/DSPTool.vcxproj
+++ b/Source/DSPTool/DSPTool.vcxproj
@@ -12,6 +12,7 @@
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VSPropsDir)Base.props" />
+ <Import Project="$(VSPropsDir)Base.Dolphin.props" />
<Import Project="$(VSPropsDir)PCHUse.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
@@ -32,10 +33,8 @@
<ProjectReference Include="$(CoreDir)DolphinLib.vcxproj">
<Project>{D79392F7-06D6-4B4B-A39F-4D587C215D3A}</Project>
</ProjectReference>
- <ProjectReference Include="$(ExternalsDir)fmt\fmt.vcxproj">
- <Project>{4BC5A148-0AB3-440F-A980-A29B4B999190}</Project>
- </ProjectReference>
</ItemGroup>
+ <Import Project="$(ExternalsDir)fmt\exports.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
diff --git a/Source/PCH/pch.vcxproj b/Source/PCH/pch.vcxproj
index 0439b31103..1ee60c60c0 100644
--- a/Source/PCH/pch.vcxproj
+++ b/Source/PCH/pch.vcxproj
@@ -12,6 +12,7 @@
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VSPropsDir)Base.props" />
+ <Import Project="$(VSPropsDir)Base.Dolphin.props" />
<Import Project="$(VSPropsDir)PCHCreate.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
@@ -21,6 +22,7 @@
<ItemGroup>
<ClCompile Include="pch.cpp" />
</ItemGroup>
+ <Import Project="$(ExternalsDir)fmt\exports.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
diff --git a/Source/UnitTests/UnitTests.vcxproj b/Source/UnitTests/UnitTests.vcxproj
index e0295fba9c..6cf886c6c6 100644
--- a/Source/UnitTests/UnitTests.vcxproj
+++ b/Source/UnitTests/UnitTests.vcxproj
@@ -12,6 +12,7 @@
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VSPropsDir)Base.props" />
+ <Import Project="$(VSPropsDir)Base.Dolphin.props" />
<Import Project="$(VSPropsDir)PCHUse.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
@@ -95,7 +96,8 @@
<Project>{0e033be3-2e08-428e-9ae9-bc673efa12b5}</Project>
</ProjectReference>
</ItemGroup>
- <Import Project="$(ExternalsDir)ExternalsReferenceAll.props" />
+ <Import Project="$(ExternalsDir)Bochs_disasm\exports.props" />
+ <Import Project="$(ExternalsDir)fmt\exports.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
diff --git a/Source/VSProps/Base.Dolphin.props b/Source/VSProps/Base.Dolphin.props
new file mode 100644
index 0000000000..968848730b
--- /dev/null
+++ b/Source/VSProps/Base.Dolphin.props
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project>
+ <!--This file is included by Dolphin code only-->
+ <PropertyGroup>
+ <TargetName Condition="'$(ConfigurationType)'=='Application'">$(ProjectName)$(TargetSuffix)</TargetName>
+ </PropertyGroup>
+ <ItemDefinitionGroup>
+ <ClCompile>
+ <!--Dolphin includes are relative to Source\Core-->
+ <AdditionalIncludeDirectories>$(CoreDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+
+ <!--For now, header-only libs don't have their own vcxproj/exports, so just supply their include paths to all Dolphin code-->
+ <AdditionalIncludeDirectories>$(ExternalsDir)FFmpeg-bin\$(Platform)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ExternalsDir)OpenAL\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ExternalsDir)rangeset\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ExternalsDir)Vulkan\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(ExternalsDir)WIL\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <!--WIL doesn't have it's own vcxproj/exports, and no externals reference WIL, so this is fine to define only for Dolphin-->
+ <PreprocessorDefinitions>WIL_SUPPRESS_EXCEPTIONS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <!--Prevent Windows.h from defining some common stuff-->
+ <PreprocessorDefinitions>WIN32_LEAN_AND_MEAN;NOMINMAX;%(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>
+
+ <!--Dolphin-specific definitions-->
+ <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>USE_UPNP;__LIBUSB__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>USE_ANALYTICS=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>USE_DISCORD_PRESENCE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>HAVE_FFMPEG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions Condition="'$(Platform)'=='x64'">HAS_OPENGL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>HAS_VULKAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>HAS_LIBMGBA;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>AUTOUPDATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>HAVE_SDL2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+
+ <!-- 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>
+ <!--Link Base:Application-->
+ <Link Condition="'$(ConfigurationType)'=='Application'">
+ <AdditionalDependencies>avrt.lib;iphlpapi.lib;winmm.lib;setupapi.lib;rpcrt4.lib;comctl32.lib;Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies Condition="'$(Platform)'=='x64'">opengl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <!--FFmpeg and the libs it pulls in-->
+ <AdditionalDependencies>avcodec.lib;avformat.lib;avutil.lib;swresample.lib;swscale.lib;Bcrypt.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalLibraryDirectories>$(ExternalsDir)FFmpeg-bin\$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <!--See Common/CompatPatches.cpp-->
+ <ForceSymbolReferences>enableCompatPatches</ForceSymbolReferences>
+ </Link>
+ <!--Link Debug:Application-->
+ <Link Condition="'$(Configuration)'=='Debug' And '$(ConfigurationType)'=='Application'">
+ <!--The FFmpeg we link against uses non-debug msvcrt. Ignore it.-->
+ <AdditionalOptions>/NODEFAULTLIB:msvcrt %(AdditionalOptions)</AdditionalOptions>
+ </Link>
+ </ItemDefinitionGroup>
+</Project>
diff --git a/Source/VSProps/Base.props b/Source/VSProps/Base.props
index d39ca77690..29f3d6ffbf 100644
--- a/Source/VSProps/Base.props
+++ b/Source/VSProps/Base.props
@@ -1,104 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<Project>
+ <!--
+ This file is included by *everything* (Externals and Dolphin code).
+ If you want to define something that only applies to Dolphin code, use Base.Dolphin.props
+ -->
<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 deterministic build)-->
<LinkIncremental>false</LinkIncremental>
- <!--
- This works around some dependency tracking bugs where msbuild sees project outputs (object files) as inputs
- to that same project, causing unstable build. see https://developercommunity.visualstudio.com/t/1703887
- It also tends to poorly predict how much resources will actually be used in solutions with many diverse
- project sizes (like dolphin...)
- TODO This should be the default behavior in VS 17.2
- -->
- <UseMSBuildResourceManager>false</UseMSBuildResourceManager>
</PropertyGroup>
<ItemDefinitionGroup>
<!--ClCompile Base-->
<ClCompile>
- <AdditionalIncludeDirectories>$(CoreDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <!--
- Coagulate external include directories.
- Order matters! (first hit, first use).
- Note: Directory containing source file being compiled is always searched first.
- -->
- <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-bin\$(Platform)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <AdditionalIncludeDirectories>$(ExternalsDir)FatFs;%(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)spirv_cross\SPIRV-Cross;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <AdditionalIncludeDirectories>$(ExternalsDir)imgui;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <AdditionalIncludeDirectories>$(ExternalsDir)liblzma\api;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <AdditionalIncludeDirectories>$(ExternalsDir)libspng\libspng\spng;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <AdditionalIncludeDirectories>$(ExternalsDir)libusb\libusb\libusb;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <AdditionalIncludeDirectories>$(ExternalsDir)LZO;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <AdditionalIncludeDirectories>$(ExternalsDir)mGBA\mgba\include;%(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)SDL\SDL\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-ng;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <AdditionalIncludeDirectories>$(ExternalsDir)zstd\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<!--Base external header policy: ignore all warnings except template instantiations, and disable analyzer-->
<ExternalWarningLevel>TurnOffAllWarnings</ExternalWarningLevel>
<ExternalTemplatesDiagnostics>true</ExternalTemplatesDiagnostics>
<DisableAnalyzeExternal>true</DisableAnalyzeExternal>
<TreatAngleIncludeAsExternal>true</TreatAngleIncludeAsExternal>
- <!--
- 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;__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>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>
- <PreprocessorDefinitions>AUTOUPDATE=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <PreprocessorDefinitions>SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <PreprocessorDefinitions>HAVE_SDL2=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <PreprocessorDefinitions>SPNG_STATIC;%(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>
@@ -119,28 +40,6 @@
<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>
- <!-- 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>
<!--
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
@@ -189,21 +88,6 @@
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
</Link>
- <!--Link Base:Application-->
- <Link Condition="'$(ConfigurationType)'=='Application'">
- <AdditionalDependencies>avrt.lib;iphlpapi.lib;winmm.lib;setupapi.lib;rpcrt4.lib;comctl32.lib;Shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <AdditionalDependencies Condition="'$(Platform)'=='x64'">opengl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <!--FFmpeg and the libs it pulls in-->
- <AdditionalDependencies>avcodec.lib;avformat.lib;avutil.lib;swresample.lib;swscale.lib;Bcrypt.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <AdditionalLibraryDirectories>$(ExternalsDir)FFmpeg-bin\$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <!--See Common/CompatPatches.cpp-->
- <ForceSymbolReferences>enableCompatPatches</ForceSymbolReferences>
- </Link>
- <!--Link Debug:Application-->
- <Link Condition="'$(Configuration)'=='Debug' And '$(ConfigurationType)'=='Application'">
- <!--The FFmpeg we link against uses non-debug msvcrt. Ignore it.-->
- <AdditionalOptions>/NODEFAULTLIB:msvcrt %(AdditionalOptions)</AdditionalOptions>
- </Link>
<Lib>
<TreatLibWarningAsErrors>true</TreatLibWarningAsErrors>
<LinkTimeCodeGeneration Condition="'$(DolphinRelease)'=='true'">true</LinkTimeCodeGeneration>