https://github.com/zero9178 created 
https://github.com/llvm/llvm-project/pull/207514

Not only is it more declarative than using the `-I` directory, it additionally 
adds the given directory to the `tablegen_compile_commands.yml` which allows 
the LSP and IDE tooling to also be aware of the extra include directories used 
to compile that TableGen file

From fcad902251f567fa667bb77946fca94319fca2fd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Markus=20B=C3=B6ck?= <[email protected]>
Date: Sat, 4 Jul 2026 15:43:16 +0200
Subject: [PATCH] [cmake][NFC] Use `EXTRA_INCLUDES` in `tablegen` commands

Not only is it more declarative than using the `-I` directory, it additionally 
adds the given directory to the `tablegen_compile_commands.yml` which allows 
the LSP and IDE tooling to also be aware of the extra include directories used 
to compile that TableGen file
---
 clang/include/clang/Basic/CMakeLists.txt         | 14 +++++++-------
 clang/include/clang/CIR/Dialect/CMakeLists.txt   |  2 +-
 clang/include/clang/Parse/CMakeLists.txt         |  4 ++--
 clang/include/clang/Sema/CMakeLists.txt          | 10 +++++-----
 clang/include/clang/Serialization/CMakeLists.txt |  4 ++--
 clang/lib/AST/CMakeLists.txt                     |  2 +-
 clang/lib/Headers/CMakeLists.txt                 |  2 +-
 llvm/include/llvm/TargetParser/CMakeLists.txt    |  2 +-
 offload/plugins-nextgen/common/CMakeLists.txt    |  4 ++--
 9 files changed, 22 insertions(+), 22 deletions(-)

diff --git a/clang/include/clang/Basic/CMakeLists.txt 
b/clang/include/clang/Basic/CMakeLists.txt
index 20172622ca424..d90d326027583 100644
--- a/clang/include/clang/Basic/CMakeLists.txt
+++ b/clang/include/clang/Basic/CMakeLists.txt
@@ -52,40 +52,40 @@ clang_tablegen(DiagnosticAllCompatIDs.inc
   TARGET ClangDiagnosticAllCompatIDs)
 
 clang_tablegen(AttrList.inc -gen-clang-attr-list
-  -I ${CMAKE_CURRENT_SOURCE_DIR}/../../
+  EXTRA_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/../../
   SOURCE Attr.td
   TARGET ClangAttrList)
 
 clang_tablegen(AttrParsedAttrList.inc -gen-clang-attr-parsed-attr-list
-  -I ${CMAKE_CURRENT_SOURCE_DIR}/../../
+  EXTRA_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/../../
   SOURCE Attr.td
   TARGET ClangAttrParsedAttrList)
 
 clang_tablegen(AttrSubMatchRulesList.inc 
-gen-clang-attr-subject-match-rule-list
-  -I ${CMAKE_CURRENT_SOURCE_DIR}/../../
+  EXTRA_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/../../
   SOURCE Attr.td
   TARGET ClangAttrSubjectMatchRuleList)
 
 clang_tablegen(RegularKeywordAttrInfo.inc -gen-clang-regular-keyword-attr-info
-  -I ${CMAKE_CURRENT_SOURCE_DIR}/../../
+  EXTRA_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/../../
   SOURCE Attr.td
   TARGET ClangRegularKeywordAttrInfo
   )
 
 clang_tablegen(AttrHasAttributeImpl.inc -gen-clang-attr-has-attribute-impl
-  -I ${CMAKE_CURRENT_SOURCE_DIR}/../../
+  EXTRA_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/../../
   SOURCE Attr.td
   TARGET ClangAttrHasAttributeImpl
   )
 
 clang_tablegen(CXX11AttributeInfo.inc -gen-cxx11-attribute-info
-  -I ${CMAKE_CURRENT_SOURCE_DIR}/../../
+  EXTRA_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/../../
   SOURCE Attr.td
   TARGET CXX11AttributeInfo
   )
 
   clang_tablegen(AttributeSpellingList.inc -gen-attribute-spelling-list
-  -I ${CMAKE_CURRENT_SOURCE_DIR}/../../
+  EXTRA_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/../../
   SOURCE Attr.td
   TARGET AttributeSpellingList
   )
