diff options
| author | Shawn Hoffman <godisgovernment@gmail.com> | 2022-07-31 00:39:35 -0700 |
|---|---|---|
| committer | Shawn Hoffman <godisgovernment@gmail.com> | 2022-08-02 22:24:22 -0700 |
| commit | c5da2877cc8059e6bd889e13f9cf91bd8d5798b5 (patch) | |
| tree | ad381bc062212d33134b2b7888fdeab57bccec42 /Source | |
| parent | 7d2d5d914bf3cacbecbb0bf8a642b616744aad54 (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.vcxproj | 31 | ||||
| -rw-r--r-- | Source/Core/DolphinNoGUI/DolphinNoGUI.vcxproj | 4 | ||||
| -rw-r--r-- | Source/Core/DolphinQt/DolphinQt.vcxproj | 17 | ||||
| -rw-r--r-- | Source/Core/DolphinTool/DolphinTool.vcxproj | 8 | ||||
| -rw-r--r-- | Source/Core/WinUpdater/WinUpdater.vcxproj | 25 | ||||
| -rw-r--r-- | Source/DSPTool/DSPTool.vcxproj | 5 | ||||
| -rw-r--r-- | Source/PCH/pch.vcxproj | 2 | ||||
| -rw-r--r-- | Source/UnitTests/UnitTests.vcxproj | 4 | ||||
| -rw-r--r-- | Source/VSProps/Base.Dolphin.props | 87 | ||||
| -rw-r--r-- | Source/VSProps/Base.props | 126 |
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> |
