llvm-project/cmake/Modules/CMakePolicy.cmake
Aiden Grossman 2f08927fd5 Reland "[CMake] Do not set CMP0116 explicitly to old (#90385)"
This reverts commit fa65a228f4b46346e69e9b95805a8bcfa8483a60.

This relands commit ab405fb6e9ff9202ca722f632b945d4b84c653f5.

There was an issue where CMake versions <3.23.0 would not properly parse
dep files, causing the build to file. This patch fixes that by just
making CMake versions <3.23.0 use the fallback behavior.
2025-04-26 17:59:41 +00:00

44 lines
1.7 KiB
CMake

# CMake policy settings shared between LLVM projects
# MSVC debug information format flags are selected via
# CMAKE_MSVC_DEBUG_INFORMATION_FORMAT, instead of
# embedding flags in e.g. CMAKE_CXX_FLAGS_RELEASE.
# New in CMake 3.25.
#
# Supports debug info with SCCache
# (https://github.com/mozilla/sccache?tab=readme-ov-file#usage)
# avoiding “fatal error C1041: cannot open program database; if
# multiple CL.EXE write to the same .PDB file, please use /FS"
if(POLICY CMP0141)
cmake_policy(SET CMP0141 NEW)
endif()
# CMP0144: find_package() uses uppercase <PackageName>_ROOT variables.
# New in CMake 3.27: https://cmake.org/cmake/help/latest/policy/CMP0144.html
if(POLICY CMP0144)
cmake_policy(SET CMP0144 NEW)
endif()
# CMP0147: Visual Studio Generators build custom commands in parallel.
# New in CMake 3.27: https://cmake.org/cmake/help/latest/policy/CMP0147.html
if(POLICY CMP0147)
cmake_policy(SET CMP0147 NEW)
endif()
# CMP0156: De-duplicate libraries on link lines based on linker capabilities.
# New in CMake 3.29: https://cmake.org/cmake/help/latest/policy/CMP0156.html
# Avoids the deluge of 'ld: warning: ignoring duplicate libraries' warnings when
# building with the Apple linker.
if(POLICY CMP0156)
cmake_policy(SET CMP0156 NEW)
# CMP0179: De-duplication of static libraries on link lines keeps first occurrence.
# Dependent on CMP0156=NEW. Unifies the behaviour across platforms.
# Works around a LLD bug ELF backend bug (#116669) and required for CMP0156
# to have an effect for affected versions. Also fixes building with CMake 3.31.0,
# which lacked the workaround of ignoring CMP0156 unless this is enabled.
if(POLICY CMP0179)
cmake_policy(SET CMP0179 NEW)
endif()
endif()