diff options
author | John Ericson <John.Ericson@Obsidian.Systems> | 2022-01-18 22:58:31 +0000 |
---|---|---|
committer | John Ericson <John.Ericson@Obsidian.Systems> | 2022-01-19 22:05:23 +0000 |
commit | 429a717ea5ec141b5c0c93c2c53097dccf67e05a (patch) | |
tree | 2e9941111446fe98dc6cf05efcb913e68b0ee394 /cmake | |
parent | a767ae2c5ce7615c188baabd3b6a52bb880de234 (diff) | |
download | llvm-429a717ea5ec141b5c0c93c2c53097dccf67e05a.zip llvm-429a717ea5ec141b5c0c93c2c53097dccf67e05a.tar.gz llvm-429a717ea5ec141b5c0c93c2c53097dccf67e05a.tar.bz2 |
[cmake] Move HandleOutOfTreeLLVM to common cmake utils
This is better than libunwind and libcxxabi fishing it out of libcxx's
module directory.
It is done in prepartion for a better version of D117537 which deduplicates
CMake logic instead of just renaming to avoid a name clash.
Reviewed By: phosek, #libunwind, #libc_abi, Ericson2314
Differential Revision: https://reviews.llvm.org/D117617
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/Modules/HandleOutOfTreeLLVM.cmake | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/cmake/Modules/HandleOutOfTreeLLVM.cmake b/cmake/Modules/HandleOutOfTreeLLVM.cmake new file mode 100644 index 0000000..edffe57 --- /dev/null +++ b/cmake/Modules/HandleOutOfTreeLLVM.cmake @@ -0,0 +1,80 @@ +if (NOT DEFINED LLVM_PATH) + set(LLVM_PATH ${CMAKE_CURRENT_LIST_DIR}/../../llvm CACHE PATH "" FORCE) +endif() + +if(NOT IS_DIRECTORY ${LLVM_PATH}) + message(FATAL_ERROR + "The provided LLVM_PATH (${LLVM_PATH}) is not a valid directory. Note that " + "building libc++ outside of the monorepo is not supported anymore. Please " + "use a Standalone build against the monorepo, a Runtimes build or a classic " + "monorepo build.") +endif() + +set(LLVM_INCLUDE_DIR ${LLVM_PATH}/include CACHE PATH "Path to llvm/include") +set(LLVM_PATH ${LLVM_PATH} CACHE PATH "Path to LLVM source tree") +set(LLVM_MAIN_SRC_DIR ${LLVM_PATH}) +set(LLVM_CMAKE_DIR "${LLVM_PATH}/cmake/modules") +set(LLVM_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}) +set(LLVM_LIBRARY_OUTPUT_INTDIR "${CMAKE_CURRENT_BINARY_DIR}/lib") + +if (EXISTS "${LLVM_CMAKE_DIR}") + list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}") +elseif (EXISTS "${LLVM_MAIN_SRC_DIR}/cmake/modules") + list(APPEND CMAKE_MODULE_PATH "${LLVM_MAIN_SRC_DIR}/cmake/modules") +else() + message(FATAL_ERROR "Neither ${LLVM_CMAKE_DIR} nor ${LLVM_MAIN_SRC_DIR}/cmake/modules found. " + "This is not a supported configuration.") +endif() + +message(STATUS "Configuring for standalone build.") + +# By default, we target the host, but this can be overridden at CMake invocation time. +include(GetHostTriple) +get_host_triple(LLVM_INFERRED_HOST_TRIPLE) +set(LLVM_HOST_TRIPLE "${LLVM_INFERRED_HOST_TRIPLE}" CACHE STRING "Host on which LLVM binaries will run") +set(LLVM_DEFAULT_TARGET_TRIPLE "${LLVM_HOST_TRIPLE}" CACHE STRING "Target triple used by default.") + +# Add LLVM Functions -------------------------------------------------------- +if (WIN32) + set(LLVM_ON_UNIX 0) + set(LLVM_ON_WIN32 1) +else() + set(LLVM_ON_UNIX 1) + set(LLVM_ON_WIN32 0) +endif() + +include(AddLLVM OPTIONAL) + +# LLVM Options -------------------------------------------------------------- +if (NOT DEFINED LLVM_INCLUDE_TESTS) + set(LLVM_INCLUDE_TESTS ON) +endif() +if (NOT DEFINED LLVM_INCLUDE_DOCS) + set(LLVM_INCLUDE_DOCS ON) +endif() +if (NOT DEFINED LLVM_ENABLE_SPHINX) + set(LLVM_ENABLE_SPHINX OFF) +endif() + +if (LLVM_INCLUDE_TESTS) + # Required LIT Configuration ------------------------------------------------ + # Define the default arguments to use with 'lit', and an option for the user + # to override. + set(LLVM_DEFAULT_EXTERNAL_LIT "${LLVM_MAIN_SRC_DIR}/utils/lit/lit.py") + set(LIT_ARGS_DEFAULT "-sv --show-xfail --show-unsupported") + if (MSVC OR XCODE) + set(LIT_ARGS_DEFAULT "${LIT_ARGS_DEFAULT} --no-progress-bar") + endif() + set(LLVM_LIT_ARGS "${LIT_ARGS_DEFAULT}" CACHE STRING "Default options for lit") +endif() + +# Required doc configuration +if (LLVM_ENABLE_SPHINX) + find_package(Sphinx REQUIRED) +endif() + +if (LLVM_ON_UNIX AND NOT APPLE) + set(LLVM_HAVE_LINK_VERSION_SCRIPT 1) +else() + set(LLVM_HAVE_LINK_VERSION_SCRIPT 0) +endif() |