diff options
Diffstat (limited to 'cmake/Modules/HandleOutOfTreeLLVM.cmake')
-rw-r--r-- | cmake/Modules/HandleOutOfTreeLLVM.cmake | 87 |
1 files changed, 41 insertions, 46 deletions
diff --git a/cmake/Modules/HandleOutOfTreeLLVM.cmake b/cmake/Modules/HandleOutOfTreeLLVM.cmake index 9c5dd81092616..c772143244ae6 100644 --- a/cmake/Modules/HandleOutOfTreeLLVM.cmake +++ b/cmake/Modules/HandleOutOfTreeLLVM.cmake @@ -1,15 +1,18 @@ macro(find_llvm_parts) # Rely on llvm-config. set(CONFIG_OUTPUT) - find_program(LLVM_CONFIG "llvm-config") + if(NOT LLVM_CONFIG_PATH) + find_program(LLVM_CONFIG_PATH "llvm-config") + endif() if(DEFINED LLVM_PATH) set(LLVM_INCLUDE_DIR ${LLVM_INCLUDE_DIR} 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_PATH "${LLVM_PATH}/cmake/modules") - elseif(LLVM_CONFIG) - message(STATUS "Found LLVM_CONFIG as ${LLVM_CONFIG}") - set(CONFIG_COMMAND ${LLVM_CONFIG} + elseif(LLVM_CONFIG_PATH) + message(STATUS "Found LLVM_CONFIG_PATH as ${LLVM_CONFIG_PATH}") + set(LIBCXX_USING_INSTALLED_LLVM 1) + set(CONFIG_COMMAND ${LLVM_CONFIG_PATH} "--includedir" "--prefix" "--src-root") @@ -38,34 +41,48 @@ macro(find_llvm_parts) set(LLVM_CMAKE_PATH "${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/cmake/llvm") else() set(LLVM_FOUND OFF) + message(WARNING "UNSUPPORTED LIBCXX CONFIGURATION DETECTED: " + "llvm-config not found and LLVM_PATH not defined.\n" + "Reconfigure with -DLLVM_CONFIG_PATH=path/to/llvm-config " + "or -DLLVM_PATH=path/to/llvm-source-root.") return() endif() - if (NOT EXISTS ${LLVM_MAIN_SRC_DIR}) - set(LLVM_FOUND OFF) - message(WARNING "Not found: ${LLVM_MAIN_SRC_DIR}") - return() - endif() - - if(NOT EXISTS ${LLVM_CMAKE_PATH}) + if (EXISTS "${LLVM_CMAKE_PATH}") + list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_PATH}") + elseif (EXISTS "${LLVM_MAIN_SRC_DIR}/cmake/modules") + list(APPEND CMAKE_MODULE_PATH "${LLVM_MAIN_SRC_DIR}/cmake/modules") + else() set(LLVM_FOUND OFF) - message(WARNING "Not found: ${LLVM_CMAKE_PATH}") + message(WARNING "Neither ${LLVM_CMAKE_PATH} nor ${LLVM_MAIN_SRC_DIR}/cmake/modules found") return() endif() - list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_PATH}") - list(APPEND CMAKE_MODULE_PATH "${LLVM_MAIN_SRC_DIR}/cmake/modules") - set(LLVM_FOUND ON) endmacro(find_llvm_parts) - -if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) - set(LIBCXX_BUILT_STANDALONE 1) +macro(configure_out_of_tree_llvm) message(STATUS "Configuring for standalone build.") + set(LIBCXX_STANDALONE_BUILD 1) find_llvm_parts() + # Add LLVM Functions -------------------------------------------------------- + if (LLVM_FOUND AND LIBCXX_USING_INSTALLED_LLVM) + include(LLVMConfig) # For TARGET_TRIPLE + else() + if (WIN32) + set(LLVM_ON_UNIX 0) + set(LLVM_ON_WIN32 1) + else() + set(LLVM_ON_UNIX 1) + set(LLVM_ON_WIN32 0) + endif() + endif() + if (LLVM_FOUND) + include(AddLLVM OPTIONAL) + endif() + # LLVM Options -------------------------------------------------------------- include(FindPythonInterp) if( NOT PYTHONINTERP_FOUND ) @@ -95,36 +112,14 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) # Required doc configuration if (LLVM_ENABLE_SPHINX) - message(STATUS "Sphinx enabled.") find_package(Sphinx REQUIRED) - else() - message(STATUS "Sphinx disabled.") endif() - # FIXME - This is cribbed from HandleLLVMOptions.cmake. - if(WIN32) + if (LLVM_ON_UNIX AND NOT APPLE) + set(LLVM_HAVE_LINK_VERSION_SCRIPT 1) + else() set(LLVM_HAVE_LINK_VERSION_SCRIPT 0) - if(CYGWIN) - set(LLVM_ON_WIN32 0) - set(LLVM_ON_UNIX 1) - else(CYGWIN) - set(LLVM_ON_WIN32 1) - set(LLVM_ON_UNIX 0) - endif(CYGWIN) - else(WIN32) - if(UNIX) - set(LLVM_ON_WIN32 0) - set(LLVM_ON_UNIX 1) - if(APPLE) - set(LLVM_HAVE_LINK_VERSION_SCRIPT 0) - else(APPLE) - set(LLVM_HAVE_LINK_VERSION_SCRIPT 1) - endif(APPLE) - else(UNIX) - MESSAGE(SEND_ERROR "Unable to determine platform") - endif(UNIX) - endif(WIN32) + endif() +endmacro(configure_out_of_tree_llvm) - # Add LLVM Functions -------------------------------------------------------- - include(AddLLVM OPTIONAL) -endif() +configure_out_of_tree_llvm() |