Skip to content

Conversation

Technius
Copy link
Contributor

@Technius Technius commented Aug 26, 2025

Tool targets like mlir-opt rely on the mlir-headers or
mlir-generic-headers targets to run first to generate headers. However, many
of the IncGen targets are not specified as dependencies of the header targets
in CMake, which causes spurious build failures when using a high number of
parallel build jobs.

Thus, this commit introduces a pair of new CMake macros
add_mlir_dialect_tablegen_target and add_mlir_generic_tablegen_target to
AddMLIR.cmake, which can be used in place of add_public_tablegen_target to
ensure (by convention) that IncGen targets are added to the mlir-headers
(resp. mlir-generic-headers) target dependencies.

Most uses of add_public_tablegen_target in the dialects have been refactored
to use the new macros.

Copy link

Thank you for submitting a Pull Request (PR) to the LLVM Project!

This PR will be automatically labeled and the relevant teams will be notified.

If you wish to, you can add reviewers by using the "Reviewers" section on this page.

If this is not working for you, it is probably because you do not have write permissions for the repository. In which case you can instead tag reviewers by name in a comment by using @ followed by their GitHub username.

If you have received no comments on your PR for a week, you can request a review by "ping"ing the PR by adding a comment “Ping”. The common courtesy "ping" rate is once a week. Please remember that you are asking for valuable time from other developers.

If you have further questions, they may be answered by the LLVM GitHub User Guide.

You can also ask questions in a comment on this PR, on the LLVM Discord or on the forums.

@llvmbot
Copy link
Member

llvmbot commented Aug 26, 2025

@llvm/pr-subscribers-mlir-irdl
@llvm/pr-subscribers-mlir-nvgpu
@llvm/pr-subscribers-openacc
@llvm/pr-subscribers-mlir-vector
@llvm/pr-subscribers-mlir-quant
@llvm/pr-subscribers-mlir-sve
@llvm/pr-subscribers-mlir-arith
@llvm/pr-subscribers-mlir-openacc
@llvm/pr-subscribers-mlir-emitc

@llvm/pr-subscribers-mlir

Author: Bryan Tan (Technius)

Changes

This PR includes fixes for two build issues related to MLIR_LINK_MLIR_DYLIB:

  • When MLIR_LINK_MLIR_DYLIB is on but LLVM_BUILD_LLVM_DYLIB is off, the MLIR shared library target is not actually added/built, causing CMake dependency propagation issues and linker errors.
  • When a large number of parallel jobs is used with MLIR_LINK_MLIR_DYLIB enabled, some targets like mlir-opt fail to compile because they depend on a header that requires a tablegenned header file, but the corresponding IncGen targets are not dependencies of the mlir-headers or mlir-generic-headers targets.

See the commit messages for more information.


Patch is 78.22 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/155474.diff

86 Files Affected:

  • (modified) mlir/CMakeLists.txt (+14-2)
  • (modified) mlir/cmake/modules/AddMLIR.cmake (+7-2)
  • (modified) mlir/include/mlir/Conversion/CMakeLists.txt (+1)
  • (modified) mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt (+2-2)
  • (modified) mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Affine/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt (+4-4)
  • (modified) mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Async/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt (+2-4)
  • (modified) mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/DLTI/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Func/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/GPU/IR/CMakeLists.txt (+6-6)
  • (modified) mlir/include/mlir/Dialect/GPU/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/GPU/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/CMakeLists.txt (+12-14)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Linalg/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Linalg/IR/CMakeLists.txt (+5-10)
  • (modified) mlir/include/mlir/Dialect/Linalg/TransformOps/CMakeLists.txt (+3-3)
  • (modified) mlir/include/mlir/Dialect/MLProgram/IR/CMakeLists.txt (+2-4)
  • (modified) mlir/include/mlir/Dialect/MLProgram/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/MPI/IR/CMakeLists.txt (+3-3)
  • (modified) mlir/include/mlir/Dialect/Math/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/MemRef/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/MemRef/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/NVGPU/IR/CMakeLists.txt (+4-4)
  • (modified) mlir/include/mlir/Dialect/NVGPU/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/NVGPU/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/OpenACC/CMakeLists.txt (+4-7)
  • (modified) mlir/include/mlir/Dialect/OpenACC/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/OpenMP/CMakeLists.txt (+2-2)
  • (modified) mlir/include/mlir/Dialect/Ptr/IR/CMakeLists.txt (+3-3)
  • (modified) mlir/include/mlir/Dialect/Quant/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Quant/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/SCF/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/SCF/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/SMT/IR/CMakeLists.txt (+2-4)
  • (modified) mlir/include/mlir/Dialect/SPIRV/IR/CMakeLists.txt (+6-12)
  • (modified) mlir/include/mlir/Dialect/SPIRV/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Shape/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Shard/IR/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Shard/Interfaces/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Shard/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/SparseTensor/IR/CMakeLists.txt (+3-4)
  • (modified) mlir/include/mlir/Dialect/SparseTensor/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/SparseTensor/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Tensor/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Tensor/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Tosa/IR/CMakeLists.txt (+4-4)
  • (modified) mlir/include/mlir/Dialect/Tosa/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Transform/DebugExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/IR/CMakeLists.txt (+4-8)
  • (modified) mlir/include/mlir/Dialect/Transform/IRDLExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/Interfaces/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Transform/LoopExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/PDLExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/TuneExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/UB/IR/CMakeLists.txt (+2-2)
  • (modified) mlir/include/mlir/Dialect/Utils/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Vector/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Vector/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/WasmSSA/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/XeGPU/IR/CMakeLists.txt (+3-6)
  • (modified) mlir/include/mlir/Dialect/XeGPU/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/IR/CMakeLists.txt (+10)
  • (modified) mlir/include/mlir/Reducer/CMakeLists.txt (+1)
  • (modified) mlir/include/mlir/Target/LLVMIR/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/tools/mlir-shlib/CMakeLists.txt (+2-1)
