[CMake] Get libcxx building under LLVM/runtimes

Summary:
The new LLVM runtimes build directory requires some basic conventions across the runtime projects. These changes make libcxx build under the runtimes subdirectory. The general idea of the changes is that the runtimes subdirectory requires some conventions to be consistent across runtime projects.

I expect to have a few more small patches that build on this to tie up check targets and other things useful in development workflows.

Summary of changes in this patch:

* Renamed variable LLVM_CONFIG -> LLVM_CONFIG_PATH
* Renamed variable LIBCXX_BUILT_STANDALONE -> LIBCXX_STANDALONE_BUILD
* Add an include of AddLLVM in the tests subdirectory for add_lit_testsuite.

Reviewers: EricWF

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D23696

llvm-svn: 279151
This commit is contained in:
Chris Bieneman 2016-08-18 21:31:51 +00:00
parent 98cd99dfc6
commit 12b134bd4b
3 changed files with 15 additions and 11 deletions

View File

@ -22,7 +22,7 @@ set(CMAKE_MODULE_PATH
# Find the LLVM sources and simulate LLVM CMake options. # Find the LLVM sources and simulate LLVM CMake options.
include(HandleOutOfTreeLLVM) include(HandleOutOfTreeLLVM)
if (LIBCXX_BUILT_STANDALONE) if (LIBCXX_STANDALONE_BUILD)
project(libcxx CXX C) project(libcxx CXX C)
set(PACKAGE_NAME libcxx) set(PACKAGE_NAME libcxx)
@ -31,7 +31,7 @@ if (LIBCXX_BUILT_STANDALONE)
set(PACKAGE_BUGREPORT "llvm-bugs@lists.llvm.org") set(PACKAGE_BUGREPORT "llvm-bugs@lists.llvm.org")
endif() endif()
if (LIBCXX_BUILT_STANDALONE AND NOT LLVM_FOUND) if (LIBCXX_STANDALONE_BUILD AND NOT LLVM_FOUND)
message(WARNING "UNSUPPORTED LIBCXX CONFIGURATION DETECTED: " message(WARNING "UNSUPPORTED LIBCXX CONFIGURATION DETECTED: "
"llvm-config not found and LLVM_PATH not defined.\n" "llvm-config not found and LLVM_PATH not defined.\n"
"Reconfigure with -DLLVM_CONFIG=path/to/llvm-config " "Reconfigure with -DLLVM_CONFIG=path/to/llvm-config "
@ -81,7 +81,7 @@ set_property(CACHE LIBCXX_CXX_ABI PROPERTY STRINGS ;${CXXABIS})
# Setup the default options if LIBCXX_CXX_ABI is not specified. # Setup the default options if LIBCXX_CXX_ABI is not specified.
if (NOT LIBCXX_CXX_ABI) if (NOT LIBCXX_CXX_ABI)
if (NOT DEFINED LIBCXX_BUILT_STANDALONE AND if (NOT DEFINED LIBCXX_STANDALONE_BUILD AND
IS_DIRECTORY "${CMAKE_SOURCE_DIR}/projects/libcxxabi") IS_DIRECTORY "${CMAKE_SOURCE_DIR}/projects/libcxxabi")
set(LIBCXX_CXX_ABI_LIBNAME "libcxxabi") set(LIBCXX_CXX_ABI_LIBNAME "libcxxabi")
set(LIBCXX_CXX_ABI_INCLUDE_PATHS "${CMAKE_SOURCE_DIR}/projects/libcxxabi/include") set(LIBCXX_CXX_ABI_INCLUDE_PATHS "${CMAKE_SOURCE_DIR}/projects/libcxxabi/include")
@ -367,9 +367,9 @@ define_if(MSVC -D_CRT_SECURE_NO_WARNINGS)
# Sanitizer flags ============================================================= # Sanitizer flags =============================================================
# Configure for sanitizers. If LIBCXX_BUILT_STANDALONE then we have to do # Configure for sanitizers. If LIBCXX_STANDALONE_BUILD then we have to do
# the flag translation ourselves. Othewise LLVM's CMakeList.txt will handle it. # the flag translation ourselves. Othewise LLVM's CMakeList.txt will handle it.
if (LIBCXX_BUILT_STANDALONE) if (LIBCXX_STANDALONE_BUILD)
set(LLVM_USE_SANITIZER "" CACHE STRING set(LLVM_USE_SANITIZER "" CACHE STRING
"Define the sanitizer used to build the library and tests") "Define the sanitizer used to build the library and tests")
# NOTE: LLVM_USE_SANITIZER checks for a UNIX like system instead of MSVC. # NOTE: LLVM_USE_SANITIZER checks for a UNIX like system instead of MSVC.

View File

@ -1,15 +1,17 @@
macro(find_llvm_parts) macro(find_llvm_parts)
# Rely on llvm-config. # Rely on llvm-config.
set(CONFIG_OUTPUT) 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) if(DEFINED LLVM_PATH)
set(LLVM_INCLUDE_DIR ${LLVM_INCLUDE_DIR} CACHE PATH "Path to llvm/include") 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_PATH ${LLVM_PATH} CACHE PATH "Path to LLVM source tree")
set(LLVM_MAIN_SRC_DIR ${LLVM_PATH}) set(LLVM_MAIN_SRC_DIR ${LLVM_PATH})
set(LLVM_CMAKE_PATH "${LLVM_PATH}/cmake/modules") set(LLVM_CMAKE_PATH "${LLVM_PATH}/cmake/modules")
elseif(LLVM_CONFIG) elseif(LLVM_CONFIG_PATH)
message(STATUS "Found LLVM_CONFIG as ${LLVM_CONFIG}") message(STATUS "Found LLVM_CONFIG_PATH as ${LLVM_CONFIG_PATH}")
set(CONFIG_COMMAND ${LLVM_CONFIG} set(CONFIG_COMMAND ${LLVM_CONFIG_PATH}
"--includedir" "--includedir"
"--prefix" "--prefix"
"--src-root") "--src-root")
@ -60,8 +62,8 @@ macro(find_llvm_parts)
endmacro(find_llvm_parts) endmacro(find_llvm_parts)
if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR OR LIBCXX_STANDALONE_BUILD)
set(LIBCXX_BUILT_STANDALONE 1) set(LIBCXX_STANDALONE_BUILD 1)
message(STATUS "Configuring for standalone build.") message(STATUS "Configuring for standalone build.")
find_llvm_parts() find_llvm_parts()

View File

@ -1,3 +1,5 @@
include(AddLLVM) # for add_lit_testsuite
macro(pythonize_bool var) macro(pythonize_bool var)
if (${var}) if (${var})
set(${var} True) set(${var} True)