From d4a208136709ffb4ab5db8b5938e0768d86c9d45 Mon Sep 17 00:00:00 2001 From: Petr Hosek Date: Wed, 30 Jan 2019 23:18:05 +0000 Subject: [PATCH] [CMake] Use correct visibility for linked libraries in CMake When linking library dependencies, we shouldn't need to export linked libraries to dependents. We should be explicit about this in target_link_libraries, otherwise other targets that depend on these such as sanitizers get repeated (and possibly even conflicting) dependencies. Differential Revision: https://reviews.llvm.org/D57456 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@352688 91177308-0d34-0410-b5e6-96231b3b80d8 --- benchmarks/CMakeLists.txt | 1 + lib/CMakeLists.txt | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/benchmarks/CMakeLists.txt b/benchmarks/CMakeLists.txt index 3823b87b3..637035e5c 100644 --- a/benchmarks/CMakeLists.txt +++ b/benchmarks/CMakeLists.txt @@ -137,6 +137,7 @@ function(add_benchmark_test name source_file) add_executable(${libcxx_target} EXCLUDE_FROM_ALL ${source_file}) add_dependencies(${libcxx_target} cxx cxx-headers google-benchmark-libcxx) add_dependencies(cxx-benchmarks ${libcxx_target}) + target_link_libraries(${libcxx_target} ${LIBCXX_LIBRARIES}) if (LIBCXX_ENABLE_SHARED) target_link_libraries(${libcxx_target} cxx_shared) else() diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 24489e8fb..7c5096da0 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -241,7 +241,7 @@ if (LIBCXX_ENABLE_SHARED) if(COMMAND llvm_setup_rpath) llvm_setup_rpath(cxx_shared) endif() - target_link_libraries(cxx_shared ${LIBCXX_LIBRARIES}) + target_link_libraries(cxx_shared PRIVATE ${LIBCXX_LIBRARIES}) set_target_properties(cxx_shared PROPERTIES LINK_FLAGS "${LIBCXX_LINK_FLAGS}" @@ -265,7 +265,7 @@ endif() # Build the static library. if (LIBCXX_ENABLE_STATIC) add_library(cxx_static STATIC ${cxx_static_sources}) - target_link_libraries(cxx_static ${LIBCXX_LIBRARIES}) + target_link_libraries(cxx_static PRIVATE ${LIBCXX_LIBRARIES}) set(CMAKE_STATIC_LIBRARY_PREFIX "lib") set_target_properties(cxx_static PROPERTIES @@ -461,3 +461,8 @@ if (NOT CMAKE_CONFIGURATION_TYPES AND (LIBCXX_INSTALL_LIBRARY OR -P "${LIBCXX_BINARY_DIR}/cmake_install.cmake") add_custom_target(install-libcxx DEPENDS install-cxx) endif() + +# TODO: This is needed by cxx-benchmarks but this variable isn't +# available outside of the scope of this file so we need to export +# it. This is not necessarily the cleanest solution. +set(LIBCXX_LIBRARIES ${LIBCXX_LIBRARIES} PARENT_SCOPE)