Skip to content

Commit 9dd01a5

Browse files
committed
Harmonize cmake_policy() across standalone builds of all projects
Move `cmake_policy()` settings from `llvm/CMakeLists.txt` into a shared `cmake/modules/CMakePolicy.cmake`. Include it from all relevant projects that support standalone builds, in order to ensure that the policies are consistently set whether they are built in-tree or stand-alone. Differential Revision: https://reviews.llvm.org/D136572
1 parent fecf067 commit 9dd01a5

File tree

8 files changed

+46
-36
lines changed

8 files changed

+46
-36
lines changed

clang/CMakeLists.txt

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
cmake_minimum_required(VERSION 3.13.4)
22

3+
if(NOT DEFINED LLVM_COMMON_CMAKE_UTILS)
4+
set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake)
5+
endif()
6+
include(${LLVM_COMMON_CMAKE_UTILS}/Modules/CMakePolicy.cmake
7+
NO_POLICY_SCOPE)
8+
39
# If we are not building as a part of LLVM, build Clang as an
410
# standalone project, using LLVM as an external library:
511
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
@@ -136,10 +142,6 @@ if(CLANG_BUILT_STANDALONE)
136142
endif() # LLVM_INCLUDE_TESTS
137143
endif() # standalone
138144

139-
if(NOT DEFINED LLVM_COMMON_CMAKE_UTILS)
140-
set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake)
141-
endif()
142-
143145
# Make sure that our source directory is on the current cmake module path so that
144146
# we can include cmake files from this directory.
145147
list(INSERT CMAKE_MODULE_PATH 0

cmake/Modules/CMakePolicy.cmake

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# CMake policy settings shared between LLVM projects
2+
3+
# CMP0114: ExternalProject step targets fully adopt their steps.
4+
# New in CMake 3.19: https://cmake.org/cmake/help/latest/policy/CMP0114.html
5+
if(POLICY CMP0114)
6+
cmake_policy(SET CMP0114 OLD)
7+
endif()
8+
# CMP0116: Ninja generators transform `DEPFILE`s from `add_custom_command()`
9+
# New in CMake 3.20. https://cmake.org/cmake/help/latest/policy/CMP0116.html
10+
if(POLICY CMP0116)
11+
cmake_policy(SET CMP0116 OLD)
12+
endif()

flang/CMakeLists.txt

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
cmake_minimum_required(VERSION 3.13.4)
22

3+
if(NOT DEFINED LLVM_COMMON_CMAKE_UTILS)
4+
set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake)
5+
endif()
6+
include(${LLVM_COMMON_CMAKE_UTILS}/Modules/CMakePolicy.cmake
7+
NO_POLICY_SCOPE)
8+
39
set(CMAKE_BUILD_WITH_INSTALL_NAME_DIR ON)
410

511
# Flang requires C++17.
@@ -233,10 +239,6 @@ include_directories(BEFORE
233239
${FLANG_BINARY_DIR}/include
234240
${FLANG_SOURCE_DIR}/include)
235241

236-
if(NOT DEFINED LLVM_COMMON_CMAKE_UTILS)
237-
set(LLVM_COMMON_CMAKE_UTILS ${FLANG_SOURCE_DIR}/../cmake)
238-
endif()
239-
240242
# Add Flang-centric modules to cmake path.
241243
list(INSERT CMAKE_MODULE_PATH 0
242244
"${FLANG_SOURCE_DIR}/cmake/modules"

lld/CMakeLists.txt

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
cmake_minimum_required(VERSION 3.13.4)
22

3+
if(NOT DEFINED LLVM_COMMON_CMAKE_UTILS)
4+
set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake)
5+
endif()
6+
include(${LLVM_COMMON_CMAKE_UTILS}/Modules/CMakePolicy.cmake
7+
NO_POLICY_SCOPE)
8+
39
# If we are not building as a part of LLVM, build LLD as an
410
# standalone project, using LLVM as an external library:
511
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
@@ -140,10 +146,6 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
140146
"`CMakeFiles'. Please delete them.")
141147
endif()
142148

