summaryrefslogtreecommitdiffstats
path: root/llvm/utils/unittest/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/utils/unittest/CMakeLists.txt')
-rw-r--r--llvm/utils/unittest/CMakeLists.txt20
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/utils/unittest/CMakeLists.txt b/llvm/utils/unittest/CMakeLists.txt
index 0850d49e3a3..5aad048f2c3 100644
--- a/llvm/utils/unittest/CMakeLists.txt
+++ b/llvm/utils/unittest/CMakeLists.txt
@@ -71,3 +71,23 @@ add_llvm_library(gtest
)
add_subdirectory(UnitTestMain)
+
+# When LLVM_LINK_LLVM_DYLIB is enabled, libLLVM.so is added to the interface
+# link libraries for gtest and gtest_main. This means that any target, like
+# unittests for example, that links against gtest will be forced to link
+# against libLLVM.so. In some cases we may want to statically unittests if they
+# need access to symbols that are marked private in libLLVM.so. The only
+# way we can make this work is to remove libLLVM.so from the list of interface
+# link libraries for gtest and then make gtest users responsible for explicitly
+# adding libLLVM.so to their targets link libraries if they need it.
+
+function (gtest_remove_dylib_from_link_interface target)
+ get_target_property(interface_libs ${target} INTERFACE_LINK_LIBRARIES)
+ if (interface_libs)
+ list(REMOVE_ITEM interface_libs LLVM)
+ set_target_properties(${target} PROPERTIES INTERFACE_LINK_LIBRARIES "${interface_libs}")
+ endif()
+endfunction()
+
+gtest_remove_dylib_from_link_interface(gtest)
+gtest_remove_dylib_from_link_interface(gtest_main)
OpenPOWER on IntegriCloud