Index: CMakeLists.txt =================================================================== --- CMakeLists.txt +++ CMakeLists.txt @@ -137,6 +137,7 @@ message(FATAL_ERROR "libc++abi must be built as either a shared or static library.") endif() +# Find libc++ include path and source path. find_path( LIBCXXABI_LIBCXX_INCLUDES vector @@ -167,6 +168,25 @@ set(LIBCXXABI_LIBCXX_PATH "${LIBCXXABI_LIBCXX_PATH}" CACHE PATH "Specify path to libc++ source." FORCE) +# Find libunwind include path (for unwind.h) +find_path( + LIBCXXABI_LIBUNWIND_INCLUDES + libunwind.h + PATHS ${LIBCXXABI_LIBUNWIND_INCLUDES} + ${LIBCXXABI_LIBUNWIND_PATH}/include + ${CMAKE_BINARY_DIR}/${LIBCXXABI_LIBUNWIND_INCLUDES} + ${LLVM_MAIN_SRC_DIR}/projects/libunwind/include + NO_DEFAULT_PATH +) + +if (LIBCXXABI_LIBUNWIND_INCLUDES STREQUAL "LIBCXXABI_LIBUNWIND_INCLUDES-NOTFOUND") + message(WARNING "LIBCXXABI_LIBUNWIND_INCLUDES was not specified and couldn't be infered.") + set(LIBCXXABI_LIBUNWIND_INCLUDES "") +endif() + +set(LIBCXXABI_LIBUNWIND_INCLUDES "${LIBCXXABI_LIBUNWIND_INCLUDES}" CACHE PATH + "Specify path to libunwind includes." FORCE) + #=============================================================================== # Configure System #=============================================================================== @@ -351,40 +371,13 @@ # Setup Source Code #=============================================================================== -set(LIBCXXABI_LIBUNWIND_INCLUDES "${LIBCXXABI_LIBUNWIND_INCLUDES}" CACHE PATH - "Specify path to libunwind includes." FORCE) -set(LIBCXXABI_LIBUNWIND_PATH "${LIBCXXABI_LIBUNWIND_PATH}" CACHE PATH - "Specify path to libunwind source." FORCE) +# Add libunwind include to header search path (for unwind.h) +if (LIBCXXABI_LIBUNWIND_INCLUDES) + include_directories("${LIBCXXABI_LIBUNWIND_INCLUDES}") +endif() +# Add libc++abi include to header search path. include_directories(include) -if (LIBCXXABI_USE_LLVM_UNWINDER OR LLVM_NATIVE_ARCH MATCHES ARM) - find_path( - LIBCXXABI_LIBUNWIND_INCLUDES_INTERNAL - libunwind.h - PATHS ${LIBCXXABI_LIBUNWIND_INCLUDES} - ${LIBCXXABI_LIBUNWIND_PATH}/include - ${CMAKE_BINARY_DIR}/${LIBCXXABI_LIBUNWIND_INCLUDES} - ${LLVM_MAIN_SRC_DIR}/projects/libunwind/include - NO_DEFAULT_PATH - ) - - find_path( - LIBCXXABI_LIBUNWIND_SOURCES - libunwind_ext.h - PATHS ${LIBCXXABI_LIBUNWIND_PATH}/src/ - ${LIBCXXABI_LIBUNWIND_INCLUDES}/../src/ - ${LLVM_MAIN_SRC_DIR}/projects/libunwind/src/ - NO_DEFAULT_PATH - ) - - if (LIBCXXABI_LIBUNWIND_SOURCES STREQUAL "LIBCXXABI_LIBUNWIND_SOURCES-NOTFOUND") - message(WARNING "LIBCXXABI_LIBUNWIND_SOURCES was not specified and couldn't be infered.") - set(LIBCXXABI_LIBUNWIND_SOURCES "") - endif() - - include_directories("${LIBCXXABI_LIBUNWIND_INCLUDES_INTERNAL}") - include_directories("${LIBCXXABI_LIBUNWIND_SOURCES}") -endif() # Add source code. This also contains all of the logic for deciding linker flags # soname, etc...