macro(find_llvm_parts) # Rely on llvm-config. set(CONFIG_OUTPUT) find_program(LLVM_CONFIG "llvm-config") 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} "--includedir" "--prefix" "--src-root") execute_process( COMMAND ${CONFIG_COMMAND} RESULT_VARIABLE HAD_ERROR OUTPUT_VARIABLE CONFIG_OUTPUT ) if(NOT HAD_ERROR) string(REGEX REPLACE "[ \t]*[\r\n]+[ \t]*" ";" CONFIG_OUTPUT ${CONFIG_OUTPUT}) else() string(REPLACE ";" " " CONFIG_COMMAND_STR "${CONFIG_COMMAND}") message(STATUS "${CONFIG_COMMAND_STR}") message(FATAL_ERROR "llvm-config failed with status ${HAD_ERROR}") endif() list(GET CONFIG_OUTPUT 0 INCLUDE_DIR) list(GET CONFIG_OUTPUT 1 LLVM_OBJ_ROOT) list(GET CONFIG_OUTPUT 2 MAIN_SRC_DIR) set(LLVM_INCLUDE_DIR ${INCLUDE_DIR} CACHE PATH "Path to llvm/include") set(LLVM_BINARY_DIR ${LLVM_OBJ_ROOT} CACHE PATH "Path to LLVM build tree") set(LLVM_MAIN_SRC_DIR ${MAIN_SRC_DIR} CACHE PATH "Path to LLVM source tree") set(LLVM_CMAKE_PATH "${LLVM_BINARY_DIR}/share/llvm/cmake") else() set(LLVM_FOUND OFF) return() endif() if (NOT EXISTS ${LLVM_MAIN_SRC_DIR}) message(FATAL_ERROR "Not found: ${LLVM_MAIN_SRC_DIR}") endif() if(NOT EXISTS ${LLVM_CMAKE_PATH}) message(FATAL_ERROR "Not found: ${LLVM_CMAKE_PATH}") 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) message(STATUS "Configuring for standalone build.") find_llvm_parts() # LLVM Options -------------------------------------------------------------- include(FindPythonInterp) if( NOT PYTHONINTERP_FOUND ) message(WARNING "Failed to find python interpreter. " "The libc++ test suite will be disabled.") set(LLVM_INCLUDE_TESTS OFF) endif() if (NOT DEFINED LLVM_INCLUDE_TESTS) set(LLVM_INCLUDE_TESTS ${LLVM_FOUND}) endif() # Required LIT Configuration ------------------------------------------------ # Define the default arguments to use with 'lit', and an option for the user # to override. 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") # Make sure we can use the console pool for recent cmake and ninja > 1.5 # Needed for add_lit_testsuite if(CMAKE_VERSION VERSION_LESS 3.1.20141117) set(cmake_3_2_USES_TERMINAL) else() set(cmake_3_2_USES_TERMINAL USES_TERMINAL) endif() # Add LLVM Functions -------------------------------------------------------- include(AddLLVM OPTIONAL) endif()