|
|
@@ -298,6 +298,14 @@ endforeach()
|
|
|
string(APPEND CMAKE_STATIC_LINKER_FLAGS_INIT " ${_MACHINE_ARCH_FLAG}")
|
|
|
unset(_MACHINE_ARCH_FLAG)
|
|
|
|
|
|
+cmake_policy(GET CMP0091 __WINDOWS_MSVC_CMP0091)
|
|
|
+if(__WINDOWS_MSVC_CMP0091 STREQUAL "NEW")
|
|
|
+ set(CMAKE_MSVC_RUNTIME_LIBRARY_DEFAULT "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
|
|
|
+else()
|
|
|
+ set(CMAKE_MSVC_RUNTIME_LIBRARY_DEFAULT "")
|
|
|
+endif()
|
|
|
+unset(__WINDOWS_MSVC_CMP0091)
|
|
|
+
|
|
|
macro(__windows_compiler_msvc lang)
|
|
|
if(NOT MSVC_VERSION LESS 1400)
|
|
|
# for 2005 make sure the manifest is put in the dll with mt
|
|
|
@@ -351,21 +359,35 @@ macro(__windows_compiler_msvc lang)
|
|
|
|
|
|
if("x${lang}" STREQUAL "xC" OR
|
|
|
"x${lang}" STREQUAL "xCXX")
|
|
|
+ if(CMAKE_MSVC_RUNTIME_LIBRARY_DEFAULT)
|
|
|
+ set(_MDd "")
|
|
|
+ set(_MD "")
|
|
|
+ else()
|
|
|
+ set(_MDd " /MDd")
|
|
|
+ set(_MD " /MD")
|
|
|
+ endif()
|
|
|
if(CMAKE_VS_PLATFORM_TOOLSET MATCHES "v[0-9]+_clang_.*")
|
|
|
# note: MSVC 14 2015 Update 1 sets -fno-ms-compatibility by default, but this does not allow one to compile many projects
|
|
|
# that include MS's own headers. CMake itself is affected project too.
|
|
|
string(APPEND CMAKE_${lang}_FLAGS_INIT " ${_PLATFORM_DEFINES}${_PLATFORM_DEFINES_${lang}} -fms-extensions -fms-compatibility -D_WINDOWS -Wall${_FLAGS_${lang}}")
|
|
|
- string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " /MDd -gline-tables-only -fno-inline -O0 ${_RTC1}")
|
|
|
- string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " /MD -O2 -DNDEBUG")
|
|
|
- string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " /MD -gline-tables-only -O2 -fno-inline -DNDEBUG")
|
|
|
- string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " /MD -DNDEBUG") # TODO: Add '-Os' once VS generator maps it properly for Clang
|
|
|
+ string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT "${_MDd} -gline-tables-only -fno-inline -O0 ${_RTC1}")
|
|
|
+ string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT "${_MD} -O2 -DNDEBUG")
|
|
|
+ string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "${_MD} -gline-tables-only -O2 -fno-inline -DNDEBUG")
|
|
|
+ string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "${_MD} -DNDEBUG") # TODO: Add '-Os' once VS generator maps it properly for Clang
|
|
|
else()
|
|
|
string(APPEND CMAKE_${lang}_FLAGS_INIT " ${_PLATFORM_DEFINES}${_PLATFORM_DEFINES_${lang}} /D_WINDOWS /W3${_FLAGS_${lang}}")
|
|
|
- string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " /MDd /Zi /Ob0 /Od ${_RTC1}")
|
|
|
- string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " /MD /O2 /Ob2 /DNDEBUG")
|
|
|
- string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " /MD /Zi /O2 /Ob1 /DNDEBUG")
|
|
|
- string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " /MD /O1 /Ob1 /DNDEBUG")
|
|
|
+ string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT "${_MDd} /Zi /Ob0 /Od ${_RTC1}")
|
|
|
+ string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT "${_MD} /O2 /Ob2 /DNDEBUG")
|
|
|
+ string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "${_MD} /Zi /O2 /Ob1 /DNDEBUG")
|
|
|
+ string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "${_MD} /O1 /Ob1 /DNDEBUG")
|
|
|
endif()
|
|
|
+ unset(_MDd)
|
|
|
+ unset(_MD)
|
|
|
+
|
|
|
+ set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreaded -MT)
|
|
|
+ set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDLL -MD)
|
|
|
+ set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebug -MTd)
|
|
|
+ set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebugDLL -MDd)
|
|
|
endif()
|
|
|
set(CMAKE_${lang}_LINKER_SUPPORTS_PDB ON)
|
|
|
set(CMAKE_NINJA_DEPTYPE_${lang} msvc)
|