[PATCH] D63881: [cmake] Fix build with BUILD_SHARED_LIBS=ON

Cristian Adam via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 27 08:31:30 PDT 2019


cristian.adam created this revision.
cristian.adam added a reviewer: compnerd.
cristian.adam added a project: LLVM.
Herald added subscribers: llvm-commits, mgorny.

On Windows a build with BUILD_SHARED_LIBS=ON needs to store the dependencies between libraries, due to the import libraries that (.a/.lib) that Windows needs to have for DLL files.

The dependencies will also be available in the cmake files.

llvm\unittests\Passes needs "Core" as LLVM_LINK_COMPONENTS, otherwise it won't link.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D63881

Files:
  llvm/cmake/modules/AddLLVM.cmake
  llvm/unittests/Passes/CMakeLists.txt


Index: llvm/unittests/Passes/CMakeLists.txt
===================================================================
--- llvm/unittests/Passes/CMakeLists.txt
+++ llvm/unittests/Passes/CMakeLists.txt
@@ -14,17 +14,17 @@
 export_executable_symbols(PluginsTests)
 target_link_libraries(PluginsTests PRIVATE LLVMTestingSupport)

-set(LLVM_LINK_COMPONENTS)
+set(LLVM_LINK_COMPONENTS Core)
 add_llvm_library(TestPlugin MODULE BUILDTREE_ONLY
   TestPlugin.cpp
   )

 # Put plugin next to the unit test executable.
 set_output_directory(TestPlugin
   BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}
   LIBRARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}
   )
 set_target_properties(TestPlugin PROPERTIES FOLDER "Tests")

 add_dependencies(TestPlugin intrinsics_gen)
 add_dependencies(PluginsTests TestPlugin)
Index: llvm/cmake/modules/AddLLVM.cmake
===================================================================
--- llvm/cmake/modules/AddLLVM.cmake
+++ llvm/cmake/modules/AddLLVM.cmake
@@ -573,16 +573,16 @@
   if(ARG_STATIC)
     set(libtype INTERFACE)
   else()
-    # We can use PRIVATE since SO knows its dependent libs.
-    set(libtype PRIVATE)
+    # Use public to have the dependencies in the exported targets
+    set(libtype PUBLIC)
   endif()

   target_link_libraries(${name} ${libtype}
       ${ARG_LINK_LIBS}
       ${lib_deps}
       ${llvm_libs}
       )

   if(LLVM_COMMON_DEPENDS)
     add_dependencies(${name} ${LLVM_COMMON_DEPENDS})
     # Add dependencies also to objlibs.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D63881.206871.patch
Type: text/x-patch
Size: 1505 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190627/8a18acd5/attachment.bin>


More information about the llvm-commits mailing list