[CMake][Win] Conditionally select DLL CRT or static CRT
[WebKit-https.git] / Source / cmake / OptionsMSVC.cmake
index 2bff8dc..fd25bd4 100644 (file)
@@ -55,17 +55,27 @@ if (NOT ${CMAKE_CXX_FLAGS} STREQUAL "")
     string(REGEX REPLACE "/W3" "/W4" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) # Warnings are important
 endif ()
 
+if (MSVC_STATIC_RUNTIME)
+    message(STATUS "Using multithreaded, static version of the run-time library")
+    set(MSVC_RUNTIME_COMPILE_FLAG "/MT")
+    set(MSVC_RUNTIME_LINKER_FLAGS "/NODEFAULTLIB:MSVCRT /NODEFAULTLIB:MSVCRTD")
+else ()
+    message(STATUS "Using multithreaded, dynamic version of the run-time library")
+    set(MSVC_RUNTIME_COMPILE_FLAG "/MD")
+    # No linker flags are required
+endif ()
+
 foreach (flag_var
     CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
     CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
     CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
     CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
     # Use the multithreaded static runtime library instead of the default DLL runtime.
-    string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
+    string(REGEX REPLACE "/MD" "${MSVC_RUNTIME_COMPILE_FLAG}" ${flag_var} "${${flag_var}}")
 
     # No debug runtime, even in debug builds.
     if (NOT DEBUG_SUFFIX)
-        string(REGEX REPLACE "/MTd" "/MT" ${flag_var} "${${flag_var}}")
+        string(REGEX REPLACE "${MSVC_RUNTIME_COMPILE_FLAG}d" "${MSVC_RUNTIME_COMPILE_FLAG}" ${flag_var} "${${flag_var}}")
         string(REGEX REPLACE "/D_DEBUG" "" ${flag_var} "${${flag_var}}")
     endif ()
 endforeach ()