diff --git a/mlir/CMakeLists.txt b/mlir/CMakeLists.txt
index f58a4c6f506ec..371740292323a 100644
--- a/mlir/CMakeLists.txt
+++ b/mlir/CMakeLists.txt
@@ -172,8 +172,11 @@ set(MLIR_INSTALL_AGGREGATE_OBJECTS 1 CACHE BOOL
 
 set(MLIR_BUILD_MLIR_C_DYLIB 0 CACHE BOOL "Builds libMLIR-C shared library.")
 
-set(MLIR_LINK_MLIR_DYLIB ${LLVM_LINK_LLVM_DYLIB} CACHE BOOL
-    "Link tools against libMLIR.so")
+set(MLIR_BUILD_MLIR_DYLIB 0 CACHE BOOL "Builds the libMLIR shared library")
+set(MLIR_LINK_MLIR_DYLIB ${LLVM_LINK_LLVM_DYLIB} CACHE BOOL "Link tools against libMLIR.so")
+if (MLIR_LINK_MLIR_DYLIB)
+  set(MLIR_BUILD_MLIR_DYLIB 1)
+endif()
 
 configure_file(
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Config/mlir-config.h.cmake
@@ -235,6 +238,15 @@ set(MLIR_PDLL_TABLEGEN_TARGET "${MLIR_PDLL_TABLEGEN_TARGET}" CACHE INTERNAL "")
 set(MLIR_SRC_SHARDER_TABLEGEN_EXE "${MLIR_SRC_SHARDER_TABLEGEN_EXE}" CACHE INTERNAL "")
 set(MLIR_SRC_SHARDER_TABLEGEN_TARGET "${MLIR_SRC_SHARDER_TABLEGEN_TARGET}" CACHE INTERNAL "")
 
+# Add MLIR dylib target here, as calls to mlir_target_link_libraries (used by
+# individual libs below) assume that such a target may exist,
+# but we cannot define the actual dylib until after all individual libs
+# are defined.
+if (MLIR_LINK_MLIR_DYLIB)
+  add_library(MLIRDylib INTERFACE)
+  add_mlir_library_install(MLIRDylib)
+endif()
+
 add_subdirectory(include/mlir)
 add_subdirectory(lib)
 # C API needs all dialects for registration, but should be built before tests.
diff --git a/mlir/cmake/modules/AddMLIR.cmake b/mlir/cmake/modules/AddMLIR.cmake
index 38839679ef8b1..170af1878a321 100644
--- a/mlir/cmake/modules/AddMLIR.cmake
+++ b/mlir/cmake/modules/AddMLIR.cmake
@@ -203,6 +203,11 @@ function(add_mlir_interface interface)
   add_dependencies(mlir-generic-headers MLIR${interface}IncGen)
 endfunction()
 
+# Add a tablegen target that generates headers in the include directory
+macro(add_mlir_tablegen_target target)
+  add_public_tablegen_target(${target})
+  add_dependencies(mlir-headers ${target})
+endmacro()
 
 # Generate Documentation
 function(add_mlir_doc doc_filename output_file output_directory command)
@@ -354,7 +359,7 @@ function(add_mlir_library name)
     # Yes, because the target "obj.${name}" is referenced.
     set(NEEDS_OBJECT_LIB ON)
   endif ()
-  if(LLVM_BUILD_LLVM_DYLIB AND NOT ARG_EXCLUDE_FROM_LIBMLIR AND NOT XCODE)
+  if(MLIR_BUILD_MLIR_DYLIB AND NOT ARG_EXCLUDE_FROM_LIBMLIR AND NOT XCODE)
     # Yes, because in addition to the shared library, the object files are
     # needed for linking into libMLIR.so (see mlir/tools/mlir-shlib/CMakeLists.txt).
     # For XCode, -force_load is used instead.
@@ -745,7 +750,7 @@ function(mlir_target_link_libraries target type)
   endif()
 
   if (MLIR_LINK_MLIR_DYLIB)
-    target_link_libraries(${target} ${type} MLIR)
+    target_link_libraries(${target} ${type} MLIRDylib)
   else()
     target_link_libraries(${target} ${type} ${ARGN})
   endif()
diff --git a/mlir/include/mlir/Conversion/CMakeLists.txt b/mlir/include/mlir/Conversion/CMakeLists.txt
index 9f76ab659215e..0a19b88e29dcb 100644
--- a/mlir/include/mlir/Conversion/CMakeLists.txt
+++ b/mlir/include/mlir/Conversion/CMakeLists.txt
@@ -4,6 +4,7 @@ mlir_tablegen(Passes.h.inc -gen-pass-decls -name Conversion)
 mlir_tablegen(Passes.capi.h.inc -gen-pass-capi-header --prefix Conversion)
 mlir_tablegen(Passes.capi.cpp.inc -gen-pass-capi-impl --prefix Conversion)
 add_public_tablegen_target(MLIRConversionPassIncGen)
+add_dependencies(mlir-generic-headers MLIRConversionPassIncGen)
 
 add_mlir_doc(Passes ConversionPasses ./ -gen-pass-doc)
 
diff --git a/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt
index ed074c205a551..e19e72e8e6033 100644
--- a/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt
@@ -4,9 +4,9 @@ add_mlir_doc(AMDGPU AMDGPU Dialects/ -gen-dialect-doc)
 set(LLVM_TARGET_DEFINITIONS AMDGPU.td)
 mlir_tablegen(AMDGPUEnums.h.inc -gen-enum-decls)
 mlir_tablegen(AMDGPUEnums.cpp.inc -gen-enum-defs)
-add_public_tablegen_target(MLIRAMDGPUEnumsGen)
+add_mlir_tablegen_target(MLIRAMDGPUEnumsGen)
 
 set(LLVM_TARGET_DEFINITIONS AMDGPU.td)
 mlir_tablegen(AMDGPUAttributes.h.inc -gen-attrdef-decls -attrdefs-dialect=amdgpu)
 mlir_tablegen(AMDGPUAttributes.cpp.inc -gen-attrdef-defs -attrdefs-dialect=amdgpu)
-add_public_tablegen_target(MLIRAMDGPUAttributesIncGen)
+add_mlir_tablegen_target(MLIRAMDGPUAttributesIncGen)
diff --git a/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt
index 8880989f4fed4..4e3b2f2084b74 100644
--- a/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt
@@ -1,6 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name AMDGPU)
-add_public_tablegen_target(MLIRAMDGPUTransformsIncGen)
-add_dependencies(mlir-headers MLIRAMDGPUTransformsIncGen)
+add_mlir_tablegen_target(MLIRAMDGPUTransformsIncGen)
 
 add_mlir_doc(Passes AMDGPUPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Affine/CMakeLists.txt b/mlir/include/mlir/Dialect/Affine/CMakeLists.txt
index fe1b372f6e03d..2327f4ad65ef9 100644
--- a/mlir/include/mlir/Dialect/Affine/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Affine/CMakeLists.txt
@@ -3,6 +3,6 @@ add_subdirectory(TransformOps)
 
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Affine)
-add_public_tablegen_target(MLIRAffinePassIncGen)
+add_mlir_tablegen_target(MLIRAffinePassIncGen)
 
 add_mlir_doc(Passes AffinePasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt
index c743f5c0766ba..466a4b74dbb5d 100644
--- a/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS AffineTransformOps.td)
 mlir_tablegen(AffineTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(AffineTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRAffineTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRAffineTransformOpsIncGen)
 
 add_mlir_doc(AffineTransformOps AffineLoopTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt
index 3f39e403adf12..dcadcd9cb39b3 100644
--- a/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt
@@ -1,5 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Arith)
-add_public_tablegen_target(MLIRArithTransformsIncGen)
+add_mlir_tablegen_target(MLIRArithTransformsIncGen)
 
 add_mlir_doc(Passes ArithPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt
index 3de3ec3f3a0e8..07840a9a771e0 100644
--- a/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt
@@ -3,6 +3,6 @@ add_mlir_doc(ArmNeon ArmNeon Dialects/ -gen-dialect-doc -dialect=arm_neon)
 
 set(LLVM_TARGET_DEFINITIONS ArmNeon.td)
 mlir_tablegen(ArmNeonConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmNeonConversionsIncGen)
+add_mlir_tablegen_target(MLIRArmNeonConversionsIncGen)
 
 add_subdirectory(TransformOps)
diff --git a/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt
index b8bc72a2bb734..8e55de7980147 100644
--- a/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS ArmNeonVectorTransformOps.td)
 mlir_tablegen(ArmNeonVectorTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(ArmNeonVectorTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRArmNeonVectorTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRArmNeonVectorTransformOpsIncGen)
 
 add_mlir_doc(ArmNeonVectorTransformOps ArmNeonVectorTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt
index 9801d8b099e3f..1e5c37a204175 100644
--- a/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt
@@ -8,25 +8,25 @@ mlir_tablegen(ArmSMEEnums.h.inc -gen-enum-decls)
 mlir_tablegen(ArmSMEEnums.cpp.inc -gen-enum-defs)
 mlir_tablegen(ArmSMEAttrDefs.h.inc -gen-attrdef-decls -attrdefs-dialect=arm_sme)
 mlir_tablegen(ArmSMEAttrDefs.cpp.inc -gen-attrdef-defs -attrdefs-dialect=arm_sme)
-add_public_tablegen_target(MLIRArmSMEOpsIncGen)
+add_mlir_tablegen_target(MLIRArmSMEOpsIncGen)
 
 # Generate LLVM IR Conversions
 set(LLVM_TARGET_DEFINITIONS ArmSMEOps.td)
 mlir_tablegen(ArmSMEOpsConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmSMEConversionsIncGen)
+add_mlir_tablegen_target(MLIRArmSMEConversionsIncGen)
 
 # Generate op interface declarations and definitions
 set(LLVM_TARGET_DEFINITIONS ArmSMEOps.td)
 mlir_tablegen(ArmSMEOpInterfaces.h.inc -gen-op-interface-decls)
 mlir_tablegen(ArmSMEOpInterfaces.cpp.inc -gen-op-interface-defs)
-add_public_tablegen_target(MLIRArmSMEOpInterfaces)
+add_mlir_tablegen_target(MLIRArmSMEOpInterfaces)
 
 # Generate declarations and definitions of ArmSME intrinsic Ops
 set(LLVM_TARGET_DEFINITIONS ArmSMEIntrinsicOps.td)
 mlir_tablegen(ArmSMEIntrinsicOps.h.inc -gen-op-decls)
 mlir_tablegen(ArmSMEIntrinsicOps.cpp.inc -gen-op-defs)
 mlir_tablegen(ArmSMEIntrinsicConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmSMEIntrinsicOpsIncGen)
+add_mlir_tablegen_target(MLIRArmSMEIntrinsicOpsIncGen)
 
 # Generate the docs
 add_mlir_doc(ArmSMEOps ArmSMEOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt
index 509f3fc2519cb..90e69c202b532 100644
--- a/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt
@@ -2,7 +2,6 @@ set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name ArmSME)
 mlir_tablegen(PassesEnums.h.inc -gen-enum-decls)
 mlir_tablegen(PassesEnums.cpp.inc -gen-enum-defs)
-add_public_tablegen_target(MLIRArmSMETransformsIncGen)
-add_dependencies(mlir-headers MLIRArmSMETransformsIncGen)
+add_mlir_tablegen_target(MLIRArmSMETransformsIncGen)
 
 add_mlir_doc(Passes ArmSMEPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
index 06595b7088a1e..f8d06951e7270 100644
--- a/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
@@ -3,4 +3,4 @@ add_mlir_doc(ArmSVE ArmSVE Dialects/ -gen-dialect-doc -dialect=arm_sve)
 
 set(LLVM_TARGET_DEFINITIONS ArmSVE.td)
 mlir_tablegen(ArmSVEConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmSVEConversionsIncGen)
+add_mlir_tablegen_target(MLIRArmSVEConversionsIncGen)
diff --git a/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt
index ce8d8fea7f188..e279f37b2019b 100644
--- a/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS ArmSVEVectorTransformOps.td)
 mlir_tablegen(ArmSVEVectorTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(ArmSVEVectorTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRArmSVEVectorTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRArmSVEVectorTransformOpsIncGen)
 
 add_mlir_doc(ArmSVEVectorTransformOps ArmSVEVectorTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt
index 7226642daf861..a2b8060a6561f 100644
--- a/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt
@@ -1,5 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name ArmSVE)
-add_public_tablegen_target(MLIRArmSVEPassIncGen)
+add_mlir_tablegen_target(MLIRArmSVEPassIncGen)
 
 add_mlir_doc(Passes ArmSVEPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Async/CMakeLists.txt b/mlir/include/mlir/Dialect/Async/CMakeLists.txt
index cabd5d3087cf3..f2642d6462831 100644
--- a/mlir/include/mlir/Dialect/Async/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Async/CMakeLists.txt
@@ -4,6 +4,6 @@ set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Async)
 mlir_tablegen(Passes.capi.h.inc -gen-pass-capi-header --prefix Async)
 mlir_tablegen(Passes.capi.cpp.inc -gen-pass-capi-impl --prefix Async)
-add_public_tablegen_target(MLIRAsyncPassIncGen)
+add_mlir_tablegen_target(MLIRAsyncPassIncGen)
 
 add_mlir_doc(Passes AsyncPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt
index 3ead52148c208..8f470dffcd607 100644
--- a/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt
@@ -8,11 +8,9 @@ add_mlir_interface(BufferViewFlowOpInterface)
 set(LLVM_TARGET_DEFINITIONS BufferizationEnums.td)
 mlir_tablegen(BufferizationEnums.h.inc -gen-enum-decls)
 mlir_tablegen(BufferizationEnums.cpp.inc -gen-enum-defs)
-add_public_tablegen_target(MLIRBufferizationEnumsIncGen)
-add_dependencies(mlir-headers MLIRBufferizationEnumsIncGen)
+add_mlir_tablegen_target(MLIRBufferizationEnumsIncGen)
 
 set(LLVM_TARGET_DEFINITIONS BufferizationTypeInterfaces.td)
 mlir_tablegen(BufferizationTypeInterfaces.h.inc -gen-type-interface-decls)
 mlir_tablegen(BufferizationTypeInterfaces.cpp.inc -gen-type-interface-defs)
-add_public_tablegen_target(MLIRBufferizationTypeInterfacesIncGen)
-add_dependencies(mlir-headers MLIRBufferizationTypeInterfacesIncGen)
+add_mlir_tablegen_target(MLIRBufferizationTypeInterfacesIncGen)
diff --git a/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt
index 95276e3e5e0d0..684c4295cd4f3 100644
--- a/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS BufferizationTransformOps.td)
 mlir_tablegen(BufferizationTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(BufferizationTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRBufferizationTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRBufferizationTransformOpsIncGen)
 
 add_mlir_doc(BufferizationTransformOps BufferizationTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt
index dcae4b8f26b89..bd6ea9a1cb29d 100644
--- a/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt
@@ -1,6 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Bufferization)
-add_public_tablegen_target(MLIRBufferizationPassIncGen)
-add_dependencies(mlir-headers MLIRBufferizationPassIncGen)
+add_mlir_tablegen_target(MLIRBufferizationPassIncGen)
 
 add_mlir_doc(Passes BufferizationPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt
index 837664e25b3c2..6e47ddade9652 100644
--- a/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt
@@ -6,4 +6,4 @@ mlir_tablegen(ComplexEnums.h.inc -gen-enum-decls)
 mlir_tablegen(ComplexEnums.cpp.inc -gen-enum-defs)
 mlir_tablegen(ComplexAttributes.h.inc -gen-attrdef-decls)
 mlir_tablegen(ComplexAttributes.cpp.inc -gen-attrdef-defs)
-add_public_tablegen_target(MLIRComplexAttributesIncGen)
+add_mlir_tablegen_target(MLIRComplexAttributesIncGen)
diff --git a/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt b/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt
index 4f8382e8e6e6b..74b1c541edaeb 100644
--- a/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt
@@ -6,5 +6,4 @@ add_mlir_doc(DLTIAttrs DLTIDialect Dialects/ -gen-dialect-doc)
 set(LLVM_TARGET_DEFINITIONS DLTIAttrs.td)
 mlir_tablegen(DLTIAttrs.h.inc -gen-attrdef-decls -attrdefs-dialect=dlti)
 mlir_tablegen(DLTIAttrs.cpp.inc -gen-attrdef-defs -attrdefs-dialect=dlti)
-add_public_tablegen_target(MLIRDLTIAttrsIncGen)
-add_dependencies(mlir-headers MLIRDLTIAttrsIncGen)
+add_mlir_tablegen_target(MLIRDLTIAttrsIncGen)
diff --git a/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt
index 1188d1a9b24d6..57faeca06794c 100644
--- a/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS DLTITransformOps.td)
 mlir_tablegen(DLTITransformOps.h.inc -gen-op-decls)
 mlir_tablegen(DLTITransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRDLTITransformOpsIncGen)
+add_mlir_tablegen_target(MLIRDLTITransformOpsIncGen)
 
 add_mlir_doc(DLTITransformOps DLTITransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt
index 299cee76cb1b4..c417a4ed3599a 100644
--- a/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt
@@ -12,4 +12,4 @@ mlir_tablegen(EmitCEnums.h.inc -gen-enum-decls)
 mlir_tablegen(EmitCEnums.cpp.inc -gen-enum-defs)
 mlir_tablegen(EmitCAttributes.h.inc -gen-attrdef-decls)
 mlir_tablegen(EmitCAttributes.cpp.inc -gen-attrdef-defs)
-add_public_tablegen_target(MLIREmitCAttributesIncGen)
+add_mlir_tablegen_target(MLIREmitCAttributesIncGen)
diff --git a/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt
index 0b507d75fa07a..d112be898c355 100644
--- a/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt
@@ -1,5 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name EmitC)
-add_public_tablegen_target(MLIREmitCTransformsIncGen)
+add_mlir_tablegen_target(MLIREmitCTransformsIncGen)
 
 add_mlir_doc(Passes EmitCPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt
index 08a6123dd2006..b19806f6007aa 100644
--- a/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt
@@ -3,6 +3,6 @@ mlir_tablegen(FuncOps.h.inc -gen-op-decls)
 mlir_tablegen(FuncOps.cpp.inc -gen-op-defs)
 mlir_tablegen(FuncOpsDialect.h.inc -gen-dialect-decls)
 mlir_tablegen(FuncOpsDialect.cpp.inc -gen-dialect-defs)
-add_public_tablegen_target(MLIRFuncOpsIncGen)
+add_mlir_tablegen_target(MLIRFuncOpsIncGen)
 
 add_mlir_doc(FuncOps FuncOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt
index 7ac6504f3dc2c..6098acbed2151 100644
--- a/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS FuncTransformOps.td)
 mlir_tablegen(FuncTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(FuncTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRFuncTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRFuncTransformOpsIncGen)
 
 add_mlir_doc(FuncTransformOps FuncTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Func/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/Func/Transforms/CMakeLists.txt
index 33c72e3c075cc..8a40eb0aa51f...
[truncated]

@llvmbot
Copy link
Member

llvmbot commented Aug 26, 2025

@llvm/pr-subscribers-mlir-core

Author: Bryan Tan (Technius)

Changes

This PR includes fixes for two build issues related to MLIR_LINK_MLIR_DYLIB:

  • When MLIR_LINK_MLIR_DYLIB is on but LLVM_BUILD_LLVM_DYLIB is off, the MLIR shared library target is not actually added/built, causing CMake dependency propagation issues and linker errors.
  • When a large number of parallel jobs is used with MLIR_LINK_MLIR_DYLIB enabled, some targets like mlir-opt fail to compile because they depend on a header that requires a tablegenned header file, but the corresponding IncGen targets are not dependencies of the mlir-headers or mlir-generic-headers targets.

See the commit messages for more information.


Patch is 78.22 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/155474.diff

86 Files Affected:

  • (modified) mlir/CMakeLists.txt (+14-2)
  • (modified) mlir/cmake/modules/AddMLIR.cmake (+7-2)
  • (modified) mlir/include/mlir/Conversion/CMakeLists.txt (+1)
  • (modified) mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt (+2-2)
  • (modified) mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Affine/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt (+4-4)
  • (modified) mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Async/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt (+2-4)
  • (modified) mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/DLTI/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Func/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/GPU/IR/CMakeLists.txt (+6-6)
  • (modified) mlir/include/mlir/Dialect/GPU/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/GPU/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/CMakeLists.txt (+12-14)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Linalg/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Linalg/IR/CMakeLists.txt (+5-10)
  • (modified) mlir/include/mlir/Dialect/Linalg/TransformOps/CMakeLists.txt (+3-3)
  • (modified) mlir/include/mlir/Dialect/MLProgram/IR/CMakeLists.txt (+2-4)
  • (modified) mlir/include/mlir/Dialect/MLProgram/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/MPI/IR/CMakeLists.txt (+3-3)
  • (modified) mlir/include/mlir/Dialect/Math/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/MemRef/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/MemRef/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/NVGPU/IR/CMakeLists.txt (+4-4)
  • (modified) mlir/include/mlir/Dialect/NVGPU/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/NVGPU/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/OpenACC/CMakeLists.txt (+4-7)
  • (modified) mlir/include/mlir/Dialect/OpenACC/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/OpenMP/CMakeLists.txt (+2-2)
  • (modified) mlir/include/mlir/Dialect/Ptr/IR/CMakeLists.txt (+3-3)
  • (modified) mlir/include/mlir/Dialect/Quant/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Quant/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/SCF/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/SCF/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/SMT/IR/CMakeLists.txt (+2-4)
  • (modified) mlir/include/mlir/Dialect/SPIRV/IR/CMakeLists.txt (+6-12)
  • (modified) mlir/include/mlir/Dialect/SPIRV/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Shape/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Shard/IR/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Shard/Interfaces/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Shard/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/SparseTensor/IR/CMakeLists.txt (+3-4)
  • (modified) mlir/include/mlir/Dialect/SparseTensor/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/SparseTensor/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Tensor/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Tensor/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Tosa/IR/CMakeLists.txt (+4-4)
  • (modified) mlir/include/mlir/Dialect/Tosa/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Transform/DebugExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/IR/CMakeLists.txt (+4-8)
  • (modified) mlir/include/mlir/Dialect/Transform/IRDLExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/Interfaces/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Transform/LoopExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/PDLExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/TuneExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/UB/IR/CMakeLists.txt (+2-2)
  • (modified) mlir/include/mlir/Dialect/Utils/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Vector/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Vector/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/WasmSSA/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/XeGPU/IR/CMakeLists.txt (+3-6)
  • (modified) mlir/include/mlir/Dialect/XeGPU/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/IR/CMakeLists.txt (+10)
  • (modified) mlir/include/mlir/Reducer/CMakeLists.txt (+1)
  • (modified) mlir/include/mlir/Target/LLVMIR/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/tools/mlir-shlib/CMakeLists.txt (+2-1)
diff --git a/mlir/CMakeLists.txt b/mlir/CMakeLists.txt
index f58a4c6f506ec..371740292323a 100644
--- a/mlir/CMakeLists.txt
+++ b/mlir/CMakeLists.txt
@@ -172,8 +172,11 @@ set(MLIR_INSTALL_AGGREGATE_OBJECTS 1 CACHE BOOL
 
 set(MLIR_BUILD_MLIR_C_DYLIB 0 CACHE BOOL "Builds libMLIR-C shared library.")
 
-set(MLIR_LINK_MLIR_DYLIB ${LLVM_LINK_LLVM_DYLIB} CACHE BOOL
-    "Link tools against libMLIR.so")
+set(MLIR_BUILD_MLIR_DYLIB 0 CACHE BOOL "Builds the libMLIR shared library")
+set(MLIR_LINK_MLIR_DYLIB ${LLVM_LINK_LLVM_DYLIB} CACHE BOOL "Link tools against libMLIR.so")
+if (MLIR_LINK_MLIR_DYLIB)
+  set(MLIR_BUILD_MLIR_DYLIB 1)
+endif()
 
 configure_file(
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Config/mlir-config.h.cmake
@@ -235,6 +238,15 @@ set(MLIR_PDLL_TABLEGEN_TARGET "${MLIR_PDLL_TABLEGEN_TARGET}" CACHE INTERNAL "")
 set(MLIR_SRC_SHARDER_TABLEGEN_EXE "${MLIR_SRC_SHARDER_TABLEGEN_EXE}" CACHE INTERNAL "")
 set(MLIR_SRC_SHARDER_TABLEGEN_TARGET "${MLIR_SRC_SHARDER_TABLEGEN_TARGET}" CACHE INTERNAL "")
 
+# Add MLIR dylib target here, as calls to mlir_target_link_libraries (used by
+# individual libs below) assume that such a target may exist,
+# but we cannot define the actual dylib until after all individual libs
+# are defined.
+if (MLIR_LINK_MLIR_DYLIB)
+  add_library(MLIRDylib INTERFACE)
+  add_mlir_library_install(MLIRDylib)
+endif()
+
 add_subdirectory(include/mlir)
 add_subdirectory(lib)
 # C API needs all dialects for registration, but should be built before tests.
diff --git a/mlir/cmake/modules/AddMLIR.cmake b/mlir/cmake/modules/AddMLIR.cmake
index 38839679ef8b1..170af1878a321 100644
--- a/mlir/cmake/modules/AddMLIR.cmake
+++ b/mlir/cmake/modules/AddMLIR.cmake
@@ -203,6 +203,11 @@ function(add_mlir_interface interface)
   add_dependencies(mlir-generic-headers MLIR${interface}IncGen)
 endfunction()
 
+# Add a tablegen target that generates headers in the include directory
+macro(add_mlir_tablegen_target target)
+  add_public_tablegen_target(${target})
+  add_dependencies(mlir-headers ${target})
+endmacro()
 
 # Generate Documentation
 function(add_mlir_doc doc_filename output_file output_directory command)
@@ -354,7 +359,7 @@ function(add_mlir_library name)
     # Yes, because the target "obj.${name}" is referenced.
     set(NEEDS_OBJECT_LIB ON)
   endif ()
-  if(LLVM_BUILD_LLVM_DYLIB AND NOT ARG_EXCLUDE_FROM_LIBMLIR AND NOT XCODE)
+  if(MLIR_BUILD_MLIR_DYLIB AND NOT ARG_EXCLUDE_FROM_LIBMLIR AND NOT XCODE)
     # Yes, because in addition to the shared library, the object files are
     # needed for linking into libMLIR.so (see mlir/tools/mlir-shlib/CMakeLists.txt).
     # For XCode, -force_load is used instead.
@@ -745,7 +750,7 @@ function(mlir_target_link_libraries target type)
   endif()
 
   if (MLIR_LINK_MLIR_DYLIB)
-    target_link_libraries(${target} ${type} MLIR)
+    target_link_libraries(${target} ${type} MLIRDylib)
   else()
     target_link_libraries(${target} ${type} ${ARGN})
   endif()
diff --git a/mlir/include/mlir/Conversion/CMakeLists.txt b/mlir/include/mlir/Conversion/CMakeLists.txt
index 9f76ab659215e..0a19b88e29dcb 100644
--- a/mlir/include/mlir/Conversion/CMakeLists.txt
+++ b/mlir/include/mlir/Conversion/CMakeLists.txt
@@ -4,6 +4,7 @@ mlir_tablegen(Passes.h.inc -gen-pass-decls -name Conversion)
 mlir_tablegen(Passes.capi.h.inc -gen-pass-capi-header --prefix Conversion)
 mlir_tablegen(Passes.capi.cpp.inc -gen-pass-capi-impl --prefix Conversion)
 add_public_tablegen_target(MLIRConversionPassIncGen)
+add_dependencies(mlir-generic-headers MLIRConversionPassIncGen)
 
 add_mlir_doc(Passes ConversionPasses ./ -gen-pass-doc)
 
diff --git a/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt
index ed074c205a551..e19e72e8e6033 100644
--- a/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt
@@ -4,9 +4,9 @@ add_mlir_doc(AMDGPU AMDGPU Dialects/ -gen-dialect-doc)
 set(LLVM_TARGET_DEFINITIONS AMDGPU.td)
 mlir_tablegen(AMDGPUEnums.h.inc -gen-enum-decls)
 mlir_tablegen(AMDGPUEnums.cpp.inc -gen-enum-defs)
-add_public_tablegen_target(MLIRAMDGPUEnumsGen)
+add_mlir_tablegen_target(MLIRAMDGPUEnumsGen)
 
 set(LLVM_TARGET_DEFINITIONS AMDGPU.td)
 mlir_tablegen(AMDGPUAttributes.h.inc -gen-attrdef-decls -attrdefs-dialect=amdgpu)
 mlir_tablegen(AMDGPUAttributes.cpp.inc -gen-attrdef-defs -attrdefs-dialect=amdgpu)
-add_public_tablegen_target(MLIRAMDGPUAttributesIncGen)
+add_mlir_tablegen_target(MLIRAMDGPUAttributesIncGen)
diff --git a/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt
index 8880989f4fed4..4e3b2f2084b74 100644
--- a/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt
@@ -1,6 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name AMDGPU)
-add_public_tablegen_target(MLIRAMDGPUTransformsIncGen)
-add_dependencies(mlir-headers MLIRAMDGPUTransformsIncGen)
+add_mlir_tablegen_target(MLIRAMDGPUTransformsIncGen)
 
 add_mlir_doc(Passes AMDGPUPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Affine/CMakeLists.txt b/mlir/include/mlir/Dialect/Affine/CMakeLists.txt
index fe1b372f6e03d..2327f4ad65ef9 100644
--- a/mlir/include/mlir/Dialect/Affine/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Affine/CMakeLists.txt
@@ -3,6 +3,6 @@ add_subdirectory(TransformOps)
 
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Affine)
-add_public_tablegen_target(MLIRAffinePassIncGen)
+add_mlir_tablegen_target(MLIRAffinePassIncGen)
 
 add_mlir_doc(Passes AffinePasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt
index c743f5c0766ba..466a4b74dbb5d 100644
--- a/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS AffineTransformOps.td)
 mlir_tablegen(AffineTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(AffineTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRAffineTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRAffineTransformOpsIncGen)
 
 add_mlir_doc(AffineTransformOps AffineLoopTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt
index 3f39e403adf12..dcadcd9cb39b3 100644
--- a/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt
@@ -1,5 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Arith)
-add_public_tablegen_target(MLIRArithTransformsIncGen)
+add_mlir_tablegen_target(MLIRArithTransformsIncGen)
 
 add_mlir_doc(Passes ArithPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt
index 3de3ec3f3a0e8..07840a9a771e0 100644
--- a/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt
@@ -3,6 +3,6 @@ add_mlir_doc(ArmNeon ArmNeon Dialects/ -gen-dialect-doc -dialect=arm_neon)
 
 set(LLVM_TARGET_DEFINITIONS ArmNeon.td)
 mlir_tablegen(ArmNeonConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmNeonConversionsIncGen)
+add_mlir_tablegen_target(MLIRArmNeonConversionsIncGen)
 
 add_subdirectory(TransformOps)
diff --git a/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt
index b8bc72a2bb734..8e55de7980147 100644
--- a/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS ArmNeonVectorTransformOps.td)
 mlir_tablegen(ArmNeonVectorTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(ArmNeonVectorTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRArmNeonVectorTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRArmNeonVectorTransformOpsIncGen)
 
 add_mlir_doc(ArmNeonVectorTransformOps ArmNeonVectorTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt
index 9801d8b099e3f..1e5c37a204175 100644
--- a/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt
@@ -8,25 +8,25 @@ mlir_tablegen(ArmSMEEnums.h.inc -gen-enum-decls)
 mlir_tablegen(ArmSMEEnums.cpp.inc -gen-enum-defs)
 mlir_tablegen(ArmSMEAttrDefs.h.inc -gen-attrdef-decls -attrdefs-dialect=arm_sme)
 mlir_tablegen(ArmSMEAttrDefs.cpp.inc -gen-attrdef-defs -attrdefs-dialect=arm_sme)
-add_public_tablegen_target(MLIRArmSMEOpsIncGen)
+add_mlir_tablegen_target(MLIRArmSMEOpsIncGen)
 
 # Generate LLVM IR Conversions
 set(LLVM_TARGET_DEFINITIONS ArmSMEOps.td)
 mlir_tablegen(ArmSMEOpsConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmSMEConversionsIncGen)
+add_mlir_tablegen_target(MLIRArmSMEConversionsIncGen)
 
 # Generate op interface declarations and definitions
 set(LLVM_TARGET_DEFINITIONS ArmSMEOps.td)
 mlir_tablegen(ArmSMEOpInterfaces.h.inc -gen-op-interface-decls)
 mlir_tablegen(ArmSMEOpInterfaces.cpp.inc -gen-op-interface-defs)
-add_public_tablegen_target(MLIRArmSMEOpInterfaces)
+add_mlir_tablegen_target(MLIRArmSMEOpInterfaces)
 
 # Generate declarations and definitions of ArmSME intrinsic Ops
 set(LLVM_TARGET_DEFINITIONS ArmSMEIntrinsicOps.td)
 mlir_tablegen(ArmSMEIntrinsicOps.h.inc -gen-op-decls)
 mlir_tablegen(ArmSMEIntrinsicOps.cpp.inc -gen-op-defs)
 mlir_tablegen(ArmSMEIntrinsicConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmSMEIntrinsicOpsIncGen)
+add_mlir_tablegen_target(MLIRArmSMEIntrinsicOpsIncGen)
 
 # Generate the docs
 add_mlir_doc(ArmSMEOps ArmSMEOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt
index 509f3fc2519cb..90e69c202b532 100644
--- a/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt
@@ -2,7 +2,6 @@ set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name ArmSME)
 mlir_tablegen(PassesEnums.h.inc -gen-enum-decls)
 mlir_tablegen(PassesEnums.cpp.inc -gen-enum-defs)
-add_public_tablegen_target(MLIRArmSMETransformsIncGen)
-add_dependencies(mlir-headers MLIRArmSMETransformsIncGen)
+add_mlir_tablegen_target(MLIRArmSMETransformsIncGen)
 
 add_mlir_doc(Passes ArmSMEPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
index 06595b7088a1e..f8d06951e7270 100644
--- a/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
@@ -3,4 +3,4 @@ add_mlir_doc(ArmSVE ArmSVE Dialects/ -gen-dialect-doc -dialect=arm_sve)
 
 set(LLVM_TARGET_DEFINITIONS ArmSVE.td)
 mlir_tablegen(ArmSVEConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmSVEConversionsIncGen)
+add_mlir_tablegen_target(MLIRArmSVEConversionsIncGen)
diff --git a/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt
index ce8d8fea7f188..e279f37b2019b 100644
--- a/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS ArmSVEVectorTransformOps.td)
 mlir_tablegen(ArmSVEVectorTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(ArmSVEVectorTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRArmSVEVectorTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRArmSVEVectorTransformOpsIncGen)
 
 add_mlir_doc(ArmSVEVectorTransformOps ArmSVEVectorTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt
index 7226642daf861..a2b8060a6561f 100644
--- a/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt
@@ -1,5 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name ArmSVE)
-add_public_tablegen_target(MLIRArmSVEPassIncGen)
+add_mlir_tablegen_target(MLIRArmSVEPassIncGen)
 
 add_mlir_doc(Passes ArmSVEPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Async/CMakeLists.txt b/mlir/include/mlir/Dialect/Async/CMakeLists.txt
index cabd5d3087cf3..f2642d6462831 100644
--- a/mlir/include/mlir/Dialect/Async/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Async/CMakeLists.txt
@@ -4,6 +4,6 @@ set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Async)
 mlir_tablegen(Passes.capi.h.inc -gen-pass-capi-header --prefix Async)
 mlir_tablegen(Passes.capi.cpp.inc -gen-pass-capi-impl --prefix Async)
-add_public_tablegen_target(MLIRAsyncPassIncGen)
+add_mlir_tablegen_target(MLIRAsyncPassIncGen)
 
 add_mlir_doc(Passes AsyncPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt
index 3ead52148c208..8f470dffcd607 100644
--- a/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt
@@ -8,11 +8,9 @@ add_mlir_interface(BufferViewFlowOpInterface)
 set(LLVM_TARGET_DEFINITIONS BufferizationEnums.td)
 mlir_tablegen(BufferizationEnums.h.inc -gen-enum-decls)
 mlir_tablegen(BufferizationEnums.cpp.inc -gen-enum-defs)
-add_public_tablegen_target(MLIRBufferizationEnumsIncGen)
-add_dependencies(mlir-headers MLIRBufferizationEnumsIncGen)
+add_mlir_tablegen_target(MLIRBufferizationEnumsIncGen)
 
 set(LLVM_TARGET_DEFINITIONS BufferizationTypeInterfaces.td)
 mlir_tablegen(BufferizationTypeInterfaces.h.inc -gen-type-interface-decls)
 mlir_tablegen(BufferizationTypeInterfaces.cpp.inc -gen-type-interface-defs)
-add_public_tablegen_target(MLIRBufferizationTypeInterfacesIncGen)
-add_dependencies(mlir-headers MLIRBufferizationTypeInterfacesIncGen)
+add_mlir_tablegen_target(MLIRBufferizationTypeInterfacesIncGen)
diff --git a/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt
index 95276e3e5e0d0..684c4295cd4f3 100644
--- a/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS BufferizationTransformOps.td)
 mlir_tablegen(BufferizationTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(BufferizationTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRBufferizationTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRBufferizationTransformOpsIncGen)
 
 add_mlir_doc(BufferizationTransformOps BufferizationTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt
index dcae4b8f26b89..bd6ea9a1cb29d 100644
--- a/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt
@@ -1,6 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Bufferization)
-add_public_tablegen_target(MLIRBufferizationPassIncGen)
-add_dependencies(mlir-headers MLIRBufferizationPassIncGen)
+add_mlir_tablegen_target(MLIRBufferizationPassIncGen)
 
 add_mlir_doc(Passes BufferizationPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt
index 837664e25b3c2..6e47ddade9652 100644
--- a/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt
@@ -6,4 +6,4 @@ mlir_tablegen(ComplexEnums.h.inc -gen-enum-decls)
 mlir_tablegen(ComplexEnums.cpp.inc -gen-enum-defs)
 mlir_tablegen(ComplexAttributes.h.inc -gen-attrdef-decls)
 mlir_tablegen(ComplexAttributes.cpp.inc -gen-attrdef-defs)
-add_public_tablegen_target(MLIRComplexAttributesIncGen)
+add_mlir_tablegen_target(MLIRComplexAttributesIncGen)
diff --git a/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt b/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt
index 4f8382e8e6e6b..74b1c541edaeb 100644
--- a/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt
@@ -6,5 +6,4 @@ add_mlir_doc(DLTIAttrs DLTIDialect Dialects/ -gen-dialect-doc)
 set(LLVM_TARGET_DEFINITIONS DLTIAttrs.td)
 mlir_tablegen(DLTIAttrs.h.inc -gen-attrdef-decls -attrdefs-dialect=dlti)
 mlir_tablegen(DLTIAttrs.cpp.inc -gen-attrdef-defs -attrdefs-dialect=dlti)
-add_public_tablegen_target(MLIRDLTIAttrsIncGen)
-add_dependencies(mlir-headers MLIRDLTIAttrsIncGen)
+add_mlir_tablegen_target(MLIRDLTIAttrsIncGen)
diff --git a/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt
index 1188d1a9b24d6..57faeca06794c 100644
--- a/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS DLTITransformOps.td)
 mlir_tablegen(DLTITransformOps.h.inc -gen-op-decls)
 mlir_tablegen(DLTITransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRDLTITransformOpsIncGen)
+add_mlir_tablegen_target(MLIRDLTITransformOpsIncGen)
 
 add_mlir_doc(DLTITransformOps DLTITransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt
index 299cee76cb1b4..c417a4ed3599a 100644
--- a/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt
@@ -12,4 +12,4 @@ mlir_tablegen(EmitCEnums.h.inc -gen-enum-decls)
 mlir_tablegen(EmitCEnums.cpp.inc -gen-enum-defs)
 mlir_tablegen(EmitCAttributes.h.inc -gen-attrdef-decls)
 mlir_tablegen(EmitCAttributes.cpp.inc -gen-attrdef-defs)
-add_public_tablegen_target(MLIREmitCAttributesIncGen)
+add_mlir_tablegen_target(MLIREmitCAttributesIncGen)
diff --git a/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt
index 0b507d75fa07a..d112be898c355 100644
--- a/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt
@@ -1,5 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name EmitC)
-add_public_tablegen_target(MLIREmitCTransformsIncGen)
+add_mlir_tablegen_target(MLIREmitCTransformsIncGen)
 
 add_mlir_doc(Passes EmitCPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt
index 08a6123dd2006..b19806f6007aa 100644
--- a/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt
@@ -3,6 +3,6 @@ mlir_tablegen(FuncOps.h.inc -gen-op-decls)
 mlir_tablegen(FuncOps.cpp.inc -gen-op-defs)
 mlir_tablegen(FuncOpsDialect.h.inc -gen-dialect-decls)
 mlir_tablegen(FuncOpsDialect.cpp.inc -gen-dialect-defs)
-add_public_tablegen_target(MLIRFuncOpsIncGen)
+add_mlir_tablegen_target(MLIRFuncOpsIncGen)
 
 add_mlir_doc(FuncOps FuncOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt
index 7ac6504f3dc2c..6098acbed2151 100644
--- a/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS FuncTransformOps.td)
 mlir_tablegen(FuncTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(FuncTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRFuncTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRFuncTransformOpsIncGen)
 
 add_mlir_doc(FuncTransformOps FuncTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Func/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/Func/Transforms/CMakeLists.txt
index 33c72e3c075cc..8a40eb0aa51f...
[truncated]

@llvmbot
Copy link
Member

llvmbot commented Aug 26, 2025

@llvm/pr-subscribers-mlir-affine

Author: Bryan Tan (Technius)

Changes

This PR includes fixes for two build issues related to MLIR_LINK_MLIR_DYLIB:

  • When MLIR_LINK_MLIR_DYLIB is on but LLVM_BUILD_LLVM_DYLIB is off, the MLIR shared library target is not actually added/built, causing CMake dependency propagation issues and linker errors.
  • When a large number of parallel jobs is used with MLIR_LINK_MLIR_DYLIB enabled, some targets like mlir-opt fail to compile because they depend on a header that requires a tablegenned header file, but the corresponding IncGen targets are not dependencies of the mlir-headers or mlir-generic-headers targets.

See the commit messages for more information.


Patch is 78.22 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/155474.diff

86 Files Affected:

  • (modified) mlir/CMakeLists.txt (+14-2)
  • (modified) mlir/cmake/modules/AddMLIR.cmake (+7-2)
  • (modified) mlir/include/mlir/Conversion/CMakeLists.txt (+1)
  • (modified) mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt (+2-2)
  • (modified) mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Affine/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt (+4-4)
  • (modified) mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Async/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt (+2-4)
  • (modified) mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/DLTI/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Func/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/GPU/IR/CMakeLists.txt (+6-6)
  • (modified) mlir/include/mlir/Dialect/GPU/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/GPU/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/CMakeLists.txt (+12-14)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Linalg/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Linalg/IR/CMakeLists.txt (+5-10)
  • (modified) mlir/include/mlir/Dialect/Linalg/TransformOps/CMakeLists.txt (+3-3)
  • (modified) mlir/include/mlir/Dialect/MLProgram/IR/CMakeLists.txt (+2-4)
  • (modified) mlir/include/mlir/Dialect/MLProgram/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/MPI/IR/CMakeLists.txt (+3-3)
  • (modified) mlir/include/mlir/Dialect/Math/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/MemRef/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/MemRef/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/NVGPU/IR/CMakeLists.txt (+4-4)
  • (modified) mlir/include/mlir/Dialect/NVGPU/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/NVGPU/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/OpenACC/CMakeLists.txt (+4-7)
  • (modified) mlir/include/mlir/Dialect/OpenACC/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/OpenMP/CMakeLists.txt (+2-2)
  • (modified) mlir/include/mlir/Dialect/Ptr/IR/CMakeLists.txt (+3-3)
  • (modified) mlir/include/mlir/Dialect/Quant/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Quant/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/SCF/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/SCF/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/SMT/IR/CMakeLists.txt (+2-4)
  • (modified) mlir/include/mlir/Dialect/SPIRV/IR/CMakeLists.txt (+6-12)
  • (modified) mlir/include/mlir/Dialect/SPIRV/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Shape/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Shard/IR/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Shard/Interfaces/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Shard/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/SparseTensor/IR/CMakeLists.txt (+3-4)
  • (modified) mlir/include/mlir/Dialect/SparseTensor/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/SparseTensor/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Tensor/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Tensor/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Tosa/IR/CMakeLists.txt (+4-4)
  • (modified) mlir/include/mlir/Dialect/Tosa/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Transform/DebugExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/IR/CMakeLists.txt (+4-8)
  • (modified) mlir/include/mlir/Dialect/Transform/IRDLExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/Interfaces/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Transform/LoopExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/PDLExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/TuneExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/UB/IR/CMakeLists.txt (+2-2)
  • (modified) mlir/include/mlir/Dialect/Utils/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Vector/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Vector/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/WasmSSA/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/XeGPU/IR/CMakeLists.txt (+3-6)
  • (modified) mlir/include/mlir/Dialect/XeGPU/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/IR/CMakeLists.txt (+10)
  • (modified) mlir/include/mlir/Reducer/CMakeLists.txt (+1)
  • (modified) mlir/include/mlir/Target/LLVMIR/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/tools/mlir-shlib/CMakeLists.txt (+2-1)
diff --git a/mlir/CMakeLists.txt b/mlir/CMakeLists.txt
index f58a4c6f506ec..371740292323a 100644
--- a/mlir/CMakeLists.txt
+++ b/mlir/CMakeLists.txt
@@ -172,8 +172,11 @@ set(MLIR_INSTALL_AGGREGATE_OBJECTS 1 CACHE BOOL
 
 set(MLIR_BUILD_MLIR_C_DYLIB 0 CACHE BOOL "Builds libMLIR-C shared library.")
 
-set(MLIR_LINK_MLIR_DYLIB ${LLVM_LINK_LLVM_DYLIB} CACHE BOOL
-    "Link tools against libMLIR.so")
+set(MLIR_BUILD_MLIR_DYLIB 0 CACHE BOOL "Builds the libMLIR shared library")
+set(MLIR_LINK_MLIR_DYLIB ${LLVM_LINK_LLVM_DYLIB} CACHE BOOL "Link tools against libMLIR.so")
+if (MLIR_LINK_MLIR_DYLIB)
+  set(MLIR_BUILD_MLIR_DYLIB 1)
+endif()
 
 configure_file(
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Config/mlir-config.h.cmake
@@ -235,6 +238,15 @@ set(MLIR_PDLL_TABLEGEN_TARGET "${MLIR_PDLL_TABLEGEN_TARGET}" CACHE INTERNAL "")
 set(MLIR_SRC_SHARDER_TABLEGEN_EXE "${MLIR_SRC_SHARDER_TABLEGEN_EXE}" CACHE INTERNAL "")
 set(MLIR_SRC_SHARDER_TABLEGEN_TARGET "${MLIR_SRC_SHARDER_TABLEGEN_TARGET}" CACHE INTERNAL "")
 
+# Add MLIR dylib target here, as calls to mlir_target_link_libraries (used by
+# individual libs below) assume that such a target may exist,
+# but we cannot define the actual dylib until after all individual libs
+# are defined.
+if (MLIR_LINK_MLIR_DYLIB)
+  add_library(MLIRDylib INTERFACE)
+  add_mlir_library_install(MLIRDylib)
+endif()
+
 add_subdirectory(include/mlir)
 add_subdirectory(lib)
 # C API needs all dialects for registration, but should be built before tests.
diff --git a/mlir/cmake/modules/AddMLIR.cmake b/mlir/cmake/modules/AddMLIR.cmake
index 38839679ef8b1..170af1878a321 100644
--- a/mlir/cmake/modules/AddMLIR.cmake
+++ b/mlir/cmake/modules/AddMLIR.cmake
@@ -203,6 +203,11 @@ function(add_mlir_interface interface)
   add_dependencies(mlir-generic-headers MLIR${interface}IncGen)
 endfunction()
 
+# Add a tablegen target that generates headers in the include directory
+macro(add_mlir_tablegen_target target)
+  add_public_tablegen_target(${target})
+  add_dependencies(mlir-headers ${target})
+endmacro()
 
 # Generate Documentation
 function(add_mlir_doc doc_filename output_file output_directory command)
@@ -354,7 +359,7 @@ function(add_mlir_library name)
     # Yes, because the target "obj.${name}" is referenced.
     set(NEEDS_OBJECT_LIB ON)
   endif ()
-  if(LLVM_BUILD_LLVM_DYLIB AND NOT ARG_EXCLUDE_FROM_LIBMLIR AND NOT XCODE)
+  if(MLIR_BUILD_MLIR_DYLIB AND NOT ARG_EXCLUDE_FROM_LIBMLIR AND NOT XCODE)
     # Yes, because in addition to the shared library, the object files are
     # needed for linking into libMLIR.so (see mlir/tools/mlir-shlib/CMakeLists.txt).
     # For XCode, -force_load is used instead.
@@ -745,7 +750,7 @@ function(mlir_target_link_libraries target type)
   endif()
 
   if (MLIR_LINK_MLIR_DYLIB)
-    target_link_libraries(${target} ${type} MLIR)
+    target_link_libraries(${target} ${type} MLIRDylib)
   else()
     target_link_libraries(${target} ${type} ${ARGN})
   endif()
diff --git a/mlir/include/mlir/Conversion/CMakeLists.txt b/mlir/include/mlir/Conversion/CMakeLists.txt
index 9f76ab659215e..0a19b88e29dcb 100644
--- a/mlir/include/mlir/Conversion/CMakeLists.txt
+++ b/mlir/include/mlir/Conversion/CMakeLists.txt
@@ -4,6 +4,7 @@ mlir_tablegen(Passes.h.inc -gen-pass-decls -name Conversion)
 mlir_tablegen(Passes.capi.h.inc -gen-pass-capi-header --prefix Conversion)
 mlir_tablegen(Passes.capi.cpp.inc -gen-pass-capi-impl --prefix Conversion)
 add_public_tablegen_target(MLIRConversionPassIncGen)
+add_dependencies(mlir-generic-headers MLIRConversionPassIncGen)
 
 add_mlir_doc(Passes ConversionPasses ./ -gen-pass-doc)
 
diff --git a/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt
index ed074c205a551..e19e72e8e6033 100644
--- a/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt
@@ -4,9 +4,9 @@ add_mlir_doc(AMDGPU AMDGPU Dialects/ -gen-dialect-doc)
 set(LLVM_TARGET_DEFINITIONS AMDGPU.td)
 mlir_tablegen(AMDGPUEnums.h.inc -gen-enum-decls)
 mlir_tablegen(AMDGPUEnums.cpp.inc -gen-enum-defs)
-add_public_tablegen_target(MLIRAMDGPUEnumsGen)
+add_mlir_tablegen_target(MLIRAMDGPUEnumsGen)
 
 set(LLVM_TARGET_DEFINITIONS AMDGPU.td)
 mlir_tablegen(AMDGPUAttributes.h.inc -gen-attrdef-decls -attrdefs-dialect=amdgpu)
 mlir_tablegen(AMDGPUAttributes.cpp.inc -gen-attrdef-defs -attrdefs-dialect=amdgpu)
-add_public_tablegen_target(MLIRAMDGPUAttributesIncGen)
+add_mlir_tablegen_target(MLIRAMDGPUAttributesIncGen)
diff --git a/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt
index 8880989f4fed4..4e3b2f2084b74 100644
--- a/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt
@@ -1,6 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name AMDGPU)
-add_public_tablegen_target(MLIRAMDGPUTransformsIncGen)
-add_dependencies(mlir-headers MLIRAMDGPUTransformsIncGen)
+add_mlir_tablegen_target(MLIRAMDGPUTransformsIncGen)
 
 add_mlir_doc(Passes AMDGPUPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Affine/CMakeLists.txt b/mlir/include/mlir/Dialect/Affine/CMakeLists.txt
index fe1b372f6e03d..2327f4ad65ef9 100644
--- a/mlir/include/mlir/Dialect/Affine/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Affine/CMakeLists.txt
@@ -3,6 +3,6 @@ add_subdirectory(TransformOps)
 
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Affine)
-add_public_tablegen_target(MLIRAffinePassIncGen)
+add_mlir_tablegen_target(MLIRAffinePassIncGen)
 
 add_mlir_doc(Passes AffinePasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt
index c743f5c0766ba..466a4b74dbb5d 100644
--- a/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS AffineTransformOps.td)
 mlir_tablegen(AffineTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(AffineTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRAffineTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRAffineTransformOpsIncGen)
 
 add_mlir_doc(AffineTransformOps AffineLoopTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt
index 3f39e403adf12..dcadcd9cb39b3 100644
--- a/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt
@@ -1,5 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Arith)
-add_public_tablegen_target(MLIRArithTransformsIncGen)
+add_mlir_tablegen_target(MLIRArithTransformsIncGen)
 
 add_mlir_doc(Passes ArithPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt
index 3de3ec3f3a0e8..07840a9a771e0 100644
--- a/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt
@@ -3,6 +3,6 @@ add_mlir_doc(ArmNeon ArmNeon Dialects/ -gen-dialect-doc -dialect=arm_neon)
 
 set(LLVM_TARGET_DEFINITIONS ArmNeon.td)
 mlir_tablegen(ArmNeonConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmNeonConversionsIncGen)
+add_mlir_tablegen_target(MLIRArmNeonConversionsIncGen)
 
 add_subdirectory(TransformOps)
diff --git a/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt
index b8bc72a2bb734..8e55de7980147 100644
--- a/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS ArmNeonVectorTransformOps.td)
 mlir_tablegen(ArmNeonVectorTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(ArmNeonVectorTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRArmNeonVectorTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRArmNeonVectorTransformOpsIncGen)
 
 add_mlir_doc(ArmNeonVectorTransformOps ArmNeonVectorTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt
index 9801d8b099e3f..1e5c37a204175 100644
--- a/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt
@@ -8,25 +8,25 @@ mlir_tablegen(ArmSMEEnums.h.inc -gen-enum-decls)
 mlir_tablegen(ArmSMEEnums.cpp.inc -gen-enum-defs)
 mlir_tablegen(ArmSMEAttrDefs.h.inc -gen-attrdef-decls -attrdefs-dialect=arm_sme)
 mlir_tablegen(ArmSMEAttrDefs.cpp.inc -gen-attrdef-defs -attrdefs-dialect=arm_sme)
-add_public_tablegen_target(MLIRArmSMEOpsIncGen)
+add_mlir_tablegen_target(MLIRArmSMEOpsIncGen)
 
 # Generate LLVM IR Conversions
 set(LLVM_TARGET_DEFINITIONS ArmSMEOps.td)
 mlir_tablegen(ArmSMEOpsConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmSMEConversionsIncGen)
+add_mlir_tablegen_target(MLIRArmSMEConversionsIncGen)
 
 # Generate op interface declarations and definitions
 set(LLVM_TARGET_DEFINITIONS ArmSMEOps.td)
 mlir_tablegen(ArmSMEOpInterfaces.h.inc -gen-op-interface-decls)
 mlir_tablegen(ArmSMEOpInterfaces.cpp.inc -gen-op-interface-defs)
-add_public_tablegen_target(MLIRArmSMEOpInterfaces)
+add_mlir_tablegen_target(MLIRArmSMEOpInterfaces)
 
 # Generate declarations and definitions of ArmSME intrinsic Ops
 set(LLVM_TARGET_DEFINITIONS ArmSMEIntrinsicOps.td)
 mlir_tablegen(ArmSMEIntrinsicOps.h.inc -gen-op-decls)
 mlir_tablegen(ArmSMEIntrinsicOps.cpp.inc -gen-op-defs)
 mlir_tablegen(ArmSMEIntrinsicConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmSMEIntrinsicOpsIncGen)
+add_mlir_tablegen_target(MLIRArmSMEIntrinsicOpsIncGen)
 
 # Generate the docs
 add_mlir_doc(ArmSMEOps ArmSMEOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt
index 509f3fc2519cb..90e69c202b532 100644
--- a/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt
@@ -2,7 +2,6 @@ set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name ArmSME)
 mlir_tablegen(PassesEnums.h.inc -gen-enum-decls)
 mlir_tablegen(PassesEnums.cpp.inc -gen-enum-defs)
-add_public_tablegen_target(MLIRArmSMETransformsIncGen)
-add_dependencies(mlir-headers MLIRArmSMETransformsIncGen)
+add_mlir_tablegen_target(MLIRArmSMETransformsIncGen)
 
 add_mlir_doc(Passes ArmSMEPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
index 06595b7088a1e..f8d06951e7270 100644
--- a/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
@@ -3,4 +3,4 @@ add_mlir_doc(ArmSVE ArmSVE Dialects/ -gen-dialect-doc -dialect=arm_sve)
 
 set(LLVM_TARGET_DEFINITIONS ArmSVE.td)
 mlir_tablegen(ArmSVEConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmSVEConversionsIncGen)
+add_mlir_tablegen_target(MLIRArmSVEConversionsIncGen)
diff --git a/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt
index ce8d8fea7f188..e279f37b2019b 100644
--- a/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS ArmSVEVectorTransformOps.td)
 mlir_tablegen(ArmSVEVectorTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(ArmSVEVectorTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRArmSVEVectorTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRArmSVEVectorTransformOpsIncGen)
 
 add_mlir_doc(ArmSVEVectorTransformOps ArmSVEVectorTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt
index 7226642daf861..a2b8060a6561f 100644
--- a/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt
@@ -1,5 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name ArmSVE)
-add_public_tablegen_target(MLIRArmSVEPassIncGen)
+add_mlir_tablegen_target(MLIRArmSVEPassIncGen)
 
 add_mlir_doc(Passes ArmSVEPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Async/CMakeLists.txt b/mlir/include/mlir/Dialect/Async/CMakeLists.txt
index cabd5d3087cf3..f2642d6462831 100644
--- a/mlir/include/mlir/Dialect/Async/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Async/CMakeLists.txt
@@ -4,6 +4,6 @@ set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Async)
 mlir_tablegen(Passes.capi.h.inc -gen-pass-capi-header --prefix Async)
 mlir_tablegen(Passes.capi.cpp.inc -gen-pass-capi-impl --prefix Async)
-add_public_tablegen_target(MLIRAsyncPassIncGen)
+add_mlir_tablegen_target(MLIRAsyncPassIncGen)
 
 add_mlir_doc(Passes AsyncPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt
index 3ead52148c208..8f470dffcd607 100644
--- a/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt
@@ -8,11 +8,9 @@ add_mlir_interface(BufferViewFlowOpInterface)
 set(LLVM_TARGET_DEFINITIONS BufferizationEnums.td)
 mlir_tablegen(BufferizationEnums.h.inc -gen-enum-decls)
 mlir_tablegen(BufferizationEnums.cpp.inc -gen-enum-defs)
-add_public_tablegen_target(MLIRBufferizationEnumsIncGen)
-add_dependencies(mlir-headers MLIRBufferizationEnumsIncGen)
+add_mlir_tablegen_target(MLIRBufferizationEnumsIncGen)
 
 set(LLVM_TARGET_DEFINITIONS BufferizationTypeInterfaces.td)
 mlir_tablegen(BufferizationTypeInterfaces.h.inc -gen-type-interface-decls)
 mlir_tablegen(BufferizationTypeInterfaces.cpp.inc -gen-type-interface-defs)
-add_public_tablegen_target(MLIRBufferizationTypeInterfacesIncGen)
-add_dependencies(mlir-headers MLIRBufferizationTypeInterfacesIncGen)
+add_mlir_tablegen_target(MLIRBufferizationTypeInterfacesIncGen)
diff --git a/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt
index 95276e3e5e0d0..684c4295cd4f3 100644
--- a/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS BufferizationTransformOps.td)
 mlir_tablegen(BufferizationTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(BufferizationTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRBufferizationTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRBufferizationTransformOpsIncGen)
 
 add_mlir_doc(BufferizationTransformOps BufferizationTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt
index dcae4b8f26b89..bd6ea9a1cb29d 100644
--- a/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt
@@ -1,6 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Bufferization)
-add_public_tablegen_target(MLIRBufferizationPassIncGen)
-add_dependencies(mlir-headers MLIRBufferizationPassIncGen)
+add_mlir_tablegen_target(MLIRBufferizationPassIncGen)
 
 add_mlir_doc(Passes BufferizationPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt
index 837664e25b3c2..6e47ddade9652 100644
--- a/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt
@@ -6,4 +6,4 @@ mlir_tablegen(ComplexEnums.h.inc -gen-enum-decls)
 mlir_tablegen(ComplexEnums.cpp.inc -gen-enum-defs)
 mlir_tablegen(ComplexAttributes.h.inc -gen-attrdef-decls)
 mlir_tablegen(ComplexAttributes.cpp.inc -gen-attrdef-defs)
-add_public_tablegen_target(MLIRComplexAttributesIncGen)
+add_mlir_tablegen_target(MLIRComplexAttributesIncGen)
diff --git a/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt b/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt
index 4f8382e8e6e6b..74b1c541edaeb 100644
--- a/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt
@@ -6,5 +6,4 @@ add_mlir_doc(DLTIAttrs DLTIDialect Dialects/ -gen-dialect-doc)
 set(LLVM_TARGET_DEFINITIONS DLTIAttrs.td)
 mlir_tablegen(DLTIAttrs.h.inc -gen-attrdef-decls -attrdefs-dialect=dlti)
 mlir_tablegen(DLTIAttrs.cpp.inc -gen-attrdef-defs -attrdefs-dialect=dlti)
-add_public_tablegen_target(MLIRDLTIAttrsIncGen)
-add_dependencies(mlir-headers MLIRDLTIAttrsIncGen)
+add_mlir_tablegen_target(MLIRDLTIAttrsIncGen)
diff --git a/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt
index 1188d1a9b24d6..57faeca06794c 100644
--- a/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS DLTITransformOps.td)
 mlir_tablegen(DLTITransformOps.h.inc -gen-op-decls)
 mlir_tablegen(DLTITransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRDLTITransformOpsIncGen)
+add_mlir_tablegen_target(MLIRDLTITransformOpsIncGen)
 
 add_mlir_doc(DLTITransformOps DLTITransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt
index 299cee76cb1b4..c417a4ed3599a 100644
--- a/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt
@@ -12,4 +12,4 @@ mlir_tablegen(EmitCEnums.h.inc -gen-enum-decls)
 mlir_tablegen(EmitCEnums.cpp.inc -gen-enum-defs)
 mlir_tablegen(EmitCAttributes.h.inc -gen-attrdef-decls)
 mlir_tablegen(EmitCAttributes.cpp.inc -gen-attrdef-defs)
-add_public_tablegen_target(MLIREmitCAttributesIncGen)
+add_mlir_tablegen_target(MLIREmitCAttributesIncGen)
diff --git a/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt
index 0b507d75fa07a..d112be898c355 100644
--- a/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt
@@ -1,5 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name EmitC)
-add_public_tablegen_target(MLIREmitCTransformsIncGen)
+add_mlir_tablegen_target(MLIREmitCTransformsIncGen)
 
 add_mlir_doc(Passes EmitCPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt
index 08a6123dd2006..b19806f6007aa 100644
--- a/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt
@@ -3,6 +3,6 @@ mlir_tablegen(FuncOps.h.inc -gen-op-decls)
 mlir_tablegen(FuncOps.cpp.inc -gen-op-defs)
 mlir_tablegen(FuncOpsDialect.h.inc -gen-dialect-decls)
 mlir_tablegen(FuncOpsDialect.cpp.inc -gen-dialect-defs)
-add_public_tablegen_target(MLIRFuncOpsIncGen)
+add_mlir_tablegen_target(MLIRFuncOpsIncGen)
 
 add_mlir_doc(FuncOps FuncOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt
index 7ac6504f3dc2c..6098acbed2151 100644
--- a/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS FuncTransformOps.td)
 mlir_tablegen(FuncTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(FuncTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRFuncTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRFuncTransformOpsIncGen)
 
 add_mlir_doc(FuncTransformOps FuncTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Func/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/Func/Transforms/CMakeLists.txt
index 33c72e3c075cc..8a40eb0aa51f...
[truncated]

@llvmbot
Copy link
Member

llvmbot commented Aug 26, 2025

@llvm/pr-subscribers-mlir-neon

Author: Bryan Tan (Technius)

Changes

This PR includes fixes for two build issues related to MLIR_LINK_MLIR_DYLIB:

  • When MLIR_LINK_MLIR_DYLIB is on but LLVM_BUILD_LLVM_DYLIB is off, the MLIR shared library target is not actually added/built, causing CMake dependency propagation issues and linker errors.
  • When a large number of parallel jobs is used with MLIR_LINK_MLIR_DYLIB enabled, some targets like mlir-opt fail to compile because they depend on a header that requires a tablegenned header file, but the corresponding IncGen targets are not dependencies of the mlir-headers or mlir-generic-headers targets.

See the commit messages for more information.


Patch is 78.22 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/155474.diff

86 Files Affected:

  • (modified) mlir/CMakeLists.txt (+14-2)
  • (modified) mlir/cmake/modules/AddMLIR.cmake (+7-2)
  • (modified) mlir/include/mlir/Conversion/CMakeLists.txt (+1)
  • (modified) mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt (+2-2)
  • (modified) mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Affine/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt (+4-4)
  • (modified) mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Async/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt (+2-4)
  • (modified) mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/DLTI/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Func/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/GPU/IR/CMakeLists.txt (+6-6)
  • (modified) mlir/include/mlir/Dialect/GPU/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/GPU/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/CMakeLists.txt (+12-14)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Linalg/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Linalg/IR/CMakeLists.txt (+5-10)
  • (modified) mlir/include/mlir/Dialect/Linalg/TransformOps/CMakeLists.txt (+3-3)
  • (modified) mlir/include/mlir/Dialect/MLProgram/IR/CMakeLists.txt (+2-4)
  • (modified) mlir/include/mlir/Dialect/MLProgram/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/MPI/IR/CMakeLists.txt (+3-3)
  • (modified) mlir/include/mlir/Dialect/Math/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/MemRef/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/MemRef/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/NVGPU/IR/CMakeLists.txt (+4-4)
  • (modified) mlir/include/mlir/Dialect/NVGPU/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/NVGPU/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/OpenACC/CMakeLists.txt (+4-7)
  • (modified) mlir/include/mlir/Dialect/OpenACC/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/OpenMP/CMakeLists.txt (+2-2)
  • (modified) mlir/include/mlir/Dialect/Ptr/IR/CMakeLists.txt (+3-3)
  • (modified) mlir/include/mlir/Dialect/Quant/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Quant/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/SCF/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/SCF/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/SMT/IR/CMakeLists.txt (+2-4)
  • (modified) mlir/include/mlir/Dialect/SPIRV/IR/CMakeLists.txt (+6-12)
  • (modified) mlir/include/mlir/Dialect/SPIRV/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Shape/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Shard/IR/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Shard/Interfaces/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Shard/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/SparseTensor/IR/CMakeLists.txt (+3-4)
  • (modified) mlir/include/mlir/Dialect/SparseTensor/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/SparseTensor/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Tensor/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Tensor/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Tosa/IR/CMakeLists.txt (+4-4)
  • (modified) mlir/include/mlir/Dialect/Tosa/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Transform/DebugExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/IR/CMakeLists.txt (+4-8)
  • (modified) mlir/include/mlir/Dialect/Transform/IRDLExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/Interfaces/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Transform/LoopExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/PDLExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/TuneExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/UB/IR/CMakeLists.txt (+2-2)
  • (modified) mlir/include/mlir/Dialect/Utils/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Vector/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Vector/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/WasmSSA/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/XeGPU/IR/CMakeLists.txt (+3-6)
  • (modified) mlir/include/mlir/Dialect/XeGPU/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/IR/CMakeLists.txt (+10)
  • (modified) mlir/include/mlir/Reducer/CMakeLists.txt (+1)
  • (modified) mlir/include/mlir/Target/LLVMIR/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/tools/mlir-shlib/CMakeLists.txt (+2-1)
diff --git a/mlir/CMakeLists.txt b/mlir/CMakeLists.txt
index f58a4c6f506ec..371740292323a 100644
--- a/mlir/CMakeLists.txt
+++ b/mlir/CMakeLists.txt
@@ -172,8 +172,11 @@ set(MLIR_INSTALL_AGGREGATE_OBJECTS 1 CACHE BOOL
 
 set(MLIR_BUILD_MLIR_C_DYLIB 0 CACHE BOOL "Builds libMLIR-C shared library.")
 
-set(MLIR_LINK_MLIR_DYLIB ${LLVM_LINK_LLVM_DYLIB} CACHE BOOL
-    "Link tools against libMLIR.so")
+set(MLIR_BUILD_MLIR_DYLIB 0 CACHE BOOL "Builds the libMLIR shared library")
+set(MLIR_LINK_MLIR_DYLIB ${LLVM_LINK_LLVM_DYLIB} CACHE BOOL "Link tools against libMLIR.so")
+if (MLIR_LINK_MLIR_DYLIB)
+  set(MLIR_BUILD_MLIR_DYLIB 1)
+endif()
 
 configure_file(
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Config/mlir-config.h.cmake
@@ -235,6 +238,15 @@ set(MLIR_PDLL_TABLEGEN_TARGET "${MLIR_PDLL_TABLEGEN_TARGET}" CACHE INTERNAL "")
 set(MLIR_SRC_SHARDER_TABLEGEN_EXE "${MLIR_SRC_SHARDER_TABLEGEN_EXE}" CACHE INTERNAL "")
 set(MLIR_SRC_SHARDER_TABLEGEN_TARGET "${MLIR_SRC_SHARDER_TABLEGEN_TARGET}" CACHE INTERNAL "")
 
+# Add MLIR dylib target here, as calls to mlir_target_link_libraries (used by
+# individual libs below) assume that such a target may exist,
+# but we cannot define the actual dylib until after all individual libs
+# are defined.
+if (MLIR_LINK_MLIR_DYLIB)
+  add_library(MLIRDylib INTERFACE)
+  add_mlir_library_install(MLIRDylib)
+endif()
+
 add_subdirectory(include/mlir)
 add_subdirectory(lib)
 # C API needs all dialects for registration, but should be built before tests.
diff --git a/mlir/cmake/modules/AddMLIR.cmake b/mlir/cmake/modules/AddMLIR.cmake
index 38839679ef8b1..170af1878a321 100644
--- a/mlir/cmake/modules/AddMLIR.cmake
+++ b/mlir/cmake/modules/AddMLIR.cmake
@@ -203,6 +203,11 @@ function(add_mlir_interface interface)
   add_dependencies(mlir-generic-headers MLIR${interface}IncGen)
 endfunction()
 
+# Add a tablegen target that generates headers in the include directory
+macro(add_mlir_tablegen_target target)
+  add_public_tablegen_target(${target})
+  add_dependencies(mlir-headers ${target})
+endmacro()
 
 # Generate Documentation
 function(add_mlir_doc doc_filename output_file output_directory command)
@@ -354,7 +359,7 @@ function(add_mlir_library name)
     # Yes, because the target "obj.${name}" is referenced.
     set(NEEDS_OBJECT_LIB ON)
   endif ()
-  if(LLVM_BUILD_LLVM_DYLIB AND NOT ARG_EXCLUDE_FROM_LIBMLIR AND NOT XCODE)
+  if(MLIR_BUILD_MLIR_DYLIB AND NOT ARG_EXCLUDE_FROM_LIBMLIR AND NOT XCODE)
     # Yes, because in addition to the shared library, the object files are
     # needed for linking into libMLIR.so (see mlir/tools/mlir-shlib/CMakeLists.txt).
     # For XCode, -force_load is used instead.
@@ -745,7 +750,7 @@ function(mlir_target_link_libraries target type)
   endif()
 
   if (MLIR_LINK_MLIR_DYLIB)
-    target_link_libraries(${target} ${type} MLIR)
+    target_link_libraries(${target} ${type} MLIRDylib)
   else()
     target_link_libraries(${target} ${type} ${ARGN})
   endif()
diff --git a/mlir/include/mlir/Conversion/CMakeLists.txt b/mlir/include/mlir/Conversion/CMakeLists.txt
index 9f76ab659215e..0a19b88e29dcb 100644
--- a/mlir/include/mlir/Conversion/CMakeLists.txt
+++ b/mlir/include/mlir/Conversion/CMakeLists.txt
@@ -4,6 +4,7 @@ mlir_tablegen(Passes.h.inc -gen-pass-decls -name Conversion)
 mlir_tablegen(Passes.capi.h.inc -gen-pass-capi-header --prefix Conversion)
 mlir_tablegen(Passes.capi.cpp.inc -gen-pass-capi-impl --prefix Conversion)
 add_public_tablegen_target(MLIRConversionPassIncGen)
+add_dependencies(mlir-generic-headers MLIRConversionPassIncGen)
 
 add_mlir_doc(Passes ConversionPasses ./ -gen-pass-doc)
 
diff --git a/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt
index ed074c205a551..e19e72e8e6033 100644
--- a/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt
@@ -4,9 +4,9 @@ add_mlir_doc(AMDGPU AMDGPU Dialects/ -gen-dialect-doc)
 set(LLVM_TARGET_DEFINITIONS AMDGPU.td)
 mlir_tablegen(AMDGPUEnums.h.inc -gen-enum-decls)
 mlir_tablegen(AMDGPUEnums.cpp.inc -gen-enum-defs)
-add_public_tablegen_target(MLIRAMDGPUEnumsGen)
+add_mlir_tablegen_target(MLIRAMDGPUEnumsGen)
 
 set(LLVM_TARGET_DEFINITIONS AMDGPU.td)
 mlir_tablegen(AMDGPUAttributes.h.inc -gen-attrdef-decls -attrdefs-dialect=amdgpu)
 mlir_tablegen(AMDGPUAttributes.cpp.inc -gen-attrdef-defs -attrdefs-dialect=amdgpu)
-add_public_tablegen_target(MLIRAMDGPUAttributesIncGen)
+add_mlir_tablegen_target(MLIRAMDGPUAttributesIncGen)
diff --git a/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt
index 8880989f4fed4..4e3b2f2084b74 100644
--- a/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt
@@ -1,6 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name AMDGPU)
-add_public_tablegen_target(MLIRAMDGPUTransformsIncGen)
-add_dependencies(mlir-headers MLIRAMDGPUTransformsIncGen)
+add_mlir_tablegen_target(MLIRAMDGPUTransformsIncGen)
 
 add_mlir_doc(Passes AMDGPUPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Affine/CMakeLists.txt b/mlir/include/mlir/Dialect/Affine/CMakeLists.txt
index fe1b372f6e03d..2327f4ad65ef9 100644
--- a/mlir/include/mlir/Dialect/Affine/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Affine/CMakeLists.txt
@@ -3,6 +3,6 @@ add_subdirectory(TransformOps)
 
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Affine)
-add_public_tablegen_target(MLIRAffinePassIncGen)
+add_mlir_tablegen_target(MLIRAffinePassIncGen)
 
 add_mlir_doc(Passes AffinePasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt
index c743f5c0766ba..466a4b74dbb5d 100644
--- a/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS AffineTransformOps.td)
 mlir_tablegen(AffineTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(AffineTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRAffineTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRAffineTransformOpsIncGen)
 
 add_mlir_doc(AffineTransformOps AffineLoopTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt
index 3f39e403adf12..dcadcd9cb39b3 100644
--- a/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt
@@ -1,5 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Arith)
-add_public_tablegen_target(MLIRArithTransformsIncGen)
+add_mlir_tablegen_target(MLIRArithTransformsIncGen)
 
 add_mlir_doc(Passes ArithPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt
index 3de3ec3f3a0e8..07840a9a771e0 100644
--- a/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt
@@ -3,6 +3,6 @@ add_mlir_doc(ArmNeon ArmNeon Dialects/ -gen-dialect-doc -dialect=arm_neon)
 
 set(LLVM_TARGET_DEFINITIONS ArmNeon.td)
 mlir_tablegen(ArmNeonConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmNeonConversionsIncGen)
+add_mlir_tablegen_target(MLIRArmNeonConversionsIncGen)
 
 add_subdirectory(TransformOps)
diff --git a/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt
index b8bc72a2bb734..8e55de7980147 100644
--- a/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS ArmNeonVectorTransformOps.td)
 mlir_tablegen(ArmNeonVectorTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(ArmNeonVectorTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRArmNeonVectorTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRArmNeonVectorTransformOpsIncGen)
 
 add_mlir_doc(ArmNeonVectorTransformOps ArmNeonVectorTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt
index 9801d8b099e3f..1e5c37a204175 100644
--- a/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt
@@ -8,25 +8,25 @@ mlir_tablegen(ArmSMEEnums.h.inc -gen-enum-decls)
 mlir_tablegen(ArmSMEEnums.cpp.inc -gen-enum-defs)
 mlir_tablegen(ArmSMEAttrDefs.h.inc -gen-attrdef-decls -attrdefs-dialect=arm_sme)
 mlir_tablegen(ArmSMEAttrDefs.cpp.inc -gen-attrdef-defs -attrdefs-dialect=arm_sme)
-add_public_tablegen_target(MLIRArmSMEOpsIncGen)
+add_mlir_tablegen_target(MLIRArmSMEOpsIncGen)
 
 # Generate LLVM IR Conversions
 set(LLVM_TARGET_DEFINITIONS ArmSMEOps.td)
 mlir_tablegen(ArmSMEOpsConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmSMEConversionsIncGen)
+add_mlir_tablegen_target(MLIRArmSMEConversionsIncGen)
 
 # Generate op interface declarations and definitions
 set(LLVM_TARGET_DEFINITIONS ArmSMEOps.td)
 mlir_tablegen(ArmSMEOpInterfaces.h.inc -gen-op-interface-decls)
 mlir_tablegen(ArmSMEOpInterfaces.cpp.inc -gen-op-interface-defs)
-add_public_tablegen_target(MLIRArmSMEOpInterfaces)
+add_mlir_tablegen_target(MLIRArmSMEOpInterfaces)
 
 # Generate declarations and definitions of ArmSME intrinsic Ops
 set(LLVM_TARGET_DEFINITIONS ArmSMEIntrinsicOps.td)
 mlir_tablegen(ArmSMEIntrinsicOps.h.inc -gen-op-decls)
 mlir_tablegen(ArmSMEIntrinsicOps.cpp.inc -gen-op-defs)
 mlir_tablegen(ArmSMEIntrinsicConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmSMEIntrinsicOpsIncGen)
+add_mlir_tablegen_target(MLIRArmSMEIntrinsicOpsIncGen)
 
 # Generate the docs
 add_mlir_doc(ArmSMEOps ArmSMEOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt
index 509f3fc2519cb..90e69c202b532 100644
--- a/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt
@@ -2,7 +2,6 @@ set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name ArmSME)
 mlir_tablegen(PassesEnums.h.inc -gen-enum-decls)
 mlir_tablegen(PassesEnums.cpp.inc -gen-enum-defs)
-add_public_tablegen_target(MLIRArmSMETransformsIncGen)
-add_dependencies(mlir-headers MLIRArmSMETransformsIncGen)
+add_mlir_tablegen_target(MLIRArmSMETransformsIncGen)
 
 add_mlir_doc(Passes ArmSMEPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
index 06595b7088a1e..f8d06951e7270 100644
--- a/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
@@ -3,4 +3,4 @@ add_mlir_doc(ArmSVE ArmSVE Dialects/ -gen-dialect-doc -dialect=arm_sve)
 
 set(LLVM_TARGET_DEFINITIONS ArmSVE.td)
 mlir_tablegen(ArmSVEConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmSVEConversionsIncGen)
+add_mlir_tablegen_target(MLIRArmSVEConversionsIncGen)
diff --git a/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt
index ce8d8fea7f188..e279f37b2019b 100644
--- a/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS ArmSVEVectorTransformOps.td)
 mlir_tablegen(ArmSVEVectorTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(ArmSVEVectorTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRArmSVEVectorTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRArmSVEVectorTransformOpsIncGen)
 
 add_mlir_doc(ArmSVEVectorTransformOps ArmSVEVectorTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt
index 7226642daf861..a2b8060a6561f 100644
--- a/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt
@@ -1,5 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name ArmSVE)
-add_public_tablegen_target(MLIRArmSVEPassIncGen)
+add_mlir_tablegen_target(MLIRArmSVEPassIncGen)
 
 add_mlir_doc(Passes ArmSVEPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Async/CMakeLists.txt b/mlir/include/mlir/Dialect/Async/CMakeLists.txt
index cabd5d3087cf3..f2642d6462831 100644
--- a/mlir/include/mlir/Dialect/Async/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Async/CMakeLists.txt
@@ -4,6 +4,6 @@ set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Async)
 mlir_tablegen(Passes.capi.h.inc -gen-pass-capi-header --prefix Async)
 mlir_tablegen(Passes.capi.cpp.inc -gen-pass-capi-impl --prefix Async)
-add_public_tablegen_target(MLIRAsyncPassIncGen)
+add_mlir_tablegen_target(MLIRAsyncPassIncGen)
 
 add_mlir_doc(Passes AsyncPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt
index 3ead52148c208..8f470dffcd607 100644
--- a/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt
@@ -8,11 +8,9 @@ add_mlir_interface(BufferViewFlowOpInterface)
 set(LLVM_TARGET_DEFINITIONS BufferizationEnums.td)
 mlir_tablegen(BufferizationEnums.h.inc -gen-enum-decls)
 mlir_tablegen(BufferizationEnums.cpp.inc -gen-enum-defs)
-add_public_tablegen_target(MLIRBufferizationEnumsIncGen)
-add_dependencies(mlir-headers MLIRBufferizationEnumsIncGen)
+add_mlir_tablegen_target(MLIRBufferizationEnumsIncGen)
 
 set(LLVM_TARGET_DEFINITIONS BufferizationTypeInterfaces.td)
 mlir_tablegen(BufferizationTypeInterfaces.h.inc -gen-type-interface-decls)
 mlir_tablegen(BufferizationTypeInterfaces.cpp.inc -gen-type-interface-defs)
-add_public_tablegen_target(MLIRBufferizationTypeInterfacesIncGen)
-add_dependencies(mlir-headers MLIRBufferizationTypeInterfacesIncGen)
+add_mlir_tablegen_target(MLIRBufferizationTypeInterfacesIncGen)
diff --git a/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt
index 95276e3e5e0d0..684c4295cd4f3 100644
--- a/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS BufferizationTransformOps.td)
 mlir_tablegen(BufferizationTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(BufferizationTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRBufferizationTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRBufferizationTransformOpsIncGen)
 
 add_mlir_doc(BufferizationTransformOps BufferizationTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt
index dcae4b8f26b89..bd6ea9a1cb29d 100644
--- a/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt
@@ -1,6 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Bufferization)
-add_public_tablegen_target(MLIRBufferizationPassIncGen)
-add_dependencies(mlir-headers MLIRBufferizationPassIncGen)
+add_mlir_tablegen_target(MLIRBufferizationPassIncGen)
 
 add_mlir_doc(Passes BufferizationPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt
index 837664e25b3c2..6e47ddade9652 100644
--- a/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt
@@ -6,4 +6,4 @@ mlir_tablegen(ComplexEnums.h.inc -gen-enum-decls)
 mlir_tablegen(ComplexEnums.cpp.inc -gen-enum-defs)
 mlir_tablegen(ComplexAttributes.h.inc -gen-attrdef-decls)
 mlir_tablegen(ComplexAttributes.cpp.inc -gen-attrdef-defs)
-add_public_tablegen_target(MLIRComplexAttributesIncGen)
+add_mlir_tablegen_target(MLIRComplexAttributesIncGen)
diff --git a/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt b/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt
index 4f8382e8e6e6b..74b1c541edaeb 100644
--- a/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt
@@ -6,5 +6,4 @@ add_mlir_doc(DLTIAttrs DLTIDialect Dialects/ -gen-dialect-doc)
 set(LLVM_TARGET_DEFINITIONS DLTIAttrs.td)
 mlir_tablegen(DLTIAttrs.h.inc -gen-attrdef-decls -attrdefs-dialect=dlti)
 mlir_tablegen(DLTIAttrs.cpp.inc -gen-attrdef-defs -attrdefs-dialect=dlti)
-add_public_tablegen_target(MLIRDLTIAttrsIncGen)
-add_dependencies(mlir-headers MLIRDLTIAttrsIncGen)
+add_mlir_tablegen_target(MLIRDLTIAttrsIncGen)
diff --git a/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt
index 1188d1a9b24d6..57faeca06794c 100644
--- a/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS DLTITransformOps.td)
 mlir_tablegen(DLTITransformOps.h.inc -gen-op-decls)
 mlir_tablegen(DLTITransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRDLTITransformOpsIncGen)
+add_mlir_tablegen_target(MLIRDLTITransformOpsIncGen)
 
 add_mlir_doc(DLTITransformOps DLTITransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt
index 299cee76cb1b4..c417a4ed3599a 100644
--- a/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt
@@ -12,4 +12,4 @@ mlir_tablegen(EmitCEnums.h.inc -gen-enum-decls)
 mlir_tablegen(EmitCEnums.cpp.inc -gen-enum-defs)
 mlir_tablegen(EmitCAttributes.h.inc -gen-attrdef-decls)
 mlir_tablegen(EmitCAttributes.cpp.inc -gen-attrdef-defs)
-add_public_tablegen_target(MLIREmitCAttributesIncGen)
+add_mlir_tablegen_target(MLIREmitCAttributesIncGen)
diff --git a/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt
index 0b507d75fa07a..d112be898c355 100644
--- a/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt
@@ -1,5 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name EmitC)
-add_public_tablegen_target(MLIREmitCTransformsIncGen)
+add_mlir_tablegen_target(MLIREmitCTransformsIncGen)
 
 add_mlir_doc(Passes EmitCPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt
index 08a6123dd2006..b19806f6007aa 100644
--- a/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt
@@ -3,6 +3,6 @@ mlir_tablegen(FuncOps.h.inc -gen-op-decls)
 mlir_tablegen(FuncOps.cpp.inc -gen-op-defs)
 mlir_tablegen(FuncOpsDialect.h.inc -gen-dialect-decls)
 mlir_tablegen(FuncOpsDialect.cpp.inc -gen-dialect-defs)
-add_public_tablegen_target(MLIRFuncOpsIncGen)
+add_mlir_tablegen_target(MLIRFuncOpsIncGen)
 
 add_mlir_doc(FuncOps FuncOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt
index 7ac6504f3dc2c..6098acbed2151 100644
--- a/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS FuncTransformOps.td)
 mlir_tablegen(FuncTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(FuncTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRFuncTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRFuncTransformOpsIncGen)
 
 add_mlir_doc(FuncTransformOps FuncTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Func/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/Func/Transforms/CMakeLists.txt
index 33c72e3c075cc..8a40eb0aa51f...
[truncated]

@llvmbot
Copy link
Member

llvmbot commented Aug 26, 2025

@llvm/pr-subscribers-mlir-gpu

Author: Bryan Tan (Technius)

Changes

This PR includes fixes for two build issues related to MLIR_LINK_MLIR_DYLIB:

  • When MLIR_LINK_MLIR_DYLIB is on but LLVM_BUILD_LLVM_DYLIB is off, the MLIR shared library target is not actually added/built, causing CMake dependency propagation issues and linker errors.
  • When a large number of parallel jobs is used with MLIR_LINK_MLIR_DYLIB enabled, some targets like mlir-opt fail to compile because they depend on a header that requires a tablegenned header file, but the corresponding IncGen targets are not dependencies of the mlir-headers or mlir-generic-headers targets.

See the commit messages for more information.


Patch is 78.22 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/155474.diff

86 Files Affected:

  • (modified) mlir/CMakeLists.txt (+14-2)
  • (modified) mlir/cmake/modules/AddMLIR.cmake (+7-2)
  • (modified) mlir/include/mlir/Conversion/CMakeLists.txt (+1)
  • (modified) mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt (+2-2)
  • (modified) mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Affine/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt (+4-4)
  • (modified) mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Async/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt (+2-4)
  • (modified) mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/DLTI/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Func/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/GPU/IR/CMakeLists.txt (+6-6)
  • (modified) mlir/include/mlir/Dialect/GPU/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/GPU/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/CMakeLists.txt (+12-14)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Linalg/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Linalg/IR/CMakeLists.txt (+5-10)
  • (modified) mlir/include/mlir/Dialect/Linalg/TransformOps/CMakeLists.txt (+3-3)
  • (modified) mlir/include/mlir/Dialect/MLProgram/IR/CMakeLists.txt (+2-4)
  • (modified) mlir/include/mlir/Dialect/MLProgram/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/MPI/IR/CMakeLists.txt (+3-3)
  • (modified) mlir/include/mlir/Dialect/Math/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/MemRef/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/MemRef/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/NVGPU/IR/CMakeLists.txt (+4-4)
  • (modified) mlir/include/mlir/Dialect/NVGPU/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/NVGPU/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/OpenACC/CMakeLists.txt (+4-7)
  • (modified) mlir/include/mlir/Dialect/OpenACC/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/OpenMP/CMakeLists.txt (+2-2)
  • (modified) mlir/include/mlir/Dialect/Ptr/IR/CMakeLists.txt (+3-3)
  • (modified) mlir/include/mlir/Dialect/Quant/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Quant/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/SCF/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/SCF/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/SMT/IR/CMakeLists.txt (+2-4)
  • (modified) mlir/include/mlir/Dialect/SPIRV/IR/CMakeLists.txt (+6-12)
  • (modified) mlir/include/mlir/Dialect/SPIRV/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Shape/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Shard/IR/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Shard/Interfaces/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Shard/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/SparseTensor/IR/CMakeLists.txt (+3-4)
  • (modified) mlir/include/mlir/Dialect/SparseTensor/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/SparseTensor/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Tensor/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Tensor/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Tosa/IR/CMakeLists.txt (+4-4)
  • (modified) mlir/include/mlir/Dialect/Tosa/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Transform/DebugExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/IR/CMakeLists.txt (+4-8)
  • (modified) mlir/include/mlir/Dialect/Transform/IRDLExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/Interfaces/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Transform/LoopExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/PDLExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/TuneExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/UB/IR/CMakeLists.txt (+2-2)
  • (modified) mlir/include/mlir/Dialect/Utils/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Vector/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Vector/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/WasmSSA/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/XeGPU/IR/CMakeLists.txt (+3-6)
  • (modified) mlir/include/mlir/Dialect/XeGPU/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/IR/CMakeLists.txt (+10)
  • (modified) mlir/include/mlir/Reducer/CMakeLists.txt (+1)
  • (modified) mlir/include/mlir/Target/LLVMIR/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/tools/mlir-shlib/CMakeLists.txt (+2-1)
diff --git a/mlir/CMakeLists.txt b/mlir/CMakeLists.txt
index f58a4c6f506ec..371740292323a 100644
--- a/mlir/CMakeLists.txt
+++ b/mlir/CMakeLists.txt
@@ -172,8 +172,11 @@ set(MLIR_INSTALL_AGGREGATE_OBJECTS 1 CACHE BOOL
 
 set(MLIR_BUILD_MLIR_C_DYLIB 0 CACHE BOOL "Builds libMLIR-C shared library.")
 
-set(MLIR_LINK_MLIR_DYLIB ${LLVM_LINK_LLVM_DYLIB} CACHE BOOL
-    "Link tools against libMLIR.so")
+set(MLIR_BUILD_MLIR_DYLIB 0 CACHE BOOL "Builds the libMLIR shared library")
+set(MLIR_LINK_MLIR_DYLIB ${LLVM_LINK_LLVM_DYLIB} CACHE BOOL "Link tools against libMLIR.so")
+if (MLIR_LINK_MLIR_DYLIB)
+  set(MLIR_BUILD_MLIR_DYLIB 1)
+endif()
 
 configure_file(
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Config/mlir-config.h.cmake
@@ -235,6 +238,15 @@ set(MLIR_PDLL_TABLEGEN_TARGET "${MLIR_PDLL_TABLEGEN_TARGET}" CACHE INTERNAL "")
 set(MLIR_SRC_SHARDER_TABLEGEN_EXE "${MLIR_SRC_SHARDER_TABLEGEN_EXE}" CACHE INTERNAL "")
 set(MLIR_SRC_SHARDER_TABLEGEN_TARGET "${MLIR_SRC_SHARDER_TABLEGEN_TARGET}" CACHE INTERNAL "")
 
+# Add MLIR dylib target here, as calls to mlir_target_link_libraries (used by
+# individual libs below) assume that such a target may exist,
+# but we cannot define the actual dylib until after all individual libs
+# are defined.
+if (MLIR_LINK_MLIR_DYLIB)
+  add_library(MLIRDylib INTERFACE)
+  add_mlir_library_install(MLIRDylib)
+endif()
+
 add_subdirectory(include/mlir)
 add_subdirectory(lib)
 # C API needs all dialects for registration, but should be built before tests.
diff --git a/mlir/cmake/modules/AddMLIR.cmake b/mlir/cmake/modules/AddMLIR.cmake
index 38839679ef8b1..170af1878a321 100644
--- a/mlir/cmake/modules/AddMLIR.cmake
+++ b/mlir/cmake/modules/AddMLIR.cmake
@@ -203,6 +203,11 @@ function(add_mlir_interface interface)
   add_dependencies(mlir-generic-headers MLIR${interface}IncGen)
 endfunction()
 
+# Add a tablegen target that generates headers in the include directory
+macro(add_mlir_tablegen_target target)
+  add_public_tablegen_target(${target})
+  add_dependencies(mlir-headers ${target})
+endmacro()
 
 # Generate Documentation
 function(add_mlir_doc doc_filename output_file output_directory command)
@@ -354,7 +359,7 @@ function(add_mlir_library name)
     # Yes, because the target "obj.${name}" is referenced.
     set(NEEDS_OBJECT_LIB ON)
   endif ()
-  if(LLVM_BUILD_LLVM_DYLIB AND NOT ARG_EXCLUDE_FROM_LIBMLIR AND NOT XCODE)
+  if(MLIR_BUILD_MLIR_DYLIB AND NOT ARG_EXCLUDE_FROM_LIBMLIR AND NOT XCODE)
     # Yes, because in addition to the shared library, the object files are
     # needed for linking into libMLIR.so (see mlir/tools/mlir-shlib/CMakeLists.txt).
     # For XCode, -force_load is used instead.
@@ -745,7 +750,7 @@ function(mlir_target_link_libraries target type)
   endif()
 
   if (MLIR_LINK_MLIR_DYLIB)
-    target_link_libraries(${target} ${type} MLIR)
+    target_link_libraries(${target} ${type} MLIRDylib)
   else()
     target_link_libraries(${target} ${type} ${ARGN})
   endif()
diff --git a/mlir/include/mlir/Conversion/CMakeLists.txt b/mlir/include/mlir/Conversion/CMakeLists.txt
index 9f76ab659215e..0a19b88e29dcb 100644
--- a/mlir/include/mlir/Conversion/CMakeLists.txt
+++ b/mlir/include/mlir/Conversion/CMakeLists.txt
@@ -4,6 +4,7 @@ mlir_tablegen(Passes.h.inc -gen-pass-decls -name Conversion)
 mlir_tablegen(Passes.capi.h.inc -gen-pass-capi-header --prefix Conversion)
 mlir_tablegen(Passes.capi.cpp.inc -gen-pass-capi-impl --prefix Conversion)
 add_public_tablegen_target(MLIRConversionPassIncGen)
+add_dependencies(mlir-generic-headers MLIRConversionPassIncGen)
 
 add_mlir_doc(Passes ConversionPasses ./ -gen-pass-doc)
 
diff --git a/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt
index ed074c205a551..e19e72e8e6033 100644
--- a/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt
@@ -4,9 +4,9 @@ add_mlir_doc(AMDGPU AMDGPU Dialects/ -gen-dialect-doc)
 set(LLVM_TARGET_DEFINITIONS AMDGPU.td)
 mlir_tablegen(AMDGPUEnums.h.inc -gen-enum-decls)
 mlir_tablegen(AMDGPUEnums.cpp.inc -gen-enum-defs)
-add_public_tablegen_target(MLIRAMDGPUEnumsGen)
+add_mlir_tablegen_target(MLIRAMDGPUEnumsGen)
 
 set(LLVM_TARGET_DEFINITIONS AMDGPU.td)
 mlir_tablegen(AMDGPUAttributes.h.inc -gen-attrdef-decls -attrdefs-dialect=amdgpu)
 mlir_tablegen(AMDGPUAttributes.cpp.inc -gen-attrdef-defs -attrdefs-dialect=amdgpu)
-add_public_tablegen_target(MLIRAMDGPUAttributesIncGen)
+add_mlir_tablegen_target(MLIRAMDGPUAttributesIncGen)
diff --git a/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt
index 8880989f4fed4..4e3b2f2084b74 100644
--- a/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt
@@ -1,6 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name AMDGPU)
-add_public_tablegen_target(MLIRAMDGPUTransformsIncGen)
-add_dependencies(mlir-headers MLIRAMDGPUTransformsIncGen)
+add_mlir_tablegen_target(MLIRAMDGPUTransformsIncGen)
 
 add_mlir_doc(Passes AMDGPUPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Affine/CMakeLists.txt b/mlir/include/mlir/Dialect/Affine/CMakeLists.txt
index fe1b372f6e03d..2327f4ad65ef9 100644
--- a/mlir/include/mlir/Dialect/Affine/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Affine/CMakeLists.txt
@@ -3,6 +3,6 @@ add_subdirectory(TransformOps)
 
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Affine)
-add_public_tablegen_target(MLIRAffinePassIncGen)
+add_mlir_tablegen_target(MLIRAffinePassIncGen)
 
 add_mlir_doc(Passes AffinePasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt
index c743f5c0766ba..466a4b74dbb5d 100644
--- a/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS AffineTransformOps.td)
 mlir_tablegen(AffineTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(AffineTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRAffineTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRAffineTransformOpsIncGen)
 
 add_mlir_doc(AffineTransformOps AffineLoopTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt
index 3f39e403adf12..dcadcd9cb39b3 100644
--- a/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt
@@ -1,5 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Arith)
-add_public_tablegen_target(MLIRArithTransformsIncGen)
+add_mlir_tablegen_target(MLIRArithTransformsIncGen)
 
 add_mlir_doc(Passes ArithPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt
index 3de3ec3f3a0e8..07840a9a771e0 100644
--- a/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt
@@ -3,6 +3,6 @@ add_mlir_doc(ArmNeon ArmNeon Dialects/ -gen-dialect-doc -dialect=arm_neon)
 
 set(LLVM_TARGET_DEFINITIONS ArmNeon.td)
 mlir_tablegen(ArmNeonConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmNeonConversionsIncGen)
+add_mlir_tablegen_target(MLIRArmNeonConversionsIncGen)
 
 add_subdirectory(TransformOps)
diff --git a/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt
index b8bc72a2bb734..8e55de7980147 100644
--- a/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS ArmNeonVectorTransformOps.td)
 mlir_tablegen(ArmNeonVectorTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(ArmNeonVectorTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRArmNeonVectorTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRArmNeonVectorTransformOpsIncGen)
 
 add_mlir_doc(ArmNeonVectorTransformOps ArmNeonVectorTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt
index 9801d8b099e3f..1e5c37a204175 100644
--- a/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt
@@ -8,25 +8,25 @@ mlir_tablegen(ArmSMEEnums.h.inc -gen-enum-decls)
 mlir_tablegen(ArmSMEEnums.cpp.inc -gen-enum-defs)
 mlir_tablegen(ArmSMEAttrDefs.h.inc -gen-attrdef-decls -attrdefs-dialect=arm_sme)
 mlir_tablegen(ArmSMEAttrDefs.cpp.inc -gen-attrdef-defs -attrdefs-dialect=arm_sme)
-add_public_tablegen_target(MLIRArmSMEOpsIncGen)
+add_mlir_tablegen_target(MLIRArmSMEOpsIncGen)
 
 # Generate LLVM IR Conversions
 set(LLVM_TARGET_DEFINITIONS ArmSMEOps.td)
 mlir_tablegen(ArmSMEOpsConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmSMEConversionsIncGen)
+add_mlir_tablegen_target(MLIRArmSMEConversionsIncGen)
 
 # Generate op interface declarations and definitions
 set(LLVM_TARGET_DEFINITIONS ArmSMEOps.td)
 mlir_tablegen(ArmSMEOpInterfaces.h.inc -gen-op-interface-decls)
 mlir_tablegen(ArmSMEOpInterfaces.cpp.inc -gen-op-interface-defs)
-add_public_tablegen_target(MLIRArmSMEOpInterfaces)
+add_mlir_tablegen_target(MLIRArmSMEOpInterfaces)
 
 # Generate declarations and definitions of ArmSME intrinsic Ops
 set(LLVM_TARGET_DEFINITIONS ArmSMEIntrinsicOps.td)
 mlir_tablegen(ArmSMEIntrinsicOps.h.inc -gen-op-decls)
 mlir_tablegen(ArmSMEIntrinsicOps.cpp.inc -gen-op-defs)
 mlir_tablegen(ArmSMEIntrinsicConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmSMEIntrinsicOpsIncGen)
+add_mlir_tablegen_target(MLIRArmSMEIntrinsicOpsIncGen)
 
 # Generate the docs
 add_mlir_doc(ArmSMEOps ArmSMEOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt
index 509f3fc2519cb..90e69c202b532 100644
--- a/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt
@@ -2,7 +2,6 @@ set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name ArmSME)
 mlir_tablegen(PassesEnums.h.inc -gen-enum-decls)
 mlir_tablegen(PassesEnums.cpp.inc -gen-enum-defs)
-add_public_tablegen_target(MLIRArmSMETransformsIncGen)
-add_dependencies(mlir-headers MLIRArmSMETransformsIncGen)
+add_mlir_tablegen_target(MLIRArmSMETransformsIncGen)
 
 add_mlir_doc(Passes ArmSMEPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
index 06595b7088a1e..f8d06951e7270 100644
--- a/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
@@ -3,4 +3,4 @@ add_mlir_doc(ArmSVE ArmSVE Dialects/ -gen-dialect-doc -dialect=arm_sve)
 
 set(LLVM_TARGET_DEFINITIONS ArmSVE.td)
 mlir_tablegen(ArmSVEConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmSVEConversionsIncGen)
+add_mlir_tablegen_target(MLIRArmSVEConversionsIncGen)
diff --git a/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt
index ce8d8fea7f188..e279f37b2019b 100644
--- a/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS ArmSVEVectorTransformOps.td)
 mlir_tablegen(ArmSVEVectorTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(ArmSVEVectorTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRArmSVEVectorTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRArmSVEVectorTransformOpsIncGen)
 
 add_mlir_doc(ArmSVEVectorTransformOps ArmSVEVectorTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt
index 7226642daf861..a2b8060a6561f 100644
--- a/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt
@@ -1,5 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name ArmSVE)
-add_public_tablegen_target(MLIRArmSVEPassIncGen)
+add_mlir_tablegen_target(MLIRArmSVEPassIncGen)
 
 add_mlir_doc(Passes ArmSVEPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Async/CMakeLists.txt b/mlir/include/mlir/Dialect/Async/CMakeLists.txt
index cabd5d3087cf3..f2642d6462831 100644
--- a/mlir/include/mlir/Dialect/Async/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Async/CMakeLists.txt
@@ -4,6 +4,6 @@ set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Async)
 mlir_tablegen(Passes.capi.h.inc -gen-pass-capi-header --prefix Async)
 mlir_tablegen(Passes.capi.cpp.inc -gen-pass-capi-impl --prefix Async)
-add_public_tablegen_target(MLIRAsyncPassIncGen)
+add_mlir_tablegen_target(MLIRAsyncPassIncGen)
 
 add_mlir_doc(Passes AsyncPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt
index 3ead52148c208..8f470dffcd607 100644
--- a/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt
@@ -8,11 +8,9 @@ add_mlir_interface(BufferViewFlowOpInterface)
 set(LLVM_TARGET_DEFINITIONS BufferizationEnums.td)
 mlir_tablegen(BufferizationEnums.h.inc -gen-enum-decls)
 mlir_tablegen(BufferizationEnums.cpp.inc -gen-enum-defs)
-add_public_tablegen_target(MLIRBufferizationEnumsIncGen)
-add_dependencies(mlir-headers MLIRBufferizationEnumsIncGen)
+add_mlir_tablegen_target(MLIRBufferizationEnumsIncGen)
 
 set(LLVM_TARGET_DEFINITIONS BufferizationTypeInterfaces.td)
 mlir_tablegen(BufferizationTypeInterfaces.h.inc -gen-type-interface-decls)
 mlir_tablegen(BufferizationTypeInterfaces.cpp.inc -gen-type-interface-defs)
-add_public_tablegen_target(MLIRBufferizationTypeInterfacesIncGen)
-add_dependencies(mlir-headers MLIRBufferizationTypeInterfacesIncGen)
+add_mlir_tablegen_target(MLIRBufferizationTypeInterfacesIncGen)
diff --git a/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt
index 95276e3e5e0d0..684c4295cd4f3 100644
--- a/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS BufferizationTransformOps.td)
 mlir_tablegen(BufferizationTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(BufferizationTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRBufferizationTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRBufferizationTransformOpsIncGen)
 
 add_mlir_doc(BufferizationTransformOps BufferizationTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt
index dcae4b8f26b89..bd6ea9a1cb29d 100644
--- a/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt
@@ -1,6 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Bufferization)
-add_public_tablegen_target(MLIRBufferizationPassIncGen)
-add_dependencies(mlir-headers MLIRBufferizationPassIncGen)
+add_mlir_tablegen_target(MLIRBufferizationPassIncGen)
 
 add_mlir_doc(Passes BufferizationPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt
index 837664e25b3c2..6e47ddade9652 100644
--- a/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt
@@ -6,4 +6,4 @@ mlir_tablegen(ComplexEnums.h.inc -gen-enum-decls)
 mlir_tablegen(ComplexEnums.cpp.inc -gen-enum-defs)
 mlir_tablegen(ComplexAttributes.h.inc -gen-attrdef-decls)
 mlir_tablegen(ComplexAttributes.cpp.inc -gen-attrdef-defs)
-add_public_tablegen_target(MLIRComplexAttributesIncGen)
+add_mlir_tablegen_target(MLIRComplexAttributesIncGen)
diff --git a/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt b/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt
index 4f8382e8e6e6b..74b1c541edaeb 100644
--- a/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt
@@ -6,5 +6,4 @@ add_mlir_doc(DLTIAttrs DLTIDialect Dialects/ -gen-dialect-doc)
 set(LLVM_TARGET_DEFINITIONS DLTIAttrs.td)
 mlir_tablegen(DLTIAttrs.h.inc -gen-attrdef-decls -attrdefs-dialect=dlti)
 mlir_tablegen(DLTIAttrs.cpp.inc -gen-attrdef-defs -attrdefs-dialect=dlti)
-add_public_tablegen_target(MLIRDLTIAttrsIncGen)
-add_dependencies(mlir-headers MLIRDLTIAttrsIncGen)
+add_mlir_tablegen_target(MLIRDLTIAttrsIncGen)
diff --git a/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt
index 1188d1a9b24d6..57faeca06794c 100644
--- a/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS DLTITransformOps.td)
 mlir_tablegen(DLTITransformOps.h.inc -gen-op-decls)
 mlir_tablegen(DLTITransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRDLTITransformOpsIncGen)
+add_mlir_tablegen_target(MLIRDLTITransformOpsIncGen)
 
 add_mlir_doc(DLTITransformOps DLTITransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt
index 299cee76cb1b4..c417a4ed3599a 100644
--- a/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt
@@ -12,4 +12,4 @@ mlir_tablegen(EmitCEnums.h.inc -gen-enum-decls)
 mlir_tablegen(EmitCEnums.cpp.inc -gen-enum-defs)
 mlir_tablegen(EmitCAttributes.h.inc -gen-attrdef-decls)
 mlir_tablegen(EmitCAttributes.cpp.inc -gen-attrdef-defs)
-add_public_tablegen_target(MLIREmitCAttributesIncGen)
+add_mlir_tablegen_target(MLIREmitCAttributesIncGen)
diff --git a/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt
index 0b507d75fa07a..d112be898c355 100644
--- a/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt
@@ -1,5 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name EmitC)
-add_public_tablegen_target(MLIREmitCTransformsIncGen)
+add_mlir_tablegen_target(MLIREmitCTransformsIncGen)
 
 add_mlir_doc(Passes EmitCPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt
index 08a6123dd2006..b19806f6007aa 100644
--- a/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt
@@ -3,6 +3,6 @@ mlir_tablegen(FuncOps.h.inc -gen-op-decls)
 mlir_tablegen(FuncOps.cpp.inc -gen-op-defs)
 mlir_tablegen(FuncOpsDialect.h.inc -gen-dialect-decls)
 mlir_tablegen(FuncOpsDialect.cpp.inc -gen-dialect-defs)
-add_public_tablegen_target(MLIRFuncOpsIncGen)
+add_mlir_tablegen_target(MLIRFuncOpsIncGen)
 
 add_mlir_doc(FuncOps FuncOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt
index 7ac6504f3dc2c..6098acbed2151 100644
--- a/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS FuncTransformOps.td)
 mlir_tablegen(FuncTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(FuncTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRFuncTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRFuncTransformOpsIncGen)
 
 add_mlir_doc(FuncTransformOps FuncTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Func/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/Func/Transforms/CMakeLists.txt
index 33c72e3c075cc..8a40eb0aa51f...
[truncated]

@llvmbot
Copy link
Member

llvmbot commented Aug 26, 2025

@llvm/pr-subscribers-mlir-sparse

Author: Bryan Tan (Technius)

Changes

This PR includes fixes for two build issues related to MLIR_LINK_MLIR_DYLIB:

  • When MLIR_LINK_MLIR_DYLIB is on but LLVM_BUILD_LLVM_DYLIB is off, the MLIR shared library target is not actually added/built, causing CMake dependency propagation issues and linker errors.
  • When a large number of parallel jobs is used with MLIR_LINK_MLIR_DYLIB enabled, some targets like mlir-opt fail to compile because they depend on a header that requires a tablegenned header file, but the corresponding IncGen targets are not dependencies of the mlir-headers or mlir-generic-headers targets.

See the commit messages for more information.


Patch is 78.22 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/155474.diff

86 Files Affected:

  • (modified) mlir/CMakeLists.txt (+14-2)
  • (modified) mlir/cmake/modules/AddMLIR.cmake (+7-2)
  • (modified) mlir/include/mlir/Conversion/CMakeLists.txt (+1)
  • (modified) mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt (+2-2)
  • (modified) mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Affine/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt (+4-4)
  • (modified) mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Async/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt (+2-4)
  • (modified) mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/DLTI/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Func/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/GPU/IR/CMakeLists.txt (+6-6)
  • (modified) mlir/include/mlir/Dialect/GPU/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/GPU/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/CMakeLists.txt (+12-14)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Linalg/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Linalg/IR/CMakeLists.txt (+5-10)
  • (modified) mlir/include/mlir/Dialect/Linalg/TransformOps/CMakeLists.txt (+3-3)
  • (modified) mlir/include/mlir/Dialect/MLProgram/IR/CMakeLists.txt (+2-4)
  • (modified) mlir/include/mlir/Dialect/MLProgram/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/MPI/IR/CMakeLists.txt (+3-3)
  • (modified) mlir/include/mlir/Dialect/Math/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/MemRef/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/MemRef/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/NVGPU/IR/CMakeLists.txt (+4-4)
  • (modified) mlir/include/mlir/Dialect/NVGPU/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/NVGPU/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/OpenACC/CMakeLists.txt (+4-7)
  • (modified) mlir/include/mlir/Dialect/OpenACC/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/OpenMP/CMakeLists.txt (+2-2)
  • (modified) mlir/include/mlir/Dialect/Ptr/IR/CMakeLists.txt (+3-3)
  • (modified) mlir/include/mlir/Dialect/Quant/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Quant/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/SCF/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/SCF/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/SMT/IR/CMakeLists.txt (+2-4)
  • (modified) mlir/include/mlir/Dialect/SPIRV/IR/CMakeLists.txt (+6-12)
  • (modified) mlir/include/mlir/Dialect/SPIRV/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Shape/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Shard/IR/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Shard/Interfaces/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Shard/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/SparseTensor/IR/CMakeLists.txt (+3-4)
  • (modified) mlir/include/mlir/Dialect/SparseTensor/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/SparseTensor/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Tensor/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Tensor/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Tosa/IR/CMakeLists.txt (+4-4)
  • (modified) mlir/include/mlir/Dialect/Tosa/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Transform/DebugExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/IR/CMakeLists.txt (+4-8)
  • (modified) mlir/include/mlir/Dialect/Transform/IRDLExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/Interfaces/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Transform/LoopExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/PDLExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/TuneExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/UB/IR/CMakeLists.txt (+2-2)
  • (modified) mlir/include/mlir/Dialect/Utils/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Vector/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Vector/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/WasmSSA/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/XeGPU/IR/CMakeLists.txt (+3-6)
  • (modified) mlir/include/mlir/Dialect/XeGPU/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/IR/CMakeLists.txt (+10)
  • (modified) mlir/include/mlir/Reducer/CMakeLists.txt (+1)
  • (modified) mlir/include/mlir/Target/LLVMIR/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/tools/mlir-shlib/CMakeLists.txt (+2-1)
diff --git a/mlir/CMakeLists.txt b/mlir/CMakeLists.txt
index f58a4c6f506ec..371740292323a 100644
--- a/mlir/CMakeLists.txt
+++ b/mlir/CMakeLists.txt
@@ -172,8 +172,11 @@ set(MLIR_INSTALL_AGGREGATE_OBJECTS 1 CACHE BOOL
 
 set(MLIR_BUILD_MLIR_C_DYLIB 0 CACHE BOOL "Builds libMLIR-C shared library.")
 
-set(MLIR_LINK_MLIR_DYLIB ${LLVM_LINK_LLVM_DYLIB} CACHE BOOL
-    "Link tools against libMLIR.so")
+set(MLIR_BUILD_MLIR_DYLIB 0 CACHE BOOL "Builds the libMLIR shared library")
+set(MLIR_LINK_MLIR_DYLIB ${LLVM_LINK_LLVM_DYLIB} CACHE BOOL "Link tools against libMLIR.so")
+if (MLIR_LINK_MLIR_DYLIB)
+  set(MLIR_BUILD_MLIR_DYLIB 1)
+endif()
 
 configure_file(
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Config/mlir-config.h.cmake
@@ -235,6 +238,15 @@ set(MLIR_PDLL_TABLEGEN_TARGET "${MLIR_PDLL_TABLEGEN_TARGET}" CACHE INTERNAL "")
 set(MLIR_SRC_SHARDER_TABLEGEN_EXE "${MLIR_SRC_SHARDER_TABLEGEN_EXE}" CACHE INTERNAL "")
 set(MLIR_SRC_SHARDER_TABLEGEN_TARGET "${MLIR_SRC_SHARDER_TABLEGEN_TARGET}" CACHE INTERNAL "")
 
+# Add MLIR dylib target here, as calls to mlir_target_link_libraries (used by
+# individual libs below) assume that such a target may exist,
+# but we cannot define the actual dylib until after all individual libs
+# are defined.
+if (MLIR_LINK_MLIR_DYLIB)
+  add_library(MLIRDylib INTERFACE)
+  add_mlir_library_install(MLIRDylib)
+endif()
+
 add_subdirectory(include/mlir)
 add_subdirectory(lib)
 # C API needs all dialects for registration, but should be built before tests.
diff --git a/mlir/cmake/modules/AddMLIR.cmake b/mlir/cmake/modules/AddMLIR.cmake
index 38839679ef8b1..170af1878a321 100644
--- a/mlir/cmake/modules/AddMLIR.cmake
+++ b/mlir/cmake/modules/AddMLIR.cmake
@@ -203,6 +203,11 @@ function(add_mlir_interface interface)
   add_dependencies(mlir-generic-headers MLIR${interface}IncGen)
 endfunction()
 
+# Add a tablegen target that generates headers in the include directory
+macro(add_mlir_tablegen_target target)
+  add_public_tablegen_target(${target})
+  add_dependencies(mlir-headers ${target})
+endmacro()
 
 # Generate Documentation
 function(add_mlir_doc doc_filename output_file output_directory command)
@@ -354,7 +359,7 @@ function(add_mlir_library name)
     # Yes, because the target "obj.${name}" is referenced.
     set(NEEDS_OBJECT_LIB ON)
   endif ()
-  if(LLVM_BUILD_LLVM_DYLIB AND NOT ARG_EXCLUDE_FROM_LIBMLIR AND NOT XCODE)
+  if(MLIR_BUILD_MLIR_DYLIB AND NOT ARG_EXCLUDE_FROM_LIBMLIR AND NOT XCODE)
     # Yes, because in addition to the shared library, the object files are
     # needed for linking into libMLIR.so (see mlir/tools/mlir-shlib/CMakeLists.txt).
     # For XCode, -force_load is used instead.
@@ -745,7 +750,7 @@ function(mlir_target_link_libraries target type)
   endif()
 
   if (MLIR_LINK_MLIR_DYLIB)
-    target_link_libraries(${target} ${type} MLIR)
+    target_link_libraries(${target} ${type} MLIRDylib)
   else()
     target_link_libraries(${target} ${type} ${ARGN})
   endif()
diff --git a/mlir/include/mlir/Conversion/CMakeLists.txt b/mlir/include/mlir/Conversion/CMakeLists.txt
index 9f76ab659215e..0a19b88e29dcb 100644
--- a/mlir/include/mlir/Conversion/CMakeLists.txt
+++ b/mlir/include/mlir/Conversion/CMakeLists.txt
@@ -4,6 +4,7 @@ mlir_tablegen(Passes.h.inc -gen-pass-decls -name Conversion)
 mlir_tablegen(Passes.capi.h.inc -gen-pass-capi-header --prefix Conversion)
 mlir_tablegen(Passes.capi.cpp.inc -gen-pass-capi-impl --prefix Conversion)
 add_public_tablegen_target(MLIRConversionPassIncGen)
+add_dependencies(mlir-generic-headers MLIRConversionPassIncGen)
 
 add_mlir_doc(Passes ConversionPasses ./ -gen-pass-doc)
 
diff --git a/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt
index ed074c205a551..e19e72e8e6033 100644
--- a/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt
@@ -4,9 +4,9 @@ add_mlir_doc(AMDGPU AMDGPU Dialects/ -gen-dialect-doc)
 set(LLVM_TARGET_DEFINITIONS AMDGPU.td)
 mlir_tablegen(AMDGPUEnums.h.inc -gen-enum-decls)
 mlir_tablegen(AMDGPUEnums.cpp.inc -gen-enum-defs)
-add_public_tablegen_target(MLIRAMDGPUEnumsGen)
+add_mlir_tablegen_target(MLIRAMDGPUEnumsGen)
 
 set(LLVM_TARGET_DEFINITIONS AMDGPU.td)
 mlir_tablegen(AMDGPUAttributes.h.inc -gen-attrdef-decls -attrdefs-dialect=amdgpu)
 mlir_tablegen(AMDGPUAttributes.cpp.inc -gen-attrdef-defs -attrdefs-dialect=amdgpu)
-add_public_tablegen_target(MLIRAMDGPUAttributesIncGen)
+add_mlir_tablegen_target(MLIRAMDGPUAttributesIncGen)
diff --git a/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt
index 8880989f4fed4..4e3b2f2084b74 100644
--- a/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt
@@ -1,6 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name AMDGPU)
-add_public_tablegen_target(MLIRAMDGPUTransformsIncGen)
-add_dependencies(mlir-headers MLIRAMDGPUTransformsIncGen)
+add_mlir_tablegen_target(MLIRAMDGPUTransformsIncGen)
 
 add_mlir_doc(Passes AMDGPUPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Affine/CMakeLists.txt b/mlir/include/mlir/Dialect/Affine/CMakeLists.txt
index fe1b372f6e03d..2327f4ad65ef9 100644
--- a/mlir/include/mlir/Dialect/Affine/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Affine/CMakeLists.txt
@@ -3,6 +3,6 @@ add_subdirectory(TransformOps)
 
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Affine)
-add_public_tablegen_target(MLIRAffinePassIncGen)
+add_mlir_tablegen_target(MLIRAffinePassIncGen)
 
 add_mlir_doc(Passes AffinePasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt
index c743f5c0766ba..466a4b74dbb5d 100644
--- a/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS AffineTransformOps.td)
 mlir_tablegen(AffineTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(AffineTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRAffineTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRAffineTransformOpsIncGen)
 
 add_mlir_doc(AffineTransformOps AffineLoopTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt
index 3f39e403adf12..dcadcd9cb39b3 100644
--- a/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt
@@ -1,5 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Arith)
-add_public_tablegen_target(MLIRArithTransformsIncGen)
+add_mlir_tablegen_target(MLIRArithTransformsIncGen)
 
 add_mlir_doc(Passes ArithPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt
index 3de3ec3f3a0e8..07840a9a771e0 100644
--- a/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt
@@ -3,6 +3,6 @@ add_mlir_doc(ArmNeon ArmNeon Dialects/ -gen-dialect-doc -dialect=arm_neon)
 
 set(LLVM_TARGET_DEFINITIONS ArmNeon.td)
 mlir_tablegen(ArmNeonConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmNeonConversionsIncGen)
+add_mlir_tablegen_target(MLIRArmNeonConversionsIncGen)
 
 add_subdirectory(TransformOps)
diff --git a/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt
index b8bc72a2bb734..8e55de7980147 100644
--- a/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS ArmNeonVectorTransformOps.td)
 mlir_tablegen(ArmNeonVectorTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(ArmNeonVectorTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRArmNeonVectorTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRArmNeonVectorTransformOpsIncGen)
 
 add_mlir_doc(ArmNeonVectorTransformOps ArmNeonVectorTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt
index 9801d8b099e3f..1e5c37a204175 100644
--- a/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt
@@ -8,25 +8,25 @@ mlir_tablegen(ArmSMEEnums.h.inc -gen-enum-decls)
 mlir_tablegen(ArmSMEEnums.cpp.inc -gen-enum-defs)
 mlir_tablegen(ArmSMEAttrDefs.h.inc -gen-attrdef-decls -attrdefs-dialect=arm_sme)
 mlir_tablegen(ArmSMEAttrDefs.cpp.inc -gen-attrdef-defs -attrdefs-dialect=arm_sme)
-add_public_tablegen_target(MLIRArmSMEOpsIncGen)
+add_mlir_tablegen_target(MLIRArmSMEOpsIncGen)
 
 # Generate LLVM IR Conversions
 set(LLVM_TARGET_DEFINITIONS ArmSMEOps.td)
 mlir_tablegen(ArmSMEOpsConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmSMEConversionsIncGen)
+add_mlir_tablegen_target(MLIRArmSMEConversionsIncGen)
 
 # Generate op interface declarations and definitions
 set(LLVM_TARGET_DEFINITIONS ArmSMEOps.td)
 mlir_tablegen(ArmSMEOpInterfaces.h.inc -gen-op-interface-decls)
 mlir_tablegen(ArmSMEOpInterfaces.cpp.inc -gen-op-interface-defs)
-add_public_tablegen_target(MLIRArmSMEOpInterfaces)
+add_mlir_tablegen_target(MLIRArmSMEOpInterfaces)
 
 # Generate declarations and definitions of ArmSME intrinsic Ops
 set(LLVM_TARGET_DEFINITIONS ArmSMEIntrinsicOps.td)
 mlir_tablegen(ArmSMEIntrinsicOps.h.inc -gen-op-decls)
 mlir_tablegen(ArmSMEIntrinsicOps.cpp.inc -gen-op-defs)
 mlir_tablegen(ArmSMEIntrinsicConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmSMEIntrinsicOpsIncGen)
+add_mlir_tablegen_target(MLIRArmSMEIntrinsicOpsIncGen)
 
 # Generate the docs
 add_mlir_doc(ArmSMEOps ArmSMEOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt
index 509f3fc2519cb..90e69c202b532 100644
--- a/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt
@@ -2,7 +2,6 @@ set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name ArmSME)
 mlir_tablegen(PassesEnums.h.inc -gen-enum-decls)
 mlir_tablegen(PassesEnums.cpp.inc -gen-enum-defs)
-add_public_tablegen_target(MLIRArmSMETransformsIncGen)
-add_dependencies(mlir-headers MLIRArmSMETransformsIncGen)
+add_mlir_tablegen_target(MLIRArmSMETransformsIncGen)
 
 add_mlir_doc(Passes ArmSMEPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
index 06595b7088a1e..f8d06951e7270 100644
--- a/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
@@ -3,4 +3,4 @@ add_mlir_doc(ArmSVE ArmSVE Dialects/ -gen-dialect-doc -dialect=arm_sve)
 
 set(LLVM_TARGET_DEFINITIONS ArmSVE.td)
 mlir_tablegen(ArmSVEConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmSVEConversionsIncGen)
+add_mlir_tablegen_target(MLIRArmSVEConversionsIncGen)
diff --git a/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt
index ce8d8fea7f188..e279f37b2019b 100644
--- a/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS ArmSVEVectorTransformOps.td)
 mlir_tablegen(ArmSVEVectorTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(ArmSVEVectorTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRArmSVEVectorTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRArmSVEVectorTransformOpsIncGen)
 
 add_mlir_doc(ArmSVEVectorTransformOps ArmSVEVectorTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt
index 7226642daf861..a2b8060a6561f 100644
--- a/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt
@@ -1,5 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name ArmSVE)
-add_public_tablegen_target(MLIRArmSVEPassIncGen)
+add_mlir_tablegen_target(MLIRArmSVEPassIncGen)
 
 add_mlir_doc(Passes ArmSVEPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Async/CMakeLists.txt b/mlir/include/mlir/Dialect/Async/CMakeLists.txt
index cabd5d3087cf3..f2642d6462831 100644
--- a/mlir/include/mlir/Dialect/Async/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Async/CMakeLists.txt
@@ -4,6 +4,6 @@ set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Async)
 mlir_tablegen(Passes.capi.h.inc -gen-pass-capi-header --prefix Async)
 mlir_tablegen(Passes.capi.cpp.inc -gen-pass-capi-impl --prefix Async)
-add_public_tablegen_target(MLIRAsyncPassIncGen)
+add_mlir_tablegen_target(MLIRAsyncPassIncGen)
 
 add_mlir_doc(Passes AsyncPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt
index 3ead52148c208..8f470dffcd607 100644
--- a/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt
@@ -8,11 +8,9 @@ add_mlir_interface(BufferViewFlowOpInterface)
 set(LLVM_TARGET_DEFINITIONS BufferizationEnums.td)
 mlir_tablegen(BufferizationEnums.h.inc -gen-enum-decls)
 mlir_tablegen(BufferizationEnums.cpp.inc -gen-enum-defs)
-add_public_tablegen_target(MLIRBufferizationEnumsIncGen)
-add_dependencies(mlir-headers MLIRBufferizationEnumsIncGen)
+add_mlir_tablegen_target(MLIRBufferizationEnumsIncGen)
 
 set(LLVM_TARGET_DEFINITIONS BufferizationTypeInterfaces.td)
 mlir_tablegen(BufferizationTypeInterfaces.h.inc -gen-type-interface-decls)
 mlir_tablegen(BufferizationTypeInterfaces.cpp.inc -gen-type-interface-defs)
-add_public_tablegen_target(MLIRBufferizationTypeInterfacesIncGen)
-add_dependencies(mlir-headers MLIRBufferizationTypeInterfacesIncGen)
+add_mlir_tablegen_target(MLIRBufferizationTypeInterfacesIncGen)
diff --git a/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt
index 95276e3e5e0d0..684c4295cd4f3 100644
--- a/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS BufferizationTransformOps.td)
 mlir_tablegen(BufferizationTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(BufferizationTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRBufferizationTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRBufferizationTransformOpsIncGen)
 
 add_mlir_doc(BufferizationTransformOps BufferizationTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt
index dcae4b8f26b89..bd6ea9a1cb29d 100644
--- a/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt
@@ -1,6 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Bufferization)
-add_public_tablegen_target(MLIRBufferizationPassIncGen)
-add_dependencies(mlir-headers MLIRBufferizationPassIncGen)
+add_mlir_tablegen_target(MLIRBufferizationPassIncGen)
 
 add_mlir_doc(Passes BufferizationPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt
index 837664e25b3c2..6e47ddade9652 100644
--- a/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt
@@ -6,4 +6,4 @@ mlir_tablegen(ComplexEnums.h.inc -gen-enum-decls)
 mlir_tablegen(ComplexEnums.cpp.inc -gen-enum-defs)
 mlir_tablegen(ComplexAttributes.h.inc -gen-attrdef-decls)
 mlir_tablegen(ComplexAttributes.cpp.inc -gen-attrdef-defs)
-add_public_tablegen_target(MLIRComplexAttributesIncGen)
+add_mlir_tablegen_target(MLIRComplexAttributesIncGen)
diff --git a/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt b/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt
index 4f8382e8e6e6b..74b1c541edaeb 100644
--- a/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt
@@ -6,5 +6,4 @@ add_mlir_doc(DLTIAttrs DLTIDialect Dialects/ -gen-dialect-doc)
 set(LLVM_TARGET_DEFINITIONS DLTIAttrs.td)
 mlir_tablegen(DLTIAttrs.h.inc -gen-attrdef-decls -attrdefs-dialect=dlti)
 mlir_tablegen(DLTIAttrs.cpp.inc -gen-attrdef-defs -attrdefs-dialect=dlti)
-add_public_tablegen_target(MLIRDLTIAttrsIncGen)
-add_dependencies(mlir-headers MLIRDLTIAttrsIncGen)
+add_mlir_tablegen_target(MLIRDLTIAttrsIncGen)
diff --git a/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt
index 1188d1a9b24d6..57faeca06794c 100644
--- a/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS DLTITransformOps.td)
 mlir_tablegen(DLTITransformOps.h.inc -gen-op-decls)
 mlir_tablegen(DLTITransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRDLTITransformOpsIncGen)
+add_mlir_tablegen_target(MLIRDLTITransformOpsIncGen)
 
 add_mlir_doc(DLTITransformOps DLTITransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt
index 299cee76cb1b4..c417a4ed3599a 100644
--- a/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt
@@ -12,4 +12,4 @@ mlir_tablegen(EmitCEnums.h.inc -gen-enum-decls)
 mlir_tablegen(EmitCEnums.cpp.inc -gen-enum-defs)
 mlir_tablegen(EmitCAttributes.h.inc -gen-attrdef-decls)
 mlir_tablegen(EmitCAttributes.cpp.inc -gen-attrdef-defs)
-add_public_tablegen_target(MLIREmitCAttributesIncGen)
+add_mlir_tablegen_target(MLIREmitCAttributesIncGen)
diff --git a/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt
index 0b507d75fa07a..d112be898c355 100644
--- a/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt
@@ -1,5 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name EmitC)
-add_public_tablegen_target(MLIREmitCTransformsIncGen)
+add_mlir_tablegen_target(MLIREmitCTransformsIncGen)
 
 add_mlir_doc(Passes EmitCPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt
index 08a6123dd2006..b19806f6007aa 100644
--- a/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt
@@ -3,6 +3,6 @@ mlir_tablegen(FuncOps.h.inc -gen-op-decls)
 mlir_tablegen(FuncOps.cpp.inc -gen-op-defs)
 mlir_tablegen(FuncOpsDialect.h.inc -gen-dialect-decls)
 mlir_tablegen(FuncOpsDialect.cpp.inc -gen-dialect-defs)
-add_public_tablegen_target(MLIRFuncOpsIncGen)
+add_mlir_tablegen_target(MLIRFuncOpsIncGen)
 
 add_mlir_doc(FuncOps FuncOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt
index 7ac6504f3dc2c..6098acbed2151 100644
--- a/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS FuncTransformOps.td)
 mlir_tablegen(FuncTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(FuncTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRFuncTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRFuncTransformOpsIncGen)
 
 add_mlir_doc(FuncTransformOps FuncTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Func/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/Func/Transforms/CMakeLists.txt
index 33c72e3c075cc..8a40eb0aa51f...
[truncated]

@llvmbot
Copy link
Member

llvmbot commented Aug 26, 2025

@llvm/pr-subscribers-mlir-tensor

Author: Bryan Tan (Technius)

Changes

This PR includes fixes for two build issues related to MLIR_LINK_MLIR_DYLIB:

  • When MLIR_LINK_MLIR_DYLIB is on but LLVM_BUILD_LLVM_DYLIB is off, the MLIR shared library target is not actually added/built, causing CMake dependency propagation issues and linker errors.
  • When a large number of parallel jobs is used with MLIR_LINK_MLIR_DYLIB enabled, some targets like mlir-opt fail to compile because they depend on a header that requires a tablegenned header file, but the corresponding IncGen targets are not dependencies of the mlir-headers or mlir-generic-headers targets.

See the commit messages for more information.


Patch is 78.22 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/155474.diff

86 Files Affected:

  • (modified) mlir/CMakeLists.txt (+14-2)
  • (modified) mlir/cmake/modules/AddMLIR.cmake (+7-2)
  • (modified) mlir/include/mlir/Conversion/CMakeLists.txt (+1)
  • (modified) mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt (+2-2)
  • (modified) mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Affine/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt (+4-4)
  • (modified) mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Async/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt (+2-4)
  • (modified) mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/DLTI/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Func/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/GPU/IR/CMakeLists.txt (+6-6)
  • (modified) mlir/include/mlir/Dialect/GPU/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/GPU/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/CMakeLists.txt (+12-14)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Linalg/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Linalg/IR/CMakeLists.txt (+5-10)
  • (modified) mlir/include/mlir/Dialect/Linalg/TransformOps/CMakeLists.txt (+3-3)
  • (modified) mlir/include/mlir/Dialect/MLProgram/IR/CMakeLists.txt (+2-4)
  • (modified) mlir/include/mlir/Dialect/MLProgram/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/MPI/IR/CMakeLists.txt (+3-3)
  • (modified) mlir/include/mlir/Dialect/Math/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/MemRef/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/MemRef/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/NVGPU/IR/CMakeLists.txt (+4-4)
  • (modified) mlir/include/mlir/Dialect/NVGPU/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/NVGPU/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/OpenACC/CMakeLists.txt (+4-7)
  • (modified) mlir/include/mlir/Dialect/OpenACC/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/OpenMP/CMakeLists.txt (+2-2)
  • (modified) mlir/include/mlir/Dialect/Ptr/IR/CMakeLists.txt (+3-3)
  • (modified) mlir/include/mlir/Dialect/Quant/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Quant/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/SCF/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/SCF/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/SMT/IR/CMakeLists.txt (+2-4)
  • (modified) mlir/include/mlir/Dialect/SPIRV/IR/CMakeLists.txt (+6-12)
  • (modified) mlir/include/mlir/Dialect/SPIRV/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Shape/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Shard/IR/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Shard/Interfaces/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Shard/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/SparseTensor/IR/CMakeLists.txt (+3-4)
  • (modified) mlir/include/mlir/Dialect/SparseTensor/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/SparseTensor/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Tensor/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Tensor/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Tosa/IR/CMakeLists.txt (+4-4)
  • (modified) mlir/include/mlir/Dialect/Tosa/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Transform/DebugExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/IR/CMakeLists.txt (+4-8)
  • (modified) mlir/include/mlir/Dialect/Transform/IRDLExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/Interfaces/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Transform/LoopExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/PDLExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/TuneExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/UB/IR/CMakeLists.txt (+2-2)
  • (modified) mlir/include/mlir/Dialect/Utils/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Vector/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Vector/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/WasmSSA/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/XeGPU/IR/CMakeLists.txt (+3-6)
  • (modified) mlir/include/mlir/Dialect/XeGPU/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/IR/CMakeLists.txt (+10)
  • (modified) mlir/include/mlir/Reducer/CMakeLists.txt (+1)
  • (modified) mlir/include/mlir/Target/LLVMIR/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/tools/mlir-shlib/CMakeLists.txt (+2-1)
diff --git a/mlir/CMakeLists.txt b/mlir/CMakeLists.txt
index f58a4c6f506ec..371740292323a 100644
--- a/mlir/CMakeLists.txt
+++ b/mlir/CMakeLists.txt
@@ -172,8 +172,11 @@ set(MLIR_INSTALL_AGGREGATE_OBJECTS 1 CACHE BOOL
 
 set(MLIR_BUILD_MLIR_C_DYLIB 0 CACHE BOOL "Builds libMLIR-C shared library.")
 
-set(MLIR_LINK_MLIR_DYLIB ${LLVM_LINK_LLVM_DYLIB} CACHE BOOL
-    "Link tools against libMLIR.so")
+set(MLIR_BUILD_MLIR_DYLIB 0 CACHE BOOL "Builds the libMLIR shared library")
+set(MLIR_LINK_MLIR_DYLIB ${LLVM_LINK_LLVM_DYLIB} CACHE BOOL "Link tools against libMLIR.so")
+if (MLIR_LINK_MLIR_DYLIB)
+  set(MLIR_BUILD_MLIR_DYLIB 1)
+endif()
 
 configure_file(
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Config/mlir-config.h.cmake
@@ -235,6 +238,15 @@ set(MLIR_PDLL_TABLEGEN_TARGET "${MLIR_PDLL_TABLEGEN_TARGET}" CACHE INTERNAL "")
 set(MLIR_SRC_SHARDER_TABLEGEN_EXE "${MLIR_SRC_SHARDER_TABLEGEN_EXE}" CACHE INTERNAL "")
 set(MLIR_SRC_SHARDER_TABLEGEN_TARGET "${MLIR_SRC_SHARDER_TABLEGEN_TARGET}" CACHE INTERNAL "")
 
+# Add MLIR dylib target here, as calls to mlir_target_link_libraries (used by
+# individual libs below) assume that such a target may exist,
+# but we cannot define the actual dylib until after all individual libs
+# are defined.
+if (MLIR_LINK_MLIR_DYLIB)
+  add_library(MLIRDylib INTERFACE)
+  add_mlir_library_install(MLIRDylib)
+endif()
+
 add_subdirectory(include/mlir)
 add_subdirectory(lib)
 # C API needs all dialects for registration, but should be built before tests.
diff --git a/mlir/cmake/modules/AddMLIR.cmake b/mlir/cmake/modules/AddMLIR.cmake
index 38839679ef8b1..170af1878a321 100644
--- a/mlir/cmake/modules/AddMLIR.cmake
+++ b/mlir/cmake/modules/AddMLIR.cmake
@@ -203,6 +203,11 @@ function(add_mlir_interface interface)
   add_dependencies(mlir-generic-headers MLIR${interface}IncGen)
 endfunction()
 
+# Add a tablegen target that generates headers in the include directory
+macro(add_mlir_tablegen_target target)
+  add_public_tablegen_target(${target})
+  add_dependencies(mlir-headers ${target})
+endmacro()
 
 # Generate Documentation
 function(add_mlir_doc doc_filename output_file output_directory command)
@@ -354,7 +359,7 @@ function(add_mlir_library name)
     # Yes, because the target "obj.${name}" is referenced.
     set(NEEDS_OBJECT_LIB ON)
   endif ()
-  if(LLVM_BUILD_LLVM_DYLIB AND NOT ARG_EXCLUDE_FROM_LIBMLIR AND NOT XCODE)
+  if(MLIR_BUILD_MLIR_DYLIB AND NOT ARG_EXCLUDE_FROM_LIBMLIR AND NOT XCODE)
     # Yes, because in addition to the shared library, the object files are
     # needed for linking into libMLIR.so (see mlir/tools/mlir-shlib/CMakeLists.txt).
     # For XCode, -force_load is used instead.
@@ -745,7 +750,7 @@ function(mlir_target_link_libraries target type)
   endif()
 
   if (MLIR_LINK_MLIR_DYLIB)
-    target_link_libraries(${target} ${type} MLIR)
+    target_link_libraries(${target} ${type} MLIRDylib)
   else()
     target_link_libraries(${target} ${type} ${ARGN})
   endif()
diff --git a/mlir/include/mlir/Conversion/CMakeLists.txt b/mlir/include/mlir/Conversion/CMakeLists.txt
index 9f76ab659215e..0a19b88e29dcb 100644
--- a/mlir/include/mlir/Conversion/CMakeLists.txt
+++ b/mlir/include/mlir/Conversion/CMakeLists.txt
@@ -4,6 +4,7 @@ mlir_tablegen(Passes.h.inc -gen-pass-decls -name Conversion)
 mlir_tablegen(Passes.capi.h.inc -gen-pass-capi-header --prefix Conversion)
 mlir_tablegen(Passes.capi.cpp.inc -gen-pass-capi-impl --prefix Conversion)
 add_public_tablegen_target(MLIRConversionPassIncGen)
+add_dependencies(mlir-generic-headers MLIRConversionPassIncGen)
 
 add_mlir_doc(Passes ConversionPasses ./ -gen-pass-doc)
 
diff --git a/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt
index ed074c205a551..e19e72e8e6033 100644
--- a/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt
@@ -4,9 +4,9 @@ add_mlir_doc(AMDGPU AMDGPU Dialects/ -gen-dialect-doc)
 set(LLVM_TARGET_DEFINITIONS AMDGPU.td)
 mlir_tablegen(AMDGPUEnums.h.inc -gen-enum-decls)
 mlir_tablegen(AMDGPUEnums.cpp.inc -gen-enum-defs)
-add_public_tablegen_target(MLIRAMDGPUEnumsGen)
+add_mlir_tablegen_target(MLIRAMDGPUEnumsGen)
 
 set(LLVM_TARGET_DEFINITIONS AMDGPU.td)
 mlir_tablegen(AMDGPUAttributes.h.inc -gen-attrdef-decls -attrdefs-dialect=amdgpu)
 mlir_tablegen(AMDGPUAttributes.cpp.inc -gen-attrdef-defs -attrdefs-dialect=amdgpu)
-add_public_tablegen_target(MLIRAMDGPUAttributesIncGen)
+add_mlir_tablegen_target(MLIRAMDGPUAttributesIncGen)
diff --git a/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt
index 8880989f4fed4..4e3b2f2084b74 100644
--- a/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt
@@ -1,6 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name AMDGPU)
-add_public_tablegen_target(MLIRAMDGPUTransformsIncGen)
-add_dependencies(mlir-headers MLIRAMDGPUTransformsIncGen)
+add_mlir_tablegen_target(MLIRAMDGPUTransformsIncGen)
 
 add_mlir_doc(Passes AMDGPUPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Affine/CMakeLists.txt b/mlir/include/mlir/Dialect/Affine/CMakeLists.txt
index fe1b372f6e03d..2327f4ad65ef9 100644
--- a/mlir/include/mlir/Dialect/Affine/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Affine/CMakeLists.txt
@@ -3,6 +3,6 @@ add_subdirectory(TransformOps)
 
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Affine)
-add_public_tablegen_target(MLIRAffinePassIncGen)
+add_mlir_tablegen_target(MLIRAffinePassIncGen)
 
 add_mlir_doc(Passes AffinePasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt
index c743f5c0766ba..466a4b74dbb5d 100644
--- a/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS AffineTransformOps.td)
 mlir_tablegen(AffineTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(AffineTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRAffineTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRAffineTransformOpsIncGen)
 
 add_mlir_doc(AffineTransformOps AffineLoopTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt
index 3f39e403adf12..dcadcd9cb39b3 100644
--- a/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt
@@ -1,5 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Arith)
-add_public_tablegen_target(MLIRArithTransformsIncGen)
+add_mlir_tablegen_target(MLIRArithTransformsIncGen)
 
 add_mlir_doc(Passes ArithPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt
index 3de3ec3f3a0e8..07840a9a771e0 100644
--- a/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt
@@ -3,6 +3,6 @@ add_mlir_doc(ArmNeon ArmNeon Dialects/ -gen-dialect-doc -dialect=arm_neon)
 
 set(LLVM_TARGET_DEFINITIONS ArmNeon.td)
 mlir_tablegen(ArmNeonConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmNeonConversionsIncGen)
+add_mlir_tablegen_target(MLIRArmNeonConversionsIncGen)
 
 add_subdirectory(TransformOps)
diff --git a/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt
index b8bc72a2bb734..8e55de7980147 100644
--- a/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS ArmNeonVectorTransformOps.td)
 mlir_tablegen(ArmNeonVectorTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(ArmNeonVectorTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRArmNeonVectorTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRArmNeonVectorTransformOpsIncGen)
 
 add_mlir_doc(ArmNeonVectorTransformOps ArmNeonVectorTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt
index 9801d8b099e3f..1e5c37a204175 100644
--- a/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt
@@ -8,25 +8,25 @@ mlir_tablegen(ArmSMEEnums.h.inc -gen-enum-decls)
 mlir_tablegen(ArmSMEEnums.cpp.inc -gen-enum-defs)
 mlir_tablegen(ArmSMEAttrDefs.h.inc -gen-attrdef-decls -attrdefs-dialect=arm_sme)
 mlir_tablegen(ArmSMEAttrDefs.cpp.inc -gen-attrdef-defs -attrdefs-dialect=arm_sme)
-add_public_tablegen_target(MLIRArmSMEOpsIncGen)
+add_mlir_tablegen_target(MLIRArmSMEOpsIncGen)
 
 # Generate LLVM IR Conversions
 set(LLVM_TARGET_DEFINITIONS ArmSMEOps.td)
 mlir_tablegen(ArmSMEOpsConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmSMEConversionsIncGen)
+add_mlir_tablegen_target(MLIRArmSMEConversionsIncGen)
 
 # Generate op interface declarations and definitions
 set(LLVM_TARGET_DEFINITIONS ArmSMEOps.td)
 mlir_tablegen(ArmSMEOpInterfaces.h.inc -gen-op-interface-decls)
 mlir_tablegen(ArmSMEOpInterfaces.cpp.inc -gen-op-interface-defs)
-add_public_tablegen_target(MLIRArmSMEOpInterfaces)
+add_mlir_tablegen_target(MLIRArmSMEOpInterfaces)
 
 # Generate declarations and definitions of ArmSME intrinsic Ops
 set(LLVM_TARGET_DEFINITIONS ArmSMEIntrinsicOps.td)
 mlir_tablegen(ArmSMEIntrinsicOps.h.inc -gen-op-decls)
 mlir_tablegen(ArmSMEIntrinsicOps.cpp.inc -gen-op-defs)
 mlir_tablegen(ArmSMEIntrinsicConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmSMEIntrinsicOpsIncGen)
+add_mlir_tablegen_target(MLIRArmSMEIntrinsicOpsIncGen)
 
 # Generate the docs
 add_mlir_doc(ArmSMEOps ArmSMEOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt
index 509f3fc2519cb..90e69c202b532 100644
--- a/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt
@@ -2,7 +2,6 @@ set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name ArmSME)
 mlir_tablegen(PassesEnums.h.inc -gen-enum-decls)
 mlir_tablegen(PassesEnums.cpp.inc -gen-enum-defs)
-add_public_tablegen_target(MLIRArmSMETransformsIncGen)
-add_dependencies(mlir-headers MLIRArmSMETransformsIncGen)
+add_mlir_tablegen_target(MLIRArmSMETransformsIncGen)
 
 add_mlir_doc(Passes ArmSMEPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
index 06595b7088a1e..f8d06951e7270 100644
--- a/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
@@ -3,4 +3,4 @@ add_mlir_doc(ArmSVE ArmSVE Dialects/ -gen-dialect-doc -dialect=arm_sve)
 
 set(LLVM_TARGET_DEFINITIONS ArmSVE.td)
 mlir_tablegen(ArmSVEConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmSVEConversionsIncGen)
+add_mlir_tablegen_target(MLIRArmSVEConversionsIncGen)
diff --git a/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt
index ce8d8fea7f188..e279f37b2019b 100644
--- a/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS ArmSVEVectorTransformOps.td)
 mlir_tablegen(ArmSVEVectorTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(ArmSVEVectorTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRArmSVEVectorTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRArmSVEVectorTransformOpsIncGen)
 
 add_mlir_doc(ArmSVEVectorTransformOps ArmSVEVectorTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt
index 7226642daf861..a2b8060a6561f 100644
--- a/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt
@@ -1,5 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name ArmSVE)
-add_public_tablegen_target(MLIRArmSVEPassIncGen)
+add_mlir_tablegen_target(MLIRArmSVEPassIncGen)
 
 add_mlir_doc(Passes ArmSVEPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Async/CMakeLists.txt b/mlir/include/mlir/Dialect/Async/CMakeLists.txt
index cabd5d3087cf3..f2642d6462831 100644
--- a/mlir/include/mlir/Dialect/Async/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Async/CMakeLists.txt
@@ -4,6 +4,6 @@ set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Async)
 mlir_tablegen(Passes.capi.h.inc -gen-pass-capi-header --prefix Async)
 mlir_tablegen(Passes.capi.cpp.inc -gen-pass-capi-impl --prefix Async)
-add_public_tablegen_target(MLIRAsyncPassIncGen)
+add_mlir_tablegen_target(MLIRAsyncPassIncGen)
 
 add_mlir_doc(Passes AsyncPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt
index 3ead52148c208..8f470dffcd607 100644
--- a/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt
@@ -8,11 +8,9 @@ add_mlir_interface(BufferViewFlowOpInterface)
 set(LLVM_TARGET_DEFINITIONS BufferizationEnums.td)
 mlir_tablegen(BufferizationEnums.h.inc -gen-enum-decls)
 mlir_tablegen(BufferizationEnums.cpp.inc -gen-enum-defs)
-add_public_tablegen_target(MLIRBufferizationEnumsIncGen)
-add_dependencies(mlir-headers MLIRBufferizationEnumsIncGen)
+add_mlir_tablegen_target(MLIRBufferizationEnumsIncGen)
 
 set(LLVM_TARGET_DEFINITIONS BufferizationTypeInterfaces.td)
 mlir_tablegen(BufferizationTypeInterfaces.h.inc -gen-type-interface-decls)
 mlir_tablegen(BufferizationTypeInterfaces.cpp.inc -gen-type-interface-defs)
-add_public_tablegen_target(MLIRBufferizationTypeInterfacesIncGen)
-add_dependencies(mlir-headers MLIRBufferizationTypeInterfacesIncGen)
+add_mlir_tablegen_target(MLIRBufferizationTypeInterfacesIncGen)
diff --git a/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt
index 95276e3e5e0d0..684c4295cd4f3 100644
--- a/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS BufferizationTransformOps.td)
 mlir_tablegen(BufferizationTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(BufferizationTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRBufferizationTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRBufferizationTransformOpsIncGen)
 
 add_mlir_doc(BufferizationTransformOps BufferizationTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt
index dcae4b8f26b89..bd6ea9a1cb29d 100644
--- a/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt
@@ -1,6 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Bufferization)
-add_public_tablegen_target(MLIRBufferizationPassIncGen)
-add_dependencies(mlir-headers MLIRBufferizationPassIncGen)
+add_mlir_tablegen_target(MLIRBufferizationPassIncGen)
 
 add_mlir_doc(Passes BufferizationPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt
index 837664e25b3c2..6e47ddade9652 100644
--- a/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt
@@ -6,4 +6,4 @@ mlir_tablegen(ComplexEnums.h.inc -gen-enum-decls)
 mlir_tablegen(ComplexEnums.cpp.inc -gen-enum-defs)
 mlir_tablegen(ComplexAttributes.h.inc -gen-attrdef-decls)
 mlir_tablegen(ComplexAttributes.cpp.inc -gen-attrdef-defs)
-add_public_tablegen_target(MLIRComplexAttributesIncGen)
+add_mlir_tablegen_target(MLIRComplexAttributesIncGen)
diff --git a/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt b/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt
index 4f8382e8e6e6b..74b1c541edaeb 100644
--- a/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt
@@ -6,5 +6,4 @@ add_mlir_doc(DLTIAttrs DLTIDialect Dialects/ -gen-dialect-doc)
 set(LLVM_TARGET_DEFINITIONS DLTIAttrs.td)
 mlir_tablegen(DLTIAttrs.h.inc -gen-attrdef-decls -attrdefs-dialect=dlti)
 mlir_tablegen(DLTIAttrs.cpp.inc -gen-attrdef-defs -attrdefs-dialect=dlti)
-add_public_tablegen_target(MLIRDLTIAttrsIncGen)
-add_dependencies(mlir-headers MLIRDLTIAttrsIncGen)
+add_mlir_tablegen_target(MLIRDLTIAttrsIncGen)
diff --git a/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt
index 1188d1a9b24d6..57faeca06794c 100644
--- a/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS DLTITransformOps.td)
 mlir_tablegen(DLTITransformOps.h.inc -gen-op-decls)
 mlir_tablegen(DLTITransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRDLTITransformOpsIncGen)
+add_mlir_tablegen_target(MLIRDLTITransformOpsIncGen)
 
 add_mlir_doc(DLTITransformOps DLTITransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt
index 299cee76cb1b4..c417a4ed3599a 100644
--- a/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt
@@ -12,4 +12,4 @@ mlir_tablegen(EmitCEnums.h.inc -gen-enum-decls)
 mlir_tablegen(EmitCEnums.cpp.inc -gen-enum-defs)
 mlir_tablegen(EmitCAttributes.h.inc -gen-attrdef-decls)
 mlir_tablegen(EmitCAttributes.cpp.inc -gen-attrdef-defs)
-add_public_tablegen_target(MLIREmitCAttributesIncGen)
+add_mlir_tablegen_target(MLIREmitCAttributesIncGen)
diff --git a/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt
index 0b507d75fa07a..d112be898c355 100644
--- a/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt
@@ -1,5 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name EmitC)
-add_public_tablegen_target(MLIREmitCTransformsIncGen)
+add_mlir_tablegen_target(MLIREmitCTransformsIncGen)
 
 add_mlir_doc(Passes EmitCPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt
index 08a6123dd2006..b19806f6007aa 100644
--- a/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt
@@ -3,6 +3,6 @@ mlir_tablegen(FuncOps.h.inc -gen-op-decls)
 mlir_tablegen(FuncOps.cpp.inc -gen-op-defs)
 mlir_tablegen(FuncOpsDialect.h.inc -gen-dialect-decls)
 mlir_tablegen(FuncOpsDialect.cpp.inc -gen-dialect-defs)
-add_public_tablegen_target(MLIRFuncOpsIncGen)
+add_mlir_tablegen_target(MLIRFuncOpsIncGen)
 
 add_mlir_doc(FuncOps FuncOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt
index 7ac6504f3dc2c..6098acbed2151 100644
--- a/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS FuncTransformOps.td)
 mlir_tablegen(FuncTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(FuncTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRFuncTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRFuncTransformOpsIncGen)
 
 add_mlir_doc(FuncTransformOps FuncTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Func/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/Func/Transforms/CMakeLists.txt
index 33c72e3c075cc..8a40eb0aa51f...
[truncated]

@llvmbot
Copy link
Member

llvmbot commented Aug 26, 2025

@llvm/pr-subscribers-mlir-memref

Author: Bryan Tan (Technius)

Changes

This PR includes fixes for two build issues related to MLIR_LINK_MLIR_DYLIB:

  • When MLIR_LINK_MLIR_DYLIB is on but LLVM_BUILD_LLVM_DYLIB is off, the MLIR shared library target is not actually added/built, causing CMake dependency propagation issues and linker errors.
  • When a large number of parallel jobs is used with MLIR_LINK_MLIR_DYLIB enabled, some targets like mlir-opt fail to compile because they depend on a header that requires a tablegenned header file, but the corresponding IncGen targets are not dependencies of the mlir-headers or mlir-generic-headers targets.

See the commit messages for more information.


Patch is 78.22 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/155474.diff

86 Files Affected:

  • (modified) mlir/CMakeLists.txt (+14-2)
  • (modified) mlir/cmake/modules/AddMLIR.cmake (+7-2)
  • (modified) mlir/include/mlir/Conversion/CMakeLists.txt (+1)
  • (modified) mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt (+2-2)
  • (modified) mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Affine/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt (+4-4)
  • (modified) mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Async/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt (+2-4)
  • (modified) mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/DLTI/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Func/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/GPU/IR/CMakeLists.txt (+6-6)
  • (modified) mlir/include/mlir/Dialect/GPU/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/GPU/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/CMakeLists.txt (+12-14)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Linalg/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Linalg/IR/CMakeLists.txt (+5-10)
  • (modified) mlir/include/mlir/Dialect/Linalg/TransformOps/CMakeLists.txt (+3-3)
  • (modified) mlir/include/mlir/Dialect/MLProgram/IR/CMakeLists.txt (+2-4)
  • (modified) mlir/include/mlir/Dialect/MLProgram/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/MPI/IR/CMakeLists.txt (+3-3)
  • (modified) mlir/include/mlir/Dialect/Math/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/MemRef/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/MemRef/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/NVGPU/IR/CMakeLists.txt (+4-4)
  • (modified) mlir/include/mlir/Dialect/NVGPU/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/NVGPU/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/OpenACC/CMakeLists.txt (+4-7)
  • (modified) mlir/include/mlir/Dialect/OpenACC/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/OpenMP/CMakeLists.txt (+2-2)
  • (modified) mlir/include/mlir/Dialect/Ptr/IR/CMakeLists.txt (+3-3)
  • (modified) mlir/include/mlir/Dialect/Quant/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Quant/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/SCF/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/SCF/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/SMT/IR/CMakeLists.txt (+2-4)
  • (modified) mlir/include/mlir/Dialect/SPIRV/IR/CMakeLists.txt (+6-12)
  • (modified) mlir/include/mlir/Dialect/SPIRV/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Shape/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Shard/IR/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Shard/Interfaces/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Shard/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/SparseTensor/IR/CMakeLists.txt (+3-4)
  • (modified) mlir/include/mlir/Dialect/SparseTensor/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/SparseTensor/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Tensor/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Tensor/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Tosa/IR/CMakeLists.txt (+4-4)
  • (modified) mlir/include/mlir/Dialect/Tosa/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Transform/DebugExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/IR/CMakeLists.txt (+4-8)
  • (modified) mlir/include/mlir/Dialect/Transform/IRDLExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/Interfaces/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Transform/LoopExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/PDLExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Transform/TuneExtension/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/UB/IR/CMakeLists.txt (+2-2)
  • (modified) mlir/include/mlir/Dialect/Utils/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/Dialect/Vector/TransformOps/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/Vector/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/WasmSSA/IR/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Dialect/XeGPU/IR/CMakeLists.txt (+3-6)
  • (modified) mlir/include/mlir/Dialect/XeGPU/Transforms/CMakeLists.txt (+1-2)
  • (modified) mlir/include/mlir/IR/CMakeLists.txt (+10)
  • (modified) mlir/include/mlir/Reducer/CMakeLists.txt (+1)
  • (modified) mlir/include/mlir/Target/LLVMIR/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/include/mlir/Transforms/CMakeLists.txt (+1-1)
  • (modified) mlir/tools/mlir-shlib/CMakeLists.txt (+2-1)
diff --git a/mlir/CMakeLists.txt b/mlir/CMakeLists.txt
index f58a4c6f506ec..371740292323a 100644
--- a/mlir/CMakeLists.txt
+++ b/mlir/CMakeLists.txt
@@ -172,8 +172,11 @@ set(MLIR_INSTALL_AGGREGATE_OBJECTS 1 CACHE BOOL
 
 set(MLIR_BUILD_MLIR_C_DYLIB 0 CACHE BOOL "Builds libMLIR-C shared library.")
 
-set(MLIR_LINK_MLIR_DYLIB ${LLVM_LINK_LLVM_DYLIB} CACHE BOOL
-    "Link tools against libMLIR.so")
+set(MLIR_BUILD_MLIR_DYLIB 0 CACHE BOOL "Builds the libMLIR shared library")
+set(MLIR_LINK_MLIR_DYLIB ${LLVM_LINK_LLVM_DYLIB} CACHE BOOL "Link tools against libMLIR.so")
+if (MLIR_LINK_MLIR_DYLIB)
+  set(MLIR_BUILD_MLIR_DYLIB 1)
+endif()
 
 configure_file(
   ${MLIR_MAIN_INCLUDE_DIR}/mlir/Config/mlir-config.h.cmake
@@ -235,6 +238,15 @@ set(MLIR_PDLL_TABLEGEN_TARGET "${MLIR_PDLL_TABLEGEN_TARGET}" CACHE INTERNAL "")
 set(MLIR_SRC_SHARDER_TABLEGEN_EXE "${MLIR_SRC_SHARDER_TABLEGEN_EXE}" CACHE INTERNAL "")
 set(MLIR_SRC_SHARDER_TABLEGEN_TARGET "${MLIR_SRC_SHARDER_TABLEGEN_TARGET}" CACHE INTERNAL "")
 
+# Add MLIR dylib target here, as calls to mlir_target_link_libraries (used by
+# individual libs below) assume that such a target may exist,
+# but we cannot define the actual dylib until after all individual libs
+# are defined.
+if (MLIR_LINK_MLIR_DYLIB)
+  add_library(MLIRDylib INTERFACE)
+  add_mlir_library_install(MLIRDylib)
+endif()
+
 add_subdirectory(include/mlir)
 add_subdirectory(lib)
 # C API needs all dialects for registration, but should be built before tests.
diff --git a/mlir/cmake/modules/AddMLIR.cmake b/mlir/cmake/modules/AddMLIR.cmake
index 38839679ef8b1..170af1878a321 100644
--- a/mlir/cmake/modules/AddMLIR.cmake
+++ b/mlir/cmake/modules/AddMLIR.cmake
@@ -203,6 +203,11 @@ function(add_mlir_interface interface)
   add_dependencies(mlir-generic-headers MLIR${interface}IncGen)
 endfunction()
 
+# Add a tablegen target that generates headers in the include directory
+macro(add_mlir_tablegen_target target)
+  add_public_tablegen_target(${target})
+  add_dependencies(mlir-headers ${target})
+endmacro()
 
 # Generate Documentation
 function(add_mlir_doc doc_filename output_file output_directory command)
@@ -354,7 +359,7 @@ function(add_mlir_library name)
     # Yes, because the target "obj.${name}" is referenced.
     set(NEEDS_OBJECT_LIB ON)
   endif ()
-  if(LLVM_BUILD_LLVM_DYLIB AND NOT ARG_EXCLUDE_FROM_LIBMLIR AND NOT XCODE)
+  if(MLIR_BUILD_MLIR_DYLIB AND NOT ARG_EXCLUDE_FROM_LIBMLIR AND NOT XCODE)
     # Yes, because in addition to the shared library, the object files are
     # needed for linking into libMLIR.so (see mlir/tools/mlir-shlib/CMakeLists.txt).
     # For XCode, -force_load is used instead.
@@ -745,7 +750,7 @@ function(mlir_target_link_libraries target type)
   endif()
 
   if (MLIR_LINK_MLIR_DYLIB)
-    target_link_libraries(${target} ${type} MLIR)
+    target_link_libraries(${target} ${type} MLIRDylib)
   else()
     target_link_libraries(${target} ${type} ${ARGN})
   endif()
diff --git a/mlir/include/mlir/Conversion/CMakeLists.txt b/mlir/include/mlir/Conversion/CMakeLists.txt
index 9f76ab659215e..0a19b88e29dcb 100644
--- a/mlir/include/mlir/Conversion/CMakeLists.txt
+++ b/mlir/include/mlir/Conversion/CMakeLists.txt
@@ -4,6 +4,7 @@ mlir_tablegen(Passes.h.inc -gen-pass-decls -name Conversion)
 mlir_tablegen(Passes.capi.h.inc -gen-pass-capi-header --prefix Conversion)
 mlir_tablegen(Passes.capi.cpp.inc -gen-pass-capi-impl --prefix Conversion)
 add_public_tablegen_target(MLIRConversionPassIncGen)
+add_dependencies(mlir-generic-headers MLIRConversionPassIncGen)
 
 add_mlir_doc(Passes ConversionPasses ./ -gen-pass-doc)
 
diff --git a/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt
index ed074c205a551..e19e72e8e6033 100644
--- a/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/AMDGPU/IR/CMakeLists.txt
@@ -4,9 +4,9 @@ add_mlir_doc(AMDGPU AMDGPU Dialects/ -gen-dialect-doc)
 set(LLVM_TARGET_DEFINITIONS AMDGPU.td)
 mlir_tablegen(AMDGPUEnums.h.inc -gen-enum-decls)
 mlir_tablegen(AMDGPUEnums.cpp.inc -gen-enum-defs)
-add_public_tablegen_target(MLIRAMDGPUEnumsGen)
+add_mlir_tablegen_target(MLIRAMDGPUEnumsGen)
 
 set(LLVM_TARGET_DEFINITIONS AMDGPU.td)
 mlir_tablegen(AMDGPUAttributes.h.inc -gen-attrdef-decls -attrdefs-dialect=amdgpu)
 mlir_tablegen(AMDGPUAttributes.cpp.inc -gen-attrdef-defs -attrdefs-dialect=amdgpu)
-add_public_tablegen_target(MLIRAMDGPUAttributesIncGen)
+add_mlir_tablegen_target(MLIRAMDGPUAttributesIncGen)
diff --git a/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt
index 8880989f4fed4..4e3b2f2084b74 100644
--- a/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/AMDGPU/Transforms/CMakeLists.txt
@@ -1,6 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name AMDGPU)
-add_public_tablegen_target(MLIRAMDGPUTransformsIncGen)
-add_dependencies(mlir-headers MLIRAMDGPUTransformsIncGen)
+add_mlir_tablegen_target(MLIRAMDGPUTransformsIncGen)
 
 add_mlir_doc(Passes AMDGPUPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Affine/CMakeLists.txt b/mlir/include/mlir/Dialect/Affine/CMakeLists.txt
index fe1b372f6e03d..2327f4ad65ef9 100644
--- a/mlir/include/mlir/Dialect/Affine/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Affine/CMakeLists.txt
@@ -3,6 +3,6 @@ add_subdirectory(TransformOps)
 
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Affine)
-add_public_tablegen_target(MLIRAffinePassIncGen)
+add_mlir_tablegen_target(MLIRAffinePassIncGen)
 
 add_mlir_doc(Passes AffinePasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt
index c743f5c0766ba..466a4b74dbb5d 100644
--- a/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Affine/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS AffineTransformOps.td)
 mlir_tablegen(AffineTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(AffineTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRAffineTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRAffineTransformOpsIncGen)
 
 add_mlir_doc(AffineTransformOps AffineLoopTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt
index 3f39e403adf12..dcadcd9cb39b3 100644
--- a/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Arith/Transforms/CMakeLists.txt
@@ -1,5 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Arith)
-add_public_tablegen_target(MLIRArithTransformsIncGen)
+add_mlir_tablegen_target(MLIRArithTransformsIncGen)
 
 add_mlir_doc(Passes ArithPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt
index 3de3ec3f3a0e8..07840a9a771e0 100644
--- a/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmNeon/CMakeLists.txt
@@ -3,6 +3,6 @@ add_mlir_doc(ArmNeon ArmNeon Dialects/ -gen-dialect-doc -dialect=arm_neon)
 
 set(LLVM_TARGET_DEFINITIONS ArmNeon.td)
 mlir_tablegen(ArmNeonConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmNeonConversionsIncGen)
+add_mlir_tablegen_target(MLIRArmNeonConversionsIncGen)
 
 add_subdirectory(TransformOps)
diff --git a/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt
index b8bc72a2bb734..8e55de7980147 100644
--- a/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmNeon/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS ArmNeonVectorTransformOps.td)
 mlir_tablegen(ArmNeonVectorTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(ArmNeonVectorTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRArmNeonVectorTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRArmNeonVectorTransformOpsIncGen)
 
 add_mlir_doc(ArmNeonVectorTransformOps ArmNeonVectorTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt
index 9801d8b099e3f..1e5c37a204175 100644
--- a/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSME/IR/CMakeLists.txt
@@ -8,25 +8,25 @@ mlir_tablegen(ArmSMEEnums.h.inc -gen-enum-decls)
 mlir_tablegen(ArmSMEEnums.cpp.inc -gen-enum-defs)
 mlir_tablegen(ArmSMEAttrDefs.h.inc -gen-attrdef-decls -attrdefs-dialect=arm_sme)
 mlir_tablegen(ArmSMEAttrDefs.cpp.inc -gen-attrdef-defs -attrdefs-dialect=arm_sme)
-add_public_tablegen_target(MLIRArmSMEOpsIncGen)
+add_mlir_tablegen_target(MLIRArmSMEOpsIncGen)
 
 # Generate LLVM IR Conversions
 set(LLVM_TARGET_DEFINITIONS ArmSMEOps.td)
 mlir_tablegen(ArmSMEOpsConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmSMEConversionsIncGen)
+add_mlir_tablegen_target(MLIRArmSMEConversionsIncGen)
 
 # Generate op interface declarations and definitions
 set(LLVM_TARGET_DEFINITIONS ArmSMEOps.td)
 mlir_tablegen(ArmSMEOpInterfaces.h.inc -gen-op-interface-decls)
 mlir_tablegen(ArmSMEOpInterfaces.cpp.inc -gen-op-interface-defs)
-add_public_tablegen_target(MLIRArmSMEOpInterfaces)
+add_mlir_tablegen_target(MLIRArmSMEOpInterfaces)
 
 # Generate declarations and definitions of ArmSME intrinsic Ops
 set(LLVM_TARGET_DEFINITIONS ArmSMEIntrinsicOps.td)
 mlir_tablegen(ArmSMEIntrinsicOps.h.inc -gen-op-decls)
 mlir_tablegen(ArmSMEIntrinsicOps.cpp.inc -gen-op-defs)
 mlir_tablegen(ArmSMEIntrinsicConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmSMEIntrinsicOpsIncGen)
+add_mlir_tablegen_target(MLIRArmSMEIntrinsicOpsIncGen)
 
 # Generate the docs
 add_mlir_doc(ArmSMEOps ArmSMEOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt
index 509f3fc2519cb..90e69c202b532 100644
--- a/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSME/Transforms/CMakeLists.txt
@@ -2,7 +2,6 @@ set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name ArmSME)
 mlir_tablegen(PassesEnums.h.inc -gen-enum-decls)
 mlir_tablegen(PassesEnums.cpp.inc -gen-enum-defs)
-add_public_tablegen_target(MLIRArmSMETransformsIncGen)
-add_dependencies(mlir-headers MLIRArmSMETransformsIncGen)
+add_mlir_tablegen_target(MLIRArmSMETransformsIncGen)
 
 add_mlir_doc(Passes ArmSMEPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
index 06595b7088a1e..f8d06951e7270 100644
--- a/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSVE/IR/CMakeLists.txt
@@ -3,4 +3,4 @@ add_mlir_doc(ArmSVE ArmSVE Dialects/ -gen-dialect-doc -dialect=arm_sve)
 
 set(LLVM_TARGET_DEFINITIONS ArmSVE.td)
 mlir_tablegen(ArmSVEConversions.inc -gen-llvmir-conversions)
-add_public_tablegen_target(MLIRArmSVEConversionsIncGen)
+add_mlir_tablegen_target(MLIRArmSVEConversionsIncGen)
diff --git a/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt
index ce8d8fea7f188..e279f37b2019b 100644
--- a/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSVE/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS ArmSVEVectorTransformOps.td)
 mlir_tablegen(ArmSVEVectorTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(ArmSVEVectorTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRArmSVEVectorTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRArmSVEVectorTransformOpsIncGen)
 
 add_mlir_doc(ArmSVEVectorTransformOps ArmSVEVectorTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt
index 7226642daf861..a2b8060a6561f 100644
--- a/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/ArmSVE/Transforms/CMakeLists.txt
@@ -1,5 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name ArmSVE)
-add_public_tablegen_target(MLIRArmSVEPassIncGen)
+add_mlir_tablegen_target(MLIRArmSVEPassIncGen)
 
 add_mlir_doc(Passes ArmSVEPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Async/CMakeLists.txt b/mlir/include/mlir/Dialect/Async/CMakeLists.txt
index cabd5d3087cf3..f2642d6462831 100644
--- a/mlir/include/mlir/Dialect/Async/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Async/CMakeLists.txt
@@ -4,6 +4,6 @@ set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Async)
 mlir_tablegen(Passes.capi.h.inc -gen-pass-capi-header --prefix Async)
 mlir_tablegen(Passes.capi.cpp.inc -gen-pass-capi-impl --prefix Async)
-add_public_tablegen_target(MLIRAsyncPassIncGen)
+add_mlir_tablegen_target(MLIRAsyncPassIncGen)
 
 add_mlir_doc(Passes AsyncPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt
index 3ead52148c208..8f470dffcd607 100644
--- a/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Bufferization/IR/CMakeLists.txt
@@ -8,11 +8,9 @@ add_mlir_interface(BufferViewFlowOpInterface)
 set(LLVM_TARGET_DEFINITIONS BufferizationEnums.td)
 mlir_tablegen(BufferizationEnums.h.inc -gen-enum-decls)
 mlir_tablegen(BufferizationEnums.cpp.inc -gen-enum-defs)
-add_public_tablegen_target(MLIRBufferizationEnumsIncGen)
-add_dependencies(mlir-headers MLIRBufferizationEnumsIncGen)
+add_mlir_tablegen_target(MLIRBufferizationEnumsIncGen)
 
 set(LLVM_TARGET_DEFINITIONS BufferizationTypeInterfaces.td)
 mlir_tablegen(BufferizationTypeInterfaces.h.inc -gen-type-interface-decls)
 mlir_tablegen(BufferizationTypeInterfaces.cpp.inc -gen-type-interface-defs)
-add_public_tablegen_target(MLIRBufferizationTypeInterfacesIncGen)
-add_dependencies(mlir-headers MLIRBufferizationTypeInterfacesIncGen)
+add_mlir_tablegen_target(MLIRBufferizationTypeInterfacesIncGen)
diff --git a/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt
index 95276e3e5e0d0..684c4295cd4f3 100644
--- a/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Bufferization/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS BufferizationTransformOps.td)
 mlir_tablegen(BufferizationTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(BufferizationTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRBufferizationTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRBufferizationTransformOpsIncGen)
 
 add_mlir_doc(BufferizationTransformOps BufferizationTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt
index dcae4b8f26b89..bd6ea9a1cb29d 100644
--- a/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Bufferization/Transforms/CMakeLists.txt
@@ -1,6 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name Bufferization)
-add_public_tablegen_target(MLIRBufferizationPassIncGen)
-add_dependencies(mlir-headers MLIRBufferizationPassIncGen)
+add_mlir_tablegen_target(MLIRBufferizationPassIncGen)
 
 add_mlir_doc(Passes BufferizationPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt
index 837664e25b3c2..6e47ddade9652 100644
--- a/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Complex/IR/CMakeLists.txt
@@ -6,4 +6,4 @@ mlir_tablegen(ComplexEnums.h.inc -gen-enum-decls)
 mlir_tablegen(ComplexEnums.cpp.inc -gen-enum-defs)
 mlir_tablegen(ComplexAttributes.h.inc -gen-attrdef-decls)
 mlir_tablegen(ComplexAttributes.cpp.inc -gen-attrdef-defs)
-add_public_tablegen_target(MLIRComplexAttributesIncGen)
+add_mlir_tablegen_target(MLIRComplexAttributesIncGen)
diff --git a/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt b/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt
index 4f8382e8e6e6b..74b1c541edaeb 100644
--- a/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/DLTI/CMakeLists.txt
@@ -6,5 +6,4 @@ add_mlir_doc(DLTIAttrs DLTIDialect Dialects/ -gen-dialect-doc)
 set(LLVM_TARGET_DEFINITIONS DLTIAttrs.td)
 mlir_tablegen(DLTIAttrs.h.inc -gen-attrdef-decls -attrdefs-dialect=dlti)
 mlir_tablegen(DLTIAttrs.cpp.inc -gen-attrdef-defs -attrdefs-dialect=dlti)
-add_public_tablegen_target(MLIRDLTIAttrsIncGen)
-add_dependencies(mlir-headers MLIRDLTIAttrsIncGen)
+add_mlir_tablegen_target(MLIRDLTIAttrsIncGen)
diff --git a/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt
index 1188d1a9b24d6..57faeca06794c 100644
--- a/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/DLTI/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS DLTITransformOps.td)
 mlir_tablegen(DLTITransformOps.h.inc -gen-op-decls)
 mlir_tablegen(DLTITransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRDLTITransformOpsIncGen)
+add_mlir_tablegen_target(MLIRDLTITransformOpsIncGen)
 
 add_mlir_doc(DLTITransformOps DLTITransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt
index 299cee76cb1b4..c417a4ed3599a 100644
--- a/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/EmitC/IR/CMakeLists.txt
@@ -12,4 +12,4 @@ mlir_tablegen(EmitCEnums.h.inc -gen-enum-decls)
 mlir_tablegen(EmitCEnums.cpp.inc -gen-enum-defs)
 mlir_tablegen(EmitCAttributes.h.inc -gen-attrdef-decls)
 mlir_tablegen(EmitCAttributes.cpp.inc -gen-attrdef-defs)
-add_public_tablegen_target(MLIREmitCAttributesIncGen)
+add_mlir_tablegen_target(MLIREmitCAttributesIncGen)
diff --git a/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt
index 0b507d75fa07a..d112be898c355 100644
--- a/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/EmitC/Transforms/CMakeLists.txt
@@ -1,5 +1,5 @@
 set(LLVM_TARGET_DEFINITIONS Passes.td)
 mlir_tablegen(Passes.h.inc -gen-pass-decls -name EmitC)
-add_public_tablegen_target(MLIREmitCTransformsIncGen)
+add_mlir_tablegen_target(MLIREmitCTransformsIncGen)
 
 add_mlir_doc(Passes EmitCPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt
index 08a6123dd2006..b19806f6007aa 100644
--- a/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Func/IR/CMakeLists.txt
@@ -3,6 +3,6 @@ mlir_tablegen(FuncOps.h.inc -gen-op-decls)
 mlir_tablegen(FuncOps.cpp.inc -gen-op-defs)
 mlir_tablegen(FuncOpsDialect.h.inc -gen-dialect-decls)
 mlir_tablegen(FuncOpsDialect.cpp.inc -gen-dialect-defs)
-add_public_tablegen_target(MLIRFuncOpsIncGen)
+add_mlir_tablegen_target(MLIRFuncOpsIncGen)
 
 add_mlir_doc(FuncOps FuncOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt
index 7ac6504f3dc2c..6098acbed2151 100644
--- a/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Func/TransformOps/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(LLVM_TARGET_DEFINITIONS FuncTransformOps.td)
 mlir_tablegen(FuncTransformOps.h.inc -gen-op-decls)
 mlir_tablegen(FuncTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRFuncTransformOpsIncGen)
+add_mlir_tablegen_target(MLIRFuncTransformOpsIncGen)
 
 add_mlir_doc(FuncTransformOps FuncTransformOps Dialects/ -gen-op-doc)
diff --git a/mlir/include/mlir/Dialect/Func/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/Func/Transforms/CMakeLists.txt
index 33c72e3c075cc..8a40eb0aa51f...
[truncated]

@joker-eph
Copy link
Collaborator

Thanks for the contribution!

See the commit messages for more information.

This information isn't propagated: in LLVM we're looking at a PR as a single commit (it'll be squashed when merging), the PR description is what will become the commit message and it needs to be standalone.

If you have 2 independent commits, they need to be separate PRs.

This commit introduces a new CMake macro `add_mlir_tablegen_target` to
AddMLIR.cmake, which can be used in place of `add_public_tablegen_target` to
ensure that any tablegenned headers are generated _before_ building any
tools such as mlir-opt etc. that may use those headers. Otherwise, spurious
build failures may occur, particularly when using a high number of parallel
jobs.

Most uses of `add_public_tablegen_target` in the dialects have been refactored
to use `add_mlir_tablegen_target`.
@Technius Technius force-pushed the fix-mlir-dylib-deps branch from ccc790f to 8742891 Compare August 26, 2025 20:14
@Technius
Copy link
Contributor Author

Thanks for the heads-up. I split off the MLIR_BUILD_MLIR_DYLIB change into the PR (#155488) and have updated the description of this PR to only reference the tablegen macro changes.

@joker-eph joker-eph changed the title [mlir] Fix build failures related to MLIR_LINK_MLIR_DYLIB [mlir] Consistently add TableGen generated files as deps to mlir-headers/mlir-generic-headers CMake targets Aug 26, 2025

set(LLVM_TARGET_DEFINITIONS TensorEncoding.td)
mlir_tablegen(TensorEncInterfaces.h.inc -gen-attr-interface-decls)
mlir_tablegen(TensorEncInterfaces.cpp.inc -gen-attr-interface-defs)
add_public_tablegen_target(MLIRTensorEncodingIncGen)
add_dependencies(mlir-generic-headers MLIRTensorEncodingIncGen)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why a macro for handling mlir-headers but not one for mlir-generic-headers?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The main reason was because I couldn't think of a good name for it. And mlir-headers is used far more frequently than mlir-generic-headers.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about descriptive names:

  • add_mlir_dialect_tablegen_target
  • add_mlir_generic_tablegen_target

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I pushed an update with your suggested names, which cleans up the remaining calls quite nicely.

Copy link
Collaborator

@joker-eph joker-eph left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, LGTM on principle. One question inline.

I tweaked the title: as far as I can tell this is orthogonal to any XXX_DYLIB cmake config flag: if we fail on a target here we should be able to reproduce independently.

@Technius
Copy link
Contributor Author

I don't have write access, so I'd appreciate a maintainer merging once everything looks good.

@joker-eph joker-eph merged commit 35110b7 into llvm:main Aug 27, 2025
11 checks passed
Copy link

@Technius Congratulations on having your first Pull Request (PR) merged into the LLVM Project!

Your changes will be combined with recent changes from other authors, then tested by our build bots. If there is a problem with a build, you may receive a report in an email or a comment on this PR.

Please check whether problems have been caused by your change specifically, as the builds can include changes from many authors. It is not uncommon for your change to be included in a build that fails due to someone else's changes, or infrastructure issues.

How to do this, and the rest of the post-merge process, is covered in detail here.

If your change does cause a problem, it may be reverted, or you can revert it yourself. This is a normal part of LLVM development. You can fix your changes and open a new PR to merge them again.

If you don't get any reports, no action is required from you. Your changes are working as expected, well done!

@llvm-ci
Copy link
Collaborator

llvm-ci commented Aug 27, 2025

LLVM Buildbot has detected a new failure on builder sanitizer-x86_64-linux-fast running on sanitizer-buildbot4 while building mlir at step 2 "annotate".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/169/builds/14436

Here is the relevant piece of the build log for the reference
Step 2 (annotate) failure: 'python ../sanitizer_buildbot/sanitizers/zorg/buildbot/builders/sanitizers/buildbot_selector.py' (failure)
...
llvm-lit: /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:527: note: using lld-link: /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/lld-link
llvm-lit: /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:527: note: using ld64.lld: /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/ld64.lld
llvm-lit: /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:527: note: using wasm-ld: /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/wasm-ld
llvm-lit: /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:527: note: using ld.lld: /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/ld.lld
llvm-lit: /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:527: note: using lld-link: /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/lld-link
llvm-lit: /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:527: note: using ld64.lld: /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/ld64.lld
llvm-lit: /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:527: note: using wasm-ld: /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/wasm-ld
llvm-lit: /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/utils/lit/lit/main.py:74: note: The test suite configuration requested an individual test timeout of 0 seconds but a timeout of 900 seconds was requested on the command line. Forcing timeout to be 900 seconds.
-- Testing: 92296 tests, 88 workers --
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90.
FAIL: LLVM :: ExecutionEngine/JITLink/x86-64/COFF_nolibrary_search.s (63704 of 92296)
******************** TEST 'LLVM :: ExecutionEngine/JITLink/x86-64/COFF_nolibrary_search.s' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
rm -rf /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/ExecutionEngine/JITLink/x86-64/Output/COFF_nolibrary_search.s.tmp && mkdir -p /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/ExecutionEngine/JITLink/x86-64/Output/COFF_nolibrary_search.s.tmp # RUN: at line 1
+ rm -rf /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/ExecutionEngine/JITLink/x86-64/Output/COFF_nolibrary_search.s.tmp
+ mkdir -p /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/ExecutionEngine/JITLink/x86-64/Output/COFF_nolibrary_search.s.tmp
/home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/yaml2obj /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/test/ExecutionEngine/JITLink/x86-64/Inputs/COFF_weak_nolibrary_serach_def.yaml -o /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/ExecutionEngine/JITLink/x86-64/Output/COFF_nolibrary_search.s.tmp/COFF_weak.o # RUN: at line 2
+ /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/yaml2obj /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/test/ExecutionEngine/JITLink/x86-64/Inputs/COFF_weak_nolibrary_serach_def.yaml -o /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/ExecutionEngine/JITLink/x86-64/Output/COFF_nolibrary_search.s.tmp/COFF_weak.o
/home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/llvm-mc -filetype=obj -triple=x86_64-windows-msvc /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/test/ExecutionEngine/JITLink/x86-64/COFF_nolibrary_search.s -o /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/ExecutionEngine/JITLink/x86-64/Output/COFF_nolibrary_search.s.tmp/COFF_main.o # RUN: at line 3
+ /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/llvm-mc -filetype=obj -triple=x86_64-windows-msvc /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/test/ExecutionEngine/JITLink/x86-64/COFF_nolibrary_search.s -o /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/ExecutionEngine/JITLink/x86-64/Output/COFF_nolibrary_search.s.tmp/COFF_main.o
not /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/llvm-jitlink -noexec -abs __ImageBase=0xfff00000  -slab-allocate 100Kb -slab-address 0xfff00000 -slab-page-size 4096  /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/ExecutionEngine/JITLink/x86-64/Output/COFF_nolibrary_search.s.tmp/COFF_weak.o /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/ExecutionEngine/JITLink/x86-64/Output/COFF_nolibrary_search.s.tmp/COFF_main.o 2>&1 | /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/FileCheck /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/test/ExecutionEngine/JITLink/x86-64/COFF_nolibrary_search.s # RUN: at line 4
+ /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/FileCheck /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/test/ExecutionEngine/JITLink/x86-64/COFF_nolibrary_search.s
+ not /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/llvm-jitlink -noexec -abs __ImageBase=0xfff00000 -slab-allocate 100Kb -slab-address 0xfff00000 -slab-page-size 4096 /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/ExecutionEngine/JITLink/x86-64/Output/COFF_nolibrary_search.s.tmp/COFF_weak.o /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/ExecutionEngine/JITLink/x86-64/Output/COFF_nolibrary_search.s.tmp/COFF_main.o

--

********************
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90.. 
Slowest Tests:
--------------------------------------------------------------------------
489.07s: LLVM :: CodeGen/AMDGPU/sched-group-barrier-pipeline-solver.mir
346.64s: Clang :: Driver/fsanitize.c
342.59s: LLVM :: CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
273.67s: LLVM :: CodeGen/AMDGPU/memintrinsic-unroll.ll
259.83s: Clang :: Preprocessor/riscv-target-features.c
255.10s: Clang :: OpenMP/target_defaultmap_codegen_01.cpp
253.51s: Clang :: CodeGen/AArch64/sve-intrinsics/acle_sve_reinterpret.c
242.09s: Clang :: Driver/arm-cortex-cpus-1.c
233.39s: Clang :: Driver/arm-cortex-cpus-2.c
219.84s: Clang :: Preprocessor/aarch64-target-features.c
210.26s: Clang :: Preprocessor/arm-target-features.c
207.06s: Clang :: OpenMP/target_update_codegen.cpp
202.62s: Clang :: Analysis/a_flaky_crash.cpp
199.11s: LLVM :: CodeGen/RISCV/attributes.ll
195.46s: Clang :: Analysis/runtime-regression.c
188.98s: Clang :: Preprocessor/predefined-arch-macros.c
Step 10 (stage2/asan_ubsan check) failure: stage2/asan_ubsan check (failure)
...
llvm-lit: /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:527: note: using lld-link: /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/lld-link
llvm-lit: /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:527: note: using ld64.lld: /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/ld64.lld
llvm-lit: /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:527: note: using wasm-ld: /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/wasm-ld
llvm-lit: /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:527: note: using ld.lld: /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/ld.lld
llvm-lit: /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:527: note: using lld-link: /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/lld-link
llvm-lit: /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:527: note: using ld64.lld: /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/ld64.lld
llvm-lit: /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/utils/lit/lit/llvm/config.py:527: note: using wasm-ld: /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/wasm-ld
llvm-lit: /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/utils/lit/lit/main.py:74: note: The test suite configuration requested an individual test timeout of 0 seconds but a timeout of 900 seconds was requested on the command line. Forcing timeout to be 900 seconds.
-- Testing: 92296 tests, 88 workers --
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90.
FAIL: LLVM :: ExecutionEngine/JITLink/x86-64/COFF_nolibrary_search.s (63704 of 92296)
******************** TEST 'LLVM :: ExecutionEngine/JITLink/x86-64/COFF_nolibrary_search.s' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
rm -rf /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/ExecutionEngine/JITLink/x86-64/Output/COFF_nolibrary_search.s.tmp && mkdir -p /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/ExecutionEngine/JITLink/x86-64/Output/COFF_nolibrary_search.s.tmp # RUN: at line 1
+ rm -rf /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/ExecutionEngine/JITLink/x86-64/Output/COFF_nolibrary_search.s.tmp
+ mkdir -p /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/ExecutionEngine/JITLink/x86-64/Output/COFF_nolibrary_search.s.tmp
/home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/yaml2obj /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/test/ExecutionEngine/JITLink/x86-64/Inputs/COFF_weak_nolibrary_serach_def.yaml -o /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/ExecutionEngine/JITLink/x86-64/Output/COFF_nolibrary_search.s.tmp/COFF_weak.o # RUN: at line 2
+ /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/yaml2obj /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/test/ExecutionEngine/JITLink/x86-64/Inputs/COFF_weak_nolibrary_serach_def.yaml -o /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/ExecutionEngine/JITLink/x86-64/Output/COFF_nolibrary_search.s.tmp/COFF_weak.o
/home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/llvm-mc -filetype=obj -triple=x86_64-windows-msvc /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/test/ExecutionEngine/JITLink/x86-64/COFF_nolibrary_search.s -o /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/ExecutionEngine/JITLink/x86-64/Output/COFF_nolibrary_search.s.tmp/COFF_main.o # RUN: at line 3
+ /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/llvm-mc -filetype=obj -triple=x86_64-windows-msvc /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/test/ExecutionEngine/JITLink/x86-64/COFF_nolibrary_search.s -o /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/ExecutionEngine/JITLink/x86-64/Output/COFF_nolibrary_search.s.tmp/COFF_main.o
not /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/llvm-jitlink -noexec -abs __ImageBase=0xfff00000  -slab-allocate 100Kb -slab-address 0xfff00000 -slab-page-size 4096  /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/ExecutionEngine/JITLink/x86-64/Output/COFF_nolibrary_search.s.tmp/COFF_weak.o /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/ExecutionEngine/JITLink/x86-64/Output/COFF_nolibrary_search.s.tmp/COFF_main.o 2>&1 | /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/FileCheck /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/test/ExecutionEngine/JITLink/x86-64/COFF_nolibrary_search.s # RUN: at line 4
+ /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/FileCheck /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/test/ExecutionEngine/JITLink/x86-64/COFF_nolibrary_search.s
+ not /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/llvm-jitlink -noexec -abs __ImageBase=0xfff00000 -slab-allocate 100Kb -slab-address 0xfff00000 -slab-page-size 4096 /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/ExecutionEngine/JITLink/x86-64/Output/COFF_nolibrary_search.s.tmp/COFF_weak.o /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/test/ExecutionEngine/JITLink/x86-64/Output/COFF_nolibrary_search.s.tmp/COFF_main.o

--

********************
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90.. 
Slowest Tests:
--------------------------------------------------------------------------
489.07s: LLVM :: CodeGen/AMDGPU/sched-group-barrier-pipeline-solver.mir
346.64s: Clang :: Driver/fsanitize.c
342.59s: LLVM :: CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
273.67s: LLVM :: CodeGen/AMDGPU/memintrinsic-unroll.ll
259.83s: Clang :: Preprocessor/riscv-target-features.c
255.10s: Clang :: OpenMP/target_defaultmap_codegen_01.cpp
253.51s: Clang :: CodeGen/AArch64/sve-intrinsics/acle_sve_reinterpret.c
242.09s: Clang :: Driver/arm-cortex-cpus-1.c
233.39s: Clang :: Driver/arm-cortex-cpus-2.c
219.84s: Clang :: Preprocessor/aarch64-target-features.c
210.26s: Clang :: Preprocessor/arm-target-features.c
207.06s: Clang :: OpenMP/target_update_codegen.cpp
202.62s: Clang :: Analysis/a_flaky_crash.cpp
199.11s: LLVM :: CodeGen/RISCV/attributes.ll
195.46s: Clang :: Analysis/runtime-regression.c
188.98s: Clang :: Preprocessor/predefined-arch-macros.c

@Technius Technius deleted the fix-mlir-dylib-deps branch August 31, 2025 19:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants