[cmake] forward LLVM_EXTERNAL_*_SOURCE_DIR to runtimes (#180399)
Allow runtime source directories to live outside the top-level tree by honoring LLVM_EXTERNAL_*_SOURCE_DIR and propagating the values via RUNTIMES_CMAKE_ARGS.
This commit is contained in:
@@ -5,15 +5,18 @@
|
||||
|
||||
set(COMMON_CMAKE_ARGS "-DHAVE_LLVM_LIT=ON;-DCLANG_RESOURCE_DIR=${CLANG_RESOURCE_DIR}")
|
||||
foreach(proj ${LLVM_ENABLE_RUNTIMES})
|
||||
set(proj_dir "${CMAKE_CURRENT_SOURCE_DIR}/../../${proj}")
|
||||
if(IS_DIRECTORY ${proj_dir} AND EXISTS ${proj_dir}/CMakeLists.txt)
|
||||
list(APPEND runtimes ${proj_dir})
|
||||
else()
|
||||
message(FATAL_ERROR "LLVM_ENABLE_RUNTIMES requests ${proj} but directory not found: ${proj_dir}")
|
||||
endif()
|
||||
string(TOUPPER "${proj}" canon_name)
|
||||
STRING(REGEX REPLACE "-" "_" canon_name ${canon_name})
|
||||
set(LLVM_EXTERNAL_${canon_name}_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../${proj}")
|
||||
if(NOT LLVM_EXTERNAL_${canon_name}_SOURCE_DIR)
|
||||
set(LLVM_EXTERNAL_${canon_name}_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../${proj}")
|
||||
endif()
|
||||
set(proj_dir "${LLVM_EXTERNAL_${canon_name}_SOURCE_DIR}")
|
||||
if(NOT IS_DIRECTORY ${proj_dir} OR NOT EXISTS ${proj_dir}/CMakeLists.txt)
|
||||
message(FATAL_ERROR "LLVM_ENABLE_RUNTIMES requests ${proj} but directory not found: ${proj_dir}")
|
||||
endif()
|
||||
list(APPEND runtimes ${proj_dir})
|
||||
list(APPEND RUNTIMES_CMAKE_ARGS
|
||||
"-DLLVM_EXTERNAL_${canon_name}_SOURCE_DIR=${LLVM_EXTERNAL_${canon_name}_SOURCE_DIR}")
|
||||
endforeach()
|
||||
|
||||
function(get_compiler_rt_path path)
|
||||
|
||||
@@ -46,15 +46,17 @@ endif()
|
||||
include(SortSubset)
|
||||
sort_subset("${LLVM_SUPPORTED_RUNTIMES}" "${LLVM_ENABLE_RUNTIMES}" LLVM_ENABLE_RUNTIMES)
|
||||
foreach(proj ${LLVM_ENABLE_RUNTIMES})
|
||||
set(proj_dir "${CMAKE_CURRENT_SOURCE_DIR}/../${proj}")
|
||||
string(TOUPPER "${proj}" canon_name)
|
||||
STRING(REGEX REPLACE "-" "_" canon_name ${canon_name})
|
||||
if(NOT LLVM_EXTERNAL_${canon_name}_SOURCE_DIR)
|
||||
set(LLVM_EXTERNAL_${canon_name}_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../${proj}")
|
||||
endif()
|
||||
set(proj_dir "${LLVM_EXTERNAL_${canon_name}_SOURCE_DIR}")
|
||||
if(IS_DIRECTORY ${proj_dir} AND EXISTS ${proj_dir}/CMakeLists.txt)
|
||||
list(APPEND runtimes ${proj_dir})
|
||||
else()
|
||||
message(FATAL_ERROR "LLVM_ENABLE_RUNTIMES requests ${proj} but directory not found: ${proj_dir}")
|
||||
endif()
|
||||
string(TOUPPER "${proj}" canon_name)
|
||||
STRING(REGEX REPLACE "-" "_" canon_name ${canon_name})
|
||||
set(LLVM_EXTERNAL_${canon_name}_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../${proj}")
|
||||
endforeach()
|
||||
|
||||
function(runtime_register_component name)
|
||||
|
||||
Reference in New Issue
Block a user