[CMake] Support compiler-rt builtins library in tests
authorPetr Hosek <phosek@chromium.org>
Tue, 5 Feb 2019 19:50:47 +0000 (19:50 +0000)
committerPetr Hosek <phosek@chromium.org>
Tue, 5 Feb 2019 19:50:47 +0000 (19:50 +0000)
We're building tests with -nostdlib which means that we need to
explicitly include the builtins library. When using libgcc (default)
we can simply include -lgcc_s on the link line, but when using
compiler-rt builtins we need a complete path to the builtins library.

This path is already available in CMake as <PROJECT>_BUILTINS_LIBRARY,
so we just need to pass that path to lit and if config.compiler_rt is
true, link it to the test.

Prior to this patch, running tests when compiler-rt is being used as
the builtins library was broken as all tests would fail to link, but
with this change running tests when compiler-rt bultins library is
being used should be supported.

Differential Revision: https://reviews.llvm.org/D56701

llvm-svn: 353208

libcxx/docs/TestingLibcxx.rst
libcxx/test/lit.site.cfg.in
libcxx/utils/libcxx/test/target_info.py
libcxxabi/test/lit.site.cfg.in
libunwind/test/lit.site.cfg.in

index ebbbf62..d8060fe 100644 (file)
@@ -183,6 +183,14 @@ configuration. Passing the option on the command line will override the default.
   option is specified or the environment variable LIBCXX_COLOR_DIAGNOSTICS is
   present then color diagnostics will be enabled.
 
+.. option:: llvm_unwinder
+
+  Enable the use of LLVM unwinder instead of libgcc.
+
+.. option:: builtins_library
+
+  Path to the builtins library to use instead of libgcc.
+
 
 Environment Variables
 ---------------------
index 019cca8..ed9a711 100644 (file)
@@ -27,7 +27,7 @@ config.test_compiler_flags      = "@LIBCXX_TEST_COMPILER_FLAGS@"
 
 config.executor                 = "@LIBCXX_EXECUTOR@"
 config.llvm_unwinder            = @LIBCXXABI_USE_LLVM_UNWINDER@
-config.compiler_rt              = @LIBCXX_USE_COMPILER_RT@
+config.builtins_library         = "@LIBCXX_BUILTINS_LIBRARY@"
 config.has_libatomic            = @LIBCXX_HAS_ATOMIC_LIB@
 config.use_libatomic            = @LIBCXX_HAVE_CXX_ATOMICS_WITH_LIB@
 config.debug_build              = @LIBCXX_DEBUG_BUILD@
index fb45080..2ea24d6 100644 (file)
@@ -251,8 +251,10 @@ class LinuxLocalTI(DefaultTargetInfo):
             flags += ['-lunwind', '-ldl']
         else:
             flags += ['-lgcc_s']
-        compiler_rt = self.full_config.get_lit_bool('compiler_rt', False)
-        if not compiler_rt:
+        builtins_lib = self.full_config.get_lit_conf('builtins_library')
+        if builtins_lib:
+            flags += [builtins_lib]
+        else:
             flags += ['-lgcc']
         use_libatomic = self.full_config.get_lit_bool('use_libatomic', False)
         if use_libatomic:
index a4c5764..4abb8ed 100644 (file)
@@ -9,7 +9,7 @@ config.cxx_headers              = "@LIBCXXABI_LIBCXX_INCLUDES@"
 config.libunwind_headers        = "@LIBCXXABI_LIBUNWIND_INCLUDES_INTERNAL@"
 config.cxx_library_root         = "@LIBCXXABI_LIBCXX_LIBRARY_PATH@"
 config.llvm_unwinder            = @LIBCXXABI_USE_LLVM_UNWINDER@
-config.compiler_rt              = @LIBCXXABI_USE_COMPILER_RT@
+config.builtins_library         = "@LIBCXXABI_BUILTINS_LIBRARY@"
 config.enable_threads           = @LIBCXXABI_ENABLE_THREADS@
 config.use_sanitizer            = "@LLVM_USE_SANITIZER@"
 config.sanitizer_library        = "@LIBCXXABI_SANITIZER_LIBRARY@"
index 4b4cb7e..34da72a 100644 (file)
@@ -8,7 +8,7 @@ config.libcxx_src_root          = "@LIBUNWIND_LIBCXX_PATH@"
 config.libunwind_headers        = "@LIBUNWIND_SOURCE_DIR@/include"
 config.cxx_library_root         = "@LIBUNWIND_LIBCXX_LIBRARY_PATH@"
 config.llvm_unwinder            = True
-config.compiler_rt              = @LIBUNWIND_USE_COMPILER_RT@
+config.builtins_library         = "@LIBUNWIND_BUILTINS_LIBRARY@"
 config.enable_threads           = @LIBUNWIND_ENABLE_THREADS@
 config.use_sanitizer            = "@LLVM_USE_SANITIZER@"
 config.enable_32bit             = @LIBUNWIND_BUILD_32_BITS@