[libc++] Add missing link-time dependencies to the benchmarks
authorLouis Dionne <ldionne@apple.com>
Tue, 8 Oct 2019 14:28:56 +0000 (14:28 +0000)
committerLouis Dionne <ldionne@apple.com>
Tue, 8 Oct 2019 14:28:56 +0000 (14:28 +0000)
Since the benchmarks build with -nostdlib, they need to manually link
against some system libraries that are used by the benchmarks and the
GoogleBenchmark library itself.

Previously, we'd rely on the fact that these libraries were linked
through the PUBLIC dependencies of cxx_shared/cxx_static. However,
if we were to make these dependencies PRIVATE (as they should be
because they are implementation details of libc++), the benchmarks
would fail to link. This commit remediates that.

llvm-svn: 374053

libcxx/benchmarks/CMakeLists.txt

index efe7914..a5b801c 100644 (file)
@@ -146,6 +146,15 @@ function(add_benchmark_test name source_file)
   if (LLVM_USE_SANITIZER)
     target_link_libraries(${libcxx_target} PRIVATE -ldl)
   endif()
+  if (LIBCXX_HAS_C_LIB)
+    target_link_libraries(${libcxx_target} PRIVATE -lc)
+  endif()
+  if (LIBCXX_HAS_M_LIB)
+    target_link_libraries(${libcxx_target} PRIVATE -lm)
+  endif()
+  if (LIBCXX_HAS_PTHREAD_LIB)
+    target_link_libraries(${libcxx_target} PRIVATE -lpthread)
+  endif()
   set_target_properties(${libcxx_target}
     PROPERTIES
           OUTPUT_NAME "${name}.libcxx.out"