With the new behaviour, the /MD or similar options aren't added to e.g. CMAKE_CXX_FLAGS_RELEASE, but are added separately by CMake. They can be changed by the cmake variable CMAKE_MSVC_RUNTIME_LIBRARY or with the target property MSVC_RUNTIME_LIBRARY. LLVM has had its own custom CMake flags, e.g. LLVM_USE_CRT_RELEASE, which affects which CRT is used for release mode builds. Deprecate these and direct users to use CMAKE_MSVC_RUNTIME_LIBRARY directly instead (and do a best effort attempt at setting CMAKE_MSVC_RUNTIME_LIBRARY based on the existing LLVM_USE_CRT_ flags). This only handles the simple cases, it doesn't handle multi-config generators with different LLVM_USE_CRT_* variables for different configs though, but that's probably fine - we should move over to the new upstream CMake mechanism anyway, and push users towards that. Change code in compiler-rt, that previously tried to override the CRT choice to /MT, to set CMAKE_MSVC_RUNTIME_LIBRARY instead of meddling in the old variables. This resolves the policy issue in https://github.com/llvm/llvm-project/issues/63286, and should handle the issues that were observed originally when the minimum CMake version was bumped, in https://github.com/llvm/llvm-project/issues/62719 and https://github.com/llvm/llvm-project/issues/62739. Differential Revision: https://reviews.llvm.org/D155233
13 lines
468 B
CMake
13 lines
468 B
CMake
# CMake policy settings shared between LLVM projects
|
|
|
|
# CMP0114: ExternalProject step targets fully adopt their steps.
|
|
# New in CMake 3.19: https://cmake.org/cmake/help/latest/policy/CMP0114.html
|
|
if(POLICY CMP0114)
|
|
cmake_policy(SET CMP0114 OLD)
|
|
endif()
|
|
# CMP0116: Ninja generators transform `DEPFILE`s from `add_custom_command()`
|
|
# New in CMake 3.20. https://cmake.org/cmake/help/latest/policy/CMP0116.html
|
|
if(POLICY CMP0116)
|
|
cmake_policy(SET CMP0116 OLD)
|
|
endif()
|