Cleanup CMake for out-of-tree builds

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@256606 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eric Fiselier 2015-12-30 01:02:38 +00:00
parent 2c9141a0a2
commit 44f2e41b5f
2 changed files with 48 additions and 27 deletions

View File

@ -12,20 +12,29 @@ if(POLICY CMP0022)
cmake_policy(SET CMP0022 NEW) # Required when interacting with LLVM and Clang
endif()
project(libcxx CXX C)
set(PACKAGE_NAME libcxx)
set(PACKAGE_VERSION trunk-svn)
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
set(PACKAGE_BUGREPORT "llvm-bugs@lists.llvm.org")
# Add path for custom modules
set(CMAKE_MODULE_PATH
"${CMAKE_CURRENT_SOURCE_DIR}/cmake"
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules"
${CMAKE_MODULE_PATH}
${CMAKE_MODULE_PATH}
)
if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
project(libcxx CXX C)
set(PACKAGE_NAME libcxx)
set(PACKAGE_VERSION trunk-svn)
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
set(PACKAGE_BUGREPORT "llvm-bugs@lists.llvm.org")
# Configure for a standalone build
message(STATUS "Configuring for standalone build.")
set(LIBCXX_BUILT_STANDALONE 1)
# Find the LLVM sources and simulate LLVM CMake options.
include(HandleOutOfTreeLLVM)
handle_out_of_tree_llvm()
endif()
# Require out of source build.
include(MacroEnsureOutOfSourceBuild)
MACRO_ENSURE_OUT_OF_SOURCE_BUILD(
@ -33,15 +42,6 @@ MACRO_ENSURE_OUT_OF_SOURCE_BUILD(
build directory and run 'cmake /path/to/${PROJECT_NAME} [options]' there."
)
# Find the LLVM sources and simulate LLVM CMake options.
include(HandleOutOfTreeLLVM)
if (LIBCXX_BUILT_STANDALONE AND NOT LLVM_FOUND)
message(WARNING "UNSUPPORTED LIBCXX CONFIGURATION DETECTED: "
"llvm-config not found and LLVM_PATH not defined.\n"
"Reconfigure with -DLLVM_CONFIG=path/to/llvm-config "
"or -DLLVM_PATH=path/to/llvm-source-root.")
endif()
#===============================================================================
# Setup CMake Options
#===============================================================================

View File

@ -1,4 +1,6 @@
macro(find_llvm_parts)
macro(internal_find_llvm_parts)
# Rely on llvm-config.
set(CONFIG_OUTPUT)
find_program(LLVM_CONFIG "llvm-config")
@ -57,16 +59,13 @@ macro(find_llvm_parts)
list(APPEND CMAKE_MODULE_PATH "${LLVM_MAIN_SRC_DIR}/cmake/modules")
set(LLVM_FOUND ON)
endmacro(find_llvm_parts)
endmacro(internal_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()
macro(internal_simulate_llvm_options)
# LLVM Options --------------------------------------------------------------
# Configure the LLVM CMake options expected by libc++.
include(FindPythonInterp)
if( NOT PYTHONINTERP_FOUND )
message(WARNING "Failed to find python interpreter. "
@ -132,7 +131,29 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
MESSAGE(SEND_ERROR "Unable to determine platform")
endif(UNIX)
endif(WIN32)
endmacro(internal_simulate_llvm_options)
# Add LLVM Functions --------------------------------------------------------
macro(handle_out_of_tree_llvm)
# This macro should not be called unless we are building out of tree.
# Enforce that.
if (NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
message(FATAL_ERROR "libc++ incorrectly configured for out-of-tree LLVM")
endif()
# Attempt to find an LLVM installation and source directory. Warn if they
# are not found.
internal_find_llvm_parts()
if (NOT LLVM_FOUND)
message(WARNING "UNSUPPORTED LIBCXX CONFIGURATION DETECTED: "
"llvm-config not found and LLVM_PATH not defined.\n"
"Reconfigure with -DLLVM_CONFIG=path/to/llvm-config "
"or -DLLVM_PATH=path/to/llvm-source-root.")
endif()
# Simulate the LLVM CMake options and variables provided by an in-tree LLVM.
internal_simulate_llvm_options()
# Additionally include the LLVM CMake functions if we can find the module.
include(AddLLVM OPTIONAL)
endif()
endmacro()