diff --git a/clang/include/clang/CIR/Dialect/CMakeLists.txt 
b/clang/include/clang/CIR/Dialect/CMakeLists.txt
index 34d2b712e3541..bb28b7a5e81dc 100644
--- a/clang/include/clang/CIR/Dialect/CMakeLists.txt
+++ b/clang/include/clang/CIR/Dialect/CMakeLists.txt
@@ -6,7 +6,7 @@ add_custom_target(clang-cir-doc)
 function(add_clang_mlir_doc doc_filename output_file output_directory command)
   set(LLVM_TARGET_DEFINITIONS ${doc_filename}.td)
   tablegen(MLIR ${output_file}.md ${command} ${ARGN}
-           "-I${MLIR_MAIN_SRC_DIR}" "-I${MLIR_INCLUDE_DIR}")
+           EXTRA_INCLUDES ${MLIR_MAIN_SRC_DIR} ${MLIR_INCLUDE_DIR})
   set(GEN_DOC_FILE 
${CLANG_BINARY_DIR}/docs/CIR/_raw/${output_directory}${output_file}.md)
   add_custom_command(
           OUTPUT ${GEN_DOC_FILE}
diff --git a/clang/include/clang/Parse/CMakeLists.txt 
b/clang/include/clang/Parse/CMakeLists.txt
index 2cc7e54b3b01a..6318e19a269c4 100644
--- a/clang/include/clang/Parse/CMakeLists.txt
+++ b/clang/include/clang/Parse/CMakeLists.txt
@@ -1,10 +1,10 @@
 clang_tablegen(AttrParserStringSwitches.inc 
-gen-clang-attr-parser-string-switches
-  -I ${CMAKE_CURRENT_SOURCE_DIR}/../../
+  EXTRA_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/../../
   SOURCE ../Basic/Attr.td
   TARGET ClangAttrParserStringSwitches)
 
 clang_tablegen(AttrSubMatchRulesParserStringSwitches.inc
   -gen-clang-attr-subject-match-rules-parser-string-switches
-  -I ${CMAKE_CURRENT_SOURCE_DIR}/../../
+  EXTRA_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/../../
   SOURCE ../Basic/Attr.td
   TARGET ClangAttrSubMatchRulesParserStringSwitches)
diff --git a/clang/include/clang/Sema/CMakeLists.txt 
b/clang/include/clang/Sema/CMakeLists.txt
index 3f540ea596871..39e4909b81316 100644
--- a/clang/include/clang/Sema/CMakeLists.txt
+++ b/clang/include/clang/Sema/CMakeLists.txt
@@ -1,24 +1,24 @@
 clang_tablegen(AttrTemplateInstantiate.inc -gen-clang-attr-template-instantiate
-  -I ${CMAKE_CURRENT_SOURCE_DIR}/../../
+  EXTRA_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/../../
   SOURCE ../Basic/Attr.td
   TARGET ClangAttrTemplateInstantiate)
 
 clang_tablegen(AttrParsedAttrKinds.inc -gen-clang-attr-parsed-attr-kinds
-  -I ${CMAKE_CURRENT_SOURCE_DIR}/../../
+  EXTRA_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/../../
   SOURCE ../Basic/Attr.td
   TARGET ClangAttrParsedAttrKinds)
 
 clang_tablegen(AttrIsTypeDependent.inc -gen-clang-attr-is-type-dependent
-  -I ${CMAKE_CURRENT_SOURCE_DIR}/../../
+  EXTRA_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/../../
   SOURCE ../Basic/Attr.td
   TARGET ClangAttrIsTypeDependent)
 
 clang_tablegen(AttrSpellingListIndex.inc -gen-clang-attr-spelling-index
-  -I ${CMAKE_CURRENT_SOURCE_DIR}/../../
+  EXTRA_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/../../
   SOURCE ../Basic/Attr.td
   TARGET ClangAttrSpellingListIndex)
 
 clang_tablegen(AttrParsedAttrImpl.inc -gen-clang-attr-parsed-attr-impl
-  -I ${CMAKE_CURRENT_SOURCE_DIR}/../../
+  EXTRA_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/../../
   SOURCE ../Basic/Attr.td
   TARGET ClangAttrParsedAttrImpl)
diff --git a/clang/include/clang/Serialization/CMakeLists.txt 
b/clang/include/clang/Serialization/CMakeLists.txt
index d91513da99979..8cb2d433fb1d0 100644
--- a/clang/include/clang/Serialization/CMakeLists.txt
+++ b/clang/include/clang/Serialization/CMakeLists.txt
@@ -1,9 +1,9 @@
 clang_tablegen(AttrPCHRead.inc -gen-clang-attr-pch-read
-  -I ${CMAKE_CURRENT_SOURCE_DIR}/../../
+  EXTRA_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/../../
   SOURCE ../Basic/Attr.td
   TARGET ClangAttrPCHRead)
 
 clang_tablegen(AttrPCHWrite.inc -gen-clang-attr-pch-write
-  -I ${CMAKE_CURRENT_SOURCE_DIR}/../../
+  EXTRA_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/../../
   SOURCE ../Basic/Attr.td
   TARGET ClangAttrPCHWrite)
diff --git a/clang/lib/AST/CMakeLists.txt b/clang/lib/AST/CMakeLists.txt
index e33250dc005e4..e3f74d73f21da 100644
--- a/clang/lib/AST/CMakeLists.txt
+++ b/clang/lib/AST/CMakeLists.txt
@@ -16,7 +16,7 @@ clang_tablegen(Opcodes.inc
   TARGET Opcodes)
 
 clang_tablegen(AttrDocTable.inc -gen-clang-attr-doc-table
-  -I ${CMAKE_CURRENT_SOURCE_DIR}/../../include/
+  EXTRA_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/../../include/
   SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/../../include/clang/Basic/Attr.td
   TARGET ClangAttrDocTable)
 
diff --git a/clang/lib/Headers/CMakeLists.txt b/clang/lib/Headers/CMakeLists.txt
index 6bc5e5ee04e0f..0b50a966b6c0b 100644
--- a/clang/lib/Headers/CMakeLists.txt
+++ b/clang/lib/Headers/CMakeLists.txt
@@ -454,7 +454,7 @@ endfunction(copy_header_to_output_dir)
 
 function(clang_generate_header td_option td_file out_file)
   clang_tablegen(${out_file} ${td_option}
-  -I ${CLANG_SOURCE_DIR}/include/clang/Basic/
+  EXTRA_INCLUDES ${CLANG_SOURCE_DIR}/include/clang/Basic/
   SOURCE ${CLANG_SOURCE_DIR}/include/clang/Basic/${td_file})
 
   copy_header_to_output_dir(${CMAKE_CURRENT_BINARY_DIR} ${out_file})
diff --git a/llvm/include/llvm/TargetParser/CMakeLists.txt 
b/llvm/include/llvm/TargetParser/CMakeLists.txt
index 3811367be614e..329317653c672 100644
--- a/llvm/include/llvm/TargetParser/CMakeLists.txt
+++ b/llvm/include/llvm/TargetParser/CMakeLists.txt
@@ -8,7 +8,7 @@ set(LLVM_TARGET_DEFINITIONS 
${PROJECT_SOURCE_DIR}/lib/Target/RISCV/RISCV.td)
 tablegen(LLVM RISCVTargetParserDef.inc -gen-riscv-target-def EXTRA_INCLUDES 
${PROJECT_SOURCE_DIR}/lib/Target/RISCV)
 
 set(LLVM_TARGET_DEFINITIONS ${PROJECT_SOURCE_DIR}/lib/Target/PowerPC/PPC.td)
-tablegen(LLVM PPCGenTargetFeatures.inc -gen-target-features 
-I${PROJECT_SOURCE_DIR}/lib/Target/PowerPC)
+tablegen(LLVM PPCGenTargetFeatures.inc -gen-target-features EXTRA_INCLUDES 
${PROJECT_SOURCE_DIR}/lib/Target/PowerPC)
 
 # This covers all of the tablegen calls above.
 add_public_tablegen_target(target_parser_gen)
diff --git a/offload/plugins-nextgen/common/CMakeLists.txt 
b/offload/plugins-nextgen/common/CMakeLists.txt
index aad8d209e931a..4063ce5c4e18c 100644
--- a/offload/plugins-nextgen/common/CMakeLists.txt
+++ b/offload/plugins-nextgen/common/CMakeLists.txt
@@ -3,8 +3,8 @@
 include(TableGen)
 file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include)
 set(LLVM_TARGET_DEFINITIONS 
${CMAKE_CURRENT_SOURCE_DIR}/../../liboffload/API/OffloadAPI.td)
-tablegen(OFFLOAD include/OffloadErrcodes.inc -gen-errcodes -I 
${CMAKE_CURRENT_SOURCE_DIR}/../../liboffload/API)
-tablegen(OFFLOAD include/OffloadInfo.inc -gen-info -I 
${CMAKE_CURRENT_SOURCE_DIR}/../../liboffload/API)
+tablegen(OFFLOAD include/OffloadErrcodes.inc -gen-errcodes EXTRA_INCLUDES 
${CMAKE_CURRENT_SOURCE_DIR}/../../liboffload/API)
+tablegen(OFFLOAD include/OffloadInfo.inc -gen-info EXTRA_INCLUDES 
${CMAKE_CURRENT_SOURCE_DIR}/../../liboffload/API)
 add_public_tablegen_target(PluginErrcodes)
 
 # NOTE: Don't try to build `PluginInterface` using `add_llvm_library` because 
we

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to