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

Hans Wennborg hans at chromium.org
Wed Nov 13 11:19:17 PST 2013


No problem, thanks for catching this!

 - Hans

On Wed, Nov 13, 2013 at 11:17 AM, Aaron Ballman <aaron at aaronballman.com> wrote:
> Thanks Hans!
>
> ~Aaron
>
> On Wed, Nov 13, 2013 at 2:12 PM, 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
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list