tstellar created this revision.
tstellar added reviewers: mgorny, beanz, smeenai, phosek, sylvestre.ledru.
Herald added subscribers: cfe-commits, arphaman.
Herald added a project: clang.
Setting CLANG_LINK_CLANG_DYLIB=ON causes clang tools to link against
libclang_shared.so instead of the individual component libraries.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D63503

Files:
  clang/CMakeLists.txt
  clang/cmake/modules/AddClang.cmake
  clang/examples/AnnotateFunctions/CMakeLists.txt
  clang/examples/PrintFunctionNames/CMakeLists.txt
  clang/examples/clang-interpreter/CMakeLists.txt
  clang/lib/Analysis/plugins/CheckerDependencyHandling/CMakeLists.txt
  clang/lib/Analysis/plugins/CheckerOptionHandling/CMakeLists.txt
  clang/lib/Analysis/plugins/SampleAnalyzer/CMakeLists.txt
  clang/tools/arcmt-test/CMakeLists.txt
  clang/tools/clang-check/CMakeLists.txt
  clang/tools/clang-diff/CMakeLists.txt
  clang/tools/clang-extdef-mapping/CMakeLists.txt
  clang/tools/clang-format/CMakeLists.txt
  clang/tools/clang-import-test/CMakeLists.txt
  clang/tools/clang-offload-bundler/CMakeLists.txt
  clang/tools/clang-refactor/CMakeLists.txt
  clang/tools/clang-rename/CMakeLists.txt
  clang/tools/clang-scan-deps/CMakeLists.txt
  clang/tools/diagtool/CMakeLists.txt
  clang/tools/driver/CMakeLists.txt
  clang/unittests/AST/CMakeLists.txt
  clang/unittests/ASTMatchers/CMakeLists.txt
  clang/unittests/ASTMatchers/Dynamic/CMakeLists.txt
  clang/unittests/Analysis/CMakeLists.txt
  clang/unittests/Basic/CMakeLists.txt
  clang/unittests/CodeGen/CMakeLists.txt
  clang/unittests/CrossTU/CMakeLists.txt
  clang/unittests/Driver/CMakeLists.txt
  clang/unittests/Format/CMakeLists.txt
  clang/unittests/Frontend/CMakeLists.txt
  clang/unittests/Index/CMakeLists.txt
  clang/unittests/Lex/CMakeLists.txt
  clang/unittests/Rename/CMakeLists.txt
  clang/unittests/Rewrite/CMakeLists.txt
  clang/unittests/Sema/CMakeLists.txt
  clang/unittests/Serialization/CMakeLists.txt
  clang/unittests/StaticAnalyzer/CMakeLists.txt
  clang/unittests/Tooling/CMakeLists.txt
  clang/unittests/Tooling/Syntax/CMakeLists.txt

Index: clang/unittests/Tooling/Syntax/CMakeLists.txt
===================================================================
--- clang/unittests/Tooling/Syntax/CMakeLists.txt
+++ clang/unittests/Tooling/Syntax/CMakeLists.txt
@@ -6,7 +6,7 @@
   TokensTest.cpp
 )
 
-target_link_libraries(SyntaxTests
+clang_target_link_libraries(SyntaxTests
   PRIVATE
   clangAST
   clangBasic
@@ -15,5 +15,9 @@
   clangSerialization
   clangTooling
   clangToolingSyntax
-  LLVMTestingSupport
   )
+
+target_link_libraries(SyntaxTests
+  PRIVATE
+  LLVMTestingSupport
+)
Index: clang/unittests/Tooling/CMakeLists.txt
===================================================================
--- clang/unittests/Tooling/CMakeLists.txt
+++ clang/unittests/Tooling/CMakeLists.txt
@@ -56,7 +56,7 @@
   TransformerTest.cpp
   )
 
