| # TODO(phosek): We should use the runtimes build instead configured with |
| # LLVM_ENABLE_RUNTIMES=libcxxabi;libcxx to avoid duplication of logic. |
| |
| cmake_minimum_required(VERSION 3.13.4) |
| project(custom-libcxx C CXX) |
| |
| find_package(Python3 REQUIRED COMPONENTS Interpreter) |
| |
| # Build static libcxxabi. |
| set(LIBCXXABI_ENABLE_SHARED OFF CACHE BOOL "") |
| set(LIBCXXABI_ENABLE_EXCEPTIONS ON CACHE BOOL "") |
| set(LIBCXXABI_HERMETIC_STATIC_LIBRARY ON CACHE STRING "") |
| set(LIBCXXABI_LIBCXX_PATH ${COMPILER_RT_LIBCXX_PATH} CACHE PATH "") |
| set(LIBCXXABI_INCLUDE_TESTS OFF CACHE BOOL "") |
| add_subdirectory(${COMPILER_RT_LIBCXXABI_PATH} ${CMAKE_CURRENT_BINARY_DIR}/cxxabi) |
| |
| # Build static libcxx without exceptions. |
| set(LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY OFF CACHE BOOL "") |
| set(LIBCXX_ENABLE_SHARED OFF CACHE BOOL "") |
| set(LIBCXX_ENABLE_EXCEPTIONS OFF CACHE BOOL "") |
| set(LIBCXX_HERMETIC_STATIC_LIBRARY ON CACHE BOOL "") |
| |
| # Use above libcxxabi. |
| set(LIBCXX_CXX_ABI "libcxxabi" CACHE STRING "") |
| set(LIBCXX_CXX_ABI_INTREE 1) |
| set(LIBCXX_ENABLE_STATIC_ABI_LIBRARY ON CACHE BOOL "") |
| set(LIBCXX_CXX_ABI_INCLUDE_PATHS ${COMPILER_RT_LIBCXXABI_PATH}/include CACHE PATH "") |
| |
| add_subdirectory(${COMPILER_RT_LIBCXX_PATH} ${CMAKE_CURRENT_BINARY_DIR}/cxx) |