This does;
- clang_tablegen() adds each tblgen'd target to global property CLANG_TABLEGEN_TARGETS as list.
- List of targets is added to LLVM_COMMON_DEPENDS.
- all clang libraries and targets depend on generated headers.
You might wonder this would be regression, but in fact, this is little loss.
- Almost all of clang libraries depend on tblgen'd files and clang-tblgen.
- clang-tblgen may cause short stall-out but doesn't cause unconditional rebuild.
- Each library's dependencies to tblgen'd files might vary along headers' structure.
It made hard to track and update *really optimal* dependencies.
Each dependency to intrinsics_gen and ClangSACheckers is left as DEPENDS.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201842
91177308-0d34-0410-b5e6-
96231b3b80d8
if( CTG_TARGET )
add_custom_target( ${CTG_TARGET} DEPENDS ${output_file} ${CTG_DEPENDS} )
set_target_properties( ${CTG_TARGET} PROPERTIES FOLDER "Clang tablegenning")
+ set_property(GLOBAL APPEND PROPERTY CLANG_TABLEGEN_TARGETS ${CTG_TARGET})
endif()
endfunction(clang_tablegen)
add_subdirectory(utils/TableGen)
add_subdirectory(include)
+
+# All targets below may depend on all tablegen'd files.
+get_property(CLANG_TABLEGEN_TARGETS GLOBAL PROPERTY CLANG_TABLEGEN_TARGETS)
+list(APPEND LLVM_COMMON_DEPENDS ${CLANG_TABLEGEN_TARGETS})
+
add_subdirectory(lib)
add_subdirectory(tools)
add_subdirectory(runtime)
endif()
add_llvm_loadable_module(PrintFunctionNames PrintFunctionNames.cpp)
-
-add_dependencies(PrintFunctionNames
- ClangAttrClasses
- ClangAttrList
- ClangCommentCommandList
- ClangCommentNodes
- ClangDeclNodes
- ClangDiagnosticCommon
- ClangStmtNodes
- )
add_llvm_loadable_module(SampleAnalyzerPlugin MainCallChecker.cpp)
-
-add_dependencies(SampleAnalyzerPlugin
- ClangAttrClasses
- ClangAttrList
- ClangCommentCommandList
- ClangCommentNodes
- ClangDeclNodes
- ClangDiagnosticCommon
- ClangStmtNodes
- )
Transforms.cpp
)
-add_dependencies(clangARCMigrate
- ClangAttrClasses
- ClangAttrList
- ClangAttrParsedAttrList
- ClangCommentNodes
- ClangDeclNodes
- ClangDiagnosticCommon
- ClangDiagnosticGroups
- ClangDiagnosticSema
- ClangStmtNodes
- )
-
target_link_libraries(clangARCMigrate
clangAST
clangAnalysis
VTTBuilder.cpp
)
-add_dependencies(clangAST
- ClangARMNeon
- ClangAttrClasses
- ClangAttrList
- ClangAttrImpl
- ClangAttrDump
- ClangAttrVisitor
- ClangCommentCommandInfo
- ClangCommentCommandList
- ClangCommentNodes
- ClangCommentHTMLTags
- ClangCommentHTMLTagsProperties
- ClangCommentHTMLNamedCharacterReferences
- ClangDeclNodes
- ClangDiagnosticAST
- ClangDiagnosticComment
- ClangDiagnosticCommon
- ClangDiagnosticSema
- ClangStmtNodes
- )
-
target_link_libraries(clangAST
clangBasic
clangLex
ASTMatchersInternal.cpp
)
-add_dependencies(clangASTMatchers
- ClangAttrClasses
- ClangAttrImpl
- ClangAttrList
- ClangCommentNodes
- ClangDeclNodes
- ClangDiagnosticCommon
- ClangStmtNodes
- )
-
target_link_libraries(clangASTMatchers
clangAST
)
UninitializedValues.cpp
)
-add_dependencies(clangAnalysis
- ClangAttrClasses
- ClangAttrList
- ClangCommentNodes
- ClangDiagnosticCommon
- ClangDeclNodes
- ClangDiagnosticAnalysis
- ClangStmtNodes
- )
-
target_link_libraries(clangAnalysis
clangBasic
clangAST
PROPERTIES COMPILE_DEFINITIONS "HAVE_SVN_VERSION_INC")
endif()
-
-add_dependencies(clangBasic
- ClangARMNeon
- ClangAttrList
- ClangDiagnosticAnalysis
- ClangDiagnosticAST
- ClangDiagnosticComment
- ClangDiagnosticCommon
- ClangDiagnosticDriver
- ClangDiagnosticFrontend
- ClangDiagnosticGroups
- ClangDiagnosticIndexName
- ClangDiagnosticLex
- ClangDiagnosticParse
- ClangDiagnosticSema
- ClangDiagnosticSerialization
- )
TargetInfo.cpp
)
-add_dependencies(clangCodeGen
- ClangARMNeon
- ClangAttrClasses
- ClangAttrList
- ClangCommentNodes
- ClangDeclNodes
- ClangDiagnosticCommon
- ClangDiagnosticFrontend
- ClangStmtNodes
- )
-
target_link_libraries(clangCodeGen
clangBasic
clangAST
WindowsToolChain.cpp
Tools.cpp
Types.cpp
- )
-add_dependencies(clangDriver
- ClangAttrList
+ DEPENDS
ClangCC1AsOptions
- ClangDiagnosticCommon
- ClangDiagnosticDriver
ClangDriverOptions
)
RewriteObjCFoundationAPI.cpp
)
-add_dependencies(clangEdit
- ClangAttrClasses
- ClangAttrList
- ClangCommentNodes
- ClangDeclNodes
- ClangDiagnosticCommon
- ClangStmtNodes
- )
-
target_link_libraries(clangEdit
clangBasic
clangAST
WhitespaceManager.cpp
)
-add_dependencies(clangFormat
- ClangAttrClasses
- ClangAttrList
- ClangDeclNodes
- ClangDiagnosticCommon
- ClangDiagnosticFrontend
- ClangStmtNodes
- )
-
target_link_libraries(clangFormat
clangBasic
clangLex
Warnings.cpp
)
-add_dependencies(clangFrontend
- ClangAttrClasses
- ClangAttrList
- ClangAttrParsedAttrList
- ClangCommentNodes
- ClangDeclNodes
- ClangDiagnosticAST
- ClangDiagnosticCommon
- ClangDiagnosticDriver
- ClangDiagnosticFrontend
- ClangDiagnosticLex
- ClangDiagnosticSema
- ClangDriverOptions
- ClangStmtNodes
- )
-
target_link_libraries(clangFrontend
clangAST
clangBasic
ExecuteCompilerInvocation.cpp
)
-add_dependencies(clangFrontendTool
- ClangDiagnosticCommon
- ClangDiagnosticFrontend
- ClangDriverOptions
- )
-
target_link_libraries(clangFrontendTool
clangBasic
clangCodeGen
TokenLexer.cpp
)
-add_dependencies(clangLex
- ClangAttrSpellings
- ClangDiagnosticCommon
- ClangDiagnosticLex
- )
-
target_link_libraries(clangLex
clangBasic
)
Parser.cpp
)
-add_dependencies(clangParse
- ClangAttrClasses
- ClangAttrParserStringSwitches
- ClangAttrList
- ClangAttrParsedAttrList
- ClangCommentNodes
- ClangDeclNodes
- ClangDiagnosticCommon
- ClangDiagnosticParse
- ClangStmtNodes
- )
-
target_link_libraries(clangParse
clangBasic
clangAST
TokenRewriter.cpp
)
-add_dependencies(clangRewriteCore
- ClangAttrClasses
- ClangAttrList
- ClangAttrParsedAttrList
- ClangCommentNodes
- ClangDeclNodes
- ClangDiagnosticCommon
- ClangDiagnosticFrontend
- ClangStmtNodes
- )
-
target_link_libraries(clangRewriteCore
clangAST
clangBasic
RewriteTest.cpp
)
-add_dependencies(clangRewriteFrontend
- ClangAttrClasses
- ClangAttrList
- ClangAttrParsedAttrList
- ClangCommentNodes
- ClangDeclNodes
- ClangDiagnosticCommon
- ClangDiagnosticFrontend
- ClangStmtNodes
- )
-
target_link_libraries(clangRewriteFrontend
clangAST
clangBasic
TypeLocBuilder.cpp
)
-add_dependencies(clangSema
- ClangARMNeon
- ClangAttrClasses
- ClangAttrList
- ClangAttrParsedAttrList
- ClangAttrParsedAttrKinds
- ClangAttrParsedAttrImpl
- ClangAttrSpellingListIndex
- ClangAttrTemplateInstantiate
- ClangCommentNodes
- ClangDeclNodes
- ClangDiagnosticAST
- ClangDiagnosticComment
- ClangDiagnosticCommon
- ClangDiagnosticParse
- ClangDiagnosticSema
- ClangStmtNodes
- )
-
target_link_libraries(clangSema
clangAST
clangAnalysis
ASTReaderInternals.h
)
-add_dependencies(clangSerialization
- ClangAttrClasses
- ClangAttrList
- ClangAttrParsedAttrList
- ClangAttrPCHRead
- ClangAttrPCHWrite
- ClangCommentNodes
- ClangDeclNodes
- ClangDiagnosticCommon
- ClangDiagnosticLex
- ClangDiagnosticSema
- ClangDiagnosticSerialization
- ClangStmtNodes
- )
-
target_link_libraries(clangSerialization
clangAST
clangBasic
UnreachableCodeChecker.cpp
VLASizeChecker.cpp
VirtualCallChecker.cpp
- )
-add_dependencies(clangStaticAnalyzerCheckers
- ClangAttrClasses
- ClangAttrList
- ClangCommentNodes
- ClangDeclNodes
- ClangDiagnosticCommon
- ClangStmtNodes
+ DEPENDS
ClangSACheckers
)
SymbolManager.cpp
)
-add_dependencies(clangStaticAnalyzerCore
- ClangAttrClasses
- ClangAttrList
- ClangCommentNodes
- ClangDeclNodes
- ClangDiagnosticCommon
- ClangStmtNodes
- )
-
target_link_libraries(clangStaticAnalyzerCore
clangAST
clangAnalysis
FrontendActions.cpp
)
-add_dependencies(clangStaticAnalyzerFrontend
- ClangAttrClasses
- ClangAttrList
- ClangCommentNodes
- ClangDeclNodes
- ClangDiagnosticCommon
- ClangDiagnosticFrontend
- ClangStmtNodes
- )
-
target_link_libraries(clangStaticAnalyzerFrontend
clangAST
clangAnalysis
Tooling.cpp
)
-add_dependencies(clangTooling
- ClangAttrClasses
- ClangAttrList
- ClangDeclNodes
- ClangDiagnosticCommon
- ClangDiagnosticFrontend
- ClangStmtNodes
- )
-
target_link_libraries(clangTooling
clangAST
clangASTMatchers
TreeView.cpp
)
-add_dependencies(diagtool
- ClangDiagnosticIndexName
- )
-
target_link_libraries(diagtool
clangBasic
clangFrontend
clangTooling
)
-set(GENERATED_HEADERS
- ClangAttrClasses
- ClangAttrList
- ClangAttrParsedAttrList
- ClangAttrVisitor
- ClangCommentCommandList
- ClangCommentNodes
- ClangDiagnosticCommon
- ClangDiagnosticFrontend
- ClangDeclNodes
- ClangStmtNodes
- )
-
option(LIBCLANG_BUILD_STATIC
"Build libclang as a static library (in addition to a shared one)" OFF)
endif()
if( LLVM_ENABLE_PIC )
- add_clang_library(libclang SHARED ${SOURCES})
+ add_clang_library(libclang SHARED
+ ${SOURCES}
+ DEPENDS clang-headers
+ )
target_link_libraries(libclang ${LIBRARIES})
- add_dependencies(libclang ${GENERATED_HEADERS} clang-headers)
if(WIN32)
set_target_properties(libclang
if( (NOT LLVM_ENABLE_PIC OR LIBCLANG_BUILD_STATIC) AND NOT WIN32 )
add_clang_library(${LIBCLANG_STATIC_TARGET_NAME} STATIC ${SOURCES})
target_link_libraries(${LIBCLANG_STATIC_TARGET_NAME} ${LIBRARIES})
- add_dependencies(${LIBCLANG_STATIC_TARGET_NAME} ${GENERATED_HEADERS} clang-headers)
set_target_properties(${LIBCLANG_STATIC_TARGET_NAME}
PROPERTIES