143-
if(NOT DEFINED LLVM_COMMON_CMAKE_UTILS)
144-
set(LLVM_COMMON_CMAKE_UTILS ${LLD_SOURCE_DIR}/../cmake)
145-
endif()
146-
147149
# Add path for custom modules.
148150
list(INSERT CMAKE_MODULE_PATH 0
149151
"${LLD_SOURCE_DIR}/cmake/modules"

lldb/CMakeLists.txt

+6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
cmake_minimum_required(VERSION 3.13.4)
22

3+
if(NOT DEFINED LLVM_COMMON_CMAKE_UTILS)
4+
set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake)
5+
endif()
6+
include(${LLVM_COMMON_CMAKE_UTILS}/Modules/CMakePolicy.cmake
7+
NO_POLICY_SCOPE)
8+
39
# Add path for custom modules.
410
set(CMAKE_MODULE_PATH
511
${CMAKE_MODULE_PATH}

lldb/cmake/modules/LLDBStandalone.cmake

-6
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,3 @@
1-
# CMP0116: Ninja generators transform `DEPFILE`s from `add_custom_command()`
2-
# New in CMake 3.20. https://cmake.org/cmake/help/latest/policy/CMP0116.html
3-
if(POLICY CMP0116)
4-
cmake_policy(SET CMP0116 OLD)
5-
endif()
6-
71
if(NOT DEFINED LLVM_COMMON_CMAKE_UTILS)
82
set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake)
93
endif()

llvm/CMakeLists.txt

+3-12
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,9 @@
22

33
cmake_minimum_required(VERSION 3.13.4)
44

5-
# CMP0114: ExternalProject step targets fully adopt their steps.
6-
# New in CMake 3.19: https://cmake.org/cmake/help/latest/policy/CMP0114.html
7-
if(POLICY CMP0114)
8-
cmake_policy(SET CMP0114 OLD)
9-
endif()
10-
# CMP0116: Ninja generators transform `DEPFILE`s from `add_custom_command()`
11-
# New in CMake 3.20. https://cmake.org/cmake/help/latest/policy/CMP0116.html
12-
if(POLICY CMP0116)
13-
cmake_policy(SET CMP0116 OLD)
14-
endif()
5+
set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake)
6+
include(${LLVM_COMMON_CMAKE_UTILS}/Modules/CMakePolicy.cmake
7+
NO_POLICY_SCOPE)
158

169
set(CMAKE_BUILD_WITH_INSTALL_NAME_DIR ON)
1710

@@ -281,8 +274,6 @@ if(LLVM_ENABLE_GISEL_COV)
281274
set(LLVM_GISEL_COV_PREFIX "${CMAKE_BINARY_DIR}/gisel-coverage-" CACHE STRING "Provide a filename prefix to collect the GlobalISel rule coverage")
282275
endif()
283276

284-
set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake)
285-
286277
# Add path for custom modules
287278
list(INSERT CMAKE_MODULE_PATH 0
288279
"${CMAKE_CURRENT_SOURCE_DIR}/cmake"

mlir/CMakeLists.txt

+7-6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
11
# MLIR project.
2+
cmake_minimum_required(VERSION 3.13.4)
3+
4+
if(NOT DEFINED LLVM_COMMON_CMAKE_UTILS)
5+
set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake)
6+
endif()
7+
include(${LLVM_COMMON_CMAKE_UTILS}/Modules/CMakePolicy.cmake
8+
NO_POLICY_SCOPE)
29

310
# Check if MLIR is built as a standalone project.
411
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
@@ -10,8 +17,6 @@ endif()
1017
include(GNUInstallDirs)
1118

1219
if(MLIR_STANDALONE_BUILD)
13-
cmake_minimum_required(VERSION 3.13.4)
14-
1520
find_package(LLVM CONFIG REQUIRED)
1621
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${LLVM_CMAKE_DIR})
1722
include(HandleLLVMOptions)
@@ -46,10 +51,6 @@ set(MLIR_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
4651
set(MLIR_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/include)
4752
set(MLIR_TOOLS_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
4853

49-
if(NOT DEFINED LLVM_COMMON_CMAKE_UTILS)
50-
set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake)
51-
endif()
52-
5354
# Make sure that our source directory is on the current cmake module path so
5455
# that we can include cmake files from this directory.
5556
list(INSERT CMAKE_MODULE_PATH 0

0 commit comments

Comments
 (0)