diff options
author | Oscar Fuentes <ofv@wanadoo.es> | 2011-02-20 22:06:32 +0000 |
---|---|---|
committer | Oscar Fuentes <ofv@wanadoo.es> | 2011-02-20 22:06:32 +0000 |
commit | c8da1ecaf58ff41b652dd53331aace948027039b (patch) | |
tree | 0e98a65a3f62f4395026e13aa3033a8b00606115 | |
parent | 80f38f0ada19a658ca2b3a6949b8621005aa7b08 (diff) |
New function for tablegenning: clang_tablegen.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126093 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | CMakeLists.txt | 30 | ||||
-rw-r--r-- | include/clang/AST/CMakeLists.txt | 35 | ||||
-rw-r--r-- | include/clang/Basic/CMakeLists.txt | 32 | ||||
-rw-r--r-- | include/clang/Driver/CMakeLists.txt | 24 | ||||
-rw-r--r-- | include/clang/Lex/CMakeLists.txt | 9 | ||||
-rw-r--r-- | include/clang/Serialization/CMakeLists.txt | 19 | ||||
-rw-r--r-- | lib/Headers/CMakeLists.txt | 4 | ||||
-rw-r--r-- | lib/StaticAnalyzer/Checkers/CMakeLists.txt | 10 |
8 files changed, 85 insertions, 78 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 0d923b91e1..9325360bc8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -121,6 +121,36 @@ configure_file( ${CLANG_SOURCE_DIR}/include/clang/Config/config.h.cmake ${CLANG_BINARY_DIR}/include/clang/Config/config.h) +include(LLVMParseArguments) + +function(clang_tablegen) + # Syntax: + # clang_tablegen output-file [tablegen-arg ...] SOURCE source-file + # [[TARGET cmake-target-name] [DEPENDS extra-dependency ...]] + # + # Generates a custom command for invoking tblgen as + # + # tblgen source-file -o=output-file tablegen-arg ... + # + # and, if cmake-target-name is provided, creates a custom target for + # executing the custom command depending on output-file. It is + # possible to list more files to depend after DEPENDS. + + parse_arguments( CTG "SOURCE;TARGET;DEPENDS" "" ${ARGN} ) + + if( NOT CTG_SOURCE ) + message(FATAL_ERROR "SOURCE source-file required by clang_tablegen") + endif() + + set( LLVM_TARGET_DEFINITIONS ${CTG_SOURCE} ) + tablegen( ${CTG_DEFAULT_ARGS} ) + + list( GET CTG_DEFAULT_ARGS 0 output_file ) + if( CTG_TARGET ) + add_custom_target( ${CTG_TARGET} DEPENDS ${output_file} ${CTG_DEPENDS} ) + endif() +endfunction(clang_tablegen) + macro(add_clang_library name) llvm_process_sources(srcs ${ARGN}) if(MSVC_IDE OR XCODE) diff --git a/include/clang/AST/CMakeLists.txt b/include/clang/AST/CMakeLists.txt index 800c58361b..c10cda84fb 100644 --- a/include/clang/AST/CMakeLists.txt +++ b/include/clang/AST/CMakeLists.txt @@ -1,24 +1,17 @@ -set(LLVM_TARGET_DEFINITIONS ../Basic/Attr.td) -tablegen(Attrs.inc - -gen-clang-attr-classes - -I ${CMAKE_CURRENT_SOURCE_DIR}/../../) -add_custom_target(ClangAttrClasses - DEPENDS Attrs.inc) +clang_tablegen(Attrs.inc -gen-clang-attr-classes + -I ${CMAKE_CURRENT_SOURCE_DIR}/../../ + SOURCE ../Basic/Attr.td + TARGET ClangAttrClasses) -tablegen(AttrImpl.inc - -gen-clang-attr-impl - -I ${CMAKE_CURRENT_SOURCE_DIR}/../../) -add_custom_target(ClangAttrImpl - DEPENDS AttrImpl.inc) +clang_tablegen(AttrImpl.inc -gen-clang-attr-impl + -I ${CMAKE_CURRENT_SOURCE_DIR}/../../ + SOURCE ../Basic/Attr.td + TARGET ClangAttrImpl) -set(LLVM_TARGET_DEFINITIONS ../Basic/StmtNodes.td) -tablegen(StmtNodes.inc - -gen-clang-stmt-nodes) -add_custom_target(ClangStmtNodes - DEPENDS StmtNodes.inc) +clang_tablegen(StmtNodes.inc -gen-clang-stmt-nodes + SOURCE ../Basic/StmtNodes.td + TARGET ClangStmtNodes) -set(LLVM_TARGET_DEFINITIONS ../Basic/DeclNodes.td) -tablegen(DeclNodes.inc - -gen-clang-decl-nodes) -add_custom_target(ClangDeclNodes - DEPENDS DeclNodes.inc) +clang_tablegen(DeclNodes.inc -gen-clang-decl-nodes + SOURCE ../Basic/DeclNodes.td + TARGET ClangDeclNodes) diff --git a/include/clang/Basic/CMakeLists.txt b/include/clang/Basic/CMakeLists.txt index c5952365d5..19066e4c0e 100644 --- a/include/clang/Basic/CMakeLists.txt +++ b/include/clang/Basic/CMakeLists.txt @@ -1,11 +1,10 @@ macro(clang_diag_gen component) - tablegen(Diagnostic${component}Kinds.inc - -gen-clang-diags-defs -clang-component=${component}) - add_custom_target(ClangDiagnostic${component} - DEPENDS Diagnostic${component}Kinds.inc) + clang_tablegen(Diagnostic${component}Kinds.inc + -gen-clang-diags-defs -clang-component=${component} + SOURCE Diagnostic.td + TARGET ClangDiagnostic${component}) endmacro(clang_diag_gen) -set(LLVM_TARGET_DEFINITIONS Diagnostic.td) clang_diag_gen(Analysis) clang_diag_gen(AST) clang_diag_gen(Common) @@ -14,19 +13,16 @@ clang_diag_gen(Frontend) clang_diag_gen(Lex) clang_diag_gen(Parse) clang_diag_gen(Sema) -tablegen(DiagnosticGroups.inc - -gen-clang-diag-groups) -add_custom_target(ClangDiagnosticGroups - DEPENDS DiagnosticGroups.inc) +clang_tablegen(DiagnosticGroups.inc -gen-clang-diag-groups + SOURCE Diagnostic.td + TARGET ClangDiagnosticGroups) -set(LLVM_TARGET_DEFINITIONS Attr.td) -tablegen(AttrList.inc - -gen-clang-attr-list - -I ${CMAKE_CURRENT_SOURCE_DIR}/../../) -add_custom_target(ClangAttrList - DEPENDS AttrList.inc) +clang_tablegen(AttrList.inc -gen-clang-attr-list + -I ${CMAKE_CURRENT_SOURCE_DIR}/../../ + SOURCE Attr.td + TARGET ClangAttrList) # ARM NEON -set(LLVM_TARGET_DEFINITIONS arm_neon.td) -tablegen(arm_neon.inc -gen-arm-neon-sema) -add_custom_target(ClangARMNeon DEPENDS arm_neon.inc) +clang_tablegen(arm_neon.inc -gen-arm-neon-sema + SOURCE arm_neon.td + TARGET ClangARMNeon) diff --git a/include/clang/Driver/CMakeLists.txt b/include/clang/Driver/CMakeLists.txt index 99be53ffc7..abd4cfe501 100644 --- a/include/clang/Driver/CMakeLists.txt +++ b/include/clang/Driver/CMakeLists.txt @@ -1,17 +1,11 @@ -set(LLVM_TARGET_DEFINITIONS Options.td) -tablegen(Options.inc - -gen-opt-parser-defs) -add_custom_target(ClangDriverOptions - DEPENDS Options.inc) +clang_tablegen(Options.inc -gen-opt-parser-defs + SOURCE Options.td + TARGET ClangDriverOptions) -set(LLVM_TARGET_DEFINITIONS CC1Options.td) -tablegen(CC1Options.inc - -gen-opt-parser-defs) -add_custom_target(ClangCC1Options - DEPENDS CC1Options.inc) +clang_tablegen(CC1Options.inc -gen-opt-parser-defs + SOURCE CC1Options.td + TARGET ClangCC1Options) -set(LLVM_TARGET_DEFINITIONS CC1AsOptions.td) -tablegen(CC1AsOptions.inc - -gen-opt-parser-defs) -add_custom_target(ClangCC1AsOptions - DEPENDS CC1AsOptions.inc) +clang_tablegen(CC1AsOptions.inc -gen-opt-parser-defs + SOURCE CC1AsOptions.td + TARGET ClangCC1AsOptions) diff --git a/include/clang/Lex/CMakeLists.txt b/include/clang/Lex/CMakeLists.txt index b823e83f90..38055ebb64 100644 --- a/include/clang/Lex/CMakeLists.txt +++ b/include/clang/Lex/CMakeLists.txt @@ -1,6 +1,5 @@ -set(LLVM_TARGET_DEFINITIONS ../Basic/Attr.td) -tablegen(AttrSpellings.inc - -gen-clang-attr-spelling-list - -I ${CMAKE_CURRENT_SOURCE_DIR}/../../) -add_custom_target(ClangAttrSpellings +clang_tablegen(AttrSpellings.inc -gen-clang-attr-spelling-list + -I ${CMAKE_CURRENT_SOURCE_DIR}/../../ + SOURCE ../Basic/Attr.td + TARGET ClangAttrSpellings DEPENDS AttrSpellings.inc) diff --git a/include/clang/Serialization/CMakeLists.txt b/include/clang/Serialization/CMakeLists.txt index 3712009bf3..d91513da99 100644 --- a/include/clang/Serialization/CMakeLists.txt +++ b/include/clang/Serialization/CMakeLists.txt @@ -1,12 +1,9 @@ -set(LLVM_TARGET_DEFINITIONS ../Basic/Attr.td) -tablegen(AttrPCHRead.inc - -gen-clang-attr-pch-read - -I ${CMAKE_CURRENT_SOURCE_DIR}/../../) -add_custom_target(ClangAttrPCHRead - DEPENDS AttrPCHRead.inc) +clang_tablegen(AttrPCHRead.inc -gen-clang-attr-pch-read + -I ${CMAKE_CURRENT_SOURCE_DIR}/../../ + SOURCE ../Basic/Attr.td + TARGET ClangAttrPCHRead) -tablegen(AttrPCHWrite.inc - -gen-clang-attr-pch-write - -I ${CMAKE_CURRENT_SOURCE_DIR}/../../) -add_custom_target(ClangAttrPCHWrite - DEPENDS AttrPCHWrite.inc) +clang_tablegen(AttrPCHWrite.inc -gen-clang-attr-pch-write + -I ${CMAKE_CURRENT_SOURCE_DIR}/../../ + SOURCE ../Basic/Attr.td + TARGET ClangAttrPCHWrite) diff --git a/lib/Headers/CMakeLists.txt b/lib/Headers/CMakeLists.txt index eef541e5b8..0d739dc3c5 100644 --- a/lib/Headers/CMakeLists.txt +++ b/lib/Headers/CMakeLists.txt @@ -28,8 +28,8 @@ if(MSVC_IDE OR XCODE) endif() # Generate arm_neon.h -set(LLVM_TARGET_DEFINITIONS ${CLANG_SOURCE_DIR}/include/clang/Basic/arm_neon.td) -tablegen(arm_neon.h.inc -gen-arm-neon) +clang_tablegen(arm_neon.h.inc -gen-arm-neon + SOURCE ${CLANG_SOURCE_DIR}/include/clang/Basic/arm_neon.td) set(out_files) foreach( f ${files} ) diff --git a/lib/StaticAnalyzer/Checkers/CMakeLists.txt b/lib/StaticAnalyzer/Checkers/CMakeLists.txt index e172a529d7..8eb7b4c85d 100644 --- a/lib/StaticAnalyzer/Checkers/CMakeLists.txt +++ b/lib/StaticAnalyzer/Checkers/CMakeLists.txt @@ -1,9 +1,7 @@ -set(LLVM_TARGET_DEFINITIONS Checkers.td) -tablegen(Checkers.inc - -gen-clang-sa-checkers - -I ${CMAKE_CURRENT_SOURCE_DIR}/../../../include) -add_custom_target(ClangSACheckers - DEPENDS Checkers.inc) +clang_tablegen(Checkers.inc -gen-clang-sa-checkers + -I ${CMAKE_CURRENT_SOURCE_DIR}/../../../include + SOURCE Checkers.td + TARGET ClangSACheckers) set(LLVM_USED_LIBS clangBasic clangAST) |