Skip to content

Commit df31ff1

Browse files
committed
[cmake] Make include(GNUInstallDirs) always below project(..)
Its defaulting logic must go after `project(..)` to work correctly, but `project(..)` is often in a standalone condition making this awkward, since the rest of the condition code may also need GNUInstallDirs. The good thing is there are the various standalone booleans, which I had missed before. This makes splitting the conditional blocks less awkward. Reviewed By: arichardson, phosek, beanz, ldionne, #libunwind, #libc, #libc_abi Differential Revision: https://reviews.llvm.org/D117639
1 parent c65186c commit df31ff1

File tree

12 files changed

+69
-36
lines changed

12 files changed

+69
-36
lines changed

flang/CMakeLists.txt

+7-3
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ set(CMAKE_CXX_STANDARD 17)
77
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
88
set(CMAKE_CXX_EXTENSIONS OFF)
99

10-
include(GNUInstallDirs)
11-
1210
set(FLANG_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
1311

1412
if (CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR AND NOT MSVC_IDE)
@@ -27,7 +25,14 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
2725
message("Building Flang as a standalone project.")
2826
project(Flang)
2927
set(FLANG_STANDALONE_BUILD ON)
28+
else()
29+
set(FLANG_STANDALONE_BUILD OFF)
30+
endif()
31+
32+
# Must go below project(..)
33+
include(GNUInstallDirs)
3034

35+
if (FLANG_STANDALONE_BUILD)
3136
set(FLANG_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
3237
if (NOT MSVC_IDE)
3338
set(LLVM_ENABLE_ASSERTIONS ${ENABLE_ASSERTIONS}
@@ -179,7 +184,6 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
179184
endif()
180185

181186
else()
182-
set(FLANG_STANDALONE_BUILD OFF)
183187
option(FLANG_INCLUDE_TESTS
184188
"Generate build targets for the Flang unit tests."
185189
${LLVM_INCLUDE_TESTS})

libcxx/CMakeLists.txt

+6-5
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ endif()
1010
#===============================================================================
1111
cmake_minimum_required(VERSION 3.13.4)
1212

13-
include(GNUInstallDirs)
14-
1513
set(LLVM_COMMON_CMAKE_UTILS "${CMAKE_CURRENT_SOURCE_DIR}/../cmake")
1614

1715
# Add path for custom modules
@@ -39,14 +37,17 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR OR LIBCXX_STANDALONE_BUIL
3937
# In a standalone build, we don't have llvm to automatically generate the
4038
# llvm-lit script for us. So we need to provide an explicit directory that
4139
# the configurator should write the script into.
42-
set(LIBCXX_STANDALONE_BUILD 1)
40+
set(LIBCXX_STANDALONE_BUILD TRUE)
4341
set(LLVM_LIT_OUTPUT_DIR "${LIBCXX_BINARY_DIR}/bin")
42+
endif()
43+
44+
# Must go below project(..)
45+
include(GNUInstallDirs)
4446

47+
if (LIBCXX_STANDALONE_BUILD)
4548
# Find the LLVM sources and simulate LLVM CMake options.
4649
include(HandleOutOfTreeLLVM)
47-
endif()
4850

49-
if (LIBCXX_STANDALONE_BUILD)
5051
find_package(Python3 COMPONENTS Interpreter)
5152
if(NOT Python3_Interpreter_FOUND)
5253
message(SEND_ERROR "Python3 not found. Python3 is required")

libcxxabi/CMakeLists.txt

+7-5
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ endif()
1010

1111
cmake_minimum_required(VERSION 3.13.4)
1212

13-
include(GNUInstallDirs)
14-
1513
set(LLVM_COMMON_CMAKE_UTILS "${CMAKE_CURRENT_SOURCE_DIR}/../cmake")
1614

1715
# Add path for custom modules
@@ -37,17 +35,21 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR OR LIBCXXABI_STANDALONE_B
3735
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
3836
set(PACKAGE_BUGREPORT "llvm-bugs@lists.llvm.org")
3937

38+
set(LIBCXXABI_STANDALONE_BUILD TRUE)
39+
4040
# In a standalone build, we don't have llvm to automatically generate the
4141
# llvm-lit script for us. So we need to provide an explicit directory that
4242
# the configurator should write the script into.
43-
set(LIBCXXABI_STANDALONE_BUILD 1)
4443
set(LLVM_LIT_OUTPUT_DIR "${LIBCXXABI_BINARY_DIR}/bin")
44+
endif()
4545

46+
# Must go below project(..)
47+
include(GNUInstallDirs)
48+
49+
if (LIBCXXABI_STANDALONE_BUILD)
4650
# Find the LLVM sources and simulate LLVM CMake options.
4751
include(HandleOutOfTreeLLVM)
48-
endif()
4952

50-
if (LIBCXXABI_STANDALONE_BUILD)
5153
find_package(Python3 COMPONENTS Interpreter)
5254
if(NOT Python3_Interpreter_FOUND)
5355
message(WARNING "Python3 not found, using python2 as a fallback")

libunwind/CMakeLists.txt

+12-7
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ endif()
88

99
cmake_minimum_required(VERSION 3.13.4)
1010

11-
include(GNUInstallDirs)
12-
1311
set(LLVM_COMMON_CMAKE_UTILS "${CMAKE_CURRENT_SOURCE_DIR}/../cmake")
1412

1513
# Add path for custom modules
@@ -30,21 +28,28 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR OR LIBUNWIND_STANDALONE_B
3028
# linking.
3129
include(EnableLanguageNolink)
3230
project(libunwind LANGUAGES NONE)
33-
llvm_enable_language_nolink(C CXX ASM)
3431

3532
set(PACKAGE_NAME libunwind)
3633
set(PACKAGE_VERSION 14.0.0git)
3734
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
3835
set(PACKAGE_BUGREPORT "llvm-bugs@lists.llvm.org")
3936

37+
set(LIBUNWIND_STANDALONE_BUILD TRUE)
38+
endif()
39+
40+
# Must go below project(..)
41+
include(GNUInstallDirs)
42+
43+
if(LIBUNWIND_STANDALONE_BUILD)
44+
llvm_enable_language_nolink(C CXX ASM)
45+
46+
# Find the LLVM sources and simulate LLVM CMake options.
47+
include(HandleOutOfTreeLLVM)
48+
4049
# In a standalone build, we don't have llvm to automatically generate the
4150
# llvm-lit script for us. So we need to provide an explicit directory that
4251
# the configurator should write the script into.
43-
set(LIBUNWIND_STANDALONE_BUILD 1)
4452
set(LLVM_LIT_OUTPUT_DIR "${LIBUNWIND_BINARY_DIR}/bin")
45-
46-
# Find the LLVM sources and simulate LLVM CMake options.
47-
include(HandleOutOfTreeLLVM)
4853
else()
4954
set(LLVM_LIT "${CMAKE_SOURCE_DIR}/utils/lit/lit.py")
5055
endif()

lld/CMakeLists.txt

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

3-
include(GNUInstallDirs)
4-
53
# If we are not building as a part of LLVM, build LLD as an
64
# standalone project, using LLVM as an external library:
75
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
86
project(lld)
7+
set(LLD_BUILT_STANDALONE TRUE)
8+
endif()
99

10+
# Must go below project(..)
11+
include(GNUInstallDirs)
12+
13+
if(LLD_BUILT_STANDALONE)
1014
set(CMAKE_INCLUDE_CURRENT_DIR ON)
1115

1216
# Rely on llvm-config.
@@ -140,8 +144,6 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
140144
if(LLVM_HAVE_LIBXAR)
141145
set(XAR_LIB xar)
142146
endif()
143-
144-
set(LLD_BUILT_STANDALONE TRUE)
145147
endif() # standalone
146148

147149
set(LLD_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})

lldb/CMakeLists.txt

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

3-
include(GNUInstallDirs)
4-
53
# Add path for custom modules.
64
set(CMAKE_MODULE_PATH
75
${CMAKE_MODULE_PATH}
@@ -13,6 +11,13 @@ set(CMAKE_MODULE_PATH
1311
# using LLVM as an external library.
1412
if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
1513
project(lldb)
14+
set(LLDB_BUILT_STANDALONE TRUE)
15+
endif()
16+
17+
# Must go below project(..)
18+
include(GNUInstallDirs)
19+
20+
if(LLDB_BUILT_STANDALONE)
1621
include(LLDBStandalone)
1722

1823
set(CMAKE_CXX_STANDARD 14 CACHE STRING "C++ standard to conform to")

lldb/cmake/modules/LLDBStandalone.cmake

-2
Original file line numberDiff line numberDiff line change
@@ -108,5 +108,3 @@ include_directories(
108108
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
109109
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX})
110110
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX})
111-
112-
set(LLDB_BUILT_STANDALONE 1)

lldb/tools/debugserver/CMakeLists.txt

+5
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@ cmake_minimum_required(VERSION 3.13.4)
22

33
project(Debugserver LANGUAGES C CXX ASM-ATT)
44

5+
# Must go below project(..)
6+
include(GNUInstallDirs)
7+
58
if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
9+
set(LLDB_BUILT_STANDALONE TRUE)
10+
611
set(CMAKE_MODULE_PATH
712
${CMAKE_MODULE_PATH}
813
"${CMAKE_SOURCE_DIR}/../../cmake"

llvm/CMakeLists.txt

+3-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
cmake_minimum_required(VERSION 3.13.4)
44

5-
include(GNUInstallDirs)
6-
75
# CMP0116: Ninja generators transform `DEPFILE`s from `add_custom_command()`
86
# New in CMake 3.20. https://cmake.org/cmake/help/latest/policy/CMP0116.html
97
if(POLICY CMP0116)
@@ -47,6 +45,9 @@ project(LLVM
4745
VERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}
4846
LANGUAGES C CXX ASM)
4947

48+
# Must go after project(..)
49+
include(GNUInstallDirs)
50+
5051
set(CMAKE_CXX_STANDARD 14 CACHE STRING "C++ standard to conform to")
5152
set(CMAKE_CXX_STANDARD_REQUIRED YES)
5253
if (CYGWIN)

mlir/CMakeLists.txt

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
# MLIR project.
22

3-
include(GNUInstallDirs)
4-
53
# Check if MLIR is built as a standalone project.
64
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
75
project(mlir)
6+
set(MLIR_STANDALONE_BUILD TRUE)
7+
endif()
8+
9+
# Must go below project(..)
10+
include(GNUInstallDirs)
11+
12+
if(MLIR_STANDALONE_BUILD)
813
cmake_minimum_required(VERSION 3.13.4)
914

1015
find_package(LLVM CONFIG REQUIRED)

polly/CMakeLists.txt

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
1-
include(GNUInstallDirs)
2-
31
# Check if this is a in tree build.
42
if (NOT DEFINED LLVM_MAIN_SRC_DIR)
53
project(Polly)
64
cmake_minimum_required(VERSION 3.13.4)
5+
set(POLLY_STANDALONE_BUILD TRUE)
6+
endif()
7+
8+
# Must go below project(..)
9+
include(GNUInstallDirs)
710

11+
if(POLLY_STANDALONE_BUILD)
812
# Where is LLVM installed?
913
find_package(LLVM CONFIG REQUIRED)
1014
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${LLVM_CMAKE_DIR})

