Răsfoiți Sursa

libc++: add an option to build against compiler-rt

This mirrors the option in libc++abi to build without libgcc.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@279606 91177308-0d34-0410-b5e6-96231b3b80d8
Saleem Abdulrasool 9 ani în urmă
părinte
comite
e146f7559d
2 a modificat fișierele cu 8 adăugiri și 1 ștergeri
  1. 5 0
      CMakeLists.txt
  2. 3 1
      cmake/config-ix.cmake

+ 5 - 0
CMakeLists.txt

@@ -68,6 +68,7 @@ option(LIBCXX_INSTALL_SUPPORT_HEADERS "Install libc++ support headers." ON)
 option(LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY "Install libc++experimental.a" OFF)
 option(LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY "Install libc++experimental.a" OFF)
 set(LIBCXX_ABI_VERSION 1 CACHE STRING "ABI version of libc++.")
 set(LIBCXX_ABI_VERSION 1 CACHE STRING "ABI version of libc++.")
 option(LIBCXX_ABI_UNSTABLE "Unstable ABI of libc++." OFF)
 option(LIBCXX_ABI_UNSTABLE "Unstable ABI of libc++." OFF)
+option(LIBCXX_USE_COMPILER_RT "Use compiler-rt instead of libgcc" OFF)
 
 
 if (NOT LIBCXX_ENABLE_SHARED AND NOT LIBCXX_ENABLE_STATIC)
 if (NOT LIBCXX_ENABLE_SHARED AND NOT LIBCXX_ENABLE_STATIC)
   message(FATAL_ERROR "libc++ must be built as either a shared or static library.")
   message(FATAL_ERROR "libc++ must be built as either a shared or static library.")
@@ -277,6 +278,10 @@ add_target_flags_if(LIBCXX_GCC_TOOLCHAIN "-gcc-toolchain ${LIBCXX_GCC_TOOLCHAIN}
 # Configure compiler.
 # Configure compiler.
 include(config-ix)
 include(config-ix)
 
 
+if (LIBCXX_USE_COMPILER_RT)
+  list(APPEND LIBCXX_LINK_FLAGS "-rtlib=compiler-rt")
+endif()
+
 # Configure coverage options.
 # Configure coverage options.
 if (LIBCXX_GENERATE_COVERAGE)
 if (LIBCXX_GENERATE_COVERAGE)
   include(CodeCoverage)
   include(CodeCoverage)

+ 3 - 1
cmake/config-ix.cmake

@@ -17,4 +17,6 @@ check_library_exists(pthread pthread_create "" LIBCXX_HAS_PTHREAD_LIB)
 check_library_exists(c fopen "" LIBCXX_HAS_C_LIB)
 check_library_exists(c fopen "" LIBCXX_HAS_C_LIB)
 check_library_exists(m ccos "" LIBCXX_HAS_M_LIB)
 check_library_exists(m ccos "" LIBCXX_HAS_M_LIB)
 check_library_exists(rt clock_gettime "" LIBCXX_HAS_RT_LIB)
 check_library_exists(rt clock_gettime "" LIBCXX_HAS_RT_LIB)
-check_library_exists(gcc_s __gcc_personality_v0 "" LIBCXX_HAS_GCC_S_LIB)
+if (NOT LIBCXX_USE_COMPILER_RT)
+  check_library_exists(gcc_s __gcc_personality_v0 "" LIBCXX_HAS_GCC_S_LIB)
+endif()