From 0c6d1a88de31dac8034b85ef1f6f1d8f5f14a065 Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Sat, 26 Jul 2014 23:08:33 +0000 Subject: [PATCH] Better defaults for in-tree libc++ with cmake. This will detect if you are building libcxx in-tree and libcxxabi is available. If so, it will default to using the in-tree libcxxabi by setting LIBCXX_CXX_ABI to "libcxxabi", LIBCXX_LIBCXXABI_INCLUDE_PATHS to "${CMAKE_SOURCE_DIR}/projects/libcxxabi/include" and will add "cxxabi" as a proper dependency. Patch by Russell Harmon. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214037 91177308-0d34-0410-b5e6-96231b3b80d8 --- CMakeLists.txt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c20e5d1c..1345eeff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,7 +46,13 @@ option(LIBCXX_INSTALL_SUPPORT_HEADERS "Install libc++ support headers." ON) set(CXXABIS none libcxxabi libcxxrt libstdc++ libsupc++) if (NOT DEFINED LIBCXX_CXX_ABI) - set(LIBCXX_CXX_ABI "none") + if (NOT DEFINED LIBCXX_BUILT_STANDALONE AND IS_DIRECTORY "${CMAKE_SOURCE_DIR}/projects/libcxxabi") + set(LIBCXX_CXX_ABI "libcxxabi") + set(LIBCXX_LIBCXXABI_INCLUDE_PATHS "${CMAKE_SOURCE_DIR}/projects/libcxxabi/include") + set(LIBCXX_CXX_ABI_INTREE 1) + else () + set(LIBCXX_CXX_ABI "none") + endif () endif() set(LIBCXX_CXX_ABI "${LIBCXX_CXX_ABI}" CACHE STRING "Specify C++ ABI library to use." FORCE) @@ -149,6 +155,10 @@ elseif ("${LIBCXX_CXX_ABI}" STREQUAL "libcxxabi") setup_abi_lib("LIBCXX_LIBCXXABI_INCLUDE_PATHS" "" "c++abi" "cxxabi.h" "" ) + + if (LIBCXX_CXX_ABI_INTREE) + add_dependencies(LIBCXX_CXX_ABI_DEPS cxxabi) + endif () elseif ("${LIBCXX_CXX_ABI}" STREQUAL "libcxxrt") setup_abi_lib("LIBCXX_LIBCXXRT_INCLUDE_PATHS" "-DLIBCXXRT" "cxxrt" "cxxabi.h;unwind.h;unwind-arm.h;unwind-itanium.h" ""