From 1f33e4a632f88c4f4344f02c0e19e6832ddee134 Mon Sep 17 00:00:00 2001 From: microplankton Date: Thu, 3 Nov 2016 01:16:02 +0100 Subject: [PATCH 1/4] Add an option to link with MSVC static runtime instead of the dynamic one Signed-off-by: Dave Rodgman --- CMakeLists.txt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index f31794df6..2fecb6efd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -242,6 +242,20 @@ if(MBEDTLS_FATAL_WARNINGS) endif(CMAKE_COMPILER_IS_CLANG OR CMAKE_COMPILER_IS_GNU) endif(MBEDTLS_FATAL_WARNINGS) +if(MSVC) + option(BUILD_WITH_STATIC_RUNTIME "Build the libraries with /MT compiler flag" OFF) + if(BUILD_WITH_STATIC_RUNTIME) + foreach(flag_var + CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO + CMAKE_C_FLAGS_CHECK) + if(${flag_var} MATCHES "/MD") + string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") + endif(${flag_var} MATCHES "/MD") + endforeach(flag_var) + endif() +endif() + if(CMAKE_BUILD_TYPE STREQUAL "Coverage") if(CMAKE_COMPILER_IS_GNU OR CMAKE_COMPILER_IS_CLANG) set(CMAKE_SHARED_LINKER_FLAGS "--coverage") From bb54237ecf6020922a8159187951d065d2fea75d Mon Sep 17 00:00:00 2001 From: Krzysztof Stachowiak Date: Wed, 17 Oct 2018 13:10:54 +0200 Subject: [PATCH 2/4] Remove redundant check from CMakeLists.txt Signed-off-by: Dave Rodgman --- CMakeLists.txt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2fecb6efd..5b4cd401d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -249,9 +249,7 @@ if(MSVC) CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO CMAKE_C_FLAGS_CHECK) - if(${flag_var} MATCHES "/MD") - string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") - endif(${flag_var} MATCHES "/MD") + string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") endforeach(flag_var) endif() endif() From de6effa6453d8f50041dce075b9f769c74119e17 Mon Sep 17 00:00:00 2001 From: Krzysztof Stachowiak Date: Wed, 31 Oct 2018 12:46:37 +0100 Subject: [PATCH 3/4] Change the MSVC static runtime CMake option name and moved it into the library directory Signed-off-by: Dave Rodgman --- CMakeLists.txt | 12 ------------ library/CMakeLists.txt | 12 ++++++++++++ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5b4cd401d..f31794df6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -242,18 +242,6 @@ if(MBEDTLS_FATAL_WARNINGS) endif(CMAKE_COMPILER_IS_CLANG OR CMAKE_COMPILER_IS_GNU) endif(MBEDTLS_FATAL_WARNINGS) -if(MSVC) - option(BUILD_WITH_STATIC_RUNTIME "Build the libraries with /MT compiler flag" OFF) - if(BUILD_WITH_STATIC_RUNTIME) - foreach(flag_var - CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE - CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO - CMAKE_C_FLAGS_CHECK) - string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") - endforeach(flag_var) - endif() -endif() - if(CMAKE_BUILD_TYPE STREQUAL "Coverage") if(CMAKE_COMPILER_IS_GNU OR CMAKE_COMPILER_IS_CLANG) set(CMAKE_SHARED_LINKER_FLAGS "--coverage") diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index df7f170d3..f07d3b4a9 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -187,6 +187,18 @@ if(CMAKE_COMPILER_IS_CLANG) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wmissing-declarations -Wmissing-prototypes -Wdocumentation -Wno-documentation-deprecated-sync -Wunreachable-code") endif(CMAKE_COMPILER_IS_CLANG) +if(CMAKE_COMPILER_IS_MSVC) + option(MSVC_STATIC_RUNTIME "Build the libraries with /MT compiler flag" OFF) + if(MSVC_STATIC_RUNTIME) + foreach(flag_var + CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO + CMAKE_C_FLAGS_CHECK) + string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") + endforeach(flag_var) + endif() +endif() + if(WIN32) set(libs ${libs} ws2_32) endif(WIN32) From 8790fa2088b47f70c1f76d11ca06429fadf73d0b Mon Sep 17 00:00:00 2001 From: Krzysztof Stachowiak Date: Fri, 8 Apr 2022 10:08:49 +0100 Subject: [PATCH 4/4] Add ChangeLog entry Signed-off-by: Dave Rodgman --- ChangeLog.d/static_link_common_runtime_msvc.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 ChangeLog.d/static_link_common_runtime_msvc.txt diff --git a/ChangeLog.d/static_link_common_runtime_msvc.txt b/ChangeLog.d/static_link_common_runtime_msvc.txt new file mode 100644 index 000000000..6104943ad --- /dev/null +++ b/ChangeLog.d/static_link_common_runtime_msvc.txt @@ -0,0 +1,3 @@ +Changes + * Add a CMake option that enables static linking of the runtime library + in Microsoft Visual C++ compiler. Contributed by Microplankton.