[llvm] [mlir] [mlir][cmake] Fix missing entries in `tablegen_compile_commands.yml` (PR #147516)
Markus Böck via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 8 05:49:49 PDT 2025
https://github.com/zero9178 created https://github.com/llvm/llvm-project/pull/147516
Depending on the order of CMake includes the `tablegen_compile_commands.yml` was previously missing entries due to being deleted after a `tablegen` commands.
This PR fixes this by 1) making sure `AddMLIR` includes `TableGen` such that new compile commands are added to a fresh YML file and 2) using an include guard to ensure the file is cleared exactly once
>From 3ea180aac6e4188e33b6eb313880e6af29072fd5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Markus=20B=C3=B6ck?= <mboeck at nvidia.com>
Date: Tue, 8 Jul 2025 14:48:35 +0200
Subject: [PATCH] [mlir][cmake] Fix missing entries in
`tablegen_compile_commands.yml`
Depending on the order of CMake includes the `tablegen_compile_commands.yml` was previously missing entries due to being deleted after a `tablegen` commands.
This PR fixes this by 1) making sure `AddMLIR` includes `TableGen` such that new compile commands are added to a fresh YML file and 2) using an include guard to ensure the file is cleared exactly once
---
llvm/cmake/modules/TableGen.cmake | 12 ++++++++----
mlir/cmake/modules/AddMLIR.cmake | 1 +
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/llvm/cmake/modules/TableGen.cmake b/llvm/cmake/modules/TableGen.cmake
index 67a628d4953c3..9a2e73a1e3718 100644
--- a/llvm/cmake/modules/TableGen.cmake
+++ b/llvm/cmake/modules/TableGen.cmake
@@ -4,10 +4,6 @@
# 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})
@@ -250,3 +246,11 @@ macro(add_tablegen target project)
set_property(GLOBAL APPEND PROPERTY ${export_upper}_EXPORTS ${target})
endif()
endmacro()
+
+# Make sure 'tablegen_compile_commands.yml' is only deleted once the very
+# first time this file is included.
+include_guard(GLOBAL)
+
+# 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)
diff --git a/mlir/cmake/modules/AddMLIR.cmake b/mlir/cmake/modules/AddMLIR.cmake
index 353e64b3d013e..ff4269ed7acd2 100644
--- a/mlir/cmake/modules/AddMLIR.cmake
+++ b/mlir/cmake/modules/AddMLIR.cmake
@@ -1,3 +1,4 @@
+include(TableGen)
include(GNUInstallDirs)
include(LLVMDistributionSupport)
More information about the llvm-commits
mailing list