Summary:
Setting CLANG_LINK_CLANG_DYLIB=ON causes clang tools to link against
libclang_shared.so instead of the individual component libraries.
Reviewers: mgorny, beanz, smeenai, phosek, sylvestre.ledru
Subscribers: arphaman, cfe-commits, llvm-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D63503
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@365092
91177308-0d34-0410-b5e6-
96231b3b80d8
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}")
# 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()
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()
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()
clang-resource-headers
)
-target_link_libraries(clang-interpreter
+clang_target_link_libraries(clang-interpreter
PRIVATE
clangBasic
clangCodeGen
+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
)
+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
)
+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
)
arcmt-test.cpp
)
-target_link_libraries(arcmt-test
+clang_target_link_libraries(arcmt-test
PRIVATE
clangARCMigrate
clangBasic
ClangCheck.cpp
)
-target_link_libraries(clang-check
+clang_target_link_libraries(clang-check
PRIVATE
clangAST
clangBasic
ClangDiff.cpp
)
-target_link_libraries(clang-diff
+clang_target_link_libraries(clang-diff
PRIVATE
clangBasic
clangFrontend
ClangExtDefMapGen.cpp
)
-target_link_libraries(clang-extdef-mapping
+clang_target_link_libraries(clang-extdef-mapping
PRIVATE
clangAST
clangBasic
clangToolingCore
)
-target_link_libraries(clang-format
+clang_target_link_libraries(clang-format
PRIVATE
${CLANG_FORMAT_LIB_DEPS}
)
clangSerialization
)
-target_link_libraries(clang-import-test
+clang_target_link_libraries(clang-import-test
PRIVATE
${CLANG_IMPORT_TEST_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}
)
TestSupport.cpp
)
-target_link_libraries(clang-refactor
+clang_target_link_libraries(clang-refactor
PRIVATE
clangAST
clangBasic
ClangRename.cpp
)
-target_link_libraries(clang-rename
+clang_target_link_libraries(clang-rename
PRIVATE
clangBasic
clangFrontend
clangDependencyScanning
)
-target_link_libraries(clang-scan-deps
+clang_target_link_libraries(clang-scan-deps
PRIVATE
${CLANG_SCAN_DEPS_LIB_DEPS}
)
TreeView.cpp
)
-target_link_libraries(diagtool
+clang_target_link_libraries(diagtool
PRIVATE
clangBasic
clangFrontend
${tablegen_deps}
)
-target_link_libraries(clang
+clang_target_link_libraries(clang
PRIVATE
clangBasic
clangCodeGen
StructuralEquivalenceTest.cpp
)
-target_link_libraries(ASTTests
+clang_target_link_libraries(ASTTests
PRIVATE
clangAST
clangASTMatchers
ASTMatchersTraversalTest.cpp
)
-target_link_libraries(ASTMatchersTests
+clang_target_link_libraries(ASTMatchersTests
PRIVATE
clangAST
clangASTMatchers
RegistryTest.cpp
)
-target_link_libraries(DynamicASTMatchersTests
+clang_target_link_libraries(DynamicASTMatchersTests
PRIVATE
clangAST
clangASTMatchers
ExprMutationAnalyzerTest.cpp
)
-target_link_libraries(ClangAnalysisTests
+clang_target_link_libraries(ClangAnalysisTests
PRIVATE
clangAnalysis
clangAST
SourceManagerTest.cpp
)
-target_link_libraries(BasicTests
+clang_target_link_libraries(BasicTests
PRIVATE
clangAST
clangBasic
TBAAMetadataTest.cpp
)
-target_link_libraries(ClangCodeGenTests
+clang_target_link_libraries(ClangCodeGenTests
PRIVATE
clangAST
clangBasic
CrossTranslationUnitTest.cpp
)
-target_link_libraries(CrossTUTests
+clang_target_link_libraries(CrossTUTests
PRIVATE
clangAST
clangBasic
MultilibTest.cpp
)
-target_link_libraries(ClangDriverTests
+clang_target_link_libraries(ClangDriverTests
PRIVATE
clangDriver
clangBasic
UsingDeclarationsSorterTest.cpp
)
-target_link_libraries(FormatTests
+clang_target_link_libraries(FormatTests
PRIVATE
clangBasic
clangFormat
PCHPreambleTest.cpp
OutputStreamTest.cpp
)
-target_link_libraries(FrontendTests
+clang_target_link_libraries(FrontendTests
PRIVATE
clangAST
clangBasic
IndexTests.cpp
)
-target_link_libraries(IndexTests
+clang_target_link_libraries(IndexTests
PRIVATE
clangAST
clangBasic
PPConditionalDirectiveRecordTest.cpp
)
-target_link_libraries(LexTests
+clang_target_link_libraries(LexTests
PRIVATE
clangAST
clangBasic
RenameFunctionTest.cpp
)
-target_link_libraries(ClangRenameTests
+clang_target_link_libraries(ClangRenameTests
PRIVATE
clangAST
clangASTMatchers
add_clang_unittest(RewriteTests
RewriteBufferTest.cpp
)
-target_link_libraries(RewriteTests
+clang_target_link_libraries(RewriteTests
PRIVATE
clangRewrite
)
CodeCompleteTest.cpp
)
-target_link_libraries(SemaTests
+clang_target_link_libraries(SemaTests
PRIVATE
clangAST
clangBasic
clangSema
clangSerialization
clangTooling
- LLVMTestingSupport
)
+
+target_link_libraries(SemaTests
+ PRIVATE
+ LLVMTestingSupport
+)
InMemoryModuleCacheTest.cpp
)
-target_link_libraries(SerializationTests
+clang_target_link_libraries(SerializationTests
PRIVATE
clangAST
clangBasic
SymbolReaperTest.cpp
)
-target_link_libraries(StaticAnalysisTests
+clang_target_link_libraries(StaticAnalysisTests
PRIVATE
clangBasic
clangAnalysis
TransformerTest.cpp
)
-target_link_libraries(ToolingTests
+clang_target_link_libraries(ToolingTests
PRIVATE
clangAST
clangASTMatchers
clangToolingCore
clangToolingInclusions
clangToolingRefactoring
- LLVMTestingSupport
)
+target_link_libraries(ToolingTests
+ PRIVATE
+ LLVMTestingSupport
+)
add_subdirectory(Syntax)
TokensTest.cpp
)
-target_link_libraries(SyntaxTests
+clang_target_link_libraries(SyntaxTests
PRIVATE
clangAST
clangBasic
clangSerialization
clangTooling
clangToolingSyntax
- LLVMTestingSupport
)
+
+target_link_libraries(SyntaxTests
+ PRIVATE
+ LLVMTestingSupport
+)