pstl/CMakeLists.txt

+3-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
#===----------------------------------------------------------------------===##
88
cmake_minimum_required(VERSION 3.13.4)
99

10-
include(GNUInstallDirs)
11-
1210
set(PARALLELSTL_VERSION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/include/pstl/internal/pstl_config.h")
1311
file(STRINGS "${PARALLELSTL_VERSION_FILE}" PARALLELSTL_VERSION_SOURCE REGEX "#define _PSTL_VERSION .*$")
1412
string(REGEX REPLACE "#define _PSTL_VERSION (.*)$" "\\1" PARALLELSTL_VERSION_SOURCE "${PARALLELSTL_VERSION_SOURCE}")
@@ -18,6 +16,9 @@ math(EXPR VERSION_PATCH "(${PARALLELSTL_VERSION_SOURCE} % 10)")
1816

1917
project(ParallelSTL VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH} LANGUAGES CXX)
2018

19+
# Must go below project(..)
20+
include(GNUInstallDirs)
21+
2122
set(PSTL_PARALLEL_BACKEND "serial" CACHE STRING "Threading backend to use. Valid choices are 'serial', 'omp', and 'tbb'. The default is 'serial'.")
2223
set(PSTL_HIDE_FROM_ABI_PER_TU OFF CACHE BOOL "Whether to constrain ABI-unstable symbols to each translation unit (basically, mark them with C's static keyword).")
2324
set(_PSTL_HIDE_FROM_ABI_PER_TU ${PSTL_HIDE_FROM_ABI_PER_TU}) # For __pstl_config_site

0 commit comments

Comments
 (0)