mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-20 18:27:20 +00:00
[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.
This commit is contained in:
parent
56daf026ba
commit
c4afeccdd2
@ -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)
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user