From 072c161445514dbf758172286b211051fcf5e13f Mon Sep 17 00:00:00 2001 From: BhaaL Date: Fri, 26 May 2017 14:36:33 +0200 Subject: [PATCH 1/6] upgrade to Windows SDK 10.0.15063.0 this is required for /permissive- to work, because some headers in the Windows SDK use Microsoft extensions that are not allowed in standards mode --- Externals/Bochs_disasm/Bochs_disasm.vcxproj | 1 + Externals/LZO/LZO.vcxproj | 1 + Externals/SFML/build/vc2010/SFML_Network.vcxproj | 1 + Externals/SOIL/SOIL.vcxproj | 1 + Externals/cpp-optparse/cpp-optparse.vcxproj | 1 + Externals/cubeb/msvc/cubeb.vcxproj | 5 +++-- Externals/curl/curl.vcxproj | 1 + Externals/enet/enet.vcxproj | 1 + Externals/glslang/glslang.vcxproj | 1 + Externals/libpng/png/png.vcxproj | 1 + Externals/libusb/libusb_static_2013.vcxproj | 1 + Externals/mbedtls/mbedTLS.vcxproj | 1 + Externals/miniupnpc/miniupnpc.vcxproj | 1 + Externals/soundtouch/SoundTouch.vcxproj | 1 + Externals/wxWidgets3/build/msw/wx_base.vcxproj | 1 + Externals/xxhash/xxhash.vcxproj | 1 + Externals/zlib/zlib.vcxproj | 1 + Languages/Languages.vcxproj | 1 + Readme.md | 2 +- Source/Core/AudioCommon/AudioCommon.vcxproj | 1 + Source/Core/Common/Common.vcxproj | 1 + Source/Core/Common/SCMRevGen.vcxproj | 1 + Source/Core/Core/Core.vcxproj | 1 + Source/Core/DiscIO/DiscIO.vcxproj | 1 + Source/Core/DolphinQt2/DolphinQt2.vcxproj | 2 +- Source/Core/DolphinWX/DolphinWX.vcxproj | 1 + Source/Core/InputCommon/InputCommon.vcxproj | 1 + Source/Core/UICommon/UICommon.vcxproj | 1 + Source/Core/VideoBackends/D3D/D3D.vcxproj | 1 + Source/Core/VideoBackends/Null/Null.vcxproj | 1 + Source/Core/VideoBackends/OGL/OGL.vcxproj | 1 + Source/Core/VideoBackends/Software/Software.vcxproj | 1 + Source/Core/VideoBackends/Vulkan/Vulkan.vcxproj | 1 + Source/Core/VideoCommon/VideoCommon.vcxproj | 1 + Source/DSPTool/DSPTool.vcxproj | 1 + Source/PCH/pch.vcxproj | 1 + Source/UnitTests/UnitTests.vcxproj | 1 + 37 files changed, 39 insertions(+), 4 deletions(-) diff --git a/Externals/Bochs_disasm/Bochs_disasm.vcxproj b/Externals/Bochs_disasm/Bochs_disasm.vcxproj index 95b05e09b2..3b93cf68c4 100644 --- a/Externals/Bochs_disasm/Bochs_disasm.vcxproj +++ b/Externals/Bochs_disasm/Bochs_disasm.vcxproj @@ -12,6 +12,7 @@ {8ADA04D7-6DB1-4DA4-AB55-64FB12A0997B} + 10.0.15063.0 diff --git a/Externals/LZO/LZO.vcxproj b/Externals/LZO/LZO.vcxproj index 249f745ff1..7bbd4b69c5 100644 --- a/Externals/LZO/LZO.vcxproj +++ b/Externals/LZO/LZO.vcxproj @@ -12,6 +12,7 @@ {AB993F38-C31D-4897-B139-A620C42BC565} + 10.0.15063.0 diff --git a/Externals/SFML/build/vc2010/SFML_Network.vcxproj b/Externals/SFML/build/vc2010/SFML_Network.vcxproj index f4ea0ecd30..1a7fb04d36 100644 --- a/Externals/SFML/build/vc2010/SFML_Network.vcxproj +++ b/Externals/SFML/build/vc2010/SFML_Network.vcxproj @@ -12,6 +12,7 @@ {93D73454-2512-424E-9CDA-4BB357FE13DD} + 10.0.15063.0 diff --git a/Externals/SOIL/SOIL.vcxproj b/Externals/SOIL/SOIL.vcxproj index 7f3de40f4d..148802e519 100644 --- a/Externals/SOIL/SOIL.vcxproj +++ b/Externals/SOIL/SOIL.vcxproj @@ -12,6 +12,7 @@ {B441CC62-877E-4B3F-93E0-0DE80544F705} + 10.0.15063.0 diff --git a/Externals/cpp-optparse/cpp-optparse.vcxproj b/Externals/cpp-optparse/cpp-optparse.vcxproj index aa59b90632..2ab8b046c8 100644 --- a/Externals/cpp-optparse/cpp-optparse.vcxproj +++ b/Externals/cpp-optparse/cpp-optparse.vcxproj @@ -12,6 +12,7 @@ {C636D9D1-82FE-42B5-9987-63B7D4836341} + 10.0.15063.0 diff --git a/Externals/cubeb/msvc/cubeb.vcxproj b/Externals/cubeb/msvc/cubeb.vcxproj index 587b12e2c6..0e3cd94134 100644 --- a/Externals/cubeb/msvc/cubeb.vcxproj +++ b/Externals/cubeb/msvc/cubeb.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -12,11 +12,12 @@ {8EA11166-6512-44FC-B7A5-A4D1ECC81170} + 10.0.15063.0 StaticLibrary - v140 + v141 Unicode diff --git a/Externals/curl/curl.vcxproj b/Externals/curl/curl.vcxproj index cfb7d2e200..b62b65494f 100644 --- a/Externals/curl/curl.vcxproj +++ b/Externals/curl/curl.vcxproj @@ -286,6 +286,7 @@ {BB00605C-125F-4A21-B33B-7BF418322DCB} + 10.0.15063.0 diff --git a/Externals/enet/enet.vcxproj b/Externals/enet/enet.vcxproj index 23db3250be..71e0086faf 100644 --- a/Externals/enet/enet.vcxproj +++ b/Externals/enet/enet.vcxproj @@ -41,6 +41,7 @@ {CBC76802-C128-4B17-BF6C-23B08C313E5E} + 10.0.15063.0 diff --git a/Externals/glslang/glslang.vcxproj b/Externals/glslang/glslang.vcxproj index fd817aa760..da2f4b4eb8 100644 --- a/Externals/glslang/glslang.vcxproj +++ b/Externals/glslang/glslang.vcxproj @@ -12,6 +12,7 @@ {D178061B-84D3-44F9-BEED-EFD18D9033F0} + 10.0.15063.0 diff --git a/Externals/libpng/png/png.vcxproj b/Externals/libpng/png/png.vcxproj index 030c688872..8c4df78d4e 100644 --- a/Externals/libpng/png/png.vcxproj +++ b/Externals/libpng/png/png.vcxproj @@ -12,6 +12,7 @@ {4C9F135B-A85E-430C-BAD4-4C67EF5FC12C} + 10.0.15063.0 diff --git a/Externals/libusb/libusb_static_2013.vcxproj b/Externals/libusb/libusb_static_2013.vcxproj index 32885a3b18..050d459552 100644 --- a/Externals/libusb/libusb_static_2013.vcxproj +++ b/Externals/libusb/libusb_static_2013.vcxproj @@ -13,6 +13,7 @@ libusb-1.0 {349EE8F9-7D25-4909-AAF5-FF3FADE72187} + 10.0.15063.0 diff --git a/Externals/mbedtls/mbedTLS.vcxproj b/Externals/mbedtls/mbedTLS.vcxproj index 97bcd85cf3..e677bf329b 100644 --- a/Externals/mbedtls/mbedTLS.vcxproj +++ b/Externals/mbedtls/mbedTLS.vcxproj @@ -12,6 +12,7 @@ {BDB6578B-0691-4E80-A46C-DF21639FD3B8} + 10.0.15063.0 diff --git a/Externals/miniupnpc/miniupnpc.vcxproj b/Externals/miniupnpc/miniupnpc.vcxproj index bfe7048051..a5e2eebe9d 100644 --- a/Externals/miniupnpc/miniupnpc.vcxproj +++ b/Externals/miniupnpc/miniupnpc.vcxproj @@ -12,6 +12,7 @@ {31643FDB-1BB8-4965-9DE7-000FC88D35AE} + 10.0.15063.0 diff --git a/Externals/soundtouch/SoundTouch.vcxproj b/Externals/soundtouch/SoundTouch.vcxproj index 1c53b7f297..bc65b9fa54 100644 --- a/Externals/soundtouch/SoundTouch.vcxproj +++ b/Externals/soundtouch/SoundTouch.vcxproj @@ -12,6 +12,7 @@ {EC082900-B4D8-42E9-9663-77F02F6936AE} + 10.0.15063.0 diff --git a/Externals/wxWidgets3/build/msw/wx_base.vcxproj b/Externals/wxWidgets3/build/msw/wx_base.vcxproj index 4aed0301af..5f4f4a2c09 100644 --- a/Externals/wxWidgets3/build/msw/wx_base.vcxproj +++ b/Externals/wxWidgets3/build/msw/wx_base.vcxproj @@ -1343,6 +1343,7 @@ wxWidgets {1C8436C9-DBAF-42BE-83BC-CF3EC9175ABE} + 10.0.15063.0 diff --git a/Externals/xxhash/xxhash.vcxproj b/Externals/xxhash/xxhash.vcxproj index 65bcd18e59..a486ff3c5f 100644 --- a/Externals/xxhash/xxhash.vcxproj +++ b/Externals/xxhash/xxhash.vcxproj @@ -12,6 +12,7 @@ {677EA016-1182-440C-9345-DC88D1E98C0C} + 10.0.15063.0 diff --git a/Externals/zlib/zlib.vcxproj b/Externals/zlib/zlib.vcxproj index cc0d36c45f..9495274f8b 100644 --- a/Externals/zlib/zlib.vcxproj +++ b/Externals/zlib/zlib.vcxproj @@ -12,6 +12,7 @@ {FF213B23-2C26-4214-9F88-85271E557E87} + 10.0.15063.0 diff --git a/Languages/Languages.vcxproj b/Languages/Languages.vcxproj index d5995792c8..1bc6a6381a 100644 --- a/Languages/Languages.vcxproj +++ b/Languages/Languages.vcxproj @@ -42,6 +42,7 @@ {0E033BE3-2E08-428E-9AE9-BC673EFA12B5} + 10.0.15063.0 diff --git a/Readme.md b/Readme.md index 41dc9ef828..6f9a3ca303 100644 --- a/Readme.md +++ b/Readme.md @@ -41,7 +41,7 @@ Dolphin can only be installed on devices that satisfy the above requirements. At Use the solution file `Source/dolphin-emu.sln` to build Dolphin on Windows. Visual Studio 2017 is a hard requirement. Other compilers might be able to build Dolphin on Windows but have not been tested and are not -recommended to be used. Git must be installed when building. +recommended to be used. Git and Windows 10 SDK 10.0.15063.0 must be installed when building. An installer can be created by using the `Installer.nsi` script in the Installer directory. This will require the Nullsoft Scriptable Install System diff --git a/Source/Core/AudioCommon/AudioCommon.vcxproj b/Source/Core/AudioCommon/AudioCommon.vcxproj index 2ccb711ee5..6ab07e55f4 100644 --- a/Source/Core/AudioCommon/AudioCommon.vcxproj +++ b/Source/Core/AudioCommon/AudioCommon.vcxproj @@ -12,6 +12,7 @@ {54AA7840-5BEB-4A0C-9452-74BA4CC7FD44} + 10.0.15063.0 diff --git a/Source/Core/Common/Common.vcxproj b/Source/Core/Common/Common.vcxproj index 6efbf8e215..d11eed1ec6 100644 --- a/Source/Core/Common/Common.vcxproj +++ b/Source/Core/Common/Common.vcxproj @@ -12,6 +12,7 @@ {2E6C348C-C75C-4D94-8D1E-9C1FCBF3EFE4} + 10.0.15063.0 diff --git a/Source/Core/Common/SCMRevGen.vcxproj b/Source/Core/Common/SCMRevGen.vcxproj index 75c8763000..aadc70941d 100644 --- a/Source/Core/Common/SCMRevGen.vcxproj +++ b/Source/Core/Common/SCMRevGen.vcxproj @@ -12,6 +12,7 @@ {41279555-F94F-4EBC-99DE-AF863C10C5C4} + 10.0.15063.0 diff --git a/Source/Core/Core/Core.vcxproj b/Source/Core/Core/Core.vcxproj index f47971e856..a13c4ea09c 100644 --- a/Source/Core/Core/Core.vcxproj +++ b/Source/Core/Core/Core.vcxproj @@ -12,6 +12,7 @@ {E54CF649-140E-4255-81A5-30A673C1FB36} + 10.0.15063.0 diff --git a/Source/Core/DiscIO/DiscIO.vcxproj b/Source/Core/DiscIO/DiscIO.vcxproj index 910943f559..cb31a72776 100644 --- a/Source/Core/DiscIO/DiscIO.vcxproj +++ b/Source/Core/DiscIO/DiscIO.vcxproj @@ -12,6 +12,7 @@ {160BDC25-5626-4B0D-BDD8-2953D9777FB5} + 10.0.15063.0 diff --git a/Source/Core/DolphinQt2/DolphinQt2.vcxproj b/Source/Core/DolphinQt2/DolphinQt2.vcxproj index 2c6d5e6a89..e0cd0e09b3 100644 --- a/Source/Core/DolphinQt2/DolphinQt2.vcxproj +++ b/Source/Core/DolphinQt2/DolphinQt2.vcxproj @@ -12,7 +12,7 @@ {FA3FA62B-6F58-4B86-9453-4D149940A066} - 8.1 + 10.0.15063.0 + /permissive- %(AdditionalOptions) /Zc:inline /Zc:rvalueCast /volatile:iso %(AdditionalOptions) From 0fcc625b56540ad306a9691393960a919663db08 Mon Sep 17 00:00:00 2001 From: BhaaL Date: Fri, 26 May 2017 14:36:33 +0200 Subject: [PATCH 3/6] clean up Base.props /permissive- automatically enables /Zc:rvalueCast and /Zc:strictStrings --- Source/VSProps/Base.props | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Source/VSProps/Base.props b/Source/VSProps/Base.props index dc55525ced..dd76cf87d9 100644 --- a/Source/VSProps/Base.props +++ b/Source/VSProps/Base.props @@ -83,7 +83,7 @@ /permissive- %(AdditionalOptions) - /Zc:inline /Zc:rvalueCast /volatile:iso %(AdditionalOptions) + /Zc:inline /volatile:iso %(AdditionalOptions) /Zo /utf-8 %(AdditionalOptions) OldStyle @@ -113,8 +113,6 @@ false false _SECURE_SCL=0;%(PreprocessorDefinitions) - - /Zc:strictStrings %(AdditionalOptions) From dda7e2cc2cd6143e10ddc43123f0462933124906 Mon Sep 17 00:00:00 2001 From: Arkadiy Shapkin Date: Wed, 3 May 2017 13:30:11 +0300 Subject: [PATCH 4/6] VS2015/2017 build fix and enable C++11 features Patch by KindDragon from google/googletest#811 --- Externals/gtest/cmake/internal_utils.cmake | 2 -- Externals/gtest/include/gtest/internal/gtest-port.h | 8 ++++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Externals/gtest/cmake/internal_utils.cmake b/Externals/gtest/cmake/internal_utils.cmake index 8878dc1a95..6184bb26b6 100644 --- a/Externals/gtest/cmake/internal_utils.cmake +++ b/Externals/gtest/cmake/internal_utils.cmake @@ -81,8 +81,6 @@ macro(config_compiler_and_linker) # Suppress "unreachable code" warning on VS 2012 and later. # http://stackoverflow.com/questions/3232669 explains the issue. set(cxx_base_flags "${cxx_base_flags} -wd4702") - endif() - if (NOT (MSVC_VERSION GREATER 1900)) # 1900 is Visual Studio 2015 # BigObj required for tests. set(cxx_base_flags "${cxx_base_flags} -bigobj") endif() diff --git a/Externals/gtest/include/gtest/internal/gtest-port.h b/Externals/gtest/include/gtest/internal/gtest-port.h index 0d53ad27a7..fc7989053d 100644 --- a/Externals/gtest/include/gtest/internal/gtest-port.h +++ b/Externals/gtest/include/gtest/internal/gtest-port.h @@ -323,7 +323,7 @@ // -std={c,gnu}++{0x,11} is passed. The C++11 standard specifies a // value for __cplusplus, and recent versions of clang, gcc, and // probably other compilers set that too in C++11 mode. -# if __GXX_EXPERIMENTAL_CXX0X__ || __cplusplus >= 201103L +# if __GXX_EXPERIMENTAL_CXX0X__ || __cplusplus >= 201103L || _MSC_VER >= 1900 // Compiling in at least C++11 mode. # define GTEST_LANG_CXX11 1 # else @@ -355,12 +355,16 @@ #if GTEST_STDLIB_CXX11 # define GTEST_HAS_STD_BEGIN_AND_END_ 1 # define GTEST_HAS_STD_FORWARD_LIST_ 1 -# define GTEST_HAS_STD_FUNCTION_ 1 +# if !defined(_MSC_VER) || (_MSC_FULL_VER >= 190023824) // works only with VS2015U2 and better +# define GTEST_HAS_STD_FUNCTION_ 1 +# endif # define GTEST_HAS_STD_INITIALIZER_LIST_ 1 # define GTEST_HAS_STD_MOVE_ 1 # define GTEST_HAS_STD_SHARED_PTR_ 1 # define GTEST_HAS_STD_TYPE_TRAITS_ 1 # define GTEST_HAS_STD_UNIQUE_PTR_ 1 +# define GTEST_HAS_UNORDERED_MAP_ 1 +# define GTEST_HAS_UNORDERED_SET_ 1 #endif // C++11 specifies that provides std::tuple. From 076d3cd6394010a4bf6798809548ffd8ed9d98fe Mon Sep 17 00:00:00 2001 From: BhaaL Date: Fri, 26 May 2017 18:03:32 +0200 Subject: [PATCH 5/6] enable latest C++ Standard features (/std:c++latest) --- Source/VSProps/Base.props | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Source/VSProps/Base.props b/Source/VSProps/Base.props index dd76cf87d9..fb2382ed08 100644 --- a/Source/VSProps/Base.props +++ b/Source/VSProps/Base.props @@ -80,6 +80,8 @@ false false true + + stdcpplatest /permissive- %(AdditionalOptions) From e37ab851ad7a5243682ba1dfe019aef9a3749ac3 Mon Sep 17 00:00:00 2001 From: BhaaL Date: Fri, 26 May 2017 23:01:41 +0200 Subject: [PATCH 6/6] add the same flags to CMake --- Source/CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index 823094bf48..50c04c0f18 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -13,6 +13,12 @@ if(CMAKE_SYSTEM_NAME MATCHES "Windows") add_definitions(-D_CRT_SECURE_NO_DEPRECATE) endif() +# enable the latest C++ standard feature set, +# and also disable MSVC specific extensions +# to be even more standards compliant. +check_and_add_flag(CPPLATEST /std:c++latest) +check_and_add_flag(STANDARD_COMPLIANCE /permissive-) + # These aren't actually needed for C11/C++11 # but some dependencies require them (LLVM, libav). add_definitions(-D__STDC_LIMIT_MACROS)