diff --git a/compiler-rt/CMakeLists.txt b/compiler-rt/CMakeLists.txt --- a/compiler-rt/CMakeLists.txt +++ b/compiler-rt/CMakeLists.txt @@ -12,12 +12,19 @@ set_property(GLOBAL PROPERTY USE_FOLDERS ON) endif() +# Has to be copied between projects because this is how we bootstrap these +# shared modules. +if(NOT DEFINED COMMON_CMAKE_UTILS) + set(COMMON_CMAKE_UTILS CACHE PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake" + "CMake utilities shared between projects but not installed") +endif() + # Add path for custom compiler-rt modules. list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_CURRENT_SOURCE_DIR}/cmake" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules" - "${CMAKE_CURRENT_SOURCE_DIR}/../cmake" - "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/Modules" + "${COMMON_CMAKE_UTILS}" + "${COMMON_CMAKE_UTILS}/Modules" ) if(CMAKE_CONFIGURATION_TYPES) diff --git a/compiler-rt/lib/builtins/CMakeLists.txt b/compiler-rt/lib/builtins/CMakeLists.txt --- a/compiler-rt/lib/builtins/CMakeLists.txt +++ b/compiler-rt/lib/builtins/CMakeLists.txt @@ -9,11 +9,22 @@ project(CompilerRTBuiltins C ASM) set(COMPILER_RT_STANDALONE_BUILD TRUE) set(COMPILER_RT_BUILTINS_STANDALONE_BUILD TRUE) + + set(COMPILER_RT_SOURCE_DIR}"${CMAKE_CURRENT_SOURCE_DIR}/../..") + + # Has to be copied between projects because this is how we bootstrap these + # shared modules. + set(COMMON_CMAKE_UTILS CACHE PATH "${COMPILER_RT_SOURCE_DIR}/../cmake" + "CMake utilities shared between projects but not installed") + + # Add path for custom modules list(INSERT CMAKE_MODULE_PATH 0 - "${CMAKE_SOURCE_DIR}/../../cmake" - "${CMAKE_SOURCE_DIR}/../../cmake/Modules" - "${CMAKE_SOURCE_DIR}/../../../cmake" - "${CMAKE_SOURCE_DIR}/../../../cmake/Modules") + "${COMPILER_RT_SOURCE_DIR}/cmake" + "${COMPILER_RT_SOURCE_DIR}/cmake/Modules" + "${COMMON_CMAKE_UTILS}/cmake" + "${COMMON_CMAKE_UTILS}/cmake/Modules" + ) + include(base-config-ix) include(CompilerRTUtils) diff --git a/flang/CMakeLists.txt b/flang/CMakeLists.txt --- a/flang/CMakeLists.txt +++ b/flang/CMakeLists.txt @@ -227,10 +227,17 @@ ${FLANG_BINARY_DIR}/include ${FLANG_SOURCE_DIR}/include) +# Has to be copied between projects because this is how we bootstrap these +# shared modules. +if(NOT DEFINED COMMON_CMAKE_UTILS) + set(COMMON_CMAKE_UTILS CACHE PATH "${FLANG_SOURCE_DIR}/../cmake" + "CMake utilities shared between projects but not installed") +endif() + # Add Flang-centric modules to cmake path. list(INSERT CMAKE_MODULE_PATH 0 "${FLANG_SOURCE_DIR}/cmake/modules" - "${FLANG_SOURCE_DIR}/../cmake/Modules" + "${COMMON_CMAKE_UTILS}/Modules" ) include(AddFlang) diff --git a/libcxx/CMakeLists.txt b/libcxx/CMakeLists.txt --- a/libcxx/CMakeLists.txt +++ b/libcxx/CMakeLists.txt @@ -10,13 +10,19 @@ #=============================================================================== cmake_minimum_required(VERSION 3.13.4) +# Has to be copied between projects because this is how we bootstrap these +# shared modules. +if(NOT DEFINED COMMON_CMAKE_UTILS) + set(COMMON_CMAKE_UTILS CACHE PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake" + "CMake utilities shared between projects but not installed") +endif() + # Add path for custom modules -set(CMAKE_MODULE_PATH +list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_CURRENT_SOURCE_DIR}/cmake" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules" - "${CMAKE_CURRENT_SOURCE_DIR}/../cmake" - "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/Modules" - ${CMAKE_MODULE_PATH} + "${COMMON_CMAKE_UTILS}" + "${COMMON_CMAKE_UTILS}/Modules" ) set(CMAKE_FOLDER "libc++") diff --git a/libcxxabi/CMakeLists.txt b/libcxxabi/CMakeLists.txt --- a/libcxxabi/CMakeLists.txt +++ b/libcxxabi/CMakeLists.txt @@ -10,13 +10,19 @@ cmake_minimum_required(VERSION 3.13.4) +# Has to be copied between projects because this is how we bootstrap these +# shared modules. +if(NOT DEFINED COMMON_CMAKE_UTILS) + set(COMMON_CMAKE_UTILS CACHE PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake" + "CMake utilities shared between projects but not installed") +endif() + # Add path for custom modules -set(CMAKE_MODULE_PATH +list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_CURRENT_SOURCE_DIR}/cmake" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules" - "${CMAKE_CURRENT_SOURCE_DIR}/../cmake" - "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/Modules" - ${CMAKE_MODULE_PATH} + "${COMMON_CMAKE_UTILS}/cmake" + "${COMMON_CMAKE_UTILS}/cmake/Modules" ) set(CMAKE_FOLDER "libc++") diff --git a/libunwind/CMakeLists.txt b/libunwind/CMakeLists.txt --- a/libunwind/CMakeLists.txt +++ b/libunwind/CMakeLists.txt @@ -8,13 +8,19 @@ cmake_minimum_required(VERSION 3.13.4) +# Has to be copied between projects because this is how we bootstrap these +# shared modules. +if(NOT DEFINED COMMON_CMAKE_UTILS) + set(COMMON_CMAKE_UTILS CACHE PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake" + "CMake utilities shared between projects but not installed") +endif() + # Add path for custom modules -set(CMAKE_MODULE_PATH +list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_CURRENT_SOURCE_DIR}/cmake" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules" - "${CMAKE_CURRENT_SOURCE_DIR}/../cmake" - "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/Modules" - ${CMAKE_MODULE_PATH} + "${COMMON_CMAKE_UTILS}" + "${COMMON_CMAKE_UTILS}/Modules" ) set(LIBUNWIND_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/lld/CMakeLists.txt b/lld/CMakeLists.txt --- a/lld/CMakeLists.txt +++ b/lld/CMakeLists.txt @@ -153,10 +153,17 @@ "`CMakeFiles'. Please delete them.") endif() +# Has to be copied between projects because this is how we bootstrap these +# shared modules. +if(NOT DEFINED COMMON_CMAKE_UTILS) + set(COMMON_CMAKE_UTILS CACHE PATH "${LLD_SOURCE_DIR}/../cmake" + "CMake utilities shared between projects but not installed") +endif() + # Add path for custom modules. list(INSERT CMAKE_MODULE_PATH 0 "${LLD_SOURCE_DIR}/cmake/modules" - "${LLD_SOURCE_DIR}/../cmake/Modules" + "${COMMON_CMAKE_UTILS}/Modules" ) include(AddLLD) diff --git a/runtimes/CMakeLists.txt b/runtimes/CMakeLists.txt --- a/runtimes/CMakeLists.txt +++ b/runtimes/CMakeLists.txt @@ -28,12 +28,19 @@ find_package(LLVM PATHS "${LLVM_BINARY_DIR}" NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) find_package(Clang PATHS "${LLVM_BINARY_DIR}" NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) +# Has to be copied between projects because this is how we bootstrap these +# shared modules. +if(NOT DEFINED COMMON_CMAKE_UTILS) + set(COMMON_CMAKE_UTILS CACHE PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake" + "CMake utilities shared between projects but not installed") +endif() + # Add path for custom and the LLVM build's modules to the CMake module path. list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_CURRENT_SOURCE_DIR}/cmake" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" - "${CMAKE_CURRENT_SOURCE_DIR}/../cmake" - "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/Modules" + "${COMMON_CMAKE_UTILS}" + "${COMMON_CMAKE_UTILS}/Modules" "${CMAKE_CURRENT_SOURCE_DIR}/../llvm/cmake" "${CMAKE_CURRENT_SOURCE_DIR}/../llvm/cmake/modules" )