[llvm] r194596 - CMake: make building with /MT an option instead of always forcing it

Reid Kleckner rnk at google.com
Wed Nov 13 11:39:20 PST 2013


We already have LLVM_USE_CRT_${CMAKE_BUILD_TYPE} in
llvm/modules/ChooseMSVCCRT.cmake, which can be any of MD, MDd, MT, MTd.  Do
we need this at all if it's going to be configurable?


On Wed, Nov 13, 2013 at 11:12 AM, Hans Wennborg <hans at hanshq.net> wrote:

> Author: hans
> Date: Wed Nov 13 13:12:02 2013
> New Revision: 194596
>
> URL: http://llvm.org/viewvc/llvm-project?rev=194596&view=rev
> Log:
> CMake: make building with /MT an option instead of always forcing it
> for release builds.
>
> This is a follow-up to r194589. Aaron pointed out that building
> libraries with /MT and using them in an application that uses a
> different run-time library can be a bad idea.
>
> Move the option to build with /MT behind a CMake option so it can be
> turned on selectively, such as when building the toolchain installer.
>
> Modified:
>     llvm/trunk/CMakeLists.txt
>     llvm/trunk/cmake/modules/HandleLLVMOptions.cmake
>     llvm/trunk/docs/CMake.rst
>
> Modified: llvm/trunk/CMakeLists.txt
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/CMakeLists.txt?rev=194596&r1=194595&r2=194596&view=diff
>
> ==============================================================================
> --- llvm/trunk/CMakeLists.txt (original)
> +++ llvm/trunk/CMakeLists.txt Wed Nov 13 13:12:02 2013
> @@ -17,6 +17,8 @@ set(PACKAGE_VERSION "${LLVM_VERSION_MAJO
>
>  option(LLVM_INSTALL_TOOLCHAIN_ONLY "Only include toolchain files in the
> 'install' target." OFF)
>
> +option(LLVM_STATIC_MSVC_RUNTIME "When using MSVC, link against the static
> run-time (/MT)" OFF)
> +
>  option(LLVM_USE_FOLDERS "Enable solution folders in Visual Studio.
> Disable for Express versions." ON)
>  if ( LLVM_USE_FOLDERS )
>    set_property(GLOBAL PROPERTY USE_FOLDERS ON)
>
> Modified: llvm/trunk/cmake/modules/HandleLLVMOptions.cmake
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/HandleLLVMOptions.cmake?rev=194596&r1=194595&r2=194596&view=diff
>
> ==============================================================================
> --- llvm/trunk/cmake/modules/HandleLLVMOptions.cmake (original)
> +++ llvm/trunk/cmake/modules/HandleLLVMOptions.cmake Wed Nov 13 13:12:02
> 2013
> @@ -41,13 +41,16 @@ else()
>    endif()
>  endif()
>
> -if(MSVC)
> -  # Link release builds against the static runtime.
> +if(MSVC AND LLVM_STATIC_MSVC_RUNTIME)
> +  # Link against the static runtime.
>    foreach(flag CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO
>        CMAKE_C_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELEASE
>        CMAKE_CXX_FLAGS_RELWITHDEBINFO CMAKE_CXX_FLAGS_MINSIZEREL)
>      llvm_replace_compiler_option("${flag}" "/MD" "/MT")
>    endforeach()
> +  foreach(flag CMAKE_C_FLAGS_DEBUG CMAKE_CXX_FLAGS_DEBUG)
> +    llvm_replace_compiler_option("${flag}" "/MDd" "/MTd")
> +  endforeach()
>  endif()
>
>  if(WIN32)
>
> Modified: llvm/trunk/docs/CMake.rst
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/CMake.rst?rev=194596&r1=194595&r2=194596&view=diff
>
> ==============================================================================
> --- llvm/trunk/docs/CMake.rst (original)
> +++ llvm/trunk/docs/CMake.rst Wed Nov 13 13:12:02 2013
> @@ -280,6 +280,11 @@ LLVM-specific variables
>    are ``Address``, ``Memory`` and ``MemoryWithOrigins``. Defaults to empty
>    string.
>
> +**LLVM_STATIC_MSVC_RUNTIME**:BOOL
> +  When building with MSVC, link against the static runtime library (/MT
> or /MTd
> +  for release and debug builds, respectively) instead of the dynamic one.
> +  Defaults to OFF.
> +
>  Executing the test suite
>  ========================
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20131113/999e3771/attachment.html>


More information about the llvm-commits mailing list