Note that this is not related to the version of libc++'s ABI itself!")
# ABI Library options ---------------------------------------------------------
-set(LIBCXX_CXX_ABI "default" CACHE STRING
- "Specify C++ ABI library to use.")
+set(LIBCXX_CXX_ABI "default" CACHE STRING "Specify C++ ABI library to use.")
set(CXXABIS none default libcxxabi libcxxrt libstdc++ libsupc++ vcruntime)
set_property(CACHE LIBCXX_CXX_ABI PROPERTY STRINGS ;${CXXABIS})
-# FIXME: This is a temporary hack to get the buildbots working while D63883 is in flight.
-# Without this all the bots fail while building libc++
-if (DEFINED ENV{USER})
- if (("$ENV{USER}" STREQUAL "buildbot") OR (("$ENV{USER}" STREQUAL "llvmbb") OR ("$ENV{USER}" STREQUAL "buildslave")))
- if (LIBCXX_CXX_ABI STREQUAL "libcxxabi" AND NOT DEFINED LIBCXX_CXX_ABI_INCLUDE_PATHS)
- message(WARNING "OVERRIDING BUILDBOT CONFIG")
- set(LIBCXX_CXX_ABI "default" CACHE STRING "FIXME" FORCE)
- endif()
- endif()
-endif()
# Setup the default options if LIBCXX_CXX_ABI is not specified.
if (LIBCXX_CXX_ABI STREQUAL "default")
- find_path(
- LIBCXX_LIBCXXABI_INCLUDES_INTERNAL cxxabi.h
- PATHS ${LLVM_MAIN_SRC_DIR}/projects/libcxxabi/include
- ${LLVM_MAIN_SRC_DIR}/runtimes/libcxxabi/include
- ${LLVM_MAIN_SRC_DIR}/../libcxxabi/include
- NO_DEFAULT_PATH
- NO_CMAKE_FIND_ROOT_PATH
- )
if (LIBCXX_TARGETING_MSVC)
# FIXME: Figure out how to configure the ABI library on Windows.
set(LIBCXX_CXX_ABI_LIBNAME "vcruntime")
- elseif ((NOT LIBCXX_STANDALONE_BUILD OR HAVE_LIBCXXABI) AND
- IS_DIRECTORY "${LIBCXX_LIBCXXABI_INCLUDES_INTERNAL}")
- set(LIBCXX_CXX_ABI_LIBNAME "libcxxabi")
- set(LIBCXX_CXX_ABI_INCLUDE_PATHS "${LIBCXX_LIBCXXABI_INCLUDES_INTERNAL}")
- set(LIBCXX_CXX_ABI_INTREE 1)
- elseif (APPLE)
- set(LIBCXX_CXX_ABI_LIBNAME "libcxxabi")
- set(LIBCXX_CXX_ABI_SYSTEM 1)
elseif (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
set(LIBCXX_CXX_ABI_LIBNAME "libcxxrt")
- set(LIBCXX_CXX_ABI_INCLUDE_PATHS "/usr/include/c++/v1")
+ elseif (NOT LIBCXX_STANDALONE_BUILD OR HAVE_LIBCXXABI)
+ set(LIBCXX_CXX_ABI_LIBNAME "libcxxabi")
else()
set(LIBCXX_CXX_ABI_LIBNAME "default")
endif()
"${_LIBSUPCXX_LIBNAME}" "${_LIBSUPCXX_LIBNAME}" "${_LIBSUPCXX_INCLUDE_FILES}" "bits"
)
elseif ("${LIBCXX_CXX_ABI_LIBNAME}" STREQUAL "libcxxabi")
- if (LIBCXX_CXX_ABI_INTREE)
- # Link against just-built "cxxabi" target.
- set(CXXABI_SHARED_LIBNAME cxxabi_shared)
- set(CXXABI_STATIC_LIBNAME cxxabi_static)
- else()
- # Assume c++abi is installed in the system, rely on -lc++abi link flag.
- set(CXXABI_SHARED_LIBNAME "c++abi")
- set(CXXABI_STATIC_LIBNAME "c++abi")
- endif()
- if (LIBCXX_CXX_ABI_SYSTEM)
- set(HEADERS "")
- else()
- set(HEADERS "cxxabi.h;__cxxabi_config.h")
- endif()
+ set(LIBCXX_CXX_ABI_INCLUDE_PATHS "${LIBCXX_SOURCE_DIR}/../libcxxabi/include")
setup_abi_lib(
"-DLIBCXX_BUILDING_LIBCXXABI"
- "${CXXABI_SHARED_LIBNAME}" "${CXXABI_STATIC_LIBNAME}" "${HEADERS}" "")
+ "cxxabi_shared" "cxxabi_static" "cxxabi.h;__cxxabi_config.h" "")
elseif ("${LIBCXX_CXX_ABI_LIBNAME}" STREQUAL "libcxxrt")
+ set(LIBCXX_CXX_ABI_INCLUDE_PATHS "/usr/include/c++/v1")
setup_abi_lib(
"-DLIBCXXRT"
"cxxrt" "cxxrt" "cxxabi.h;unwind.h;unwind-arm.h;unwind-itanium.h" ""