-target_link_libraries(ToolingTests
+clang_target_link_libraries(ToolingTests
   PRIVATE
   clangAST
   clangASTMatchers
@@ -70,8 +70,11 @@
   clangToolingCore
   clangToolingInclusions
   clangToolingRefactoring
-  LLVMTestingSupport
   )
 
+target_link_libraries(ToolingTests
+  PRIVATE
+  LLVMTestingSupport
+)
 
 add_subdirectory(Syntax)
Index: clang/unittests/StaticAnalyzer/CMakeLists.txt
===================================================================
--- clang/unittests/StaticAnalyzer/CMakeLists.txt
+++ clang/unittests/StaticAnalyzer/CMakeLists.txt
@@ -9,7 +9,7 @@
   SymbolReaperTest.cpp
   )
 
-target_link_libraries(StaticAnalysisTests
+clang_target_link_libraries(StaticAnalysisTests
   PRIVATE
   clangBasic
   clangAnalysis
Index: clang/unittests/Serialization/CMakeLists.txt
===================================================================
--- clang/unittests/Serialization/CMakeLists.txt
+++ clang/unittests/Serialization/CMakeLists.txt
@@ -7,7 +7,7 @@
   InMemoryModuleCacheTest.cpp
   )
 
-target_link_libraries(SerializationTests
+clang_target_link_libraries(SerializationTests
   PRIVATE
   clangAST
   clangBasic
Index: clang/unittests/Sema/CMakeLists.txt
===================================================================
--- clang/unittests/Sema/CMakeLists.txt
+++ clang/unittests/Sema/CMakeLists.txt
@@ -7,7 +7,7 @@
   CodeCompleteTest.cpp
   )
 
-target_link_libraries(SemaTests
+clang_target_link_libraries(SemaTests
   PRIVATE
   clangAST
   clangBasic
@@ -16,5 +16,9 @@
   clangSema
   clangSerialization
   clangTooling
-  LLVMTestingSupport
   )
+
+target_link_libraries(SemaTests
+  PRIVATE
+  LLVMTestingSupport
+)
Index: clang/unittests/Rewrite/CMakeLists.txt
===================================================================
--- clang/unittests/Rewrite/CMakeLists.txt
+++ clang/unittests/Rewrite/CMakeLists.txt
@@ -5,7 +5,7 @@
 add_clang_unittest(RewriteTests
   RewriteBufferTest.cpp
   )
-target_link_libraries(RewriteTests
+clang_target_link_libraries(RewriteTests
   PRIVATE
   clangRewrite
   )
Index: clang/unittests/Rename/CMakeLists.txt
===================================================================
--- clang/unittests/Rename/CMakeLists.txt
+++ clang/unittests/Rename/CMakeLists.txt
@@ -13,7 +13,7 @@
   RenameFunctionTest.cpp
   )
 
-target_link_libraries(ClangRenameTests
+clang_target_link_libraries(ClangRenameTests
   PRIVATE
   clangAST
   clangASTMatchers
Index: clang/unittests/Lex/CMakeLists.txt
===================================================================
--- clang/unittests/Lex/CMakeLists.txt
+++ clang/unittests/Lex/CMakeLists.txt
@@ -11,7 +11,7 @@
   PPConditionalDirectiveRecordTest.cpp
   )
 
-target_link_libraries(LexTests
+clang_target_link_libraries(LexTests
   PRIVATE
   clangAST
   clangBasic
Index: clang/unittests/Index/CMakeLists.txt
===================================================================
--- clang/unittests/Index/CMakeLists.txt
+++ clang/unittests/Index/CMakeLists.txt
@@ -7,7 +7,7 @@
   IndexTests.cpp
   )
 
-target_link_libraries(IndexTests
+clang_target_link_libraries(IndexTests
   PRIVATE
   clangAST
   clangBasic
Index: clang/unittests/Frontend/CMakeLists.txt
===================================================================
--- clang/unittests/Frontend/CMakeLists.txt
+++ clang/unittests/Frontend/CMakeLists.txt
@@ -12,7 +12,7 @@
   PCHPreambleTest.cpp
   OutputStreamTest.cpp
   )
-target_link_libraries(FrontendTests
+clang_target_link_libraries(FrontendTests
   PRIVATE
   clangAST
   clangBasic
Index: clang/unittests/Format/CMakeLists.txt
===================================================================
--- clang/unittests/Format/CMakeLists.txt
+++ clang/unittests/Format/CMakeLists.txt
@@ -22,7 +22,7 @@
   UsingDeclarationsSorterTest.cpp
   )
 
-target_link_libraries(FormatTests
+clang_target_link_libraries(FormatTests
   PRIVATE
   clangBasic
   clangFormat
Index: clang/unittests/Driver/CMakeLists.txt
===================================================================
--- clang/unittests/Driver/CMakeLists.txt
+++ clang/unittests/Driver/CMakeLists.txt
@@ -11,7 +11,7 @@
   MultilibTest.cpp
   )
 
-target_link_libraries(ClangDriverTests
+clang_target_link_libraries(ClangDriverTests
   PRIVATE
   clangDriver
   clangBasic
Index: clang/unittests/CrossTU/CMakeLists.txt
===================================================================
--- clang/unittests/CrossTU/CMakeLists.txt
+++ clang/unittests/CrossTU/CMakeLists.txt
@@ -7,7 +7,7 @@
   CrossTranslationUnitTest.cpp
   )
 
-target_link_libraries(CrossTUTests
+clang_target_link_libraries(CrossTUTests
   PRIVATE
   clangAST
   clangBasic
Index: clang/unittests/CodeGen/CMakeLists.txt
===================================================================
--- clang/unittests/CodeGen/CMakeLists.txt
+++ clang/unittests/CodeGen/CMakeLists.txt
@@ -10,7 +10,7 @@
   TBAAMetadataTest.cpp
   )
 
-target_link_libraries(ClangCodeGenTests
+clang_target_link_libraries(ClangCodeGenTests
   PRIVATE
   clangAST
   clangBasic
Index: clang/unittests/Basic/CMakeLists.txt
===================================================================
--- clang/unittests/Basic/CMakeLists.txt
+++ clang/unittests/Basic/CMakeLists.txt
@@ -10,7 +10,7 @@
   SourceManagerTest.cpp
   )
 
-target_link_libraries(BasicTests
+clang_target_link_libraries(BasicTests
   PRIVATE
   clangAST
   clangBasic
Index: clang/unittests/Analysis/CMakeLists.txt
===================================================================
--- clang/unittests/Analysis/CMakeLists.txt
+++ clang/unittests/Analysis/CMakeLists.txt
@@ -8,7 +8,7 @@
   ExprMutationAnalyzerTest.cpp
   )
 
-target_link_libraries(ClangAnalysisTests
+clang_target_link_libraries(ClangAnalysisTests
   PRIVATE
   clangAnalysis
   clangAST
Index: clang/unittests/ASTMatchers/Dynamic/CMakeLists.txt
===================================================================
--- clang/unittests/ASTMatchers/Dynamic/CMakeLists.txt
+++ clang/unittests/ASTMatchers/Dynamic/CMakeLists.txt
@@ -8,7 +8,7 @@
   RegistryTest.cpp
   )
 
-target_link_libraries(DynamicASTMatchersTests
+clang_target_link_libraries(DynamicASTMatchersTests
   PRIVATE
   clangAST
   clangASTMatchers
Index: clang/unittests/ASTMatchers/CMakeLists.txt
===================================================================
--- clang/unittests/ASTMatchers/CMakeLists.txt
+++ clang/unittests/ASTMatchers/CMakeLists.txt
@@ -18,7 +18,7 @@
   ASTMatchersTraversalTest.cpp
   )
 
-target_link_libraries(ASTMatchersTests
+clang_target_link_libraries(ASTMatchersTests
   PRIVATE
   clangAST
   clangASTMatchers
Index: clang/unittests/AST/CMakeLists.txt
===================================================================
--- clang/unittests/AST/CMakeLists.txt
+++ clang/unittests/AST/CMakeLists.txt
@@ -31,7 +31,7 @@
   StructuralEquivalenceTest.cpp
   )
 
-target_link_libraries(ASTTests
+clang_target_link_libraries(ASTTests
   PRIVATE
   clangAST
   clangASTMatchers
Index: clang/tools/driver/CMakeLists.txt
===================================================================
--- clang/tools/driver/CMakeLists.txt
+++ clang/tools/driver/CMakeLists.txt
@@ -39,7 +39,7 @@
   ${tablegen_deps}
   )
 
-target_link_libraries(clang
+clang_target_link_libraries(clang
   PRIVATE
   clangBasic
   clangCodeGen
Index: clang/tools/diagtool/CMakeLists.txt
===================================================================
--- clang/tools/diagtool/CMakeLists.txt
+++ clang/tools/diagtool/CMakeLists.txt
@@ -12,7 +12,7 @@
   TreeView.cpp
 )
 
-target_link_libraries(diagtool
+clang_target_link_libraries(diagtool
   PRIVATE
   clangBasic
   clangFrontend
Index: clang/tools/clang-scan-deps/CMakeLists.txt
===================================================================
--- clang/tools/clang-scan-deps/CMakeLists.txt
+++ clang/tools/clang-scan-deps/CMakeLists.txt
@@ -20,7 +20,7 @@
   clangTooling
   )
 
-target_link_libraries(clang-scan-deps
+clang_target_link_libraries(clang-scan-deps
   PRIVATE
   ${CLANG_SCAN_DEPS_LIB_DEPS}
   )
Index: clang/tools/clang-rename/CMakeLists.txt
===================================================================
--- clang/tools/clang-rename/CMakeLists.txt
+++ clang/tools/clang-rename/CMakeLists.txt
@@ -7,7 +7,7 @@
   ClangRename.cpp
   )
 
-target_link_libraries(clang-rename
+clang_target_link_libraries(clang-rename
   PRIVATE
   clangBasic
   clangFrontend
Index: clang/tools/clang-refactor/CMakeLists.txt
===================================================================
--- clang/tools/clang-refactor/CMakeLists.txt
+++ clang/tools/clang-refactor/CMakeLists.txt
@@ -8,7 +8,7 @@
   TestSupport.cpp
   )
 
-target_link_libraries(clang-refactor
+clang_target_link_libraries(clang-refactor
   PRIVATE
   clangAST
   clangBasic
Index: clang/tools/clang-offload-bundler/CMakeLists.txt
===================================================================
--- clang/tools/clang-offload-bundler/CMakeLists.txt
+++ clang/tools/clang-offload-bundler/CMakeLists.txt
@@ -17,7 +17,7 @@
   
 add_dependencies(clang clang-offload-bundler)
 
-target_link_libraries(clang-offload-bundler
+clang_target_link_libraries(clang-offload-bundler
   PRIVATE
   ${CLANG_OFFLOAD_BUNDLER_LIB_DEPS}
   )
Index: clang/tools/clang-import-test/CMakeLists.txt
===================================================================
--- clang/tools/clang-import-test/CMakeLists.txt
+++ clang/tools/clang-import-test/CMakeLists.txt
@@ -24,7 +24,7 @@
   clangSerialization
   )
 
-target_link_libraries(clang-import-test
+clang_target_link_libraries(clang-import-test
   PRIVATE
   ${CLANG_IMPORT_TEST_LIB_DEPS}
   )
Index: clang/tools/clang-format/CMakeLists.txt
===================================================================
--- clang/tools/clang-format/CMakeLists.txt
+++ clang/tools/clang-format/CMakeLists.txt
@@ -11,7 +11,7 @@
   clangToolingCore
   )
 
-target_link_libraries(clang-format
+clang_target_link_libraries(clang-format
   PRIVATE
   ${CLANG_FORMAT_LIB_DEPS}
   )
Index: clang/tools/clang-extdef-mapping/CMakeLists.txt
===================================================================
--- clang/tools/clang-extdef-mapping/CMakeLists.txt
+++ clang/tools/clang-extdef-mapping/CMakeLists.txt
@@ -7,7 +7,7 @@
   ClangExtDefMapGen.cpp
   )
 
-target_link_libraries(clang-extdef-mapping
+clang_target_link_libraries(clang-extdef-mapping
   PRIVATE
   clangAST
   clangBasic
Index: clang/tools/clang-diff/CMakeLists.txt
===================================================================
--- clang/tools/clang-diff/CMakeLists.txt
+++ clang/tools/clang-diff/CMakeLists.txt
@@ -6,7 +6,7 @@
   ClangDiff.cpp
   )
 
-target_link_libraries(clang-diff
+clang_target_link_libraries(clang-diff
   PRIVATE
   clangBasic
   clangFrontend
Index: clang/tools/clang-check/CMakeLists.txt
===================================================================
--- clang/tools/clang-check/CMakeLists.txt
+++ clang/tools/clang-check/CMakeLists.txt
@@ -8,7 +8,7 @@
   ClangCheck.cpp
   )
 
-target_link_libraries(clang-check
+clang_target_link_libraries(clang-check
   PRIVATE
   clangAST
   clangBasic
Index: clang/tools/arcmt-test/CMakeLists.txt
===================================================================
--- clang/tools/arcmt-test/CMakeLists.txt
+++ clang/tools/arcmt-test/CMakeLists.txt
@@ -6,7 +6,7 @@
   arcmt-test.cpp
   )
 
-target_link_libraries(arcmt-test
+clang_target_link_libraries(arcmt-test
   PRIVATE
   clangARCMigrate
   clangBasic
Index: clang/lib/Analysis/plugins/SampleAnalyzer/CMakeLists.txt
===================================================================
--- clang/lib/Analysis/plugins/SampleAnalyzer/CMakeLists.txt
+++ clang/lib/Analysis/plugins/SampleAnalyzer/CMakeLists.txt
@@ -1,10 +1,13 @@
+set(LLVM_LINK_COMPONENTS
+  Support
+  )
+
 set(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/SampleAnalyzerPlugin.exports)
 add_llvm_library(SampleAnalyzerPlugin MODULE MainCallChecker.cpp PLUGIN_TOOL clang)
 
-target_link_libraries(SampleAnalyzerPlugin PRIVATE
+clang_target_link_libraries(SampleAnalyzerPlugin PRIVATE
   clangAnalysis
   clangAST
   clangStaticAnalyzerCore
   clangStaticAnalyzerFrontend
-  LLVMSupport
   )
Index: clang/lib/Analysis/plugins/CheckerOptionHandling/CMakeLists.txt
===================================================================
--- clang/lib/Analysis/plugins/CheckerOptionHandling/CMakeLists.txt
+++ clang/lib/Analysis/plugins/CheckerOptionHandling/CMakeLists.txt
@@ -1,10 +1,13 @@
+set(LLVM_LINK_COMPONENTS
+  Support
+  )
+
 set(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/CheckerOptionHandlingAnalyzerPlugin.exports)
 add_llvm_library(CheckerOptionHandlingAnalyzerPlugin MODULE CheckerOptionHandling.cpp PLUGIN_TOOL clang)
 
-target_link_libraries(CheckerOptionHandlingAnalyzerPlugin PRIVATE
+clang_target_link_libraries(CheckerOptionHandlingAnalyzerPlugin PRIVATE
   clangAnalysis
   clangAST
   clangStaticAnalyzerCore
   clangStaticAnalyzerFrontend
-  LLVMSupport
   )
Index: clang/lib/Analysis/plugins/CheckerDependencyHandling/CMakeLists.txt
===================================================================
--- clang/lib/Analysis/plugins/CheckerDependencyHandling/CMakeLists.txt
+++ clang/lib/Analysis/plugins/CheckerDependencyHandling/CMakeLists.txt
@@ -1,10 +1,13 @@
+set(LLVM_LINK_COMPONENTS
+  Support
+  )
+
 set(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/CheckerDependencyHandlingAnalyzerPlugin.exports)
 add_llvm_library(CheckerDependencyHandlingAnalyzerPlugin MODULE CheckerDependencyHandling.cpp PLUGIN_TOOL clang)
 
-target_link_libraries(CheckerDependencyHandlingAnalyzerPlugin PRIVATE
+clang_target_link_libraries(CheckerDependencyHandlingAnalyzerPlugin PRIVATE
   clangAnalysis
   clangAST
   clangStaticAnalyzerCore
   clangStaticAnalyzerFrontend
-  LLVMSupport
   )
Index: clang/examples/clang-interpreter/CMakeLists.txt
===================================================================
--- clang/examples/clang-interpreter/CMakeLists.txt
+++ clang/examples/clang-interpreter/CMakeLists.txt
@@ -19,7 +19,7 @@
   clang-resource-headers
   )
 
-target_link_libraries(clang-interpreter
+clang_target_link_libraries(clang-interpreter
   PRIVATE
   clangBasic
   clangCodeGen
Index: clang/examples/PrintFunctionNames/CMakeLists.txt
===================================================================
--- clang/examples/PrintFunctionNames/CMakeLists.txt
+++ clang/examples/PrintFunctionNames/CMakeLists.txt
@@ -12,10 +12,12 @@
 add_llvm_library(PrintFunctionNames MODULE PrintFunctionNames.cpp PLUGIN_TOOL clang)
 
 if(LLVM_ENABLE_PLUGINS AND (WIN32 OR CYGWIN))
-  target_link_libraries(PrintFunctionNames PRIVATE
+  set(LLVM_LINK_COMPONENTS
+    Support
+  )
+  clang_target_link_libraries(PrintFunctionNames PRIVATE
     clangAST
     clangBasic
     clangFrontend
-    LLVMSupport
     )
 endif()
Index: clang/examples/AnnotateFunctions/CMakeLists.txt
===================================================================
--- clang/examples/AnnotateFunctions/CMakeLists.txt
+++ clang/examples/AnnotateFunctions/CMakeLists.txt
@@ -1,11 +1,13 @@
 add_llvm_library(AnnotateFunctions MODULE AnnotateFunctions.cpp PLUGIN_TOOL clang)
 
 if(LLVM_ENABLE_PLUGINS AND (WIN32 OR CYGWIN))
-  target_link_libraries(AnnotateFunctions PRIVATE
+  set(LLVM_LINK_COMPONENTS
+    Support
+  )
+  clang_target_link_libraries(AnnotateFunctions PRIVATE
     clangAST
     clangBasic
     clangFrontend
     clangLex
-    LLVMSupport
     )
 endif()
Index: clang/cmake/modules/AddClang.cmake
===================================================================
--- clang/cmake/modules/AddClang.cmake
+++ clang/cmake/modules/AddClang.cmake
@@ -172,3 +172,12 @@
   # Always generate install targets
   llvm_install_symlink(${name} ${dest} ALWAYS_GENERATE)
 endmacro()
+
+function(clang_target_link_libraries target type)
+  if (CLANG_LINK_CLANG_DYLIB)
+    target_link_libraries(${target} ${type} clang_shared)
+  else()
+    target_link_libraries(${target} ${type} ${ARGN})
+  endif()
+
+endfunction()
Index: clang/CMakeLists.txt
===================================================================
--- clang/CMakeLists.txt
+++ clang/CMakeLists.txt
@@ -323,6 +323,9 @@
 set(CLANG_PYTHON_BINDINGS_VERSIONS "" CACHE STRING
     "Python versions to install libclang python bindings for")
 
+set(CLANG_LINK_CLANG_DYLIB ${LLVM_LINK_LLVM_DYLIB} CACHE BOOL
+    "Link tools against libclang_shared.so")
+
 # The libdir suffix must exactly match whatever LLVM's configuration used.
 set(CLANG_LIBDIR_SUFFIX "${LLVM_LIBDIR_SUFFIX}")
 
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to