[Mlir-commits] [mlir] c4afecc - [llvm][CMake][TableGen] Add all TableGen files to tablegen_compile_commands.yml (#71686)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Thu Nov 16 01:26:30 PST 2023
Author: David Spickett
Date: 2023-11-16T09:26:26Z
New Revision: c4afeccdd235a282d200c450e06a730504a66a08
URL: https://github.com/llvm/llvm-project/commit/c4afeccdd235a282d200c450e06a730504a66a08
DIFF: https://github.com/llvm/llvm-project/commit/c4afeccdd235a282d200c450e06a730504a66a08.diff
LOG: [llvm][CMake][TableGen] Add all TableGen files to tablegen_compile_commands.yml (#71686)
This file is a list of files and their required include dirs, used by
the TableGen LSP server
(https://mlir.llvm.org/docs/Tools/MLIRLSP/#tablegen-lsp-language-server--tblgen-lsp-server).
Initialy this only included MLIR TableGen files, so I've expanded that
by moving it into llvm so all projects that use the llvm `tablegen`
function will be added to the file.
You could already do some things in llvm TableGen files without this,
but were limited with files that don't include their dependencies using
`include`, only with command line arguments.
Once those are in the yml file, the language server sees all that and go
to definition etc. all works.
Added:
Modified:
llvm/cmake/modules/TableGen.cmake
mlir/cmake/modules/AddMLIR.cmake
Removed:
################################################################################
diff --git a/llvm/cmake/modules/TableGen.cmake b/llvm/cmake/modules/TableGen.cmake
index 7fd6628ef55d33a..1d18fdde2bb98b6 100644
--- a/llvm/cmake/modules/TableGen.cmake
+++ b/llvm/cmake/modules/TableGen.cmake
@@ -4,6 +4,10 @@
# Adds the name of the generated file to TABLEGEN_OUTPUT.
include(LLVMDistributionSupport)
+# Clear out any pre-existing compile_commands file before processing. This
+# allows for generating a clean compile_commands on each configure.
+file(REMOVE ${CMAKE_BINARY_DIR}/tablegen_compile_commands.yml)
+
function(tablegen project ofn)
cmake_parse_arguments(ARG "" "" "DEPENDS;EXTRA_INCLUDES" ${ARGN})
@@ -91,6 +95,29 @@ function(tablegen project ofn)
# but lets us having smaller and cleaner code here.
get_directory_property(tblgen_includes INCLUDE_DIRECTORIES)
list(APPEND tblgen_includes ${ARG_EXTRA_INCLUDES})
+
+ # Get the current set of include paths for this td file.
+ cmake_parse_arguments(ARG "" "" "DEPENDS;EXTRA_INCLUDES" ${ARGN})
+ get_directory_property(tblgen_includes INCLUDE_DIRECTORIES)
+ list(APPEND tblgen_includes ${ARG_EXTRA_INCLUDES})
+ # Filter out any empty include items.
+ list(REMOVE_ITEM tblgen_includes "")
+
+ # Build the absolute path for the current input file.
+ if (IS_ABSOLUTE ${LLVM_TARGET_DEFINITIONS})
+ set(LLVM_TARGET_DEFINITIONS_ABSOLUTE ${LLVM_TARGET_DEFINITIONS})
+ else()
+ set(LLVM_TARGET_DEFINITIONS_ABSOLUTE ${CMAKE_CURRENT_SOURCE_DIR}/${LLVM_TARGET_DEFINITIONS})
+ endif()
+
+ # Append this file and its includes to the compile commands file.
+ # This file is used by the TableGen LSP Language Server (tblgen-lsp-server).
+ file(APPEND ${CMAKE_BINARY_DIR}/tablegen_compile_commands.yml
+ "--- !FileInfo:\n"
+ " filepath: \"${LLVM_TARGET_DEFINITIONS_ABSOLUTE}\"\n"
+ " includes: \"${CMAKE_CURRENT_SOURCE_DIR};${tblgen_includes}\"\n"
+ )
+
# Filter out empty items before prepending each entry with -I
list(REMOVE_ITEM tblgen_includes "")
list(TRANSFORM tblgen_includes PREPEND -I)
diff --git a/mlir/cmake/modules/AddMLIR.cmake b/mlir/cmake/modules/AddMLIR.cmake
index 544abe43688820e..1d2ed748bc2f13d 100644
--- a/mlir/cmake/modules/AddMLIR.cmake
+++ b/mlir/cmake/modules/AddMLIR.cmake
@@ -1,36 +1,10 @@
include(GNUInstallDirs)
include(LLVMDistributionSupport)
-# Clear out any pre-existing compile_commands file before processing. This
-# allows for generating a clean compile_commands on each configure.
-file(REMOVE ${CMAKE_BINARY_DIR}/tablegen_compile_commands.yml)
-
function(mlir_tablegen ofn)
tablegen(MLIR ${ARGV})
set(TABLEGEN_OUTPUT ${TABLEGEN_OUTPUT} ${CMAKE_CURRENT_BINARY_DIR}/${ofn}
PARENT_SCOPE)
-
- # Get the current set of include paths for this td file.
- cmake_parse_arguments(ARG "" "" "DEPENDS;EXTRA_INCLUDES" ${ARGN})
- get_directory_property(tblgen_includes INCLUDE_DIRECTORIES)
- list(APPEND tblgen_includes ${ARG_EXTRA_INCLUDES})
- # Filter out any empty include items.
- list(REMOVE_ITEM tblgen_includes "")
-
- # Build the absolute path for the current input file.
- if (IS_ABSOLUTE ${LLVM_TARGET_DEFINITIONS})
- set(LLVM_TARGET_DEFINITIONS_ABSOLUTE ${LLVM_TARGET_DEFINITIONS})
- else()
- set(LLVM_TARGET_DEFINITIONS_ABSOLUTE ${CMAKE_CURRENT_SOURCE_DIR}/${LLVM_TARGET_DEFINITIONS})
- endif()
-
- # Append the includes used for this file to the tablegen_compile_commands
- # file.
- file(APPEND ${CMAKE_BINARY_DIR}/tablegen_compile_commands.yml
- "--- !FileInfo:\n"
- " filepath: \"${LLVM_TARGET_DEFINITIONS_ABSOLUTE}\"\n"
- " includes: \"${CMAKE_CURRENT_SOURCE_DIR};${tblgen_includes}\"\n"
- )
endfunction()
# Clear out any pre-existing compile_commands file before processing. This
More information about the Mlir-commits
mailing list