diff options
39 files changed, 86 insertions, 45 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 3a5f934967..2a07668237 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -323,6 +323,14 @@ set(CLANG_VENDOR_UTI "org.llvm.clang" CACHE STRING 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") + +if (NOT LLVM_LINK_LLVM_DYLIB AND CLANG_LINK_CLANG_DYLIB) + message(FATAL_ERROR "Cannot set CLANG_LINK_CLANG_DYLIB=ON when " + "LLVM_LINK_LLVM_DYLIB=OFF") +endif() + # The libdir suffix must exactly match whatever LLVM's configuration used. set(CLANG_LIBDIR_SUFFIX "${LLVM_LIBDIR_SUFFIX}") diff --git a/cmake/modules/AddClang.cmake b/cmake/modules/AddClang.cmake index 0c9cd66760..33f1424654 100644 --- a/cmake/modules/AddClang.cmake +++ b/cmake/modules/AddClang.cmake @@ -172,3 +172,12 @@ macro(add_clang_symlink name dest) # 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() diff --git a/examples/AnnotateFunctions/CMakeLists.txt b/examples/AnnotateFunctions/CMakeLists.txt index 44b6317e72..e9850b64f0 100644 --- a/examples/AnnotateFunctions/CMakeLists.txt +++ b/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() diff --git a/examples/PrintFunctionNames/CMakeLists.txt b/examples/PrintFunctionNames/CMakeLists.txt index 68c6f76dff..63b0c01573 100644 --- a/examples/PrintFunctionNames/CMakeLists.txt +++ b/examples/PrintFunctionNames/CMakeLists.txt @@ -12,10 +12,12 @@ endif() 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() diff --git a/examples/clang-interpreter/CMakeLists.txt b/examples/clang-interpreter/CMakeLists.txt index ae2c0876c8..11056aa379 100644 --- a/examples/clang-interpreter/CMakeLists.txt +++ b/examples/clang-interpreter/CMakeLists.txt @@ -19,7 +19,7 @@ add_dependencies(clang-interpreter clang-resource-headers ) -target_link_libraries(clang-interpreter +clang_target_link_libraries(clang-interpreter PRIVATE clangBasic clangCodeGen diff --git a/lib/Analysis/plugins/CheckerDependencyHandling/CMakeLists.txt b/lib/Analysis/plugins/CheckerDependencyHandling/CMakeLists.txt index 0a8ff48755..dde2cca133 100644 --- a/lib/Analysis/plugins/CheckerDependencyHandling/CMakeLists.txt +++ b/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 ) diff --git a/lib/Analysis/plugins/CheckerOptionHandling/CMakeLists.txt b/lib/Analysis/plugins/CheckerOptionHandling/CMakeLists.txt index 6e289933c2..744164782d 100644 --- a/lib/Analysis/plugins/CheckerOptionHandling/CMakeLists.txt +++ b/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 ) diff --git a/lib/Analysis/plugins/SampleAnalyzer/CMakeLists.txt b/lib/Analysis/plugins/SampleAnalyzer/CMakeLists.txt index 639a97f253..0db1780ca7 100644 --- a/lib/Analysis/plugins/SampleAnalyzer/CMakeLists.txt +++ b/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 ) diff --git a/tools/arcmt-test/CMakeLists.txt b/tools/arcmt-test/CMakeLists.txt index c4c1463241..d3e6580e16 100644 --- a/tools/arcmt-test/CMakeLists.txt +++ b/tools/arcmt-test/CMakeLists.txt @@ -6,7 +6,7 @@ add_clang_executable(arcmt-test arcmt-test.cpp ) -target_link_libraries(arcmt-test +clang_target_link_libraries(arcmt-test PRIVATE clangARCMigrate clangBasic diff --git a/tools/clang-check/CMakeLists.txt b/tools/clang-check/CMakeLists.txt index b837b0a0a5..4576d78bcf 100644 --- a/tools/clang-check/CMakeLists.txt +++ b/tools/clang-check/CMakeLists.txt @@ -8,7 +8,7 @@ add_clang_executable(clang-check ClangCheck.cpp ) -target_link_libraries(clang-check +clang_target_link_libraries(clang-check PRIVATE clangAST clangBasic diff --git a/tools/clang-diff/CMakeLists.txt b/tools/clang-diff/CMakeLists.txt index ab9a5bbbe9..41f61fe968 100644 --- a/tools/clang-diff/CMakeLists.txt +++ b/tools/clang-diff/CMakeLists.txt @@ -6,7 +6,7 @@ add_clang_executable(clang-diff ClangDiff.cpp ) -target_link_libraries(clang-diff +clang_target_link_libraries(clang-diff PRIVATE clangBasic clangFrontend diff --git a/tools/clang-extdef-mapping/CMakeLists.txt b/tools/clang-extdef-mapping/CMakeLists.txt index 6c81689a83..4798bdb71a 100644 --- a/tools/clang-extdef-mapping/CMakeLists.txt +++ b/tools/clang-extdef-mapping/CMakeLists.txt @@ -7,7 +7,7 @@ add_clang_executable(clang-extdef-mapping ClangExtDefMapGen.cpp ) -target_link_libraries(clang-extdef-mapping +clang_target_link_libraries(clang-extdef-mapping PRIVATE clangAST clangBasic diff --git a/tools/clang-format/CMakeLists.txt b/tools/clang-format/CMakeLists.txt index a295e8cd0b..35ecdb1125 100644 --- a/tools/clang-format/CMakeLists.txt +++ b/tools/clang-format/CMakeLists.txt @@ -11,7 +11,7 @@ set(CLANG_FORMAT_LIB_DEPS clangToolingCore ) -target_link_libraries(clang-format +clang_target_link_libraries(clang-format PRIVATE ${CLANG_FORMAT_LIB_DEPS} ) diff --git a/tools/clang-import-test/CMakeLists.txt b/tools/clang-import-test/CMakeLists.txt index ee1bdab64a..39a5c41c15 100644 --- a/tools/clang-import-test/CMakeLists.txt +++ b/tools/clang-import-test/CMakeLists.txt @@ -24,7 +24,7 @@ set(CLANG_IMPORT_TEST_LIB_DEPS clangSerialization ) -target_link_libraries(clang-import-test +clang_target_link_libraries(clang-import-test PRIVATE ${CLANG_IMPORT_TEST_LIB_DEPS} ) diff --git a/tools/clang-offload-bundler/CMakeLists.txt b/tools/clang-offload-bundler/CMakeLists.txt index 8718015be7..465bef040a 100644 --- a/tools/clang-offload-bundler/CMakeLists.txt +++ b/tools/clang-offload-bundler/CMakeLists.txt @@ -17,7 +17,7 @@ set(CLANG_OFFLOAD_BUNDLER_LIB_DEPS 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} ) diff --git a/tools/clang-refactor/CMakeLists.txt b/tools/clang-refactor/CMakeLists.txt index 5340d7e9b2..a21d84d538 100644 --- a/tools/clang-refactor/CMakeLists.txt +++ b/tools/clang-refactor/CMakeLists.txt @@ -8,7 +8,7 @@ add_clang_tool(clang-refactor TestSupport.cpp ) -target_link_libraries(clang-refactor +clang_target_link_libraries(clang-refactor PRIVATE clangAST clangBasic diff --git a/tools/clang-rename/CMakeLists.txt b/tools/clang-rename/CMakeLists.txt index 1abf7ed4e8..cda8e29ec5 100644 --- a/tools/clang-rename/CMakeLists.txt +++ b/tools/clang-rename/CMakeLists.txt @@ -7,7 +7,7 @@ add_clang_tool(clang-rename ClangRename.cpp ) -target_link_libraries(clang-rename +clang_target_link_libraries(clang-rename PRIVATE clangBasic clangFrontend diff --git a/tools/clang-scan-deps/CMakeLists.txt b/tools/clang-scan-deps/CMakeLists.txt index 5cb4e6ff32..6aa914f3b2 100644 --- a/tools/clang-scan-deps/CMakeLists.txt +++ b/tools/clang-scan-deps/CMakeLists.txt @@ -21,7 +21,7 @@ set(CLANG_SCAN_DEPS_LIB_DEPS clangDependencyScanning ) -target_link_libraries(clang-scan-deps +clang_target_link_libraries(clang-scan-deps PRIVATE ${CLANG_SCAN_DEPS_LIB_DEPS} ) diff --git a/tools/diagtool/CMakeLists.txt b/tools/diagtool/CMakeLists.txt index 80d787b12f..a95444be40 100644 --- a/tools/diagtool/CMakeLists.txt +++ b/tools/diagtool/CMakeLists.txt @@ -12,7 +12,7 @@ add_clang_executable(diagtool TreeView.cpp ) -target_link_libraries(diagtool +clang_target_link_libraries(diagtool PRIVATE clangBasic clangFrontend diff --git a/tools/driver/CMakeLists.txt b/tools/driver/CMakeLists.txt index 30ab163a6c..590d708d83 100644 --- a/tools/driver/CMakeLists.txt +++ b/tools/driver/CMakeLists.txt @@ -39,7 +39,7 @@ add_clang_tool(clang ${tablegen_deps} ) -target_link_libraries(clang +clang_target_link_libraries(clang PRIVATE clangBasic clangCodeGen diff --git a/unittests/AST/CMakeLists.txt b/unittests/AST/CMakeLists.txt index 2151dc4cd8..333aded9ad 100644 --- a/unittests/AST/CMakeLists.txt +++ b/unittests/AST/CMakeLists.txt @@ -31,7 +31,7 @@ add_clang_unittest(ASTTests StructuralEquivalenceTest.cpp ) -target_link_libraries(ASTTests +clang_target_link_libraries(ASTTests PRIVATE clangAST clangASTMatchers diff --git a/unittests/ASTMatchers/CMakeLists.txt b/unittests/ASTMatchers/CMakeLists.txt index 4e44c795f8..09c4290fa1 100644 --- a/unittests/ASTMatchers/CMakeLists.txt +++ b/unittests/ASTMatchers/CMakeLists.txt @@ -18,7 +18,7 @@ add_clang_unittest(ASTMatchersTests ASTMatchersTraversalTest.cpp ) -target_link_libraries(ASTMatchersTests +clang_target_link_libraries(ASTMatchersTests PRIVATE clangAST clangASTMatchers diff --git a/unittests/ASTMatchers/Dynamic/CMakeLists.txt b/unittests/ASTMatchers/Dynamic/CMakeLists.txt index 07742caef6..c40964dfaf 100644 --- a/unittests/ASTMatchers/Dynamic/CMakeLists.txt +++ b/unittests/ASTMatchers/Dynamic/CMakeLists.txt @@ -8,7 +8,7 @@ add_clang_unittest(DynamicASTMatchersTests RegistryTest.cpp ) -target_link_libraries(DynamicASTMatchersTests +clang_target_link_libraries(DynamicASTMatchersTests PRIVATE clangAST clangASTMatchers diff --git a/unittests/Analysis/CMakeLists.txt b/unittests/Analysis/CMakeLists.txt index c760ae2d82..5575c910da 100644 --- a/unittests/Analysis/CMakeLists.txt +++ b/unittests/Analysis/CMakeLists.txt @@ -8,7 +8,7 @@ add_clang_unittest(ClangAnalysisTests ExprMutationAnalyzerTest.cpp ) -target_link_libraries(ClangAnalysisTests +clang_target_link_libraries(ClangAnalysisTests PRIVATE clangAnalysis clangAST diff --git a/unittests/Basic/CMakeLists.txt b/unittests/Basic/CMakeLists.txt index d883c362e2..a54e9397ad 100644 --- a/unittests/Basic/CMakeLists.txt +++ b/unittests/Basic/CMakeLists.txt @@ -10,7 +10,7 @@ add_clang_unittest(BasicTests SourceManagerTest.cpp ) -target_link_libraries(BasicTests +clang_target_link_libraries(BasicTests PRIVATE clangAST clangBasic diff --git a/unittests/CodeGen/CMakeLists.txt b/unittests/CodeGen/CMakeLists.txt index e4e7588a93..c4c8a5c197 100644 --- a/unittests/CodeGen/CMakeLists.txt +++ b/unittests/CodeGen/CMakeLists.txt @@ -10,7 +10,7 @@ add_clang_unittest(ClangCodeGenTests TBAAMetadataTest.cpp ) -target_link_libraries(ClangCodeGenTests +clang_target_link_libraries(ClangCodeGenTests PRIVATE clangAST clangBasic diff --git a/unittests/CrossTU/CMakeLists.txt b/unittests/CrossTU/CMakeLists.txt index 73047b739a..222b7e83dc 100644 --- a/unittests/CrossTU/CMakeLists.txt +++ b/unittests/CrossTU/CMakeLists.txt @@ -7,7 +7,7 @@ add_clang_unittest(CrossTUTests CrossTranslationUnitTest.cpp ) -target_link_libraries(CrossTUTests +clang_target_link_libraries(CrossTUTests PRIVATE clangAST clangBasic diff --git a/unittests/Driver/CMakeLists.txt b/unittests/Driver/CMakeLists.txt index 82dc0ff4bd..55b8a74830 100644 --- a/unittests/Driver/CMakeLists.txt +++ b/unittests/Driver/CMakeLists.txt @@ -11,7 +11,7 @@ add_clang_unittest(ClangDriverTests MultilibTest.cpp ) -target_link_libraries(ClangDriverTests +clang_target_link_libraries(ClangDriverTests PRIVATE clangDriver clangBasic diff --git a/unittests/Format/CMakeLists.txt b/unittests/Format/CMakeLists.txt index bf02de9705..d02734a48b 100644 --- a/unittests/Format/CMakeLists.txt +++ b/unittests/Format/CMakeLists.txt @@ -22,7 +22,7 @@ add_clang_unittest(FormatTests UsingDeclarationsSorterTest.cpp ) -target_link_libraries(FormatTests +clang_target_link_libraries(FormatTests PRIVATE clangBasic clangFormat diff --git a/unittests/Frontend/CMakeLists.txt b/unittests/Frontend/CMakeLists.txt index c7851bb394..cde19e9106 100644 --- a/unittests/Frontend/CMakeLists.txt +++ b/unittests/Frontend/CMakeLists.txt @@ -12,7 +12,7 @@ add_clang_unittest(FrontendTests PCHPreambleTest.cpp OutputStreamTest.cpp ) -target_link_libraries(FrontendTests +clang_target_link_libraries(FrontendTests PRIVATE clangAST clangBasic diff --git a/unittests/Index/CMakeLists.txt b/unittests/Index/CMakeLists.txt index 2756fad906..ea940e9d7a 100644 --- a/unittests/Index/CMakeLists.txt +++ b/unittests/Index/CMakeLists.txt @@ -7,7 +7,7 @@ add_clang_unittest(IndexTests IndexTests.cpp ) -target_link_libraries(IndexTests +clang_target_link_libraries(IndexTests PRIVATE clangAST clangBasic diff --git a/unittests/Lex/CMakeLists.txt b/unittests/Lex/CMakeLists.txt index dbc8328eda..97a4e5e446 100644 --- a/unittests/Lex/CMakeLists.txt +++ b/unittests/Lex/CMakeLists.txt @@ -11,7 +11,7 @@ add_clang_unittest(LexTests PPConditionalDirectiveRecordTest.cpp ) -target_link_libraries(LexTests +clang_target_link_libraries(LexTests PRIVATE clangAST clangBasic diff --git a/unittests/Rename/CMakeLists.txt b/unittests/Rename/CMakeLists.txt index 4db6049e15..a33d7d8ef7 100644 --- a/unittests/Rename/CMakeLists.txt +++ b/unittests/Rename/CMakeLists.txt @@ -13,7 +13,7 @@ add_clang_unittest(ClangRenameTests RenameFunctionTest.cpp ) -target_link_libraries(ClangRenameTests +clang_target_link_libraries(ClangRenameTests PRIVATE clangAST clangASTMatchers diff --git a/unittests/Rewrite/CMakeLists.txt b/unittests/Rewrite/CMakeLists.txt index 8edd9ba8f8..a4c6e37245 100644 --- a/unittests/Rewrite/CMakeLists.txt +++ b/unittests/Rewrite/CMakeLists.txt @@ -5,7 +5,7 @@ set(LLVM_LINK_COMPONENTS add_clang_unittest(RewriteTests RewriteBufferTest.cpp ) -target_link_libraries(RewriteTests +clang_target_link_libraries(RewriteTests PRIVATE clangRewrite ) diff --git a/unittests/Sema/CMakeLists.txt b/unittests/Sema/CMakeLists.txt index 00ffa65864..51e8d6c5b4 100644 --- a/unittests/Sema/CMakeLists.txt +++ b/unittests/Sema/CMakeLists.txt @@ -7,7 +7,7 @@ add_clang_unittest(SemaTests CodeCompleteTest.cpp ) -target_link_libraries(SemaTests +clang_target_link_libraries(SemaTests PRIVATE clangAST clangBasic @@ -16,5 +16,9 @@ target_link_libraries(SemaTests clangSema clangSerialization clangTooling - LLVMTestingSupport ) + +target_link_libraries(SemaTests + PRIVATE + LLVMTestingSupport +) diff --git a/unittests/Serialization/CMakeLists.txt b/unittests/Serialization/CMakeLists.txt index a19ef5faee..f143f28e12 100644 --- a/unittests/Serialization/CMakeLists.txt +++ b/unittests/Serialization/CMakeLists.txt @@ -8,7 +8,7 @@ add_clang_unittest(SerializationTests InMemoryModuleCacheTest.cpp ) -target_link_libraries(SerializationTests +clang_target_link_libraries(SerializationTests PRIVATE clangAST clangBasic diff --git a/unittests/StaticAnalyzer/CMakeLists.txt b/unittests/StaticAnalyzer/CMakeLists.txt index 1b8044c9e1..ff92bdcb29 100644 --- a/unittests/StaticAnalyzer/CMakeLists.txt +++ b/unittests/StaticAnalyzer/CMakeLists.txt @@ -10,7 +10,7 @@ add_clang_unittest(StaticAnalysisTests SymbolReaperTest.cpp ) -target_link_libraries(StaticAnalysisTests +clang_target_link_libraries(StaticAnalysisTests PRIVATE clangBasic clangAnalysis diff --git a/unittests/Tooling/CMakeLists.txt b/unittests/Tooling/CMakeLists.txt index 9687f52258..a10bff6d83 100644 --- a/unittests/Tooling/CMakeLists.txt +++ b/unittests/Tooling/CMakeLists.txt @@ -57,7 +57,7 @@ add_clang_unittest(ToolingTests TransformerTest.cpp ) -target_link_libraries(ToolingTests +clang_target_link_libraries(ToolingTests PRIVATE clangAST clangASTMatchers @@ -71,8 +71,11 @@ target_link_libraries(ToolingTests clangToolingCore clangToolingInclusions clangToolingRefactoring - LLVMTestingSupport ) +target_link_libraries(ToolingTests + PRIVATE + LLVMTestingSupport +) add_subdirectory(Syntax) diff --git a/unittests/Tooling/Syntax/CMakeLists.txt b/unittests/Tooling/Syntax/CMakeLists.txt index fbcca9d04e..9803157dd2 100644 --- a/unittests/Tooling/Syntax/CMakeLists.txt +++ b/unittests/Tooling/Syntax/CMakeLists.txt @@ -6,7 +6,7 @@ add_clang_unittest(SyntaxTests TokensTest.cpp ) -target_link_libraries(SyntaxTests +clang_target_link_libraries(SyntaxTests PRIVATE clangAST clangBasic @@ -15,5 +15,9 @@ target_link_libraries(SyntaxTests clangSerialization clangTooling clangToolingSyntax - LLVMTestingSupport ) + +target_link_libraries(SyntaxTests + PRIVATE + LLVMTestingSupport +) |