[all-commits] [llvm/llvm-project] c6bd87: [CMake] Switch the CMP0091 policy (MSVC_RUNTIME_LI...

Martin Storsjö via All-commits all-commits at lists.llvm.org
Mon Jul 17 00:24:03 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: c6bd873403a8ac6538a3fe3b3c2fe39c16b146a6
      https://github.com/llvm/llvm-project/commit/c6bd873403a8ac6538a3fe3b3c2fe39c16b146a6
  Author: Martin Storsjö <martin at martin.st>
  Date:   2023-07-17 (Mon, 17 Jul 2023)

  Changed paths:
    M cmake/Modules/CMakePolicy.cmake
    M compiler-rt/CMakeLists.txt
    M compiler-rt/lib/orc/CMakeLists.txt
    M llvm/CMakeLists.txt
    M llvm/cmake/modules/ChooseMSVCCRT.cmake
    M llvm/docs/CMake.rst
    M llvm/lib/Support/CMakeLists.txt

  Log Message:
  -----------
  [CMake] Switch the CMP0091 policy (MSVC_RUNTIME_LIBRARY) to the new behaviour

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




More information about the All-commits mailing list