[clang] [llvm] [mlir] [MLIR][CMake] Model transitive generated header dependencies (PR #222170)
Mehdi Amini via cfe-commits
cfe-commits at lists.llvm.org
Tue Sep 8 16:49:04 PDT 2026
https://github.com/joker-eph updated https://github.com/llvm/llvm-project/pull/222170
>From ba7884786c996e1abacd22e6953e63140007d063 Mon Sep 17 00:00:00 2001
From: Mehdi Amini <joker.eph at gmail.com>
Date: Tue, 8 Sep 2026 12:04:07 -0700
Subject: [PATCH] [MLIR][CMake] Model transitive generated header dependencies
MLIR libraries currently depend on broad header aggregates and repeat private
TableGen targets such as *IncGen in DEPENDS. Those edges serialize unrelated
generation, mask missing transitive dependencies, and can leave compilation
unordered when a logical dependency provides a generated header.
Record the exact outputs of each MLIR TableGen target at its generation site,
including generated sources from sharded operations, without inheriting prior
TABLEGEN_OUTPUT or LLVM_COMMON_DEPENDS batches. Resolve every generator to at
most one logical library after the complete target graph exists. Conventional
library and dialect names cover the common case, a unique dialect or mirrored
directory supplies a fallback, and an explicit OWNER is authoritative for
exceptional mixed layouts.
Give each MLIR library an internal generated-header carrier. CMake 3.28 uses
CMP0154 INTERFACE header file sets so Ninja can order the exact generated
files. Older supported CMake versions use a documented custom-target fallback
with TODOs for removal once LLVM requires CMake 3.28. Flatten carrier graphs
to generated-file leaves so legal cyclic static-library graphs do not create
cycles between fallback custom targets.
Derive transitive header ordering from LINK_LIBS using normal PUBLIC, PRIVATE,
and INTERFACE semantics. A library's compilation sees its local generators and
its PUBLIC and PRIVATE provider closures; its consumers see its local, PUBLIC,
and INTERFACE closure. LINK_LIBS generator expressions are expanded
conservatively, while explicit HEADER_LIBS and
mlir_target_link_header_libraries entries must name literal targets so typos
can be diagnosed during configuration. Imported providers are accepted because
their generated headers already exist.
Keep AddLLVM target-agnostic by registering a header dependency provider and
following only its public link closure for whole-library ordering. Cache that
closure and materialize the MLIR graph once in a deferred final pass, avoiding
an eager full-graph update after every library declaration.
Remove redundant generated-target dependencies while retaining actual source
generation and build-order edges. Document the source include that justifies
every HEADER_LIBS entry. Add an MLIR CMake Infrastructure guide covering
libraries, dialects, interfaces, generated files, visibility, compatibility,
and correctness checks, plus configuration-time regression coverage for
ownership, exact output batches, cycles, visibility, aliases, imported
targets, sharded sources, and invalid explicit dependencies.
Validate from a new Ninja build directory whenever practical. If reusing a
directory, first run `ninja -C <build> -t clean`, then rerun CMake so the
initial Ninja graph contains only dependencies expressed by the current
configuration.
Before building a broad aggregate, build representative leaf targets in
parallel, for example:
cmake --build <build> --target MLIRArmNeonDialect \
MLIRLinalgDialect --parallel 32
This exposes first-build races that an aggregate may hide by generating
headers incidentally.
Next build `check-mlir` and `MLIRUnitTests` to test MLIR and populate compiler
depfiles. Only after that successful build, run
`ninja -C <build> -t missingdeps`; the tool needs populated depfiles to compare
generated-file producers with observed include relationships. Repeat this
sequence with CMake older than 3.28 and with an empty out-of-tree standalone
build when compatibility or package-export behavior changes.
Assisted-by: Codex
---
clang/lib/CIR/Dialect/IR/CMakeLists.txt | 2 +-
clang/lib/CIR/Interfaces/CMakeLists.txt | 2 +
llvm/cmake/modules/AddLLVM.cmake | 228 ++++-
mlir/cmake/modules/AddMLIR.cmake | 876 +++++++++++++++++-
mlir/docs/CMakeInfrastructure.md | 403 ++++++++
.../DefiningDialects/AttributesAndTypes.md | 7 +-
mlir/docs/Tutorials/CreatingADialect.md | 68 +-
mlir/docs/Tutorials/QuickstartRewrites.md | 9 +-
mlir/docs/Tutorials/transform/Ch2.md | 9 +-
.../include/Standalone/CMakeLists.txt | 2 +-
.../standalone/lib/Standalone/CMakeLists.txt | 4 -
.../transform/Ch2/include/CMakeLists.txt | 2 +-
.../examples/transform/Ch2/lib/CMakeLists.txt | 4 -
.../transform/Ch3/include/CMakeLists.txt | 2 +-
.../examples/transform/Ch3/lib/CMakeLists.txt | 4 -
.../transform/Ch4/include/CMakeLists.txt | 2 +-
.../examples/transform/Ch4/lib/CMakeLists.txt | 4 -
.../mlir/Dialect/GPU/IR/CMakeLists.txt | 18 +-
.../mlir/Dialect/LLVMIR/CMakeLists.txt | 41 +-
.../mlir/Dialect/OpenACC/CMakeLists.txt | 3 +
.../mlir/Dialect/OpenMP/CMakeLists.txt | 6 +-
.../mlir/Dialect/Ptr/IR/CMakeLists.txt | 8 +-
.../Dialect/SPIRV/Transforms/CMakeLists.txt | 3 +-
.../Transform/SMTExtension/CMakeLists.txt | 3 +-
.../Dialect/XeGPU/TransformOps/CMakeLists.txt | 3 +-
mlir/include/mlir/IR/CMakeLists.txt | 2 +-
mlir/include/mlir/Interfaces/CMakeLists.txt | 2 +-
.../include/mlir/Target/LLVMIR/CMakeLists.txt | 6 +-
mlir/include/mlir/Transforms/CMakeLists.txt | 3 +-
mlir/lib/Analysis/CMakeLists.txt | 4 -
mlir/lib/CAPI/Conversion/CMakeLists.txt | 3 -
mlir/lib/CAPI/Dialect/CMakeLists.txt | 32 -
.../Conversion/AMDGPUToROCDL/CMakeLists.txt | 3 -
.../AffineToStandard/CMakeLists.txt | 3 -
.../ArithAndMathToAPFloat/CMakeLists.txt | 10 +-
.../Conversion/ArithToAMDGPU/CMakeLists.txt | 7 +-
.../Conversion/ArithToArmSME/CMakeLists.txt | 3 -
.../Conversion/ArithToEmitC/CMakeLists.txt | 3 -
.../lib/Conversion/ArithToLLVM/CMakeLists.txt | 3 -
.../Conversion/ArithToSPIRV/CMakeLists.txt | 3 -
.../Conversion/ArmNeon2dToIntr/CMakeLists.txt | 3 -
.../Conversion/ArmSMEToLLVM/CMakeLists.txt | 3 -
.../lib/Conversion/ArmSMEToSCF/CMakeLists.txt | 3 -
.../lib/Conversion/AsyncToLLVM/CMakeLists.txt | 3 -
.../BufferizationToMemRef/CMakeLists.txt | 3 -
.../Conversion/ComplexToLLVM/CMakeLists.txt | 3 -
.../Conversion/ComplexToLibm/CMakeLists.txt | 3 -
.../ComplexToROCDLLibraryCalls/CMakeLists.txt | 3 -
.../Conversion/ComplexToSPIRV/CMakeLists.txt | 3 -
.../ComplexToStandard/CMakeLists.txt | 3 -
.../ControlFlowToLLVM/CMakeLists.txt | 1 -
.../ControlFlowToSCF/CMakeLists.txt | 3 -
.../ControlFlowToSPIRV/CMakeLists.txt | 3 -
.../Conversion/ConvertToEmitC/CMakeLists.txt | 4 -
.../Conversion/ConvertToLLVM/CMakeLists.txt | 6 -
.../lib/Conversion/FuncToEmitC/CMakeLists.txt | 3 -
mlir/lib/Conversion/FuncToLLVM/CMakeLists.txt | 1 -
.../lib/Conversion/FuncToSPIRV/CMakeLists.txt | 3 -
mlir/lib/Conversion/GPUCommon/CMakeLists.txt | 1 -
.../Conversion/GPUToLLVMSPV/CMakeLists.txt | 3 -
mlir/lib/Conversion/GPUToNVVM/CMakeLists.txt | 3 -
mlir/lib/Conversion/GPUToROCDL/CMakeLists.txt | 7 +-
mlir/lib/Conversion/GPUToSPIRV/CMakeLists.txt | 3 -
.../lib/Conversion/IndexToLLVM/CMakeLists.txt | 3 -
.../Conversion/IndexToSPIRV/CMakeLists.txt | 3 -
.../LinalgToStandard/CMakeLists.txt | 3 -
mlir/lib/Conversion/MPIToLLVM/CMakeLists.txt | 3 -
.../lib/Conversion/MathToEmitC/CMakeLists.txt | 3 -
.../lib/Conversion/MathToFuncs/CMakeLists.txt | 3 -
mlir/lib/Conversion/MathToLLVM/CMakeLists.txt | 3 -
mlir/lib/Conversion/MathToLibm/CMakeLists.txt | 3 -
mlir/lib/Conversion/MathToNVVM/CMakeLists.txt | 3 -
.../lib/Conversion/MathToROCDL/CMakeLists.txt | 3 -
.../lib/Conversion/MathToSPIRV/CMakeLists.txt | 3 -
mlir/lib/Conversion/MathToXeVM/CMakeLists.txt | 3 -
.../Conversion/MemRefToEmitC/CMakeLists.txt | 3 -
.../Conversion/MemRefToLLVM/CMakeLists.txt | 3 -
.../Conversion/MemRefToSPIRV/CMakeLists.txt | 3 -
.../lib/Conversion/NVGPUToNVVM/CMakeLists.txt | 3 -
mlir/lib/Conversion/NVVMToLLVM/CMakeLists.txt | 3 -
.../Conversion/OpenACCToLLVM/CMakeLists.txt | 3 -
.../Conversion/OpenACCToSCF/CMakeLists.txt | 3 -
.../Conversion/OpenMPToLLVM/CMakeLists.txt | 1 -
.../Conversion/PDLToPDLInterp/CMakeLists.txt | 3 -
mlir/lib/Conversion/PtrToLLVM/CMakeLists.txt | 3 -
mlir/lib/Conversion/RaiseWasm/CMakeLists.txt | 3 -
.../ReconcileUnrealizedCasts/CMakeLists.txt | 3 -
.../lib/Conversion/SCFToAffine/CMakeLists.txt | 3 -
.../SCFToControlFlow/CMakeLists.txt | 3 -
mlir/lib/Conversion/SCFToEmitC/CMakeLists.txt | 3 -
mlir/lib/Conversion/SCFToGPU/CMakeLists.txt | 3 -
.../lib/Conversion/SCFToOpenMP/CMakeLists.txt | 3 -
mlir/lib/Conversion/SCFToSPIRV/CMakeLists.txt | 3 -
.../lib/Conversion/SPIRVCommon/CMakeLists.txt | 5 +-
.../lib/Conversion/SPIRVToLLVM/CMakeLists.txt | 1 -
.../Conversion/ShapeToStandard/CMakeLists.txt | 6 +-
mlir/lib/Conversion/ShardToMPI/CMakeLists.txt | 3 -
.../Conversion/TensorToLinalg/CMakeLists.txt | 3 -
.../Conversion/TensorToSPIRV/CMakeLists.txt | 3 -
.../lib/Conversion/TosaToArith/CMakeLists.txt | 3 -
.../Conversion/TosaToLinalg/CMakeLists.txt | 3 -
.../Conversion/TosaToMLProgram/CMakeLists.txt | 3 -
mlir/lib/Conversion/TosaToSCF/CMakeLists.txt | 3 -
.../Conversion/TosaToSPIRVTosa/CMakeLists.txt | 3 -
.../Conversion/TosaToTensor/CMakeLists.txt | 3 -
mlir/lib/Conversion/UBToLLVM/CMakeLists.txt | 3 -
mlir/lib/Conversion/UBToSPIRV/CMakeLists.txt | 3 -
.../lib/Conversion/VectorToAMX/CMakeLists.txt | 3 -
.../Conversion/VectorToArmSME/CMakeLists.txt | 3 -
.../Conversion/VectorToLLVM/CMakeLists.txt | 1 -
.../Conversion/VectorToSPIRV/CMakeLists.txt | 1 -
.../Conversion/VectorToXeGPU/CMakeLists.txt | 3 -
.../lib/Conversion/XeGPUToXeVM/CMakeLists.txt | 3 -
mlir/lib/Conversion/XeVMToLLVM/CMakeLists.txt | 3 -
mlir/lib/Dialect/AMDGPU/IR/CMakeLists.txt | 5 -
.../Dialect/AMDGPU/Transforms/CMakeLists.txt | 5 +-
.../Dialect/Affine/Analysis/CMakeLists.txt | 3 -
mlir/lib/Dialect/Affine/IR/CMakeLists.txt | 4 -
.../Affine/TransformOps/CMakeLists.txt | 3 -
.../Dialect/Affine/Transforms/CMakeLists.txt | 5 -
mlir/lib/Dialect/Arith/IR/CMakeLists.txt | 8 +-
.../Dialect/Arith/Transforms/CMakeLists.txt | 3 -
mlir/lib/Dialect/ArmNeon/IR/CMakeLists.txt | 7 +-
.../ArmNeon/TransformOps/CMakeLists.txt | 3 -
.../Dialect/ArmNeon/Transforms/CMakeLists.txt | 3 -
mlir/lib/Dialect/ArmSME/IR/CMakeLists.txt | 4 -
.../Dialect/ArmSME/Transforms/CMakeLists.txt | 3 -
mlir/lib/Dialect/ArmSVE/IR/CMakeLists.txt | 3 -
.../ArmSVE/TransformOps/CMakeLists.txt | 3 -
.../Dialect/ArmSVE/Transforms/CMakeLists.txt | 4 -
mlir/lib/Dialect/Async/IR/CMakeLists.txt | 3 -
.../Dialect/Async/Transforms/CMakeLists.txt | 3 -
.../Dialect/Bufferization/IR/CMakeLists.txt | 5 -
.../Bufferization/TransformOps/CMakeLists.txt | 3 -
.../Bufferization/Transforms/CMakeLists.txt | 4 -
mlir/lib/Dialect/Complex/IR/CMakeLists.txt | 6 +-
.../lib/Dialect/ControlFlow/IR/CMakeLists.txt | 7 +-
mlir/lib/Dialect/DLTI/CMakeLists.txt | 3 -
.../Dialect/DLTI/TransformOps/CMakeLists.txt | 4 -
mlir/lib/Dialect/EmitC/IR/CMakeLists.txt | 4 -
.../Dialect/EmitC/Transforms/CMakeLists.txt | 3 -
.../Dialect/Func/Extensions/CMakeLists.txt | 4 +
mlir/lib/Dialect/Func/IR/CMakeLists.txt | 6 +-
.../Dialect/Func/TransformOps/CMakeLists.txt | 3 -
.../Dialect/Func/Transforms/CMakeLists.txt | 3 -
mlir/lib/Dialect/GPU/CMakeLists.txt | 11 +-
mlir/lib/Dialect/GPU/Pipelines/CMakeLists.txt | 7 +
.../Dialect/GPU/TransformOps/CMakeLists.txt | 5 -
mlir/lib/Dialect/GPU/Utils/CMakeLists.txt | 5 +
mlir/lib/Dialect/IRDL/CMakeLists.txt | 5 -
mlir/lib/Dialect/Index/IR/CMakeLists.txt | 5 +-
mlir/lib/Dialect/LLVMIR/CMakeLists.txt | 41 +-
.../Dialect/LLVMIR/Transforms/CMakeLists.txt | 3 -
mlir/lib/Dialect/Linalg/IR/CMakeLists.txt | 11 +-
.../Linalg/TransformOps/CMakeLists.txt | 5 -
.../Dialect/Linalg/Transforms/CMakeLists.txt | 3 -
mlir/lib/Dialect/MLProgram/IR/CMakeLists.txt | 5 -
.../MLProgram/Transforms/CMakeLists.txt | 3 -
mlir/lib/Dialect/MPI/IR/CMakeLists.txt | 6 -
mlir/lib/Dialect/Math/IR/CMakeLists.txt | 5 +-
.../Dialect/Math/Transforms/CMakeLists.txt | 3 -
mlir/lib/Dialect/MemRef/IR/CMakeLists.txt | 4 -
.../MemRef/TransformOps/CMakeLists.txt | 3 -
.../Dialect/MemRef/Transforms/CMakeLists.txt | 3 -
mlir/lib/Dialect/NVGPU/IR/CMakeLists.txt | 6 -
.../Dialect/NVGPU/TransformOps/CMakeLists.txt | 3 -
.../Dialect/NVGPU/Transforms/CMakeLists.txt | 3 -
.../Dialect/NVVM/Transforms/CMakeLists.txt | 3 -
mlir/lib/Dialect/OpenACC/IR/CMakeLists.txt | 8 -
.../Dialect/OpenACC/Transforms/CMakeLists.txt | 9 -
mlir/lib/Dialect/OpenACC/Utils/CMakeLists.txt | 9 -
.../OpenACCMPCommon/Interfaces/CMakeLists.txt | 4 -
mlir/lib/Dialect/OpenMP/IR/CMakeLists.txt | 3 -
.../Dialect/OpenMP/Transforms/CMakeLists.txt | 4 -
mlir/lib/Dialect/PDL/IR/CMakeLists.txt | 3 -
mlir/lib/Dialect/PDLInterp/IR/CMakeLists.txt | 3 -
mlir/lib/Dialect/Ptr/IR/CMakeLists.txt | 12 +-
mlir/lib/Dialect/Quant/IR/CMakeLists.txt | 6 +-
.../Dialect/Quant/Transforms/CMakeLists.txt | 3 -
mlir/lib/Dialect/SCF/IR/CMakeLists.txt | 3 -
.../Dialect/SCF/TransformOps/CMakeLists.txt | 3 -
.../lib/Dialect/SCF/Transforms/CMakeLists.txt | 3 -
mlir/lib/Dialect/SMT/IR/CMakeLists.txt | 9 -
mlir/lib/Dialect/SPIRV/IR/CMakeLists.txt | 18 +-
.../Dialect/SPIRV/Interfaces/CMakeLists.txt | 3 -
.../Dialect/SPIRV/Transforms/CMakeLists.txt | 3 -
mlir/lib/Dialect/Shape/IR/CMakeLists.txt | 3 -
.../Dialect/Shape/Transforms/CMakeLists.txt | 12 +-
mlir/lib/Dialect/Shard/IR/CMakeLists.txt | 5 +-
.../Dialect/Shard/Interfaces/CMakeLists.txt | 3 -
.../Dialect/Shard/Transforms/CMakeLists.txt | 4 +-
.../Dialect/SparseTensor/IR/CMakeLists.txt | 7 +-
.../SparseTensor/Pipelines/CMakeLists.txt | 7 +
.../SparseTensor/TransformOps/CMakeLists.txt | 3 -
.../SparseTensor/Transforms/CMakeLists.txt | 3 -
mlir/lib/Dialect/Tensor/IR/CMakeLists.txt | 5 +-
.../Tensor/TransformOps/CMakeLists.txt | 3 -
.../Dialect/Tensor/Transforms/CMakeLists.txt | 3 -
mlir/lib/Dialect/Tosa/CMakeLists.txt | 10 +-
.../Dialect/Tosa/Transforms/CMakeLists.txt | 3 -
.../Transform/DebugExtension/CMakeLists.txt | 3 -
.../Transform/IRDLExtension/CMakeLists.txt | 3 -
.../Transform/Interfaces/CMakeLists.txt | 4 -
.../Transform/LoopExtension/CMakeLists.txt | 3 -
.../Transform/PDLExtension/CMakeLists.txt | 3 -
.../Transform/SMTExtension/CMakeLists.txt | 3 -
.../Transform/Transforms/CMakeLists.txt | 3 -
.../Transform/TuneExtension/CMakeLists.txt | 3 -
mlir/lib/Dialect/UB/IR/CMakeLists.txt | 6 +-
mlir/lib/Dialect/Utils/CMakeLists.txt | 4 +-
mlir/lib/Dialect/Vector/IR/CMakeLists.txt | 6 -
.../Dialect/Vector/Interfaces/CMakeLists.txt | 3 -
.../Vector/TransformOps/CMakeLists.txt | 3 -
.../Dialect/Vector/Transforms/CMakeLists.txt | 3 -
mlir/lib/Dialect/WasmSSA/IR/CMakeLists.txt | 4 -
mlir/lib/Dialect/X86/IR/CMakeLists.txt | 3 -
.../Dialect/X86/TransformOps/CMakeLists.txt | 3 -
mlir/lib/Dialect/XeGPU/IR/CMakeLists.txt | 6 -
.../Dialect/XeGPU/TransformOps/CMakeLists.txt | 3 -
.../Dialect/XeGPU/Transforms/CMakeLists.txt | 3 -
mlir/lib/IR/CMakeLists.txt | 22 -
mlir/lib/Interfaces/CMakeLists.txt | 26 +-
mlir/lib/Interfaces/Utils/CMakeLists.txt | 3 -
mlir/lib/Reducer/CMakeLists.txt | 3 -
mlir/lib/Rewrite/CMakeLists.txt | 8 +-
mlir/lib/Target/LLVMIR/CMakeLists.txt | 3 -
.../LLVMIR/Dialect/ArmNeon/CMakeLists.txt | 3 -
.../LLVMIR/Dialect/ArmSME/CMakeLists.txt | 3 -
.../LLVMIR/Dialect/ArmSVE/CMakeLists.txt | 3 -
.../Target/LLVMIR/Dialect/NVVM/CMakeLists.txt | 3 -
.../LLVMIR/Dialect/ROCDL/CMakeLists.txt | 3 -
.../Target/LLVMIR/Dialect/VCIX/CMakeLists.txt | 3 -
.../Target/LLVMIR/Dialect/XeVM/CMakeLists.txt | 3 -
.../Target/LLVMIR/Transforms/CMakeLists.txt | 3 -
mlir/lib/Target/SPIRV/CMakeLists.txt | 8 +
.../SPIRV/Deserialization/CMakeLists.txt | 3 -
.../Target/SPIRV/Serialization/CMakeLists.txt | 3 -
mlir/lib/Transforms/CMakeLists.txt | 4 -
mlir/test/CMake/header-dependencies.test | 274 ++++++
mlir/test/CMake/lit.local.cfg | 3 +
mlir/test/lib/Dialect/NVGPU/CMakeLists.txt | 6 +
mlir/test/lib/Dialect/Shard/CMakeLists.txt | 4 +
mlir/test/lib/Dialect/Test/CMakeLists.txt | 24 +-
mlir/test/lib/Dialect/Tosa/CMakeLists.txt | 5 +-
.../test/lib/Dialect/Transform/CMakeLists.txt | 5 +-
.../Interfaces/TilingInterface/CMakeLists.txt | 6 +-
mlir/test/lib/Tools/PDLL/CMakeLists.txt | 3 -
mlir/test/lib/Transforms/CMakeLists.txt | 10 +-
mlir/test/python/CMakeLists.txt | 2 +-
mlir/test/python/lib/CMakeLists.txt | 6 -
mlir/unittests/CMakeLists.txt | 6 +-
mlir/unittests/IR/CMakeLists.txt | 5 +-
mlir/unittests/Interfaces/CMakeLists.txt | 5 +-
mlir/unittests/Parser/CMakeLists.txt | 5 +-
254 files changed, 2068 insertions(+), 953 deletions(-)
create mode 100644 mlir/docs/CMakeInfrastructure.md
create mode 100644 mlir/test/CMake/header-dependencies.test
create mode 100644 mlir/test/CMake/lit.local.cfg
diff --git a/clang/lib/CIR/Dialect/IR/CMakeLists.txt b/clang/lib/CIR/Dialect/IR/CMakeLists.txt
index c8205ebeabf6c..0274005a28858 100644
--- a/clang/lib/CIR/Dialect/IR/CMakeLists.txt
+++ b/clang/lib/CIR/Dialect/IR/CMakeLists.txt
@@ -20,6 +20,6 @@ add_clang_library(MLIRCIR
MLIRDataLayoutInterfaces
MLIRFuncDialect
MLIRLoopLikeInterface
- MLIRCIRInterfaces
+ MLIRPtrMemorySpaceInterfaces
clangAST
)
diff --git a/clang/lib/CIR/Interfaces/CMakeLists.txt b/clang/lib/CIR/Interfaces/CMakeLists.txt
index 8eec8b05aa951..07ac666ccbac0 100644
--- a/clang/lib/CIR/Interfaces/CMakeLists.txt
+++ b/clang/lib/CIR/Interfaces/CMakeLists.txt
@@ -13,8 +13,10 @@ add_clang_library(MLIRCIRInterfaces
MLIRCIRTypeInterfacesIncGen
MLIRCIRLoopOpInterfaceIncGen
MLIRCIROpInterfacesIncGen
+ MLIRCIRTypeConstraintsIncGen
LINK_LIBS
MLIRIR
+ MLIRPtrMemorySpaceInterfaces
MLIRSupport
)
diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake
index a267166eb6c2d..73d22f8e48e78 100644
--- a/llvm/cmake/modules/AddLLVM.cmake
+++ b/llvm/cmake/modules/AddLLVM.cmake
@@ -594,6 +594,205 @@ endfunction(set_windows_version_resource_properties)
# LLVM which means that the source resides in llvm/lib/ and it is a
# candidate for inclusion into libLLVM.so.
# )
+# Extract literal target names from a link item. CMake does not expose a
+# general generator-expression evaluator at configure time, so conservatively
+# ordering every target named by a conditional expression is the safe choice.
+function(_llvm_extract_link_dependency_targets output dependency)
+ if(NOT dependency MATCHES "\\$<")
+ set(${output} ${dependency} PARENT_SCOPE)
+ return()
+ endif()
+
+ string(REGEX MATCHALL "[A-Za-z_][A-Za-z0-9_.:+-]*" candidates
+ "${dependency}")
+ set(result)
+ foreach(candidate ${candidates})
+ if(TARGET "${candidate}")
+ list(APPEND result ${candidate})
+ endif()
+ endforeach()
+ list(REMOVE_DUPLICATES result)
+ set(${output} ${result} PARENT_SCOPE)
+endfunction()
+
+# Register an internal generated-header carrier for a logical library. This is
+# a target-agnostic hook: project-specific helpers opt providers into the
+# ordering model, while llvm_add_library remains unaware of carrier details.
+function(_llvm_register_header_dependency_provider target header_target)
+ set_property(TARGET ${target} PROPERTY LLVM_HEADER_DEP_TARGET
+ ${header_target})
+ set_property(GLOBAL PROPERTY LLVM_HAS_HEADER_DEPENDENCY_PROVIDERS TRUE)
+endfunction()
+
+# Follow a logical library's public link interface and collect only registered
+# generated-header carriers and explicit custom prerequisites. This lets an
+# object library consume generated public headers without depending on every
+# linked library's compiled objects.
+function(_llvm_collect_transitive_header_dependencies output)
+ set(cache_target ${ARGV1})
+ if(TARGET "${cache_target}")
+ get_target_property(aliased_cache_target "${cache_target}" ALIASED_TARGET)
+ if(aliased_cache_target)
+ set(cache_target ${aliased_cache_target})
+ endif()
+ get_target_property(cache_target_imported ${cache_target} IMPORTED)
+ get_target_property(cache_valid ${cache_target}
+ LLVM_HEADER_DEPENDENCY_CACHE_VALID)
+ if(cache_valid)
+ get_target_property(cached_result ${cache_target}
+ LLVM_TRANSITIVE_HEADER_DEPENDENCIES)
+ set(${output} ${cached_result} PARENT_SCOPE)
+ return()
+ endif()
+ endif()
+
+ set(queue ${ARGN})
+ set(visited)
+ set(result)
+ while(queue)
+ list(POP_FRONT queue candidate)
+ if(NOT TARGET "${candidate}")
+ continue()
+ endif()
+ get_target_property(aliased_target "${candidate}" ALIASED_TARGET)
+ if(aliased_target)
+ set(candidate ${aliased_target})
+ endif()
+ if(candidate IN_LIST visited)
+ continue()
+ endif()
+ list(APPEND visited ${candidate})
+
+ get_target_property(candidate_cache_valid ${candidate}
+ LLVM_HEADER_DEPENDENCY_CACHE_VALID)
+ if(candidate_cache_valid)
+ get_target_property(candidate_cached_result ${candidate}
+ LLVM_TRANSITIVE_HEADER_DEPENDENCIES)
+ list(APPEND result ${candidate_cached_result})
+ continue()
+ endif()
+
+ get_target_property(header_target ${candidate} LLVM_HEADER_DEP_TARGET)
+ if(header_target)
+ list(APPEND result ${header_target})
+ endif()
+
+ get_target_property(explicit_dependencies ${candidate}
+ LLVM_EXPLICIT_DEPENDENCIES)
+ foreach(dependency ${explicit_dependencies})
+ if(TARGET "${dependency}")
+ get_target_property(dependency_type ${dependency} TYPE)
+ if(dependency_type STREQUAL "UTILITY")
+ list(APPEND result ${dependency})
+ endif()
+ endif()
+ endforeach()
+
+ get_target_property(interface_links ${candidate}
+ INTERFACE_LINK_LIBRARIES)
+ foreach(link_item ${interface_links})
+ _llvm_extract_link_dependency_targets(link_targets "${link_item}")
+ list(APPEND queue ${link_targets})
+ endforeach()
+ endwhile()
+ list(REMOVE_DUPLICATES result)
+ if(TARGET "${cache_target}" AND NOT cache_target_imported)
+ set_property(TARGET ${cache_target} PROPERTY
+ LLVM_TRANSITIVE_HEADER_DEPENDENCIES "${result}")
+ set_property(TARGET ${cache_target} PROPERTY
+ LLVM_HEADER_DEPENDENCY_CACHE_VALID TRUE)
+ endif()
+ set(${output} ${result} PARENT_SCOPE)
+endfunction()
+
+# Resolve object-library ordering after the complete target graph is known.
+# Public LINK_LIBS may contain forward references, generator expressions,
+# system libraries, or link flags, so it is not safe to call add_dependencies
+# while parsing llvm_add_library. Deferring the operation lets us select only
+# real targets without imposing whole-target ordering for private link edges.
+function(_llvm_resolve_object_link_dependencies)
+ get_property(object_libraries GLOBAL
+ PROPERTY LLVM_OBJECT_LIBRARIES_WITH_LINK_DEPENDENCIES)
+ list(REMOVE_DUPLICATES object_libraries)
+ get_property(has_header_dependency_providers GLOBAL PROPERTY
+ LLVM_HAS_HEADER_DEPENDENCY_PROVIDERS)
+ foreach(object_library ${object_libraries})
+ get_target_property(link_dependencies ${object_library}
+ LLVM_OBJECT_LINK_DEPENDENCIES)
+ foreach(link_item ${link_dependencies})
+ _llvm_extract_link_dependency_targets(link_dependency_targets
+ "${link_item}")
+ foreach(link_dependency ${link_dependency_targets})
+ if(NOT TARGET "${link_dependency}")
+ continue()
+ endif()
+
+ get_target_property(aliased_target "${link_dependency}" ALIASED_TARGET)
+ if(aliased_target)
+ set(link_dependency ${aliased_target})
+ endif()
+
+ add_dependencies(${object_library} ${link_dependency})
+ endforeach()
+ endforeach()
+
+ # Private and legacy-unqualified link dependencies must not impose a
+ # whole-library ordering edge. When a project-specific provider publishes
+ # a precise generated-header carrier, depend on that carrier alone.
+ if(NOT has_header_dependency_providers)
+ continue()
+ endif()
+ get_target_property(header_dependencies ${object_library}
+ LLVM_OBJECT_HEADER_LINK_DEPENDENCIES)
+ foreach(link_item ${header_dependencies})
+ _llvm_extract_link_dependency_targets(link_dependency_targets
+ "${link_item}")
+ foreach(link_dependency ${link_dependency_targets})
+ if(NOT TARGET "${link_dependency}")
+ continue()
+ endif()
+ get_target_property(aliased_target "${link_dependency}" ALIASED_TARGET)
+ if(aliased_target)
+ set(link_dependency ${aliased_target})
+ endif()
+ _llvm_collect_transitive_header_dependencies(ordering_targets
+ ${link_dependency})
+ foreach(ordering_target ${ordering_targets})
+ get_target_property(ordering_type ${ordering_target} TYPE)
+ if(ordering_type STREQUAL "INTERFACE_LIBRARY")
+ target_link_libraries(${object_library} PRIVATE
+ "$<BUILD_LOCAL_INTERFACE:${ordering_target}>")
+ else()
+ add_dependencies(${object_library} ${ordering_target})
+ endif()
+ endforeach()
+ endforeach()
+ endforeach()
+ endforeach()
+endfunction()
+
+function(_llvm_defer_object_link_dependencies object_library)
+ cmake_parse_arguments(ARG "" "" "TARGETS;HEADER_TARGETS" ${ARGN})
+ set_property(GLOBAL APPEND PROPERTY
+ LLVM_OBJECT_LIBRARIES_WITH_LINK_DEPENDENCIES ${object_library})
+ set_property(TARGET ${object_library} APPEND PROPERTY
+ LLVM_OBJECT_LINK_DEPENDENCIES ${ARG_TARGETS})
+ set_property(TARGET ${object_library} APPEND PROPERTY
+ LLVM_OBJECT_HEADER_LINK_DEPENDENCIES ${ARG_HEADER_TARGETS})
+
+ get_property(resolution_scheduled GLOBAL
+ PROPERTY LLVM_OBJECT_LINK_DEPENDENCY_RESOLUTION_SCHEDULED)
+ if(NOT resolution_scheduled)
+ # CMake 3.20, LLVM's minimum supported version, supports deferred calls.
+ # Schedule at the source root so sibling projects and forward-referenced
+ # targets have all been declared when dependencies are resolved.
+ cmake_language(DEFER DIRECTORY "${CMAKE_SOURCE_DIR}"
+ CALL _llvm_resolve_object_link_dependencies)
+ set_property(GLOBAL PROPERTY
+ LLVM_OBJECT_LINK_DEPENDENCY_RESOLUTION_SCHEDULED TRUE)
+ endif()
+endfunction()
+
function(llvm_add_library name)
cmake_parse_arguments(ARG
"MODULE;SHARED;STATIC;OBJECT;DISABLE_LLVM_LINK_LLVM_DYLIB;SONAME;NO_INSTALL_RPATH;COMPONENT_LIB;DISABLE_PCH_REUSE"
@@ -674,25 +873,24 @@ function(llvm_add_library name)
if(ARG_DEPENDS)
add_dependencies(${obj_name} ${ARG_DEPENDS})
endif()
- # Treat link libraries like PUBLIC dependencies. LINK_LIBS might
- # result in generating header files. Add a dependendency so that
- # the generated header is created before this object library.
+ # Preserve the historical PUBLIC-only whole-target ordering. For PRIVATE
+ # and legacy-unqualified links, deferred resolution adds only generated-
+ # header carriers and explicit custom prerequisites from the public link
+ # closure, avoiding an unnecessary dependency on compiled provider objects.
if(ARG_LINK_LIBS)
cmake_parse_arguments(LINK_LIBS_ARG
""
""
- "PUBLIC;PRIVATE"
+ "PUBLIC;PRIVATE;INTERFACE"
${ARG_LINK_LIBS})
- foreach(link_lib ${LINK_LIBS_ARG_PUBLIC})
- if(LLVM_PTHREAD_LIB)
- # Can't specify a dependence on -lpthread
- if(NOT ${link_lib} STREQUAL ${LLVM_PTHREAD_LIB})
- add_dependencies(${obj_name} ${link_lib})
- endif()
- else()
- add_dependencies(${obj_name} ${link_lib})
- endif()
- endforeach()
+ if(LINK_LIBS_ARG_PUBLIC OR LINK_LIBS_ARG_PRIVATE OR
+ LINK_LIBS_ARG_UNPARSED_ARGUMENTS)
+ _llvm_defer_object_link_dependencies(${obj_name}
+ TARGETS ${LINK_LIBS_ARG_PUBLIC}
+ HEADER_TARGETS
+ ${LINK_LIBS_ARG_PRIVATE}
+ ${LINK_LIBS_ARG_UNPARSED_ARGUMENTS})
+ endif()
endif()
if(ARG_DISABLE_LLVM_LINK_LLVM_DYLIB)
@@ -732,6 +930,8 @@ function(llvm_add_library name)
add_library(${name} STATIC ${ALL_FILES})
endif()
set_target_properties(${name} PROPERTIES FOLDER "${subproject_title}/Libraries")
+ set_property(TARGET ${name} PROPERTY LLVM_EXPLICIT_DEPENDENCIES
+ "${ARG_DEPENDS}")
## If were compiling with clang-cl use /Zc:dllexportInlines- to exclude inline
## class members from being dllexport'ed to reduce compile time.
diff --git a/mlir/cmake/modules/AddMLIR.cmake b/mlir/cmake/modules/AddMLIR.cmake
index d3f534a02f9de..a5faec6409e88 100644
--- a/mlir/cmake/modules/AddMLIR.cmake
+++ b/mlir/cmake/modules/AddMLIR.cmake
@@ -4,10 +4,33 @@ include(LLVMDistributionSupport)
function(mlir_tablegen ofn)
tablegen(MLIR ${ARGV})
- set(TABLEGEN_OUTPUT ${TABLEGEN_OUTPUT} ${CMAKE_CURRENT_BINARY_DIR}/${ofn}
+ set(output "${CMAKE_CURRENT_BINARY_DIR}/${ofn}")
+ set_property(DIRECTORY APPEND PROPERTY
+ MLIR_UNCLAIMED_TABLEGEN_OUTPUTS "${output}")
+ set(TABLEGEN_OUTPUT ${TABLEGEN_OUTPUT} ${output}
PARENT_SCOPE)
endfunction()
+# Create an MLIR TableGen target from only the outputs accumulated since the
+# preceding MLIR target. add_public_tablegen_target() normally consumes the
+# directory's cumulative TABLEGEN_OUTPUT list, which would make a later target
+# depend on unrelated earlier generators and hide missing logical edges.
+function(_mlir_add_public_tablegen_target target)
+ get_property(target_outputs DIRECTORY PROPERTY
+ MLIR_UNCLAIMED_TABLEGEN_OUTPUTS)
+ if(target_outputs)
+ set(TABLEGEN_OUTPUT ${target_outputs})
+ endif()
+ # LLVM_COMMON_DEPENDS is cumulative within a directory. Do not let an
+ # earlier, unrelated TableGen target become an ordering dependency of this
+ # one: doing so masks missing logical header dependencies from Ninja. Keep
+ # maintaining the variable for callers that consume the complete list.
+ set(saved_common_depends ${LLVM_COMMON_DEPENDS})
+ set(LLVM_COMMON_DEPENDS)
+ add_public_tablegen_target(${target})
+ set(LLVM_COMMON_DEPENDS ${saved_common_depends} ${target} PARENT_SCOPE)
+endfunction()
+
# Clear out any pre-existing compile_commands file before processing. This
# allows for generating a clean compile_commands on each configure.
file(REMOVE ${CMAKE_BINARY_DIR}/pdll_compile_commands.yml)
@@ -115,7 +138,10 @@ function(add_mlir_pdll_library target inputFile ofn)
set(LLVM_TARGET_DEFINITIONS ${inputFile})
_pdll_tablegen(MLIR_PDLL ${ofn} -x=cpp ${ARGN})
- set(TABLEGEN_OUTPUT ${TABLEGEN_OUTPUT} ${CMAKE_CURRENT_BINARY_DIR}/${ofn}
+ set(output "${CMAKE_CURRENT_BINARY_DIR}/${ofn}")
+ set_property(DIRECTORY APPEND PROPERTY
+ MLIR_UNCLAIMED_TABLEGEN_OUTPUTS "${output}")
+ set(TABLEGEN_OUTPUT ${TABLEGEN_OUTPUT} ${output}
PARENT_SCOPE)
# Get the current set of include paths for this pdll file.
@@ -140,11 +166,25 @@ function(add_mlir_pdll_library target inputFile ofn)
" includes: \"${CMAKE_CURRENT_SOURCE_DIR};${tblgen_includes}\"\n"
)
- add_public_tablegen_target(${target})
+ _mlir_add_public_tablegen_target(${target})
+ _mlir_register_tablegen_target(${target})
endfunction()
-# Declare a dialect in the include directory
+# Declare a dialect in the include directory. After removing a trailing
+# "Ops" from the TableGen stem, the generated files are associated with both
+# established library naming conventions: MLIR<Dialect>Dialect and
+# MLIR<Dialect>. The matching target may be declared later. OWNER handles a
+# library that follows neither convention.
function(add_mlir_dialect dialect dialect_namespace)
+ cmake_parse_arguments(ARG "" "OWNER" "" ${ARGN})
+ if(ARG_OWNER)
+ set(owners ${ARG_OWNER})
+ else()
+ string(REGEX REPLACE "Ops$" "" owner_stem ${dialect})
+ set(owners MLIR${owner_stem}Dialect MLIR${owner_stem})
+ endif()
+ _mlir_register_tablegen_directory_owners(${owners})
+
set(LLVM_TARGET_DEFINITIONS ${dialect}.td)
mlir_tablegen(${dialect}.h.inc -gen-op-decls)
mlir_tablegen(${dialect}.cpp.inc -gen-op-defs)
@@ -153,6 +193,25 @@ function(add_mlir_dialect dialect dialect_namespace)
mlir_tablegen(${dialect}Dialect.h.inc -gen-dialect-decls -dialect=${dialect_namespace})
mlir_tablegen(${dialect}Dialect.cpp.inc -gen-dialect-defs -dialect=${dialect_namespace})
add_mlir_dialect_tablegen_target(MLIR${dialect}IncGen)
+ foreach(owner ${owners})
+ if(ARG_OWNER)
+ _mlir_register_explicit_tablegen_owner(${owner} MLIR${dialect}IncGen)
+ else()
+ _mlir_register_tablegen_owner(${owner} MLIR${dialect}IncGen)
+ endif()
+ endforeach()
+endfunction()
+
+# Record the logical dialect candidates for generators declared alongside its
+# primary operation definitions. Resolution is deferred so a directory with
+# more than one dialect can diagnose ambiguity instead of depending on call
+# order.
+function(_mlir_register_tablegen_directory_owners)
+ cmake_path(SET tablegen_source_dir NORMALIZE
+ "${CMAKE_CURRENT_SOURCE_DIR}")
+ string(SHA1 directory_id "${tablegen_source_dir}")
+ set_property(GLOBAL APPEND PROPERTY
+ MLIR_TABLEGEN_DEFAULT_OWNERS_${directory_id} ${ARGN})
endfunction()
# Declare sharded dialect operation declarations and definitions
@@ -165,42 +224,236 @@ function(add_sharded_ops ops_target shard_count)
set(SHARDED_SRC ${ops_target}.${index}.cpp)
list(APPEND SHARDED_SRCS ${SHARDED_SRC})
tablegen(MLIR_SRC_SHARDER ${SHARDED_SRC} -op-shard-index=${index})
- set(TABLEGEN_OUTPUT ${TABLEGEN_OUTPUT} ${CMAKE_CURRENT_BINARY_DIR}/${SHARDED_SRC})
+ set(sharded_output "${CMAKE_CURRENT_BINARY_DIR}/${SHARDED_SRC}")
+ set(TABLEGEN_OUTPUT ${TABLEGEN_OUTPUT} ${sharded_output})
+ # This target owns both the public .inc files and the generated shard
+ # sources. Record the raw tablegen() outputs in the same per-target batch
+ # as the mlir_tablegen() outputs so DEPENDS on the shard target continues
+ # to generate every source without inheriting earlier unrelated batches.
+ set_property(DIRECTORY APPEND PROPERTY
+ MLIR_UNCLAIMED_TABLEGEN_OUTPUTS "${sharded_output}")
endforeach()
add_mlir_dialect_tablegen_target(MLIR${ops_target}ShardGen)
+ string(REGEX REPLACE "Ops$" "" owner_stem ${ops_target})
+ _mlir_register_tablegen_owner(MLIR${owner_stem}Dialect
+ MLIR${ops_target}ShardGen)
+ _mlir_register_tablegen_owner(MLIR${owner_stem}
+ MLIR${ops_target}ShardGen)
set(SHARDED_SRCS ${SHARDED_SRCS} PARENT_SCOPE)
endfunction()
-# Declare a dialect in the include directory
+# Declare an operation interface in the include directory. OWNER may identify
+# its logical library when the include and implementation directories do not
+# mirror one another.
function(add_mlir_interface interface)
+ cmake_parse_arguments(ARG "" "OWNER" "" ${ARGN})
+ if(ARG_OWNER)
+ set(owners ${ARG_OWNER})
+ else()
+ _mlir_infer_interface_owners(owners ${interface})
+ endif()
+
set(LLVM_TARGET_DEFINITIONS ${interface}.td)
mlir_tablegen(${interface}.h.inc -gen-op-interface-decls)
mlir_tablegen(${interface}.cpp.inc -gen-op-interface-defs)
add_mlir_generic_tablegen_target(MLIR${interface}IncGen)
+ foreach(owner ${owners})
+ if(ARG_OWNER)
+ _mlir_register_explicit_tablegen_owner(${owner}
+ MLIR${interface}IncGen)
+ else()
+ _mlir_register_tablegen_owner(${owner} MLIR${interface}IncGen)
+ endif()
+ endforeach()
+endfunction()
+
+# Associate a TableGen target with the logical library that owns its generated
+# files. The standard helpers infer or accept this relationship at the
+# generation site, so library CMakeLists should not have to repeat a private
+# `*IncGen` target name.
+function(_mlir_register_tablegen_owner library)
+ foreach(tablegen_target ${ARGN})
+ set_property(TARGET ${tablegen_target} APPEND PROPERTY
+ MLIR_TABLEGEN_OWNERS ${library})
+ endforeach()
+endfunction()
+
+# Record a user-specified ownership assertion separately from inferred naming
+# candidates so a typo in OWNER is diagnosed instead of falling back to
+# directory inference.
+function(_mlir_register_explicit_tablegen_owner library)
+ foreach(tablegen_target ${ARGN})
+ # Replace inferred candidates: OWNER is authoritative even if a
+ # conventionally named library also exists.
+ set_property(TARGET ${tablegen_target} PROPERTY
+ MLIR_TABLEGEN_OWNERS ${library})
+ set_property(TARGET ${tablegen_target} PROPERTY
+ MLIR_TABLEGEN_HAS_EXPLICIT_OWNER TRUE)
+ endforeach()
endfunction()
+# Interfaces are commonly implemented either by a same-named library or by
+# their containing dialect. Register both conventions so most call sites need
+# no OWNER even when several logical libraries share an include directory.
+function(_mlir_infer_interface_owners output interface)
+ set(owners MLIR${interface})
+ file(RELATIVE_PATH relative_dialect_dir
+ "${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect" "${CMAKE_CURRENT_SOURCE_DIR}")
+ if(NOT relative_dialect_dir MATCHES "^\\.\\.")
+ string(REGEX MATCH "^[^/]+" dialect ${relative_dialect_dir})
+ list(APPEND owners
+ MLIR${dialect}DialectInterfaces
+ MLIR${dialect}Dialect
+ MLIR${dialect})
+ elseif(CMAKE_CURRENT_SOURCE_DIR STREQUAL "${MLIR_MAIN_INCLUDE_DIR}/mlir/IR")
+ list(APPEND owners MLIRIR)
+ endif()
+ list(REMOVE_DUPLICATES owners)
+ set(${output} ${owners} PARENT_SCOPE)
+endfunction()
+
+# Record both halves of a TableGen rule: the convenience target used by older
+# CMake versions and the files produced by its custom commands. Libraries use
+# this metadata below to express generated-header dependencies without making
+# authors repeat implementation target names such as `*IncGen`.
+function(_mlir_register_tablegen_target target)
+ cmake_path(SET tablegen_source_dir NORMALIZE
+ "${CMAKE_CURRENT_SOURCE_DIR}")
+ string(SHA1 directory_id "${tablegen_source_dir}")
+ get_property(target_outputs DIRECTORY PROPERTY
+ MLIR_UNCLAIMED_TABLEGEN_OUTPUTS)
+ if(NOT target_outputs)
+ # Preserve compatibility for downstream code that calls tablegen()
+ # directly instead of mlir_tablegen(). Such code cannot provide precise
+ # per-target output metadata until it migrates to the MLIR wrapper.
+ set(target_outputs ${TABLEGEN_OUTPUT})
+ endif()
+ list(REMOVE_DUPLICATES target_outputs)
+ set_property(TARGET ${target} PROPERTY MLIR_TABLEGEN_OUTPUTS
+ "${target_outputs}")
+ set_property(TARGET ${target} PROPERTY MLIR_TABLEGEN_DIRECTORY_ID
+ ${directory_id})
+ set_property(GLOBAL APPEND PROPERTY MLIR_TABLEGEN_TARGETS ${target})
+ set_property(DIRECTORY PROPERTY MLIR_UNCLAIMED_TABLEGEN_OUTPUTS "")
+
+ # A generated file can only be attached reliably to its custom command from
+ # the directory in which that command was declared. Create the CMake 3.28
+ # file-set carrier here, then let logical library targets compose it later.
+ # TODO: Remove the policy guard and always create the file-set carrier once
+ # LLVM requires CMake 3.28 or newer.
+ if(POLICY CMP0154)
+ # Policies that affect target generation are captured when the target is
+ # created, so set CMP0154 before add_library(), not just target_sources().
+ cmake_policy(PUSH)
+ cmake_policy(SET CMP0154 NEW)
+ set(generated_headers)
+ foreach(output ${target_outputs})
+ string(FIND "${output}" "${MLIR_BINARY_DIR}/include/" include_prefix)
+ if(include_prefix EQUAL 0 AND NOT output MATCHES "\\.cpp(\\.inc)?$")
+ list(APPEND generated_headers "${output}")
+ endif()
+ endforeach()
+ set(header_target "headers.${target}")
+ add_library(${header_target} INTERFACE)
+ if(generated_headers)
+ target_sources(${header_target} INTERFACE
+ FILE_SET mlir_generated_headers TYPE HEADERS
+ BASE_DIRS "${MLIR_BINARY_DIR}/include"
+ FILES ${generated_headers})
+ endif()
+ cmake_policy(POP)
+ # Keep the public TableGen target as an explicit ordering anchor. CMake's
+ # file set describes which generated files are public, while this edge is
+ # needed because the custom commands are owned by a custom target rather
+ # than by a compilable library target.
+ add_dependencies(${header_target} ${target})
+ set_target_properties(${header_target} PROPERTIES FOLDER
+ "MLIR/Tablegenning/Header Dependencies")
+ set_property(TARGET ${target} PROPERTY MLIR_TABLEGEN_HEADER_TARGET
+ ${header_target})
+ endif()
+
+ set_property(GLOBAL APPEND PROPERTY
+ MLIR_TABLEGEN_TARGETS_${directory_id} ${target})
+
+ # A target named MLIR<Foo>IncGen conventionally publishes headers from
+ # MLIR<Foo>. Register it as a candidate, but retain directory fallback when
+ # no such library exists.
+ if(target MATCHES "^(MLIR.+)IncGen$")
+ _mlir_register_tablegen_owner(${CMAKE_MATCH_1} ${target})
+ endif()
+ # Pass generators conventionally belong to the dialect's transforms
+ # library. Keep the unsuffixed candidate for general targets such as
+ # MLIRTransformsPassIncGen.
+ if(target MATCHES "^(MLIR.+)PassIncGen$")
+ _mlir_register_tablegen_owner(
+ ${CMAKE_MATCH_1}Transforms ${target})
+ _mlir_register_tablegen_owner(${CMAKE_MATCH_1} ${target})
+ endif()
+endfunction()
+
+# Register a generated-file target that belongs to one logical MLIR library
+# but is not part of the global dialect or generic-header aggregates. Keeping
+# ownership at the generation site lets the library and all of its consumers
+# use the logical target name instead of repeating this private target name.
+macro(add_mlir_library_tablegen_target target owner)
+ _mlir_add_public_tablegen_target(${target})
+ _mlir_register_tablegen_target(${target})
+ _mlir_register_explicit_tablegen_owner(${owner} ${target})
+endmacro()
+
# Add a dialect-specific tablegen target that generates headers in the include directory.
# In most cases, this is what should be used after invoking `mlir_tablegen`.
+# OWNER may name the logical library that provides the generated files when
+# directory-based ownership inference is insufficient.
macro(add_mlir_dialect_tablegen_target target)
- add_public_tablegen_target(${target})
+ cmake_parse_arguments(TABLEGEN_TARGET "" "OWNER" "" ${ARGN})
+ _mlir_add_public_tablegen_target(${target})
+ _mlir_register_tablegen_target(${target})
+ if(TABLEGEN_TARGET_OWNER)
+ _mlir_register_explicit_tablegen_owner(
+ ${TABLEGEN_TARGET_OWNER} ${target})
+ endif()
add_dependencies(mlir-headers ${target})
endmacro()
# Add a dialect-independent tablegen target that generates headers in the include directory.
# Generally this is used for files outside of the Dialects/ folder, and also for interfaces
# that do not depend on dialect-specific headers.
+# OWNER has the same meaning as for add_mlir_dialect_tablegen_target().
macro(add_mlir_generic_tablegen_target target)
- add_public_tablegen_target(${target})
+ cmake_parse_arguments(TABLEGEN_TARGET "" "OWNER" "" ${ARGN})
+ _mlir_add_public_tablegen_target(${target})
+ _mlir_register_tablegen_target(${target})
+ if(TABLEGEN_TARGET_OWNER)
+ _mlir_register_explicit_tablegen_owner(
+ ${TABLEGEN_TARGET_OWNER} ${target})
+ endif()
add_dependencies(mlir-generic-headers ${target})
endmacro()
-# Declare a dialect in the include directory
+# Declare a type interface in the include directory. OWNER has the same
+# meaning as for add_mlir_interface().
function(add_mlir_type_interface interface)
+ cmake_parse_arguments(ARG "" "OWNER" "" ${ARGN})
+ if(ARG_OWNER)
+ set(owners ${ARG_OWNER})
+ else()
+ _mlir_infer_interface_owners(owners ${interface})
+ endif()
+
set(LLVM_TARGET_DEFINITIONS ${interface}.td)
mlir_tablegen(${interface}.h.inc -gen-type-interface-decls)
mlir_tablegen(${interface}.cpp.inc -gen-type-interface-defs)
- add_public_tablegen_target(MLIR${interface}IncGen)
- add_dependencies(mlir-generic-headers MLIR${interface}IncGen)
+ add_mlir_generic_tablegen_target(MLIR${interface}IncGen)
+ foreach(owner ${owners})
+ if(ARG_OWNER)
+ _mlir_register_explicit_tablegen_owner(${owner}
+ MLIR${interface}IncGen)
+ else()
+ _mlir_register_tablegen_owner(${owner} MLIR${interface}IncGen)
+ endif()
+ endforeach()
endfunction()
# Generate Documentation
@@ -273,13 +526,533 @@ function(_check_llvm_components_usage name)
endforeach()
endfunction()
+# Split a CMake-style dependency list while preserving its PUBLIC, PRIVATE, and
+# INTERFACE semantics. The unqualified target_link_libraries signature is
+# transitive, so mirror that behavior here by treating unqualified entries as
+# PUBLIC.
+function(_mlir_partition_header_libraries prefix)
+ cmake_parse_arguments(PARTITION "" "" "PUBLIC;PRIVATE;INTERFACE" ${ARGN})
+ set(${prefix}_PUBLIC
+ ${PARTITION_PUBLIC}
+ ${PARTITION_UNPARSED_ARGUMENTS}
+ PARENT_SCOPE)
+ set(${prefix}_PRIVATE ${PARTITION_PRIVATE} PARENT_SCOPE)
+ set(${prefix}_INTERFACE ${PARTITION_INTERFACE} PARENT_SCOPE)
+endfunction()
+
+# LINK_LIBS may hide target names inside generator expressions. CMake does not
+# expose a general expression evaluator at configure time, so conservatively
+# collect every literal token that names an existing target. Ordering all arms
+# of a conditional expression is safe and avoids silently losing a generated-
+# header edge when a condition changes.
+function(_mlir_expand_header_provider_candidates output provider)
+ if(NOT provider MATCHES "\\$<")
+ set(${output} ${provider} PARENT_SCOPE)
+ return()
+ endif()
+
+ string(REGEX MATCHALL "[A-Za-z_][A-Za-z0-9_.:+-]*" candidates
+ "${provider}")
+ set(result)
+ foreach(candidate ${candidates})
+ if(TARGET "${candidate}")
+ list(APPEND result ${candidate})
+ endif()
+ endforeach()
+ list(REMOVE_DUPLICATES result)
+ set(${output} ${result} PARENT_SCOPE)
+endfunction()
+
+# Record the current library directory and its conventional mirrored include
+# directory as possible ownership locations. Directory inference is used only
+# when exactly one logical library maps to a location; mixed directories must
+# use conventional target names or OWNER to avoid publishing unrelated files.
+function(_mlir_register_library_tablegen_directories library)
+ string(SHA1 current_directory_id "${CMAKE_CURRENT_SOURCE_DIR}")
+ set(directory_ids ${current_directory_id})
+ file(RELATIVE_PATH relative_lib_dir
+ "${MLIR_MAIN_SRC_DIR}/lib" "${CMAKE_CURRENT_SOURCE_DIR}")
+ if(NOT relative_lib_dir MATCHES "^\\.\\.")
+ set(include_dir "${MLIR_MAIN_INCLUDE_DIR}/mlir")
+ if(NOT relative_lib_dir STREQUAL ".")
+ string(APPEND include_dir "/${relative_lib_dir}")
+ endif()
+ cmake_path(SET include_dir NORMALIZE "${include_dir}")
+ string(SHA1 include_directory_id "${include_dir}")
+ list(APPEND directory_ids ${include_directory_id})
+ endif()
+ list(REMOVE_DUPLICATES directory_ids)
+ set_property(TARGET ${library} PROPERTY
+ MLIR_TABLEGEN_INFERENCE_DIRECTORY_IDS "${directory_ids}")
+ foreach(directory_id ${directory_ids})
+ set_property(GLOBAL APPEND PROPERTY
+ MLIR_TABLEGEN_LIBRARY_CANDIDATES_${directory_id} ${library})
+ endforeach()
+endfunction()
+
+# Resolve each TableGen target to at most one logical owner after the complete
+# graph exists. Ordered naming candidates take precedence, followed by a
+# unique containing-dialect default and the narrow single-library directory
+# fallback.
+function(_mlir_resolve_tablegen_ownership)
+ get_property(tablegen_targets GLOBAL PROPERTY MLIR_TABLEGEN_TARGETS)
+ list(REMOVE_DUPLICATES tablegen_targets)
+ foreach(tablegen_target ${tablegen_targets})
+ get_target_property(owners ${tablegen_target} MLIR_TABLEGEN_OWNERS)
+ set(resolved_owner)
+ foreach(owner ${owners})
+ if(TARGET ${owner})
+ set(resolved_owner ${owner})
+ break()
+ endif()
+ endforeach()
+
+ if(NOT resolved_owner)
+ get_target_property(has_explicit_owner ${tablegen_target}
+ MLIR_TABLEGEN_HAS_EXPLICIT_OWNER)
+ if(has_explicit_owner)
+ message(SEND_ERROR
+ "${tablegen_target} names generated-header owner '${owners}', "
+ "but that library target does not exist")
+ continue()
+ endif()
+
+ get_target_property(directory_id ${tablegen_target}
+ MLIR_TABLEGEN_DIRECTORY_ID)
+
+ # A primary add_mlir_dialect() declaration supplies the natural owner
+ # for additional enums, attributes, bytecode, and conversion generators
+ # in the same directory. Resolve this only after all targets exist so a
+ # multi-dialect directory remains an explicit, diagnosed case.
+ get_property(default_owners GLOBAL PROPERTY
+ MLIR_TABLEGEN_DEFAULT_OWNERS_${directory_id})
+ set(existing_default_owners)
+ foreach(default_owner ${default_owners})
+ if(TARGET ${default_owner})
+ list(APPEND existing_default_owners ${default_owner})
+ endif()
+ endforeach()
+ list(REMOVE_DUPLICATES existing_default_owners)
+ list(LENGTH existing_default_owners default_owner_count)
+ if(default_owner_count GREATER 1)
+ message(SEND_ERROR
+ "${tablegen_target} has multiple dialect owner candidates "
+ "'${existing_default_owners}'; pass OWNER to its TableGen target "
+ "helper")
+ continue()
+ elseif(default_owner_count EQUAL 1)
+ list(GET existing_default_owners 0 resolved_owner)
+ endif()
+
+ if(NOT resolved_owner)
+ get_property(candidate_libraries GLOBAL PROPERTY
+ MLIR_TABLEGEN_LIBRARY_CANDIDATES_${directory_id})
+ list(REMOVE_DUPLICATES candidate_libraries)
+ list(LENGTH candidate_libraries candidate_count)
+ if(candidate_count GREATER 1)
+ message(SEND_ERROR
+ "${tablegen_target} is in a directory shared by MLIR libraries "
+ "'${candidate_libraries}'; pass OWNER to its TableGen target "
+ "helper")
+ continue()
+ elseif(candidate_count EQUAL 1)
+ list(GET candidate_libraries 0 resolved_owner)
+ endif()
+ endif()
+ endif()
+
+ if(resolved_owner)
+ set_property(TARGET ${tablegen_target} PROPERTY
+ MLIR_TABLEGEN_RESOLVED_OWNER ${resolved_owner})
+ set_property(GLOBAL APPEND PROPERTY
+ MLIR_RESOLVED_TABLEGEN_TARGETS_${resolved_owner} ${tablegen_target})
+ endif()
+ endforeach()
+endfunction()
+
+# Collect the TableGen targets assigned to one library by the final ownership
+# pass above.
+function(_mlir_collect_library_tablegen output_targets library)
+ get_property(result GLOBAL
+ PROPERTY MLIR_RESOLVED_TABLEGEN_TARGETS_${library})
+ list(REMOVE_DUPLICATES result)
+ set(${output_targets} ${result} PARENT_SCOPE)
+endfunction()
+
+# Collect the generated files owned by a library and split its logical header
+# dependencies by visibility. Both add_mlir_library() and
+# add_mlir_example_library() use this path so examples exercise the same model
+# as production libraries instead of teaching explicit `*IncGen` dependencies.
+function(_mlir_collect_library_header_dependencies name)
+ cmake_parse_arguments(ARG "" "" "DEPENDS;HEADER_LIBS;LINK_LIBS" ${ARGN})
+ foreach(header_library ${ARG_HEADER_LIBS})
+ if(header_library MATCHES "\\$<")
+ message(SEND_ERROR
+ "${name} uses a generator expression in HEADER_LIBS. Name literal "
+ "logical targets there and put the condition around the declaration "
+ "instead, so MLIR can validate every generated-header provider.")
+ endif()
+ endforeach()
+
+ _mlir_partition_header_libraries(link_headers ${ARG_LINK_LIBS})
+ _mlir_partition_header_libraries(explicit_headers ${ARG_HEADER_LIBS})
+ set(public_header_libraries
+ ${link_headers_PUBLIC} ${explicit_headers_PUBLIC})
+ set(private_header_libraries
+ ${link_headers_PRIVATE} ${explicit_headers_PRIVATE})
+ set(interface_header_libraries
+ ${link_headers_INTERFACE} ${explicit_headers_INTERFACE})
+ set(explicit_header_libraries
+ ${explicit_headers_PUBLIC}
+ ${explicit_headers_PRIVATE}
+ ${explicit_headers_INTERFACE})
+
+ # Preserve explicitly listed TableGen dependencies whose output metadata is
+ # available. Ordinary DEPENDS entries keep their existing build-order
+ # behavior and are not part of generated-header ownership.
+ set(tablegen_targets)
+ foreach(dependency ${ARG_DEPENDS})
+ if(TARGET ${dependency})
+ get_target_property(dependency_outputs ${dependency}
+ MLIR_TABLEGEN_OUTPUTS)
+ if(dependency_outputs)
+ list(APPEND tablegen_targets ${dependency})
+ endif()
+ endif()
+ endforeach()
+ list(REMOVE_DUPLICATES tablegen_targets)
+
+ set(tablegen_targets ${tablegen_targets} PARENT_SCOPE)
+ set(public_header_libraries ${public_header_libraries} PARENT_SCOPE)
+ set(private_header_libraries ${private_header_libraries} PARENT_SCOPE)
+ set(interface_header_libraries ${interface_header_libraries} PARENT_SCOPE)
+ set(explicit_header_libraries ${explicit_header_libraries} PARENT_SCOPE)
+endfunction()
+
+# Collect the generated-file targets owned directly by one logical library.
+# Explicit DEPENDS entries with TableGen metadata are retained for backwards
+# compatibility, while inferred targets come from the exclusive ownership
+# pass above.
+function(_mlir_collect_library_local_tablegen output_targets library)
+ get_target_property(explicit_targets ${library}
+ MLIR_EXPLICIT_TABLEGEN_TARGETS)
+ _mlir_collect_library_tablegen(inferred_targets ${library})
+ set(result ${explicit_targets} ${inferred_targets})
+ list(REMOVE_DUPLICATES result)
+ set(${output_targets} ${result} PARENT_SCOPE)
+endfunction()
+
+# Compute the generated-file targets published by logical MLIR libraries.
+# Flattening the graph to TableGen leaves is intentional: legal cyclic static
+# library link graphs must not turn into cycles between header carrier targets,
+# especially in the pre-CMake-3.28 add_dependencies() fallback.
+function(_mlir_collect_public_tablegen_closure output_targets)
+ set(queue ${ARGN})
+ set(visited)
+ set(result)
+ while(queue)
+ list(POP_FRONT queue provider_expression)
+ _mlir_expand_header_provider_candidates(provider_candidates
+ "${provider_expression}")
+ foreach(provider ${provider_candidates})
+ if(NOT TARGET "${provider}")
+ continue()
+ endif()
+ get_target_property(aliased_provider "${provider}" ALIASED_TARGET)
+ if(aliased_provider)
+ set(provider ${aliased_provider})
+ endif()
+ if(provider IN_LIST visited)
+ continue()
+ endif()
+ list(APPEND visited ${provider})
+
+ get_target_property(provider_imported "${provider}" IMPORTED)
+ get_target_property(provider_headers "${provider}"
+ MLIR_HEADER_DEP_TARGET)
+ if(provider_imported OR NOT provider_headers)
+ continue()
+ endif()
+
+ _mlir_collect_library_local_tablegen(local_targets ${provider})
+ list(APPEND result ${local_targets})
+ get_target_property(public_providers ${provider}
+ MLIR_PUBLIC_HEADER_LIBRARIES)
+ get_target_property(interface_providers ${provider}
+ MLIR_INTERFACE_HEADER_LIBRARIES)
+ list(APPEND queue ${public_providers} ${interface_providers})
+ endforeach()
+ endwhile()
+ list(REMOVE_DUPLICATES result)
+ set(${output_targets} ${result} PARENT_SCOPE)
+endfunction()
+
+# Attach generated-file leaves to a build target. On CMake 3.28 and newer, the
+# per-generator INTERFACE file-set target carries the public generated files.
+# Older CMake versions retain direct ordering on the TableGen custom targets.
+function(_mlir_attach_tablegen_targets target visibility)
+ # TODO: Remove the custom-target branch once LLVM requires CMake 3.28 or
+ # newer.
+ foreach(tablegen_target ${ARGN})
+ if(NOT TARGET ${tablegen_target})
+ continue()
+ endif()
+ get_target_property(tablegen_headers ${tablegen_target}
+ MLIR_TABLEGEN_HEADER_TARGET)
+ if(tablegen_headers)
+ if(visibility STREQUAL "INTERFACE")
+ target_link_libraries(${target} INTERFACE ${tablegen_headers})
+ else()
+ target_link_libraries(${target} PRIVATE
+ "$<BUILD_LOCAL_INTERFACE:${tablegen_headers}>")
+ endif()
+ else()
+ add_dependencies(${target} ${tablegen_target})
+ endif()
+ endforeach()
+endfunction()
+
+# Materialize all generated-header edges once, after the complete CMake target
+# graph and exclusive TableGen ownership are known. Header carriers contain a
+# flattened public closure of leaf generators instead of linking to one
+# another. Besides being more precise, this keeps reciprocal PUBLIC static
+# library links from creating forbidden custom-target cycles.
+function(_mlir_update_library_tablegen_dependencies)
+ get_property(header_libraries GLOBAL PROPERTY MLIR_HEADER_LIBRARIES)
+ list(REMOVE_DUPLICATES header_libraries)
+ foreach(library ${header_libraries})
+ _mlir_collect_public_tablegen_closure(public_targets ${library})
+ _mlir_collect_library_local_tablegen(local_targets ${library})
+ get_target_property(public_providers ${library}
+ MLIR_PUBLIC_HEADER_LIBRARIES)
+ get_target_property(private_providers ${library}
+ MLIR_PRIVATE_HEADER_LIBRARIES)
+ _mlir_collect_public_tablegen_closure(compile_provider_targets
+ ${public_providers} ${private_providers})
+ # INTERFACE providers belong only to the public header carrier. Compiling
+ # the library itself needs its local generators plus the usage
+ # requirements of PUBLIC and PRIVATE providers, matching CMake's ordinary
+ # link visibility semantics.
+ set(compile_targets ${local_targets} ${compile_provider_targets})
+ list(REMOVE_DUPLICATES compile_targets)
+
+ get_target_property(header_target ${library} MLIR_HEADER_DEP_TARGET)
+ get_target_property(compile_target ${library} MLIR_HEADER_COMPILE_TARGET)
+ _mlir_attach_tablegen_targets(${header_target} INTERFACE
+ ${public_targets})
+ _mlir_attach_tablegen_targets(${compile_target} PRIVATE
+ ${compile_targets})
+ endforeach()
+endfunction()
+
+# Add the public generated-header closure of logical MLIR libraries to a
+# non-library target. Library consumers are handled in one flattened pass
+# above; keeping this helper leaf-based avoids introducing carrier cycles.
+function(_mlir_update_header_target_dependencies)
+ get_property(header_consumers GLOBAL PROPERTY MLIR_HEADER_TARGET_CONSUMERS)
+ list(REMOVE_DUPLICATES header_consumers)
+ foreach(consumer ${header_consumers})
+ get_target_property(providers ${consumer} MLIR_TARGET_HEADER_LIBRARIES)
+ _mlir_collect_public_tablegen_closure(tablegen_targets ${providers})
+ _mlir_attach_tablegen_targets(${consumer} PRIVATE ${tablegen_targets})
+
+ foreach(provider_expression ${providers})
+ _mlir_expand_header_provider_candidates(provider_candidates
+ "${provider_expression}")
+ foreach(provider ${provider_candidates})
+ if(NOT TARGET "${provider}")
+ continue()
+ endif()
+ get_target_property(provider_imported "${provider}" IMPORTED)
+ get_target_property(provider_headers "${provider}"
+ MLIR_HEADER_DEP_TARGET)
+ if(provider_imported OR provider_headers)
+ set_property(TARGET ${consumer} APPEND PROPERTY
+ MLIR_RESOLVED_TARGET_HEADER_LIBRARIES ${provider})
+ endif()
+ endforeach()
+ endforeach()
+ endforeach()
+endfunction()
+
+function(_mlir_validate_header_libraries)
+ # Resolve and materialize ownership after the complete graph is available.
+ _mlir_resolve_tablegen_ownership()
+ _mlir_update_library_tablegen_dependencies()
+ _mlir_update_header_target_dependencies()
+
+ get_property(header_libraries GLOBAL PROPERTY MLIR_HEADER_LIBRARIES)
+ foreach(consumer ${header_libraries})
+ get_target_property(providers ${consumer}
+ MLIR_EXPLICIT_HEADER_LIBRARIES)
+ foreach(provider_expression ${providers})
+ _mlir_expand_header_provider_candidates(provider_candidates
+ "${provider_expression}")
+ if(NOT provider_expression MATCHES "\\$<" AND
+ NOT TARGET "${provider_expression}")
+ message(SEND_ERROR
+ "${consumer} has a header dependency on unknown target "
+ "${provider_expression}")
+ continue()
+ endif()
+ foreach(provider ${provider_candidates})
+ get_target_property(provider_imported "${provider}" IMPORTED)
+ if(provider_imported)
+ continue()
+ endif()
+ get_target_property(provider_headers "${provider}"
+ MLIR_HEADER_DEP_TARGET)
+ if(NOT provider_headers)
+ message(SEND_ERROR
+ "${consumer} has a header dependency on ${provider}, which does "
+ "not provide MLIR generated-header metadata")
+ endif()
+ endforeach()
+ endforeach()
+ endforeach()
+
+ get_property(header_consumers GLOBAL PROPERTY MLIR_HEADER_TARGET_CONSUMERS)
+ foreach(consumer ${header_consumers})
+ get_target_property(providers ${consumer} MLIR_TARGET_HEADER_LIBRARIES)
+ get_target_property(resolved ${consumer}
+ MLIR_RESOLVED_TARGET_HEADER_LIBRARIES)
+ foreach(provider_expression ${providers})
+ _mlir_expand_header_provider_candidates(provider_candidates
+ "${provider_expression}")
+ foreach(provider ${provider_candidates})
+ if(NOT provider IN_LIST resolved)
+ message(SEND_ERROR
+ "${consumer} has an unresolved MLIR header dependency on "
+ "${provider}")
+ endif()
+ endforeach()
+ endforeach()
+ endforeach()
+endfunction()
+
+function(_mlir_schedule_header_library_validation)
+ get_property(validation_scheduled GLOBAL
+ PROPERTY MLIR_HEADER_LIBRARY_VALIDATION_SCHEDULED)
+ if(NOT validation_scheduled)
+ cmake_language(DEFER DIRECTORY "${CMAKE_SOURCE_DIR}"
+ CALL _mlir_validate_header_libraries)
+ set_property(GLOBAL PROPERTY
+ MLIR_HEADER_LIBRARY_VALIDATION_SCHEDULED TRUE)
+ endif()
+endfunction()
+
+# Create the internal header-usage target for an MLIR library.
+#
+# With CMake 3.28 and CMP0154, an INTERFACE header file set identifies the
+# generated files that a consumer may include. Ninja can then order those
+# files precisely instead of conservatively waiting for every custom command
+# on the linked library. On older supported CMake versions, dependencies on
+# the corresponding TableGen targets provide the same correctness with less
+# precise target-level ordering. This is deliberately hidden behind
+# add_mlir_library so call sites have one version-independent API.
+function(_mlir_configure_library_header_dependencies name)
+ set(options)
+ set(one_value_args COMPILE_TARGET)
+ set(multi_value_args
+ TABLEGEN_TARGETS
+ EXPLICIT_LIBRARIES
+ PUBLIC_LIBRARIES
+ PRIVATE_LIBRARIES
+ INTERFACE_LIBRARIES)
+ cmake_parse_arguments(HEADER
+ "${options}" "${one_value_args}" "${multi_value_args}" ${ARGN})
+
+ set(header_target "headers.${name}")
+
+ if(POLICY CMP0154)
+ add_library(${header_target} INTERFACE)
+ set_target_properties(${header_target} PROPERTIES FOLDER
+ "MLIR/Tablegenning/Header Dependencies")
+ set(uses_file_sets ON)
+ else()
+ # TODO: Remove this custom-target fallback once LLVM requires CMake 3.28 or
+ # newer.
+ add_custom_target(${header_target})
+ set_target_properties(${header_target} PROPERTIES FOLDER
+ "MLIR/Tablegenning/Header Dependencies")
+ set(uses_file_sets OFF)
+ endif()
+
+ # Compiling the library itself needs its local generated headers and the
+ # public-header closure. PRIVATE logical dependencies are folded into that
+ # compile-only closure by the final deferred materialization pass.
+ set_target_properties(${name} PROPERTIES
+ MLIR_HEADER_DEP_TARGET ${header_target}
+ MLIR_HEADER_COMPILE_TARGET ${HEADER_COMPILE_TARGET}
+ MLIR_HEADER_DEP_USES_FILE_SETS ${uses_file_sets}
+ MLIR_EXPLICIT_TABLEGEN_TARGETS "${HEADER_TABLEGEN_TARGETS}"
+ MLIR_EXPLICIT_HEADER_LIBRARIES "${HEADER_EXPLICIT_LIBRARIES}"
+ MLIR_PUBLIC_HEADER_LIBRARIES "${HEADER_PUBLIC_LIBRARIES}"
+ MLIR_PRIVATE_HEADER_LIBRARIES "${HEADER_PRIVATE_LIBRARIES}"
+ MLIR_INTERFACE_HEADER_LIBRARIES "${HEADER_INTERFACE_LIBRARIES}")
+ _llvm_register_header_dependency_provider(${name} ${header_target})
+ _mlir_register_library_tablegen_directories(${name})
+ set_property(GLOBAL APPEND PROPERTY MLIR_HEADER_LIBRARIES ${name})
+ _mlir_schedule_header_library_validation()
+endfunction()
+
+# Add logical header dependencies after a library has been declared. This is
+# the counterpart of LINK_LIBS in add_mlir_library() for callers that use
+# mlir_target_link_libraries() separately, and keeps those two spelling styles
+# equivalent for generated-header ordering.
+function(_mlir_append_header_libraries target)
+ if(NOT TARGET ${target})
+ return()
+ endif()
+ get_target_property(header_target ${target} MLIR_HEADER_DEP_TARGET)
+ if(NOT header_target)
+ return()
+ endif()
+
+ _mlir_partition_header_libraries(new_headers ${ARGN})
+ foreach(visibility PUBLIC PRIVATE INTERFACE)
+ get_target_property(existing ${target}
+ MLIR_${visibility}_HEADER_LIBRARIES)
+ if(NOT existing)
+ set(existing)
+ endif()
+ list(APPEND existing ${new_headers_${visibility}})
+ list(REMOVE_DUPLICATES existing)
+ set_property(TARGET ${target} PROPERTY
+ MLIR_${visibility}_HEADER_LIBRARIES "${existing}")
+ endforeach()
+endfunction()
+
+# Add generated headers from logical MLIR libraries to a non-library target.
+# Library targets should use LINK_LIBS or HEADER_LIBS instead; this helper is
+# for executables such as unit tests that include a library's generated public
+# headers while keeping their ordinary link setup separate.
+function(mlir_target_link_header_libraries target)
+ foreach(header_library ${ARGN})
+ if(header_library MATCHES "\\$<")
+ message(SEND_ERROR
+ "${target} uses a generator expression in "
+ "mlir_target_link_header_libraries. Name literal logical targets so "
+ "MLIR can validate every generated-header provider.")
+ endif()
+ endforeach()
+ set_property(GLOBAL APPEND PROPERTY MLIR_HEADER_TARGET_CONSUMERS ${target})
+ set_property(TARGET ${target} APPEND PROPERTY
+ MLIR_TARGET_HEADER_LIBRARIES ${ARGN})
+ _mlir_schedule_header_library_validation()
+endfunction()
+
function(add_mlir_example_library name)
cmake_parse_arguments(ARG
"SHARED;DISABLE_INSTALL"
""
- "ADDITIONAL_HEADERS;DEPENDS;LINK_COMPONENTS;LINK_LIBS"
+ "ADDITIONAL_HEADERS;DEPENDS;HEADER_LIBS;LINK_COMPONENTS;LINK_LIBS"
${ARGN})
_set_mlir_additional_headers_as_srcs(${ARG_ADDITIONAL_HEADERS})
+ _mlir_collect_library_header_dependencies(${name}
+ DEPENDS ${ARG_DEPENDS}
+ HEADER_LIBS ${ARG_HEADER_LIBS}
+ LINK_LIBS ${ARG_LINK_LIBS})
if (ARG_SHARED)
set(LIBTYPE SHARED)
else()
@@ -297,6 +1070,19 @@ function(add_mlir_example_library name)
list(APPEND ARG_DEPENDS mlir-generic-headers)
llvm_add_library(${name} ${LIBTYPE} ${ARG_UNPARSED_ARGUMENTS} ${srcs} DEPENDS ${ARG_DEPENDS} LINK_COMPONENTS ${ARG_LINK_COMPONENTS} LINK_LIBS ${ARG_LINK_LIBS})
+ if(TARGET obj.${name})
+ set(header_compile_target obj.${name})
+ else()
+ set(header_compile_target ${name})
+ endif()
+ _mlir_configure_library_header_dependencies(${name}
+ COMPILE_TARGET ${header_compile_target}
+ TABLEGEN_TARGETS ${tablegen_targets}
+ EXPLICIT_LIBRARIES ${explicit_header_libraries}
+ PUBLIC_LIBRARIES ${public_header_libraries}
+ PRIVATE_LIBRARIES ${private_header_libraries}
+ INTERFACE_LIBRARIES ${interface_header_libraries})
+
set_target_properties(${name} PROPERTIES FOLDER "MLIR/Examples")
if (LLVM_BUILD_EXAMPLES AND NOT ${ARG_DISABLE_INSTALL})
add_mlir_library_install(${name})
@@ -325,13 +1111,55 @@ endfunction()
# are compatible with building an object library.
# STANDALONE
# Don't link against LLVMSupport.
+# Generated headers
+# TableGen targets registered with add_mlir_dialect_tablegen_target() or
+# add_mlir_generic_tablegen_target() are associated automatically when they
+# are declared in the library's directory or in the mirrored `lib/<path>`
+# and `include/mlir/<path>` directories. An explicit DEPENDS entry is still
+# honored, including when the generator lives elsewhere. Neither case has
+# to be repeated by consumers.
+#
+# LINK_LIBS also supplies generated-header ordering. PUBLIC dependencies
+# are part of this library's public header closure, PRIVATE dependencies are
+# needed only while compiling its implementation, and INTERFACE dependencies
+# are needed only by consumers. These meanings are independent of link
+# order: both PUBLIC and PRIVATE dependencies must be ready before this
+# library's sources compile.
+# HEADER_LIBS
+# Logical MLIR library dependencies whose generated headers are included by
+# this target even though their implementations are not linked. The list
+# uses the same PUBLIC, PRIVATE, and INTERFACE keywords as LINK_LIBS:
+#
+# * PRIVATE headers are needed only to compile this library.
+# * PUBLIC headers are needed to compile this library and its consumers.
+# * INTERFACE headers are needed only by consumers.
+#
+# Unqualified entries are PUBLIC, matching target_link_libraries(). Prefer
+# LINK_LIBS whenever there is also a link dependency; the macro derives the
+# corresponding header edge automatically. HEADER_LIBS is only for the
+# header-only relationship, and names the providing library rather than its
+# private TableGen `*IncGen` targets.
+#
+# Every HEADER_LIBS use must have an adjacent comment naming the source or
+# public header include that requires the edge. This records why the
+# header-only relationship exists and makes stale dependencies reviewable.
+#
+# CMake cannot infer this relationship from C++ includes. A misspelled
+# provider is diagnosed after all targets have been declared, but an omitted
+# HEADER_LIBS entry can only be observed after compilation has populated
+# dependency files. After a clean Ninja build, use `ninja -t missingdeps`
+# to verify that every generated include has a path through this graph.
function(add_mlir_library name)
cmake_parse_arguments(ARG
"SHARED;INSTALL_WITH_TOOLCHAIN;EXCLUDE_FROM_LIBMLIR;DISABLE_INSTALL;ENABLE_AGGREGATION;OBJECT;STANDALONE"
""
- "ADDITIONAL_HEADERS;DEPENDS;LINK_COMPONENTS;LINK_LIBS"
+ "ADDITIONAL_HEADERS;DEPENDS;HEADER_LIBS;LINK_COMPONENTS;LINK_LIBS"
${ARGN})
_set_mlir_additional_headers_as_srcs(${ARG_ADDITIONAL_HEADERS})
+ _mlir_collect_library_header_dependencies(${name}
+ DEPENDS ${ARG_DEPENDS}
+ HEADER_LIBS ${ARG_HEADER_LIBS}
+ LINK_LIBS ${ARG_LINK_LIBS})
# Determine type of library.
if(ARG_SHARED)
@@ -389,6 +1217,19 @@ function(add_mlir_library name)
list(APPEND ARG_DEPENDS mlir-generic-headers)
llvm_add_library(${name} ${LIBTYPE} ${ARG_UNPARSED_ARGUMENTS} ${srcs} DEPENDS ${ARG_DEPENDS} LINK_COMPONENTS ${ARG_LINK_COMPONENTS} LINK_LIBS ${ARG_LINK_LIBS})
+ if(TARGET obj.${name})
+ set(header_compile_target obj.${name})
+ else()
+ set(header_compile_target ${name})
+ endif()
+ _mlir_configure_library_header_dependencies(${name}
+ COMPILE_TARGET ${header_compile_target}
+ TABLEGEN_TARGETS ${tablegen_targets}
+ EXPLICIT_LIBRARIES ${explicit_header_libraries}
+ PUBLIC_LIBRARIES ${public_header_libraries}
+ PRIVATE_LIBRARIES ${private_header_libraries}
+ INTERFACE_LIBRARIES ${interface_header_libraries})
+
if(TARGET ${name})
target_link_libraries(${name} INTERFACE ${LLVM_COMMON_LIBS})
if(ARG_INSTALL_WITH_TOOLCHAIN)
@@ -677,25 +1518,25 @@ endfunction()
# Declare the library associated with a dialect.
function(add_mlir_dialect_library name)
set_property(GLOBAL APPEND PROPERTY MLIR_DIALECT_LIBS ${name})
- add_mlir_library(${ARGV} DEPENDS mlir-headers)
+ add_mlir_library(${ARGV})
endfunction(add_mlir_dialect_library)
# Declare the library associated with a conversion.
function(add_mlir_conversion_library name)
set_property(GLOBAL APPEND PROPERTY MLIR_CONVERSION_LIBS ${name})
- add_mlir_library(${ARGV} DEPENDS mlir-headers)
+ add_mlir_library(${ARGV})
endfunction(add_mlir_conversion_library)
# Declare the library associated with an extension.
function(add_mlir_extension_library name)
set_property(GLOBAL APPEND PROPERTY MLIR_EXTENSION_LIBS ${name})
- add_mlir_library(${ARGV} DEPENDS mlir-headers)
+ add_mlir_library(${ARGV})
endfunction(add_mlir_extension_library)
# Declare the library associated with a translation.
function(add_mlir_translation_library name)
set_property(GLOBAL APPEND PROPERTY MLIR_TRANSLATION_LIBS ${name})
- add_mlir_library(${ARGV} DEPENDS mlir-headers)
+ add_mlir_library(${ARGV})
endfunction(add_mlir_translation_library)
# Verification tools to aid debugging.
@@ -755,4 +1596,5 @@ function(mlir_target_link_libraries target type)
else()
target_link_libraries(${target} ${type} ${ARGN})
endif()
+ _mlir_append_header_libraries(${target} ${type} ${ARGN})
endfunction()
diff --git a/mlir/docs/CMakeInfrastructure.md b/mlir/docs/CMakeInfrastructure.md
new file mode 100644
index 0000000000000..6206613a27d01
--- /dev/null
+++ b/mlir/docs/CMakeInfrastructure.md
@@ -0,0 +1,403 @@
+# CMake Infrastructure
+
+[TOC]
+
+MLIR extends LLVM's CMake infrastructure with helpers for TableGen, libraries,
+dialects, interfaces, tools, and aggregate libraries. This document describes
+the MLIR-specific conventions implemented by
+[`AddMLIR.cmake`](../cmake/modules/AddMLIR.cmake). The LLVM CMake documentation
+still applies to the underlying LLVM helpers.
+
+## Loading the MLIR CMake modules
+
+In the LLVM monorepo, the top-level build loads the required modules. An
+out-of-tree project using an installed MLIR package normally starts with:
+
+~~~cmake
+find_package(MLIR REQUIRED CONFIG)
+
+list(APPEND CMAKE_MODULE_PATH "${MLIR_CMAKE_DIR}")
+list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")
+include(TableGen)
+include(AddLLVM)
+include(AddMLIR)
+include(HandleLLVMOptions)
+~~~
+
+The standalone example under `mlir/examples/standalone` is the canonical
+out-of-tree template.
+
+## Source and generated-header layout
+
+Public declarations normally live below `mlir/include/mlir`, with
+implementations in the corresponding directory below `mlir/lib`. For example,
+a dialect declared in `include/mlir/Dialect/Foo/IR` is normally implemented by
+a library in `lib/Dialect/Foo/IR`.
+
+This mirrored layout is significant. The CMake helpers use it, together with
+the current directory, to associate TableGen outputs with a library when only
+one logical library maps to that location. In a directory containing multiple
+libraries, use a conventional helper or pass `OWNER` to state ownership
+unambiguously.
+
+Generated target names such as `MLIRFooOpsIncGen` are implementation details.
+Consumers should depend on the logical library that publishes the generated
+header, not directly on its private generation target.
+
+## TableGen
+
+Set `LLVM_TARGET_DEFINITIONS` to the input file, call `mlir_tablegen` once for
+each output, and finish with one of the MLIR target helpers:
+
+| Helper | Intended output |
+| --- | --- |
+| `add_mlir_dialect_tablegen_target` | Dialect-specific generated headers |
+| `add_mlir_generic_tablegen_target` | Dialect-independent generated headers |
+| `add_mlir_library_tablegen_target` | Headers owned by one named library |
+
+For example, a library-specific rewrite header can be declared as:
+
+~~~cmake
+set(LLVM_TARGET_DEFINITIONS FooTransforms.td)
+mlir_tablegen(FooTransforms.h.inc -gen-rewriters)
+add_mlir_library_tablegen_target(
+ MLIRFooTransformsIncGen
+ MLIRFooTransforms)
+~~~
+
+The second argument records `MLIRFooTransforms` as the logical owner. A target
+that links that library then acquires the required generated-header ordering
+without naming `MLIRFooTransformsIncGen`.
+
+Use `add_mlir_generic_tablegen_target` only for genuinely dialect-independent
+headers. Such headers contribute to `mlir-generic-headers`, a deliberately
+broad convenience target; placing dialect headers there can conceal missing
+logical dependencies.
+
+### Dialects
+
+The common declaration is:
+
+~~~cmake
+add_mlir_dialect(FooOps foo)
+~~~
+
+This generates operation, type, and dialect declaration and definition
+fragments. It also creates the private `MLIRFooOpsIncGen` generation target.
+After stripping a trailing `Ops`, the helper associates those generated files
+with both established library names, `MLIRFooDialect` and `MLIRFoo`. The
+library may be declared later, and whichever conventional target is declared
+uses the association.
+
+Consequently, both conventional layouts need no ownership annotation:
+
+~~~cmake
+add_mlir_dialect(FooOps foo)
+add_mlir_dialect_library(MLIRFooDialect ...)
+
+add_mlir_dialect(StandaloneOps standalone)
+add_mlir_dialect_library(MLIRStandalone ...)
+~~~
+
+Use `OWNER` only when the library follows neither convention:
+
+~~~cmake
+add_mlir_dialect(FooOps foo OWNER ProjectDialectRuntime)
+~~~
+
+This escape hatch should be rare. Prefer a conventional name when introducing
+a new dialect. Additional TableGen targets declared in the same directory as
+a single `add_mlir_dialect` declaration inherit that dialect's logical owner.
+Directories that declare more than one dialect must use `OWNER` for extra
+generators so ownership remains unambiguous.
+
+### Operation and type interfaces
+
+Declare interface TableGen files with the corresponding helper:
+
+~~~cmake
+add_mlir_interface(ShapeInferenceOpInterface)
+add_mlir_type_interface(PtrLikeTypeInterface)
+~~~
+
+These generate declaration and definition fragments and register their
+TableGen targets. By default, an interface named `FooInterface` considers
+`MLIRFooInterface` and the conventional containing-dialect libraries as
+owners. Pass `OWNER` when the implementation library follows neither
+convention.
+
+### Sharded operations
+
+`add_sharded_ops` generates source shards that are compiled as sources. Its
+generation target is a real source-generation prerequisite and should remain
+in `DEPENDS`. It is different from a generated public header published through
+a logical library dependency.
+
+### PDLL and generated documentation
+
+Use `add_mlir_pdll_library` for PDLL sources and `add_mlir_doc` for generated
+dialect, operation, interface, or pass documentation. The latter places
+documentation targets under the MLIR documentation aggregate.
+
+## Libraries
+
+`add_mlir_library` is the base helper for MLIR libraries:
+
+~~~cmake
+add_mlir_library(MLIRFooTransforms
+ FooTransforms.cpp
+
+ ADDITIONAL_HEADER_DIRS
+ ${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Foo
+
+ LINK_COMPONENTS
+ Support
+
+ LINK_LIBS PUBLIC
+ MLIRFooDialect
+ MLIRPass
+ )
+~~~
+
+`LINK_COMPONENTS` names LLVM components. `LINK_LIBS` names CMake or MLIR
+library targets. Keeping the two separate lets LLVM and MLIR select monolithic
+shared libraries correctly.
+
+Frequently used options include:
+
+| Option | Purpose |
+| --- | --- |
+| `SHARED` or `OBJECT` | Select a non-default library form |
+| `INSTALL_WITH_TOOLCHAIN` | Install with the toolchain distribution |
+| `EXCLUDE_FROM_LIBMLIR` | Do not include the library in monolithic MLIR |
+| `DISABLE_INSTALL` | Do not create installation rules |
+| `ENABLE_AGGREGATION` | Make object files available to MLIR aggregates |
+| `STANDALONE` | Do not add the implicit `LLVMSupport` dependency |
+| `ADDITIONAL_HEADERS` | Associate additional source headers with the target |
+| `ADDITIONAL_HEADER_DIRS` | Associate source headers with IDE source groups |
+| `HEADER_LIBS` | Add generated-header dependencies without linking |
+| `DEPENDS` | Add non-library build-order prerequisites |
+
+Prefer a specialized wrapper where one describes the library's role:
+
+| Helper | Additional behavior |
+| --- | --- |
+| `add_mlir_dialect_library` | Records the target in `MLIR_DIALECT_LIBS` |
+| `add_mlir_conversion_library` | Records it in `MLIR_CONVERSION_LIBS` |
+| `add_mlir_extension_library` | Records it in `MLIR_EXTENSION_LIBS` |
+| `add_mlir_translation_library` | Records it in `MLIR_TRANSLATION_LIBS` |
+| `add_mlir_example_library` | Applies the model to example libraries |
+| `add_mlir_public_c_api_library` | Creates an aggregatable C API library |
+
+The global properties support tools and aggregate libraries that intentionally
+collect an entire category. Ordinary libraries should name only their actual
+dependencies.
+
+## Link and header dependency visibility
+
+MLIR uses one visibility declaration for both linking and generated-header
+ordering:
+
+| Declaration | Link relationship | Generated headers needed by |
+| --- | --- | --- |
+| `LINK_LIBS PUBLIC A` | `A` is linked and exported | Target and consumers |
+| `LINK_LIBS PRIVATE A` | `A` is linked but not exported | Target only |
+| `LINK_LIBS INTERFACE A` | `A` is exported but not linked | Consumers only |
+
+Choose visibility from the C++ interface:
+
+* Use `PUBLIC` when a public header includes a header from the dependency.
+* Use `PRIVATE` when only implementation files include it.
+* Use `INTERFACE` for a header-only requirement not used by this target's
+ implementation.
+
+Unqualified `LINK_LIBS` retains CMake's legacy signature behavior and should
+be avoided in new code when visibility matters.
+
+The same modeling applies when links are added after target creation:
+
+~~~cmake
+mlir_target_link_libraries(MyTarget PRIVATE MLIRFooDialect)
+~~~
+
+For a library that participates in `libMLIR`, use this helper: it updates
+generated-header ordering and implements `MLIR_LINK_MLIR_DYLIB` substitution.
+A non-dylib library or test may require raw `target_link_libraries` to preserve
+its intended static links. In that case, model any generated-header
+relationship separately with `HEADER_LIBS` at declaration time.
+
+### Header-only relationships
+
+Use `HEADER_LIBS` when a target includes generated headers from a logical MLIR
+library but must not link that library. Always document the source-level reason
+next to the declaration so that the edge can be reviewed and maintained:
+
+~~~cmake
+# FooAnalysis.cpp includes mlir/Dialect/Foo/IR/FooOps.h.
+HEADER_LIBS PRIVATE
+MLIRFooDialect
+~~~
+
+`HEADER_LIBS` accepts `PUBLIC`, `PRIVATE`, and `INTERFACE` with the same
+consumer meanings as `LINK_LIBS`, but it creates no link relationship. An
+explicit local provider must exist and publish MLIR header metadata;
+configuration fails after the directory graph has been processed otherwise.
+Imported targets are accepted as a no-op because installed packages already
+contain their generated headers.
+
+Use literal target names in `HEADER_LIBS`; generator expressions are rejected
+so misspelled logical providers cannot silently lose their ordering edge. Put
+the CMake condition around the declaration or construct the list conditionally
+instead. Generator expressions remain supported in `LINK_LIBS`.
+
+For executables or other targets not created by `add_mlir_library`, use:
+
+~~~cmake
+# MyTool.cpp includes mlir/Dialect/Foo/IR/FooOps.h.
+mlir_target_link_header_libraries(MyTool MLIRFooDialect)
+~~~
+
+This helper adds compile-time ordering only; its dependencies are inherently
+private to the non-library target and therefore take no visibility keyword.
+Like `HEADER_LIBS`, it accepts only literal target names.
+
+### When `DEPENDS` is appropriate
+
+`DEPENDS` is for prerequisites that are not represented by a logical library:
+
+* generated source shards that are compiled by the target;
+* LLVM generation targets such as `intrinsics_gen` when their generated LLVM
+ headers are included directly;
+* a deliberate build-order relationship with no CMake link or header
+ interface.
+
+Do not put an `*IncGen`, `*EnumsGen`, or `*AttrUtilsGen` header-generation
+target in a consumer's `DEPENDS`. State the logical provider through
+`LINK_LIBS` or `HEADER_LIBS` instead.
+
+## How generated-header ordering works
+
+The MLIR helpers model generated files in four stages:
+
+1. Targets created with the MLIR TableGen wrappers record only the outputs
+ accumulated for that target. Downstream projects that call raw `tablegen()`
+ retain a cumulative-output compatibility fallback and should migrate to
+ `mlir_tablegen()` for the same precision.
+2. The output target is associated with an exclusive logical owner through
+ dialect or interface naming, an explicit `OWNER`, or directory inference
+ when exactly one library maps to that directory.
+3. Each owner publishes those outputs through a private internal carrier.
+4. `LINK_LIBS` and `HEADER_LIBS` visibility computes a flattened closure of
+ leaf TableGen targets for each carrier and compile target. Carriers do not
+ depend on one another, so cyclic static-library link graphs remain legal.
+
+Both providers and consumers may be declared later in the CMake traversal.
+MLIR resolves the graph with deferred calls after all directories have been
+processed. This makes forward references work without imposing declaration
+order on the source tree.
+
+A `LINK_LIBS` entry may use a generator expression. At deferred resolution,
+MLIR conservatively orders every literal in-tree target named by that
+expression; ordering both branches of a conditional is safe. Imported targets
+need no build-tree ordering because their headers already exist.
+
+With CMake 3.28 or newer, generated headers are attached to an `INTERFACE`
+header file set under policy `CMP0154`. This gives Ninja precise knowledge of
+which target produces each private generated file. With older CMake, MLIR uses
+a custom-target carrier because those CMake versions cannot express the same
+file-set relationship. The fallback is marked with TODOs and can be removed
+when LLVM's minimum CMake version reaches 3.28.
+
+Carrier names begin with `headers.` and are private implementation details.
+They are not exported in `MLIRTargets.cmake` and must never appear in project
+CMake files.
+
+The convenience targets have deliberately different scopes:
+
+* `mlir-generic-headers` contains dialect-independent generated headers.
+* `mlir-headers` also includes generated headers that may be dialect-specific.
+
+These targets are useful aggregates, not substitutes for precise logical
+dependencies.
+
+## Tools, aggregates, and installation
+
+Use `add_mlir_tool` for installed MLIR tools. Use `add_mlir_aggregate` to build
+a shared or static library that embeds object-enabled MLIR libraries;
+`PUBLIC_LIBS` are linked normally and `EMBED_LIBS` contribute their objects.
+`add_mlir_library_install` creates the standard export and installation rules
+when a library needs them outside the normal helper path.
+
+`mlir_check_link_libraries` and `mlir_check_all_link_libraries` diagnose
+inconsistent link interfaces. They complement, but do not replace, the
+generated-header checks below.
+
+## Validating dependency changes
+
+Generated-header correctness must be tested from an empty or clean Ninja
+graph. An incremental build can leave generated files behind, and a broad
+aggregate can generate a missing header incidentally before its consumer is
+compiled.
+
+Prefer a new Ninja build directory. If reusing one, clean it before
+reconfiguring:
+
+~~~shell
+ninja -C <build> -t clean
+cmake -S llvm -B <build> -G Ninja <configuration options>
+~~~
+
+Then build representative leaf libraries first, with normal parallelism and
+before any broad aggregate target:
+
+~~~shell
+cmake --build <build> --target MLIRArmNeonDialect MLIRLinalgDialect \
+ --parallel 32
+~~~
+
+Choose leaves that exercise the ownership or visibility changed by the patch.
+A successful first build demonstrates that their generated prerequisites are
+present in Ninja's initial graph rather than supplied by earlier work.
+
+Next build the broad test graph. Besides testing MLIR, this populates compiler
+dependency files for Ninja's analysis:
+
+~~~shell
+cmake --build <build> --target check-mlir MLIRUnitTests --parallel 32
+~~~
+
+Only after that compilation succeeds, run:
+
+~~~shell
+ninja -C <build> -t missingdeps
+~~~
+
+`missingdeps` compares generated-file producers with include relationships
+recorded in compiler depfiles. Running it before compilation cannot discover
+those includes. Running only a broad build is also insufficient: aggregate
+scheduling may happen to generate a header early and hide a first-build race.
+The leaf-first build and the populated-depfile audit test different failure
+modes.
+
+After changing dependency modeling, repeat the full sequence: create or clean
+the build, reconfigure, build representative leaves, build the broad tests,
+and finally run `missingdeps`. When compatibility paths change, repeat it with
+a CMake version older than 3.28. When installed-package behavior changes, also
+configure and build `mlir/examples/standalone` in an empty out-of-tree build.
+
+If `missingdeps` reports a generated header, find the logical library that
+publishes it and add the narrow `LINK_LIBS` or `HEADER_LIBS` relationship with
+the correct visibility. Do not fix the warning with a private IncGen target or
+a global header aggregate.
+
+## Common mistakes
+
+* Depending directly on `MLIRFooOpsIncGen`: depend on `MLIRFooDialect` or
+ `MLIRFoo` through `LINK_LIBS` or `HEADER_LIBS`.
+* Making every dependency `PUBLIC`: use the visibility implied by public
+ headers and implementation includes.
+* Using `DEPENDS` for a link dependency: put the library in `LINK_LIBS`.
+* Using `mlir-headers` to repair a leaf race: add the missing logical edge.
+* Running `missingdeps` on an uncompiled graph: build first so depfiles exist.
+* Validating only an incremental or aggregate build: clean and build
+ representative leaf targets first.
diff --git a/mlir/docs/DefiningDialects/AttributesAndTypes.md b/mlir/docs/DefiningDialects/AttributesAndTypes.md
index a339a763bd607..cc89e13a6d351 100644
--- a/mlir/docs/DefiningDialects/AttributesAndTypes.md
+++ b/mlir/docs/DefiningDialects/AttributesAndTypes.md
@@ -192,11 +192,14 @@ mlir_tablegen(<Your Dialect>AttrDefs.h.inc -gen-attrdef-decls
-attrdefs-dialect=<Your Dialect>)
mlir_tablegen(<Your Dialect>AttrDefs.cpp.inc -gen-attrdef-defs
-attrdefs-dialect=<Your Dialect>)
-add_public_tablegen_target(<Your Dialect>AttrDefsIncGen)
+add_mlir_dialect_tablegen_target(<Your Dialect>AttrDefsIncGen)
```
The generated `<Your Dialect>AttrDefs.h.inc` will need to be included whereever
-you are referencing the custom attribute types.
+you are referencing the custom attribute types. The generation target is
+associated with the dialect library automatically; consumers depend on that
+logical library rather than the private IncGen target. See
+[CMake Infrastructure](../CMakeInfrastructure.md) for details.
### Documentation
diff --git a/mlir/docs/Tutorials/CreatingADialect.md b/mlir/docs/Tutorials/CreatingADialect.md
index e30b80bc5207c..fa27bb1d46a5f 100644
--- a/mlir/docs/Tutorials/CreatingADialect.md
+++ b/mlir/docs/Tutorials/CreatingADialect.md
@@ -31,6 +31,10 @@ FooOps.cpp) might be.
## CMake best practices
+See [CMake Infrastructure](../CMakeInfrastructure.md) for the authoritative
+reference for MLIR's library, TableGen, generated-header, and dependency
+helpers.
+
### TableGen Targets
Operations in dialects are typically declared using the ODS format in
@@ -42,35 +46,34 @@ add_mlir_dialect(FooOps foo)
add_mlir_doc(FooOps FooDialect Dialects/ -gen-dialect-doc)
```
-This generates the correct rules to run mlir-tblgen, along with a
-'MLIRFooOpsIncGen' target which can be used to declare dependencies.
+This generates the correct rules to run `mlir-tblgen`. The private
+`MLIRFooOpsIncGen` target is associated automatically with the conventional
+`MLIRFooDialect` and `MLIRFoo` library names. Consumers name the logical
+library rather than this generation target.
Dialect transformations are typically declared in a file FooTransforms.td.
-Targets for TableGen are described in typical llvm fashion.
+Associate their generated headers with the library that publishes them.
```cmake
set(LLVM_TARGET_DEFINITIONS FooTransforms.td)
mlir_tablegen(FooTransforms.h.inc -gen-rewriters)
-add_public_tablegen_target(MLIRFooTransformIncGen)
+add_mlir_library_tablegen_target(
+ MLIRFooTransformIncGen
+ MLIRFooDialect)
```
-The result is another 'IncGen' target, which runs mlir-tblgen.
+The generated target remains an implementation detail of `MLIRFooDialect`.
### Library Targets
-Dialects may have multiple libraries. Each library is typically
-declared with add_mlir_dialect_library(). Dialect libraries often
-depend on the generation of header files from TableGen (specified
-using the DEPENDS keyword). Dialect libraries may also depend on
-other dialect libraries. Typically this dependence is declared using
-target_link_libraries() and the PUBLIC keyword. For instance:
+Dialects may have multiple libraries. Each library is typically declared with
+`add_mlir_dialect_library()`. TableGen outputs owned by the library are
+included automatically. Dependencies on generated headers from other
+libraries are derived from `LINK_LIBS`, or stated with `HEADER_LIBS` when no
+link dependency exists. For instance:
```cmake
-add_mlir_dialect_library(MLIRFoo
- DEPENDS
- MLIRFooOpsIncGen
- MLIRFooTransformsIncGen
-
+add_mlir_dialect_library(MLIRFooDialect
LINK_COMPONENTS
Core
@@ -80,7 +83,7 @@ add_mlir_dialect_library(MLIRFoo
)
```
-add_mlir_dialect_library() is a thin wrapper around add_llvm_library()
+`add_mlir_dialect_library()` is a wrapper around `add_mlir_library()`
which collects a list of all the dialect libraries. This list is
often useful for linking tools (e.g. mlir-opt) which should have
access to all dialects. This list is also linked into libMLIR.so.
@@ -90,15 +93,11 @@ The list can be retrieved from the MLIR_DIALECT_LIBS global property:
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
```
-Note that although the Bar dialect also uses TableGen to declare its
-operations, it is not necessary to explicitly depend on the
-corresponding IncGen targets. The PUBLIC link dependency is
-sufficient. Also note that we avoid using add_dependencies
-explicitly, since the dependencies need to be available to the
-underlying add_llvm_library() call, allowing it to correctly create
-new targets with the same sources. However, dialects that depend on
-LLVM IR may need to depend on the LLVM 'intrinsics_gen' target to
-ensure that tablegen'd LLVM header files have been generated.
+The `PUBLIC` link dependency on `MLIRBar` also makes Bar's generated headers
+available before Foo and its consumers compile. Do not name Bar's private
+IncGen target or use `add_dependencies` for that relationship. Dialects that
+include generated LLVM IR headers may still need the LLVM `intrinsics_gen`
+target in `DEPENDS`, because that prerequisite is not an MLIR library.
In addition, linkage to MLIR libraries is specified using the
LINK_LIBS descriptor and linkage to LLVM libraries is specified using
@@ -127,11 +126,14 @@ mlir/lib/Conversion/GPUCommon.
## CMake best practices
+See [CMake Infrastructure](../CMakeInfrastructure.md) for the full dependency
+and visibility model.
+
Each conversion typically exists in a separate library, declared with
add_mlir_conversion_library(). Conversion libraries typically depend
on their source and target dialects, but may also depend on other
dialects (e.g. MLIRFunc). Typically this dependence is specified
-using target_link_libraries() and the PUBLIC keyword. For instance:
+using `LINK_LIBS` and the appropriate visibility. For instance:
```cmake
add_mlir_conversion_library(MLIRBarToFoo
@@ -146,8 +148,8 @@ add_mlir_conversion_library(MLIRBarToFoo
)
```
-add_mlir_conversion_library() is a thin wrapper around
-add_llvm_library() which collects a list of all the conversion
+`add_mlir_conversion_library()` is a wrapper around
+`add_mlir_library()` which collects a list of all the conversion
libraries. This list is often useful for linking tools
(e.g. mlir-opt) which should have access to all dialects. This list
is also linked in libMLIR.so. The list can be retrieved from the
@@ -157,9 +159,11 @@ MLIR_CONVERSION_LIBS global property:
get_property(dialect_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
```
-Note that it is only necessary to specify a PUBLIC dependence against
-dialects to generate compile-time and link-time dependencies, and it
-is not necessary to explicitly depend on the dialects' IncGen targets.
+Specify the visibility implied by the C++ interface when depending on a
+dialect: `PUBLIC` for a public-header dependency and `PRIVATE` when only
+implementation files include it. The logical dialect library supplies both
+the link relationship and generated-header ordering, so do not also depend on
+its IncGen target.
However, conversions that directly include LLVM IR header files may
need to depend on the LLVM 'intrinsics_gen' target to ensure that
tablegen'd LLVM header files have been generated.
diff --git a/mlir/docs/Tutorials/QuickstartRewrites.md b/mlir/docs/Tutorials/QuickstartRewrites.md
index 0aa1711414b9a..10c732ea919d5 100644
--- a/mlir/docs/Tutorials/QuickstartRewrites.md
+++ b/mlir/docs/Tutorials/QuickstartRewrites.md
@@ -149,12 +149,15 @@ configuration in CMake:
```cmake
set(LLVM_TARGET_DEFINITIONS <name-of-the-td-file>)
mlir_tablegen(<name-of-the-generated-inc-file> -gen-rewriters)
-add_public_tablegen_target(<name-of-the-cmake-target>)
+add_mlir_library_tablegen_target(
+ <name-of-the-cmake-target>
+ <name-of-the-owning-library>)
```
Then you can `#include` the generated file in any C++ implementation file you
-like. (You will also need to make sure the library depends on the CMake target
-defined in the above.) The generated file will have a `populateWithGenerated(
+like. The owning library acquires the generation dependency automatically, and
+consumers depend on its logical library target. The generated file will have a
+`populateWithGenerated(
RewritePatternSet &patterns)` function that you can
use to collect all the generated patterns inside `patterns` and then use
`patterns` in any pass you would like.
diff --git a/mlir/docs/Tutorials/transform/Ch2.md b/mlir/docs/Tutorials/transform/Ch2.md
index 08c4e0f9d859c..f2d83399d85ac 100644
--- a/mlir/docs/Tutorials/transform/Ch2.md
+++ b/mlir/docs/Tutorials/transform/Ch2.md
@@ -89,8 +89,8 @@ set(LLVM_TARGET_DEFINITIONS MyExtension.td)
mlir_tablegen(MyExtension.h.inc -gen-op-decls)
mlir_tablegen(MyExtension.cpp.inc -gen-op-defs)
-# Add a CMakeTarget we can depend on to ensure the generation happens before the compilation.
-add_public_tablegen_target(MyExtensionIncGen)
+# Associate the generated files with their logical library.
+add_mlir_library_tablegen_target(MyExtensionIncGen MyExtension)
# Don't forget to generate the documentation, this will produce a MyExtension.md under
# Dialects.
@@ -106,11 +106,6 @@ add_mlir_library(
# Built from the following source files.
MyExtension.cpp
- # Make sure ODS declaration and definitions are generated before compiling
- # this.
- DEPENDS
- MyExtensionIncGen
-
# Link in the transform dialect, and all generated dialects.
LINK_LIBS PUBLIC
MLIRTransformDialect
diff --git a/mlir/examples/standalone/include/Standalone/CMakeLists.txt b/mlir/examples/standalone/include/Standalone/CMakeLists.txt
index 975a4ffaa2aa0..f02cae1a6bb50 100644
--- a/mlir/examples/standalone/include/Standalone/CMakeLists.txt
+++ b/mlir/examples/standalone/include/Standalone/CMakeLists.txt
@@ -4,4 +4,4 @@ add_mlir_doc(StandaloneOps StandaloneOps Standalone/ -gen-op-doc)
set(LLVM_TARGET_DEFINITIONS StandalonePasses.td)
mlir_tablegen(StandalonePasses.h.inc --gen-pass-decls)
-add_public_tablegen_target(MLIRStandalonePassesIncGen)
+add_mlir_library_tablegen_target(MLIRStandalonePassesIncGen MLIRStandalone)
diff --git a/mlir/examples/standalone/lib/Standalone/CMakeLists.txt b/mlir/examples/standalone/lib/Standalone/CMakeLists.txt
index 0f1705a25c8c8..53d0c951a43ab 100644
--- a/mlir/examples/standalone/lib/Standalone/CMakeLists.txt
+++ b/mlir/examples/standalone/lib/Standalone/CMakeLists.txt
@@ -7,10 +7,6 @@ add_mlir_dialect_library(MLIRStandalone
ADDITIONAL_HEADER_DIRS
${PROJECT_SOURCE_DIR}/include/Standalone
- DEPENDS
- MLIRStandaloneOpsIncGen
- MLIRStandalonePassesIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRInferTypeOpInterface
diff --git a/mlir/examples/transform/Ch2/include/CMakeLists.txt b/mlir/examples/transform/Ch2/include/CMakeLists.txt
index bb8935153e768..ded50d283c34c 100644
--- a/mlir/examples/transform/Ch2/include/CMakeLists.txt
+++ b/mlir/examples/transform/Ch2/include/CMakeLists.txt
@@ -6,7 +6,7 @@ mlir_tablegen(MyExtension.h.inc -gen-op-decls)
mlir_tablegen(MyExtension.cpp.inc -gen-op-defs)
# Add a CMakeTarget we can depend on to ensure the generation happens before the compilation.
-add_public_tablegen_target(MyExtensionCh2IncGen)
+add_mlir_library_tablegen_target(MyExtensionCh2IncGen MyExtensionCh2)
# Don't forget to generate the documentation, this will produce a
# MyExtensionCh2.md under Tutorials/transform
diff --git a/mlir/examples/transform/Ch2/lib/CMakeLists.txt b/mlir/examples/transform/Ch2/lib/CMakeLists.txt
index 9c2327284292e..7f8f8ddd62346 100644
--- a/mlir/examples/transform/Ch2/lib/CMakeLists.txt
+++ b/mlir/examples/transform/Ch2/lib/CMakeLists.txt
@@ -10,10 +10,6 @@ add_mlir_example_library(
ADDITIONAL_HEADER_DIRS
${PROJECT_SOURCE_DIR}/examples/transform/Ch2/include
- # Make sure ODS declaration and definitions are generated before compiling this.
- DEPENDS
- MyExtensionCh2IncGen
-
# Link in the transform dialect, an all generated dialects.
LINK_LIBS PRIVATE
MLIRTransformDialect
diff --git a/mlir/examples/transform/Ch3/include/CMakeLists.txt b/mlir/examples/transform/Ch3/include/CMakeLists.txt
index 59bd3be30538b..55b0272b3b3f2 100644
--- a/mlir/examples/transform/Ch3/include/CMakeLists.txt
+++ b/mlir/examples/transform/Ch3/include/CMakeLists.txt
@@ -13,7 +13,7 @@ mlir_tablegen(MyExtensionTypes.h.inc -gen-typedef-decls)
mlir_tablegen(MyExtensionTypes.cpp.inc -gen-typedef-defs)
# Add a CMakeTarget we can depend on to ensure the generation happens before the compilation.
-add_public_tablegen_target(MyExtensionCh3IncGen)
+add_mlir_library_tablegen_target(MyExtensionCh3IncGen MyExtensionCh3)
# Don't forget to generate the documentation, this will produce a
# MyExtensionCh3.md under Tutorials/transform
diff --git a/mlir/examples/transform/Ch3/lib/CMakeLists.txt b/mlir/examples/transform/Ch3/lib/CMakeLists.txt
index 2c04a8bab85a2..f6311614880bd 100644
--- a/mlir/examples/transform/Ch3/lib/CMakeLists.txt
+++ b/mlir/examples/transform/Ch3/lib/CMakeLists.txt
@@ -10,10 +10,6 @@ add_mlir_example_library(
ADDITIONAL_HEADER_DIRS
${PROJECT_SOURCE_DIR}/examples/transform/Ch3/include
- # Make sure ODS declaration and definitions are generated before compiling this.
- DEPENDS
- MyExtensionCh3IncGen
-
# Link in the transform dialect, an all generated dialects.
LINK_LIBS PRIVATE
MLIRTransformDialect
diff --git a/mlir/examples/transform/Ch4/include/CMakeLists.txt b/mlir/examples/transform/Ch4/include/CMakeLists.txt
index 1f960e590529b..d144b4a0ace31 100644
--- a/mlir/examples/transform/Ch4/include/CMakeLists.txt
+++ b/mlir/examples/transform/Ch4/include/CMakeLists.txt
@@ -7,7 +7,7 @@ mlir_tablegen(MyExtension.cpp.inc -gen-op-defs)
# Add a CMakeTarget we can depend on to ensure the generation happens before the
# compilation.
-add_public_tablegen_target(MyExtensionCh4IncGen)
+add_mlir_library_tablegen_target(MyExtensionCh4IncGen MyExtensionCh4)
# Don't forget to generate the documentation, this will produce a
# MyExtensionCh4.md under Tutorials/transform
diff --git a/mlir/examples/transform/Ch4/lib/CMakeLists.txt b/mlir/examples/transform/Ch4/lib/CMakeLists.txt
index 33338a679af3c..40ba66b52adad 100644
--- a/mlir/examples/transform/Ch4/lib/CMakeLists.txt
+++ b/mlir/examples/transform/Ch4/lib/CMakeLists.txt
@@ -10,10 +10,6 @@ add_mlir_example_library(
ADDITIONAL_HEADER_DIRS
${PROJECT_SOURCE_DIR}/examples/transform/Ch4/include
- # Make sure ODS declaration and definitions are generated before compiling this.
- DEPENDS
- MyExtensionCh4IncGen
-
# Link in the transform dialect, an all generated dialects.
LINK_LIBS PRIVATE
MLIRTransformDialect
diff --git a/mlir/include/mlir/Dialect/GPU/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/GPU/IR/CMakeLists.txt
index 32323ab62332a..8b0f39de7f741 100644
--- a/mlir/include/mlir/Dialect/GPU/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/GPU/IR/CMakeLists.txt
@@ -4,29 +4,35 @@ add_mlir_doc(GPUOps GPUOps Dialects/ -gen-op-doc -dialect=gpu)
set(LLVM_TARGET_DEFINITIONS GPUBase.td)
mlir_tablegen(GPUOpInterfaces.h.inc -gen-op-interface-decls)
mlir_tablegen(GPUOpInterfaces.cpp.inc -gen-op-interface-defs)
-add_mlir_dialect_tablegen_target(MLIRGPUOpInterfacesIncGen)
+add_mlir_dialect_tablegen_target(MLIRGPUOpInterfacesIncGen
+ OWNER MLIRGPUDialect)
set(LLVM_TARGET_DEFINITIONS ParallelLoopMapperAttr.td)
mlir_tablegen(ParallelLoopMapperEnums.h.inc -gen-enum-decls)
mlir_tablegen(ParallelLoopMapperEnums.cpp.inc -gen-enum-defs)
-add_mlir_dialect_tablegen_target(MLIRParallelLoopMapperEnumsGen)
+add_mlir_dialect_tablegen_target(MLIRParallelLoopMapperEnumsGen
+ OWNER MLIRGPUDialect)
set(LLVM_TARGET_DEFINITIONS GPUOps.td)
mlir_tablegen(GPUOpsEnums.h.inc -gen-enum-decls)
mlir_tablegen(GPUOpsEnums.cpp.inc -gen-enum-defs)
-add_mlir_dialect_tablegen_target(MLIRGPUOpsEnumsGen)
+add_mlir_dialect_tablegen_target(MLIRGPUOpsEnumsGen
+ OWNER MLIRGPUDialect)
set(LLVM_TARGET_DEFINITIONS CompilationAttrInterfaces.td)
mlir_tablegen(CompilationAttrInterfaces.h.inc -gen-attr-interface-decls)
mlir_tablegen(CompilationAttrInterfaces.cpp.inc -gen-attr-interface-defs)
-add_mlir_dialect_tablegen_target(MLIRGPUCompilationAttrInterfacesIncGen)
+add_mlir_dialect_tablegen_target(MLIRGPUCompilationAttrInterfacesIncGen
+ OWNER MLIRGPUDialect)
set(LLVM_TARGET_DEFINITIONS GPUDeviceMappingAttr.td)
mlir_tablegen(GPUDeviceMapperEnums.h.inc -gen-enum-decls)
mlir_tablegen(GPUDeviceMapperEnums.cpp.inc -gen-enum-defs)
-add_mlir_dialect_tablegen_target(MLIRGPUDeviceMapperEnumsGen)
+add_mlir_dialect_tablegen_target(MLIRGPUDeviceMapperEnumsGen
+ OWNER MLIRGPUDialect)
set(LLVM_TARGET_DEFINITIONS GPUOps.td)
mlir_tablegen(GPUOpsAttributes.h.inc -gen-attrdef-decls -attrdefs-dialect=gpu)
mlir_tablegen(GPUOpsAttributes.cpp.inc -gen-attrdef-defs -attrdefs-dialect=gpu)
-add_mlir_dialect_tablegen_target(MLIRGPUOpsAttributesIncGen)
+add_mlir_dialect_tablegen_target(MLIRGPUOpsAttributesIncGen
+ OWNER MLIRGPUDialect)
diff --git a/mlir/include/mlir/Dialect/LLVMIR/CMakeLists.txt b/mlir/include/mlir/Dialect/LLVMIR/CMakeLists.txt
index a81288495f625..828ff22c61050 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/LLVMIR/CMakeLists.txt
@@ -11,22 +11,23 @@ mlir_tablegen(LLVMOpsAttrDefs.h.inc -gen-attrdef-decls
-attrdefs-dialect=llvm)
mlir_tablegen(LLVMOpsAttrDefs.cpp.inc -gen-attrdef-defs
-attrdefs-dialect=llvm)
-add_mlir_dialect_tablegen_target(MLIRLLVMOpsIncGen)
+add_mlir_dialect_tablegen_target(MLIRLLVMOpsIncGen OWNER MLIRLLVMDialect)
set(LLVM_TARGET_DEFINITIONS LLVMTypes.td)
mlir_tablegen(LLVMTypes.h.inc -gen-typedef-decls -typedefs-dialect=llvm)
mlir_tablegen(LLVMTypes.cpp.inc -gen-typedef-defs -typedefs-dialect=llvm)
-add_mlir_dialect_tablegen_target(MLIRLLVMTypesIncGen)
+add_mlir_dialect_tablegen_target(MLIRLLVMTypesIncGen OWNER MLIRLLVMDialect)
set(LLVM_TARGET_DEFINITIONS LLVMIntrinsicOps.td)
mlir_tablegen(LLVMIntrinsicOps.h.inc -gen-op-decls)
mlir_tablegen(LLVMIntrinsicOps.cpp.inc -gen-op-defs)
-add_mlir_dialect_tablegen_target(MLIRLLVMIntrinsicOpsIncGen)
+add_mlir_dialect_tablegen_target(MLIRLLVMIntrinsicOpsIncGen
+ OWNER MLIRLLVMDialect)
set(LLVM_TARGET_DEFINITIONS LLVMAllOps.td)
mlir_tablegen(LLVMAllOps.h.inc -gen-op-decls -op-shard-count=8)
mlir_tablegen(LLVMAllOps.cpp.inc -gen-op-defs -op-shard-count=8)
-add_mlir_dialect_tablegen_target(MLIRLLVMAllOpsIncGen)
+add_mlir_dialect_tablegen_target(MLIRLLVMAllOpsIncGen OWNER MLIRLLVMDialect)
add_mlir_doc(LLVMOps LLVMOps Dialects/ -gen-op-doc -dialect=llvm)
add_mlir_doc(LLVMIntrinsicOps LLVMIntrinsicOps Dialects/ -gen-op-doc -dialect=llvm)
@@ -38,34 +39,40 @@ mlir_tablegen(LLVMAttrInterfaces.h.inc -gen-attr-interface-decls)
mlir_tablegen(LLVMAttrInterfaces.cpp.inc -gen-attr-interface-defs)
mlir_tablegen(LLVMTypeInterfaces.h.inc -gen-type-interface-decls)
mlir_tablegen(LLVMTypeInterfaces.cpp.inc -gen-type-interface-defs)
-add_mlir_dialect_tablegen_target(MLIRLLVMInterfacesIncGen)
+add_mlir_dialect_tablegen_target(MLIRLLVMInterfacesIncGen
+ OWNER MLIRLLVMDialect)
set(LLVM_TARGET_DEFINITIONS LLVMOps.td)
mlir_tablegen(LLVMConversions.inc -gen-llvmir-conversions)
mlir_tablegen(LLVMConversionEnumsToLLVM.inc -gen-enum-to-llvmir-conversions)
mlir_tablegen(LLVMConversionEnumsFromLLVM.inc -gen-enum-from-llvmir-conversions)
mlir_tablegen(LLVMOpFromLLVMIRConversions.inc -gen-op-from-llvmir-conversions)
-add_mlir_dialect_tablegen_target(MLIRLLVMConversionsIncGen)
+add_mlir_dialect_tablegen_target(MLIRLLVMConversionsIncGen
+ OWNER MLIRLLVMDialect)
set(LLVM_TARGET_DEFINITIONS LLVMIntrinsicOps.td)
mlir_tablegen(LLVMIntrinsicConversions.inc -gen-llvmir-conversions)
mlir_tablegen(LLVMIntrinsicFromLLVMIRConversions.inc -gen-intr-from-llvmir-conversions)
mlir_tablegen(LLVMConvertibleLLVMIRIntrinsics.inc -gen-convertible-llvmir-intrinsics)
-add_mlir_dialect_tablegen_target(MLIRLLVMIntrinsicConversionsIncGen)
+add_mlir_dialect_tablegen_target(MLIRLLVMIntrinsicConversionsIncGen
+ OWNER MLIRLLVMDialect)
set(LLVM_TARGET_DEFINITIONS LLVMDialectBytecode.td)
mlir_tablegen(LLVMDialectBytecode.cpp.inc -gen-bytecode -bytecode-dialect="LLVM")
-add_public_tablegen_target(MLIRLLVMDialectBytecodeIncGen)
+add_mlir_library_tablegen_target(MLIRLLVMDialectBytecodeIncGen
+ MLIRLLVMDialect)
set(LLVM_TARGET_DEFINITIONS BasicPtxBuilderInterface.td)
mlir_tablegen(BasicPtxBuilderInterface.h.inc -gen-op-interface-decls)
mlir_tablegen(BasicPtxBuilderInterface.cpp.inc -gen-op-interface-defs)
-add_mlir_dialect_tablegen_target(MLIRBasicPtxBuilderInterfaceIncGen)
+add_mlir_dialect_tablegen_target(MLIRBasicPtxBuilderInterfaceIncGen
+ OWNER MLIRNVVMDialect)
set(LLVM_TARGET_DEFINITIONS NVVMRequiresSMTraits.td)
mlir_tablegen(NVVMRequiresSMTraits.h.inc -gen-op-interface-decls)
mlir_tablegen(NVVMRequiresSMTraits.cpp.inc -gen-op-interface-defs)
-add_mlir_dialect_tablegen_target(MLIRNVVMRequiresSMTraitsIncGen)
+add_mlir_dialect_tablegen_target(MLIRNVVMRequiresSMTraitsIncGen
+ OWNER MLIRNVVMDialect)
add_mlir_dialect(NVVMOps nvvm)
add_mlir_doc(NVVMOps NVVMOps Dialects/ -gen-op-doc -dialect=nvvm)
@@ -77,7 +84,8 @@ mlir_tablegen(NVVMOpsEnums.h.inc -gen-enum-decls)
mlir_tablegen(NVVMOpsEnums.cpp.inc -gen-enum-defs)
mlir_tablegen(NVVMOpsAttributes.h.inc -gen-attrdef-decls -attrdefs-dialect=nvvm)
mlir_tablegen(NVVMOpsAttributes.cpp.inc -gen-attrdef-defs -attrdefs-dialect=nvvm)
-add_mlir_dialect_tablegen_target(MLIRNVVMConversionsIncGen)
+add_mlir_dialect_tablegen_target(MLIRNVVMConversionsIncGen
+ OWNER MLIRNVVMDialect)
set(LLVM_TARGET_DEFINITIONS ROCDLOps.td)
mlir_tablegen(ROCDLOps.h.inc -gen-op-decls -op-shard-count=8)
@@ -86,7 +94,7 @@ mlir_tablegen(ROCDLOpsTypes.h.inc -gen-typedef-decls -typedefs-dialect=rocdl)
mlir_tablegen(ROCDLOpsTypes.cpp.inc -gen-typedef-defs -typedefs-dialect=rocdl)
mlir_tablegen(ROCDLOpsDialect.h.inc -gen-dialect-decls -dialect=rocdl)
mlir_tablegen(ROCDLOpsDialect.cpp.inc -gen-dialect-defs -dialect=rocdl)
-add_mlir_dialect_tablegen_target(MLIRROCDLOpsIncGen)
+add_mlir_dialect_tablegen_target(MLIRROCDLOpsIncGen OWNER MLIRROCDLDialect)
add_mlir_doc(ROCDLOps ROCDLDialect Dialects/ -gen-dialect-doc -dialect=rocdl)
set(LLVM_TARGET_DEFINITIONS ROCDLOps.td)
mlir_tablegen(ROCDLConversions.inc -gen-llvmir-conversions)
@@ -94,7 +102,8 @@ mlir_tablegen(ROCDLOpsEnums.h.inc -gen-enum-decls)
mlir_tablegen(ROCDLOpsEnums.cpp.inc -gen-enum-defs)
mlir_tablegen(ROCDLOpsAttributes.h.inc -gen-attrdef-decls -attrdefs-dialect=rocdl)
mlir_tablegen(ROCDLOpsAttributes.cpp.inc -gen-attrdef-defs -attrdefs-dialect=rocdl)
-add_mlir_dialect_tablegen_target(MLIRROCDLConversionsIncGen)
+add_mlir_dialect_tablegen_target(MLIRROCDLConversionsIncGen
+ OWNER MLIRROCDLDialect)
add_mlir_dialect(VCIXOps vcix)
add_mlir_doc(VCIXOps VCIXDialect Dialects/ -gen-dialect-doc -dialect=vcix)
@@ -102,7 +111,8 @@ set(LLVM_TARGET_DEFINITIONS VCIXOps.td)
mlir_tablegen(VCIXConversions.inc -gen-llvmir-conversions)
mlir_tablegen(VCIXOpsAttributes.h.inc -gen-attrdef-decls -attrdefs-dialect=vcix)
mlir_tablegen(VCIXOpsAttributes.cpp.inc -gen-attrdef-defs -attrdefs-dialect=vcix)
-add_mlir_dialect_tablegen_target(MLIRVCIXConversionsIncGen)
+add_mlir_dialect_tablegen_target(MLIRVCIXConversionsIncGen
+ OWNER MLIRVCIXDialect)
add_mlir_dialect(XeVMOps xevm)
add_mlir_doc(XeVMOps XeVMDialect Dialects/ -gen-dialect-doc -dialect=xevm)
@@ -112,4 +122,5 @@ mlir_tablegen(XeVMOpsEnums.h.inc -gen-enum-decls)
mlir_tablegen(XeVMOpsEnums.cpp.inc -gen-enum-defs)
mlir_tablegen(XeVMOpsAttributes.h.inc -gen-attrdef-decls -attrdefs-dialect=xevm)
mlir_tablegen(XeVMOpsAttributes.cpp.inc -gen-attrdef-defs -attrdefs-dialect=xevm)
-add_mlir_dialect_tablegen_target(MLIRXeVMConversionsIncGen)
+add_mlir_dialect_tablegen_target(MLIRXeVMConversionsIncGen
+ OWNER MLIRXeVMDialect)
diff --git a/mlir/include/mlir/Dialect/OpenACC/CMakeLists.txt b/mlir/include/mlir/Dialect/OpenACC/CMakeLists.txt
index 789cd709ff16d..f242f3f5c2a22 100644
--- a/mlir/include/mlir/Dialect/OpenACC/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/OpenACC/CMakeLists.txt
@@ -3,6 +3,8 @@ add_subdirectory(Transforms)
set(LLVM_TARGET_DEFINITIONS ${LLVM_MAIN_INCLUDE_DIR}/llvm/Frontend/OpenACC/ACC.td)
mlir_tablegen(AccCommon.td --gen-directive-decl --directives-dialect=OpenACC)
add_mlir_dialect_tablegen_target(acc_common_td)
+# Subsequent TableGen inputs include the generated AccCommon.td file.
+list(APPEND LLVM_TARGET_DEPENDS acc_common_td)
add_mlir_dialect(OpenACCOps acc)
@@ -25,3 +27,4 @@ set(LLVM_TARGET_DEFINITIONS OpenACCTypeInterfaces.td)
mlir_tablegen(OpenACCTypeInterfaces.h.inc -gen-type-interface-decls)
mlir_tablegen(OpenACCTypeInterfaces.cpp.inc -gen-type-interface-defs)
add_mlir_dialect_tablegen_target(MLIROpenACCTypeInterfacesIncGen)
+list(REMOVE_ITEM LLVM_TARGET_DEPENDS acc_common_td)
diff --git a/mlir/include/mlir/Dialect/OpenMP/CMakeLists.txt b/mlir/include/mlir/Dialect/OpenMP/CMakeLists.txt
index 691163d9ce9ac..c5e9972fdaa97 100644
--- a/mlir/include/mlir/Dialect/OpenMP/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/OpenMP/CMakeLists.txt
@@ -3,6 +3,8 @@ add_subdirectory(Transforms)
set(LLVM_TARGET_DEFINITIONS ${LLVM_MAIN_INCLUDE_DIR}/llvm/Frontend/OpenMP/OMP.td)
mlir_tablegen(OmpCommon.td --gen-directive-decl --directives-dialect=OpenMP)
add_mlir_dialect_tablegen_target(omp_common_td)
+# Subsequent TableGen inputs include the generated OmpCommon.td file.
+list(APPEND LLVM_TARGET_DEPENDS omp_common_td)
set(LLVM_TARGET_DEFINITIONS OpenMPOps.td)
@@ -27,7 +29,8 @@ mlir_tablegen(OpenMPOpsEnums.cpp.inc -gen-enum-defs)
mlir_tablegen(OpenMPOpsAttributes.h.inc -gen-attrdef-decls -attrdefs-dialect=omp)
mlir_tablegen(OpenMPOpsAttributes.cpp.inc -gen-attrdef-defs -attrdefs-dialect=omp)
add_mlir_doc(OpenMPOps OpenMPDialect Dialects/ -gen-dialect-doc -dialect=omp)
-add_mlir_dialect_tablegen_target(MLIROpenMPOpsIncGen)
+add_mlir_dialect_tablegen_target(MLIROpenMPOpsIncGen
+ OWNER MLIROpenMPDialect)
add_dependencies(OpenMPDialectDocGen omp_common_td)
add_mlir_interface(OpenMPOpsInterfaces)
@@ -35,3 +38,4 @@ set(LLVM_TARGET_DEFINITIONS OpenMPTypeInterfaces.td)
mlir_tablegen(OpenMPTypeInterfaces.h.inc -gen-type-interface-decls)
mlir_tablegen(OpenMPTypeInterfaces.cpp.inc -gen-type-interface-defs)
add_mlir_generic_tablegen_target(MLIROpenMPTypeInterfacesIncGen)
+list(REMOVE_ITEM LLVM_TARGET_DEPENDS omp_common_td)
diff --git a/mlir/include/mlir/Dialect/Ptr/IR/CMakeLists.txt b/mlir/include/mlir/Dialect/Ptr/IR/CMakeLists.txt
index 388d735843c4e..27d3373b8ca92 100644
--- a/mlir/include/mlir/Dialect/Ptr/IR/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Ptr/IR/CMakeLists.txt
@@ -4,14 +4,16 @@ add_mlir_doc(PtrOps PtrOps Dialects/ -gen-dialect-doc -dialect=ptr)
set(LLVM_TARGET_DEFINITIONS PtrOps.td)
mlir_tablegen(PtrOpsAttrs.h.inc -gen-attrdef-decls -attrdefs-dialect=ptr)
mlir_tablegen(PtrOpsAttrs.cpp.inc -gen-attrdef-defs -attrdefs-dialect=ptr)
-add_mlir_dialect_tablegen_target(MLIRPtrOpsAttributesIncGen)
+add_mlir_dialect_tablegen_target(MLIRPtrOpsAttributesIncGen
+ OWNER MLIRPtrDialect)
set(LLVM_TARGET_DEFINITIONS MemorySpaceInterfaces.td)
mlir_tablegen(MemorySpaceAttrInterfaces.h.inc -gen-attr-interface-decls)
mlir_tablegen(MemorySpaceAttrInterfaces.cpp.inc -gen-attr-interface-defs)
-add_mlir_dialect_tablegen_target(MLIRPtrMemorySpaceInterfacesIncGen)
+add_mlir_dialect_tablegen_target(MLIRPtrMemorySpaceInterfacesIncGen
+ OWNER MLIRPtrMemorySpaceInterfaces)
set(LLVM_TARGET_DEFINITIONS PtrOps.td)
mlir_tablegen(PtrOpsEnums.h.inc -gen-enum-decls)
mlir_tablegen(PtrOpsEnums.cpp.inc -gen-enum-defs)
-add_mlir_dialect_tablegen_target(MLIRPtrOpsEnumsGen)
+add_mlir_dialect_tablegen_target(MLIRPtrOpsEnumsGen OWNER MLIRPtrDialect)
diff --git a/mlir/include/mlir/Dialect/SPIRV/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/SPIRV/Transforms/CMakeLists.txt
index a3eb69764a4cd..7e93131ee9df9 100644
--- a/mlir/include/mlir/Dialect/SPIRV/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/SPIRV/Transforms/CMakeLists.txt
@@ -2,6 +2,7 @@ set(LLVM_TARGET_DEFINITIONS Passes.td)
mlir_tablegen(Passes.h.inc -gen-pass-decls -name SPIRV)
mlir_tablegen(Passes.capi.h.inc -gen-pass-capi-header --prefix SPIRV)
mlir_tablegen(Passes.capi.cpp.inc -gen-pass-capi-impl --prefix SPIRV)
-add_mlir_dialect_tablegen_target(MLIRSPIRVPassIncGen)
+add_mlir_dialect_tablegen_target(MLIRSPIRVPassIncGen
+ OWNER MLIRSPIRVTransforms)
add_mlir_doc(Passes SPIRVPasses ./ -gen-pass-doc)
diff --git a/mlir/include/mlir/Dialect/Transform/SMTExtension/CMakeLists.txt b/mlir/include/mlir/Dialect/Transform/SMTExtension/CMakeLists.txt
index 55e7c19fc3f14..092fdda0421e4 100644
--- a/mlir/include/mlir/Dialect/Transform/SMTExtension/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/Transform/SMTExtension/CMakeLists.txt
@@ -1,6 +1,7 @@
set(LLVM_TARGET_DEFINITIONS SMTExtensionOps.td)
mlir_tablegen(SMTExtensionOps.h.inc -gen-op-decls)
mlir_tablegen(SMTExtensionOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRTransformDialectSMTExtensionOpsIncGen)
+add_mlir_library_tablegen_target(
+ MLIRTransformDialectSMTExtensionOpsIncGen MLIRTransformSMTExtension)
add_mlir_doc(SMTExtensionOps SMTExtensionOps Dialects/ -gen-op-doc -dialect=transform)
diff --git a/mlir/include/mlir/Dialect/XeGPU/TransformOps/CMakeLists.txt b/mlir/include/mlir/Dialect/XeGPU/TransformOps/CMakeLists.txt
index 318d0d9c8c86a..49de59d313977 100644
--- a/mlir/include/mlir/Dialect/XeGPU/TransformOps/CMakeLists.txt
+++ b/mlir/include/mlir/Dialect/XeGPU/TransformOps/CMakeLists.txt
@@ -1,6 +1,7 @@
set(LLVM_TARGET_DEFINITIONS XeGPUTransformOps.td)
mlir_tablegen(XeGPUTransformOps.h.inc -gen-op-decls)
mlir_tablegen(XeGPUTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRXeGPUTransformOpsIncGen)
+add_mlir_library_tablegen_target(MLIRXeGPUTransformOpsIncGen
+ MLIRXeGPUTransformOps)
add_mlir_doc(XeGPUTransformOps XeGPUTransformOps Dialects/ -gen-op-doc -dialect=transform)
diff --git a/mlir/include/mlir/IR/CMakeLists.txt b/mlir/include/mlir/IR/CMakeLists.txt
index 15518901b901a..d99e53892d987 100644
--- a/mlir/include/mlir/IR/CMakeLists.txt
+++ b/mlir/include/mlir/IR/CMakeLists.txt
@@ -47,7 +47,7 @@ add_mlir_generic_tablegen_target(MLIRBuiltinOpsIncGen)
set(LLVM_TARGET_DEFINITIONS BuiltinTypes.td)
mlir_tablegen(BuiltinTypes.h.inc -gen-typedef-decls)
mlir_tablegen(BuiltinTypes.cpp.inc -gen-typedef-defs)
-add_public_tablegen_target(MLIRBuiltinTypesIncGen)
+add_mlir_library_tablegen_target(MLIRBuiltinTypesIncGen MLIRIR)
mlir_tablegen(BuiltinTypeConstraints.h.inc -gen-type-constraint-decls)
mlir_tablegen(BuiltinTypeConstraints.cpp.inc -gen-type-constraint-defs)
add_mlir_generic_tablegen_target(MLIRBuiltinTypeConstraintsIncGen)
diff --git a/mlir/include/mlir/Interfaces/CMakeLists.txt b/mlir/include/mlir/Interfaces/CMakeLists.txt
index 6461c68423c73..bcf2253d70e5c 100644
--- a/mlir/include/mlir/Interfaces/CMakeLists.txt
+++ b/mlir/include/mlir/Interfaces/CMakeLists.txt
@@ -41,7 +41,7 @@ add_mlir_generic_tablegen_target(MLIRDataLayoutInterfacesIncGen)
set(LLVM_TARGET_DEFINITIONS DialectFoldInterface.td)
mlir_tablegen(DialectFoldInterface.h.inc -gen-dialect-interface-decls)
-add_mlir_generic_tablegen_target(MLIRDialectFoldInterfaceIncGen)
+add_mlir_generic_tablegen_target(MLIRDialectFoldInterfaceIncGen OWNER MLIRIR)
add_mlir_doc(DataLayoutInterfaces
diff --git a/mlir/include/mlir/Target/LLVMIR/CMakeLists.txt b/mlir/include/mlir/Target/LLVMIR/CMakeLists.txt
index 8cf9a9cd864da..027cd3b466138 100644
--- a/mlir/include/mlir/Target/LLVMIR/CMakeLists.txt
+++ b/mlir/include/mlir/Target/LLVMIR/CMakeLists.txt
@@ -2,8 +2,10 @@ add_subdirectory(Transforms)
set(LLVM_TARGET_DEFINITIONS LLVMTranslationDialectInterface.td)
mlir_tablegen(LLVMTranslationDialectInterface.h.inc -gen-dialect-interface-decls)
-add_mlir_generic_tablegen_target(MLIRLLVMTranslationDialectInterfaceIncGen)
+add_mlir_generic_tablegen_target(MLIRLLVMTranslationDialectInterfaceIncGen
+ OWNER MLIRTargetLLVMIRExport)
set(LLVM_TARGET_DEFINITIONS LLVMImportDialectInterface.td)
mlir_tablegen(LLVMImportDialectInterface.h.inc -gen-dialect-interface-decls)
-add_mlir_generic_tablegen_target(MLIRLLVMImportDialectInterfaceIncGen)
+add_mlir_generic_tablegen_target(MLIRLLVMImportDialectInterfaceIncGen
+ OWNER MLIRTargetLLVMIRImport)
diff --git a/mlir/include/mlir/Transforms/CMakeLists.txt b/mlir/include/mlir/Transforms/CMakeLists.txt
index 1b57a3482c1bb..c39fe0d010a6f 100644
--- a/mlir/include/mlir/Transforms/CMakeLists.txt
+++ b/mlir/include/mlir/Transforms/CMakeLists.txt
@@ -7,6 +7,7 @@ add_mlir_dialect_tablegen_target(MLIRTransformsPassIncGen)
set(LLVM_TARGET_DEFINITIONS DialectInlinerInterface.td)
mlir_tablegen(DialectInlinerInterface.h.inc -gen-dialect-interface-decls)
-add_mlir_dialect_tablegen_target(MLIRTransformsDialectInterfaceIncGen)
+add_mlir_dialect_tablegen_target(MLIRTransformsDialectInterfaceIncGen
+ OWNER MLIRTransformUtils)
add_mlir_doc(Passes GeneralPasses ./ -gen-pass-doc)
diff --git a/mlir/lib/Analysis/CMakeLists.txt b/mlir/lib/Analysis/CMakeLists.txt
index 2712ab503663e..b630f5b883d84 100644
--- a/mlir/lib/Analysis/CMakeLists.txt
+++ b/mlir/lib/Analysis/CMakeLists.txt
@@ -47,9 +47,6 @@ add_mlir_library(MLIRAnalysis
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Analysis
- DEPENDS
- mlir-headers
-
LINK_LIBS PUBLIC
MLIRCallInterfaces
MLIRControlFlowInterfaces
@@ -65,4 +62,3 @@ add_mlir_library(MLIRAnalysis
MLIRSideEffectInterfaces
MLIRViewLikeInterface
)
-
diff --git a/mlir/lib/CAPI/Conversion/CMakeLists.txt b/mlir/lib/CAPI/Conversion/CMakeLists.txt
index 8cafc09d363cd..166e79916be03 100644
--- a/mlir/lib/CAPI/Conversion/CMakeLists.txt
+++ b/mlir/lib/CAPI/Conversion/CMakeLists.txt
@@ -2,9 +2,6 @@ get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
add_mlir_upstream_c_api_library(MLIRCAPIConversion
Passes.cpp
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
${conversion_libs}
)
diff --git a/mlir/lib/CAPI/Dialect/CMakeLists.txt b/mlir/lib/CAPI/Dialect/CMakeLists.txt
index 551f5a5a3df77..eaab77e95cf2b 100644
--- a/mlir/lib/CAPI/Dialect/CMakeLists.txt
+++ b/mlir/lib/CAPI/Dialect/CMakeLists.txt
@@ -3,8 +3,6 @@ add_mlir_upstream_c_api_library(MLIRCAPIAffine
AffinePasses.cpp
PARTIAL_SOURCES_INTENDED
- DEPENDS
- MLIRAffinePassIncGen
LINK_LIBS PUBLIC
MLIRCAPIIR
@@ -17,8 +15,6 @@ add_mlir_upstream_c_api_library(MLIRCAPIAMDGPU
AMDGPUPasses.cpp
PARTIAL_SOURCES_INTENDED
- DEPENDS
- MLIRNVGPUPassIncGen
LINK_LIBS PUBLIC
MLIRCAPIIR
@@ -63,8 +59,6 @@ add_mlir_upstream_c_api_library(MLIRCAPIArmSVE
ArmSVEPasses.cpp
PARTIAL_SOURCES_INTENDED
- DEPENDS
- MLIRArmSVEPassIncGen
LINK_LIBS PUBLIC
MLIRCAPIIR
@@ -77,8 +71,6 @@ add_mlir_upstream_c_api_library(MLIRCAPIAsync
AsyncPasses.cpp
PARTIAL_SOURCES_INTENDED
- DEPENDS
- MLIRAsyncPassIncGen
LINK_LIBS PUBLIC
MLIRCAPIIR
@@ -92,8 +84,6 @@ add_mlir_upstream_c_api_library(MLIRCAPIBufferization
BufferizationPasses.cpp
PARTIAL_SOURCES_INTENDED
- DEPENDS
- MLIRBufferizationPassIncGen
LINK_LIBS PUBLIC
MLIRCAPIIR
@@ -156,8 +146,6 @@ add_mlir_upstream_c_api_library(MLIRCAPIGPU
GPUPasses.cpp
PARTIAL_SOURCES_INTENDED
- DEPENDS
- MLIRGPUPassIncGen
LINK_LIBS PUBLIC
MLIRCAPIIR
@@ -188,8 +176,6 @@ add_mlir_upstream_c_api_library(MLIRCAPILinalg
LinalgPasses.cpp
PARTIAL_SOURCES_INTENDED
- DEPENDS
- MLIRLinalgPassIncGen
LINK_LIBS PUBLIC
MLIRCAPIIR
@@ -226,8 +212,6 @@ add_mlir_upstream_c_api_library(MLIRCAPIMemRef
PARTIAL_SOURCES_INTENDED
PARTIAL_SOURCES_INTENDED
- DEPENDS
- MLIRMemRefPassIncGen
LINK_LIBS PUBLIC
MLIRCAPIIR
@@ -240,8 +224,6 @@ add_mlir_upstream_c_api_library(MLIRCAPIMLProgram
MLProgramPasses.cpp
PARTIAL_SOURCES_INTENDED
- DEPENDS
- MLIRMLProgramPassIncGen
LINK_LIBS PUBLIC
MLIRCAPIIR
@@ -263,8 +245,6 @@ add_mlir_upstream_c_api_library(MLIRCAPINVGPU
NVGPUPasses.cpp
PARTIAL_SOURCES_INTENDED
- DEPENDS
- MLIRNVGPUPassIncGen
LINK_LIBS PUBLIC
MLIRCAPIIR
@@ -286,8 +266,6 @@ add_mlir_upstream_c_api_library(MLIRCAPIOpenACC
OpenACCPasses.cpp
PARTIAL_SOURCES_INTENDED
- DEPENDS
- MLIROpenACCPassIncGen
LINK_LIBS PUBLIC
MLIRCAPIIR
@@ -354,8 +332,6 @@ add_mlir_upstream_c_api_library(MLIRCAPISCF
SCFPasses.cpp
PARTIAL_SOURCES_INTENDED
- DEPENDS
- MLIRSCFPassIncGen
LINK_LIBS PUBLIC
MLIRCAPIIR
@@ -379,8 +355,6 @@ add_mlir_upstream_c_api_library(MLIRCAPIShard
ShardPasses.cpp
PARTIAL_SOURCES_INTENDED
- DEPENDS
- MLIRShardPassIncGen
LINK_LIBS PUBLIC
MLIRCAPIIR
@@ -402,8 +376,6 @@ add_mlir_upstream_c_api_library(MLIRCAPISparseTensor
SparseTensorPasses.cpp
PARTIAL_SOURCES_INTENDED
- DEPENDS
- MLIRSparseTensorPassIncGen
LINK_LIBS PUBLIC
MLIRCAPIIR
@@ -416,8 +388,6 @@ add_mlir_upstream_c_api_library(MLIRCAPISPIRV
SPIRVPasses.cpp
PARTIAL_SOURCES_INTENDED
- DEPENDS
- MLIRSPIRVPassIncGen
LINK_LIBS PUBLIC
MLIRCAPIIR
@@ -441,8 +411,6 @@ add_mlir_upstream_c_api_library(MLIRCAPITosa
TosaPasses.cpp
PARTIAL_SOURCES_INTENDED
- DEPENDS
- MLIRTosaPassIncGen
LINK_LIBS PUBLIC
MLIRCAPIIR
diff --git a/mlir/lib/Conversion/AMDGPUToROCDL/CMakeLists.txt b/mlir/lib/Conversion/AMDGPUToROCDL/CMakeLists.txt
index 25cceb9d1d37f..a65a23cb31598 100644
--- a/mlir/lib/Conversion/AMDGPUToROCDL/CMakeLists.txt
+++ b/mlir/lib/Conversion/AMDGPUToROCDL/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRAMDGPUToROCDL
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/AMDGPUToROCDL
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/AffineToStandard/CMakeLists.txt b/mlir/lib/Conversion/AffineToStandard/CMakeLists.txt
index cd8193aee8da3..87a72ed33bfc4 100644
--- a/mlir/lib/Conversion/AffineToStandard/CMakeLists.txt
+++ b/mlir/lib/Conversion/AffineToStandard/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRAffineToStandard
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/AffineToStandard
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRAffineDialect
MLIRAffineTransforms
diff --git a/mlir/lib/Conversion/ArithAndMathToAPFloat/CMakeLists.txt b/mlir/lib/Conversion/ArithAndMathToAPFloat/CMakeLists.txt
index a7a89a0a463fc..d84ebe569147e 100644
--- a/mlir/lib/Conversion/ArithAndMathToAPFloat/CMakeLists.txt
+++ b/mlir/lib/Conversion/ArithAndMathToAPFloat/CMakeLists.txt
@@ -14,9 +14,6 @@ add_mlir_conversion_library(MLIRArithToAPFloat
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/ArithToLLVM
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
@@ -36,12 +33,13 @@ add_mlir_conversion_library(MLIRMathToAPFloat
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/MathToLLVM
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
+ # MathToAPFloat.cpp includes the generated Math transforms pass header.
+ HEADER_LIBS PRIVATE
+ MLIRMathTransforms
+
LINK_LIBS PUBLIC
MLIRTransformUtils
MLIRArithAndMathToAPFloatUtils
diff --git a/mlir/lib/Conversion/ArithToAMDGPU/CMakeLists.txt b/mlir/lib/Conversion/ArithToAMDGPU/CMakeLists.txt
index 50be09ab5a7c5..b7c5ef47daf78 100644
--- a/mlir/lib/Conversion/ArithToAMDGPU/CMakeLists.txt
+++ b/mlir/lib/Conversion/ArithToAMDGPU/CMakeLists.txt
@@ -4,12 +4,13 @@ add_mlir_conversion_library(MLIRArithToAMDGPU
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/ArithToAMDGPU
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
+ # ArithToAMDGPU.cpp includes VectorRewritePatterns.h.
+ HEADER_LIBS PRIVATE
+ MLIRVectorTransforms
+
LINK_LIBS PUBLIC
MLIRAMDGPUDialect
MLIRAMDGPUUtils
diff --git a/mlir/lib/Conversion/ArithToArmSME/CMakeLists.txt b/mlir/lib/Conversion/ArithToArmSME/CMakeLists.txt
index c2a6fe5398e7c..7bb8627b380c1 100644
--- a/mlir/lib/Conversion/ArithToArmSME/CMakeLists.txt
+++ b/mlir/lib/Conversion/ArithToArmSME/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRArithToArmSME
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/ArithToArmSME
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/ArithToEmitC/CMakeLists.txt b/mlir/lib/Conversion/ArithToEmitC/CMakeLists.txt
index 46f9aacbb14e1..c71e956deecc9 100644
--- a/mlir/lib/Conversion/ArithToEmitC/CMakeLists.txt
+++ b/mlir/lib/Conversion/ArithToEmitC/CMakeLists.txt
@@ -5,9 +5,6 @@ add_mlir_conversion_library(MLIRArithToEmitC
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/ArithToEmitC
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRArithDialect
MLIREmitCCommonConversion
diff --git a/mlir/lib/Conversion/ArithToLLVM/CMakeLists.txt b/mlir/lib/Conversion/ArithToLLVM/CMakeLists.txt
index 0a0e25e18b47a..e441f3fa6e21b 100644
--- a/mlir/lib/Conversion/ArithToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/ArithToLLVM/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRArithToLLVM
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/ArithToLLVM
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/ArithToSPIRV/CMakeLists.txt b/mlir/lib/Conversion/ArithToSPIRV/CMakeLists.txt
index a5385d9cee6af..5096adf6e247d 100644
--- a/mlir/lib/Conversion/ArithToSPIRV/CMakeLists.txt
+++ b/mlir/lib/Conversion/ArithToSPIRV/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRArithToSPIRV
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/ArithToSPIRV
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/ArmNeon2dToIntr/CMakeLists.txt b/mlir/lib/Conversion/ArmNeon2dToIntr/CMakeLists.txt
index bab9d6e289418..7afead9b90df9 100644
--- a/mlir/lib/Conversion/ArmNeon2dToIntr/CMakeLists.txt
+++ b/mlir/lib/Conversion/ArmNeon2dToIntr/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRArmNeon2dToIntr
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/ArmNeon2dToIntr
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/ArmSMEToLLVM/CMakeLists.txt b/mlir/lib/Conversion/ArmSMEToLLVM/CMakeLists.txt
index d0a921296668d..9975466611865 100644
--- a/mlir/lib/Conversion/ArmSMEToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/ArmSMEToLLVM/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRArmSMEToLLVM
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/ArmSMEToLLVM
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRArmSMETransforms
MLIRArmSMEDialect
diff --git a/mlir/lib/Conversion/ArmSMEToSCF/CMakeLists.txt b/mlir/lib/Conversion/ArmSMEToSCF/CMakeLists.txt
index 467c3b942e754..c9842044f4298 100644
--- a/mlir/lib/Conversion/ArmSMEToSCF/CMakeLists.txt
+++ b/mlir/lib/Conversion/ArmSMEToSCF/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRArmSMEToSCF
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/ArmSMEToSCF
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRArmSMEDialect
MLIRTransforms
diff --git a/mlir/lib/Conversion/AsyncToLLVM/CMakeLists.txt b/mlir/lib/Conversion/AsyncToLLVM/CMakeLists.txt
index ca692bb2a1b6d..094f1f3c5ec28 100644
--- a/mlir/lib/Conversion/AsyncToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/AsyncToLLVM/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRAsyncToLLVM
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/AsyncToLLVM
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/BufferizationToMemRef/CMakeLists.txt b/mlir/lib/Conversion/BufferizationToMemRef/CMakeLists.txt
index fc32d3dcf2cb6..e4b37dc3093ff 100644
--- a/mlir/lib/Conversion/BufferizationToMemRef/CMakeLists.txt
+++ b/mlir/lib/Conversion/BufferizationToMemRef/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRBufferizationToMemRef
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/BufferizationToMemRef
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRBufferizationDialect
MLIRBufferizationTransforms
diff --git a/mlir/lib/Conversion/ComplexToLLVM/CMakeLists.txt b/mlir/lib/Conversion/ComplexToLLVM/CMakeLists.txt
index 074bc4bc3f0d7..ad674dd3f1f2a 100644
--- a/mlir/lib/Conversion/ComplexToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/ComplexToLLVM/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRComplexToLLVM
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/ComplexToLLVM
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/ComplexToLibm/CMakeLists.txt b/mlir/lib/Conversion/ComplexToLibm/CMakeLists.txt
index 5465e4b9fd969..4638f76506086 100644
--- a/mlir/lib/Conversion/ComplexToLibm/CMakeLists.txt
+++ b/mlir/lib/Conversion/ComplexToLibm/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRComplexToLibm
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/ComplexToLibm
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/ComplexToROCDLLibraryCalls/CMakeLists.txt b/mlir/lib/Conversion/ComplexToROCDLLibraryCalls/CMakeLists.txt
index 695bb2dd0a82c..c67a029c49c2f 100644
--- a/mlir/lib/Conversion/ComplexToROCDLLibraryCalls/CMakeLists.txt
+++ b/mlir/lib/Conversion/ComplexToROCDLLibraryCalls/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRComplexToROCDLLibraryCalls
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/ComplexToROCDLLibraryCalls
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/ComplexToSPIRV/CMakeLists.txt b/mlir/lib/Conversion/ComplexToSPIRV/CMakeLists.txt
index 59bc1a9538fd5..fb25be0e01ff6 100644
--- a/mlir/lib/Conversion/ComplexToSPIRV/CMakeLists.txt
+++ b/mlir/lib/Conversion/ComplexToSPIRV/CMakeLists.txt
@@ -6,9 +6,6 @@ add_mlir_conversion_library(MLIRComplexToSPIRV
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SPIRV
${MLIR_MAIN_INCLUDE_DIR}/mlir/IR
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRComplexDialect
MLIRIR
diff --git a/mlir/lib/Conversion/ComplexToStandard/CMakeLists.txt b/mlir/lib/Conversion/ComplexToStandard/CMakeLists.txt
index c3cf92f57b48d..c0b84e245628f 100644
--- a/mlir/lib/Conversion/ComplexToStandard/CMakeLists.txt
+++ b/mlir/lib/Conversion/ComplexToStandard/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRComplexToStandard
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/ComplexToStandard
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRArithDialect
MLIRComplexDivisionConversion
diff --git a/mlir/lib/Conversion/ControlFlowToLLVM/CMakeLists.txt b/mlir/lib/Conversion/ControlFlowToLLVM/CMakeLists.txt
index dcc78c8367a43..e17ce2bbe9601 100644
--- a/mlir/lib/Conversion/ControlFlowToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/ControlFlowToLLVM/CMakeLists.txt
@@ -5,7 +5,6 @@ add_mlir_conversion_library(MLIRControlFlowToLLVM
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/ControlFlowToLLVM
DEPENDS
- MLIRConversionPassIncGen
intrinsics_gen
LINK_COMPONENTS
diff --git a/mlir/lib/Conversion/ControlFlowToSCF/CMakeLists.txt b/mlir/lib/Conversion/ControlFlowToSCF/CMakeLists.txt
index e2f1677b1d069..bd52705c85ce6 100644
--- a/mlir/lib/Conversion/ControlFlowToSCF/CMakeLists.txt
+++ b/mlir/lib/Conversion/ControlFlowToSCF/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRControlFlowToSCF
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/ControlFlowToSCF
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRAnalysis
MLIRArithDialect
diff --git a/mlir/lib/Conversion/ControlFlowToSPIRV/CMakeLists.txt b/mlir/lib/Conversion/ControlFlowToSPIRV/CMakeLists.txt
index 5be89822c0b0d..73788f4304806 100644
--- a/mlir/lib/Conversion/ControlFlowToSPIRV/CMakeLists.txt
+++ b/mlir/lib/Conversion/ControlFlowToSPIRV/CMakeLists.txt
@@ -6,9 +6,6 @@ add_mlir_conversion_library(MLIRControlFlowToSPIRV
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SPIRV
${MLIR_MAIN_INCLUDE_DIR}/mlir/IR
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRControlFlowDialect
diff --git a/mlir/lib/Conversion/ConvertToEmitC/CMakeLists.txt b/mlir/lib/Conversion/ConvertToEmitC/CMakeLists.txt
index e893d5cd1d35e..7e2ac0a7a9831 100644
--- a/mlir/lib/Conversion/ConvertToEmitC/CMakeLists.txt
+++ b/mlir/lib/Conversion/ConvertToEmitC/CMakeLists.txt
@@ -4,10 +4,6 @@ add_mlir_conversion_library(MLIRConvertToEmitC
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/ConvertToEmitC
- DEPENDS
- MLIRConversionPassIncGen
- MLIRConvertToEmitCPatternInterfaceIncGen
-
LINK_LIBS PUBLIC
MLIRArithToEmitC
MLIREmitCCommonConversion
diff --git a/mlir/lib/Conversion/ConvertToLLVM/CMakeLists.txt b/mlir/lib/Conversion/ConvertToLLVM/CMakeLists.txt
index c71711ba2ebed..02e4207fbbe1a 100644
--- a/mlir/lib/Conversion/ConvertToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/ConvertToLLVM/CMakeLists.txt
@@ -6,9 +6,6 @@ set(LLVM_OPTIONAL_SOURCES
add_mlir_conversion_library(MLIRConvertToLLVMInterface
ToLLVMInterface.cpp
- DEPENDS
- MLIRConvertToLLVMInterfaceIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRSupport
@@ -17,9 +14,6 @@ add_mlir_conversion_library(MLIRConvertToLLVMInterface
add_mlir_conversion_library(MLIRConvertToLLVMPass
ConvertToLLVMPass.cpp
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRConvertToLLVMInterface
diff --git a/mlir/lib/Conversion/FuncToEmitC/CMakeLists.txt b/mlir/lib/Conversion/FuncToEmitC/CMakeLists.txt
index c5d831f59379d..568657a4aa6e1 100644
--- a/mlir/lib/Conversion/FuncToEmitC/CMakeLists.txt
+++ b/mlir/lib/Conversion/FuncToEmitC/CMakeLists.txt
@@ -5,9 +5,6 @@ add_mlir_conversion_library(MLIRFuncToEmitC
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/FuncToEmitC
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIREmitCCommonConversion
MLIREmitCDialect
diff --git a/mlir/lib/Conversion/FuncToLLVM/CMakeLists.txt b/mlir/lib/Conversion/FuncToLLVM/CMakeLists.txt
index 17d8dad335c55..64769919a0672 100644
--- a/mlir/lib/Conversion/FuncToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/FuncToLLVM/CMakeLists.txt
@@ -5,7 +5,6 @@ add_mlir_conversion_library(MLIRFuncToLLVM
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/FuncToLLVM
DEPENDS
- MLIRConversionPassIncGen
intrinsics_gen
LINK_COMPONENTS
diff --git a/mlir/lib/Conversion/FuncToSPIRV/CMakeLists.txt b/mlir/lib/Conversion/FuncToSPIRV/CMakeLists.txt
index fca2c670915ad..ed83423494207 100644
--- a/mlir/lib/Conversion/FuncToSPIRV/CMakeLists.txt
+++ b/mlir/lib/Conversion/FuncToSPIRV/CMakeLists.txt
@@ -6,9 +6,6 @@ add_mlir_conversion_library(MLIRFuncToSPIRV
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SPIRV
${MLIR_MAIN_INCLUDE_DIR}/mlir/IR
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRFuncDialect
MLIRIR
diff --git a/mlir/lib/Conversion/GPUCommon/CMakeLists.txt b/mlir/lib/Conversion/GPUCommon/CMakeLists.txt
index 8bcde866ee00d..c9288850c5620 100644
--- a/mlir/lib/Conversion/GPUCommon/CMakeLists.txt
+++ b/mlir/lib/Conversion/GPUCommon/CMakeLists.txt
@@ -21,7 +21,6 @@ add_mlir_conversion_library(MLIRGPUToGPURuntimeTransforms
IndexIntrinsicsOpLowering.cpp
DEPENDS
- MLIRConversionPassIncGen
intrinsics_gen
LINK_COMPONENTS
diff --git a/mlir/lib/Conversion/GPUToLLVMSPV/CMakeLists.txt b/mlir/lib/Conversion/GPUToLLVMSPV/CMakeLists.txt
index f2381c623e201..f141b19749f68 100644
--- a/mlir/lib/Conversion/GPUToLLVMSPV/CMakeLists.txt
+++ b/mlir/lib/Conversion/GPUToLLVMSPV/CMakeLists.txt
@@ -1,9 +1,6 @@
add_mlir_conversion_library(MLIRGPUToLLVMSPV
GPUToLLVMSPV.cpp
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRGPUDialect
MLIRGPUToGPURuntimeTransforms
diff --git a/mlir/lib/Conversion/GPUToNVVM/CMakeLists.txt b/mlir/lib/Conversion/GPUToNVVM/CMakeLists.txt
index 06137bdb41d71..a8b5c9923c725 100644
--- a/mlir/lib/Conversion/GPUToNVVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/GPUToNVVM/CMakeLists.txt
@@ -2,9 +2,6 @@ add_mlir_conversion_library(MLIRGPUToNVVMTransforms
LowerGpuOpsToNVVMOps.cpp
WmmaOpsToNvvm.cpp
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRArithToLLVM
MLIRFuncToLLVM
diff --git a/mlir/lib/Conversion/GPUToROCDL/CMakeLists.txt b/mlir/lib/Conversion/GPUToROCDL/CMakeLists.txt
index 945e3ccdfa87b..05ea4b917f4b1 100644
--- a/mlir/lib/Conversion/GPUToROCDL/CMakeLists.txt
+++ b/mlir/lib/Conversion/GPUToROCDL/CMakeLists.txt
@@ -1,14 +1,11 @@
set(LLVM_TARGET_DEFINITIONS GPUToROCDL.td)
mlir_tablegen(GPUToROCDL.cpp.inc -gen-rewriters)
-add_public_tablegen_target(MLIRGPUToROCDLIncGen)
+add_mlir_library_tablegen_target(MLIRGPUToROCDLIncGen
+ MLIRGPUToROCDLTransforms)
add_mlir_conversion_library(MLIRGPUToROCDLTransforms
LowerGpuOpsToROCDLOps.cpp
- DEPENDS
- MLIRConversionPassIncGen
- MLIRGPUToROCDLIncGen
-
LINK_LIBS PUBLIC
MLIRArithToLLVM
MLIRArithTransforms
diff --git a/mlir/lib/Conversion/GPUToSPIRV/CMakeLists.txt b/mlir/lib/Conversion/GPUToSPIRV/CMakeLists.txt
index 7e97eeb2e2496..5047c5fec0390 100644
--- a/mlir/lib/Conversion/GPUToSPIRV/CMakeLists.txt
+++ b/mlir/lib/Conversion/GPUToSPIRV/CMakeLists.txt
@@ -3,9 +3,6 @@ add_mlir_conversion_library(MLIRGPUToSPIRV
GPUToSPIRVPass.cpp
WmmaOpsToSPIRV.cpp
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRArithToSPIRV
MLIRGPUDialect
diff --git a/mlir/lib/Conversion/IndexToLLVM/CMakeLists.txt b/mlir/lib/Conversion/IndexToLLVM/CMakeLists.txt
index a33a61852d748..2e4fce00cca24 100644
--- a/mlir/lib/Conversion/IndexToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/IndexToLLVM/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRIndexToLLVM
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/IndexToLLVM
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/IndexToSPIRV/CMakeLists.txt b/mlir/lib/Conversion/IndexToSPIRV/CMakeLists.txt
index a02d2d40a9a2f..9b32910198b82 100644
--- a/mlir/lib/Conversion/IndexToSPIRV/CMakeLists.txt
+++ b/mlir/lib/Conversion/IndexToSPIRV/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRIndexToSPIRV
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/IndexToSPIRV
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/LinalgToStandard/CMakeLists.txt b/mlir/lib/Conversion/LinalgToStandard/CMakeLists.txt
index 7fc4af5403185..dfa06540544ac 100644
--- a/mlir/lib/Conversion/LinalgToStandard/CMakeLists.txt
+++ b/mlir/lib/Conversion/LinalgToStandard/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRLinalgToStandard
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/LinalgToStandard
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/MPIToLLVM/CMakeLists.txt b/mlir/lib/Conversion/MPIToLLVM/CMakeLists.txt
index 51ffbd1fa42ab..ca7473e7f9e1a 100644
--- a/mlir/lib/Conversion/MPIToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/MPIToLLVM/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRMPIToLLVM
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/MPIToLLVM
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/MathToEmitC/CMakeLists.txt b/mlir/lib/Conversion/MathToEmitC/CMakeLists.txt
index 12a99c31e2ba5..1acc09702db5a 100644
--- a/mlir/lib/Conversion/MathToEmitC/CMakeLists.txt
+++ b/mlir/lib/Conversion/MathToEmitC/CMakeLists.txt
@@ -5,9 +5,6 @@ add_mlir_conversion_library(MLIRMathToEmitC
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/MathToEmitC
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/MathToFuncs/CMakeLists.txt b/mlir/lib/Conversion/MathToFuncs/CMakeLists.txt
index 2ac191cac22a0..1a28389adc281 100644
--- a/mlir/lib/Conversion/MathToFuncs/CMakeLists.txt
+++ b/mlir/lib/Conversion/MathToFuncs/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRMathToFuncs
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/MathToFuncs
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/MathToLLVM/CMakeLists.txt b/mlir/lib/Conversion/MathToLLVM/CMakeLists.txt
index 97393fc849691..165ba9c808f7d 100644
--- a/mlir/lib/Conversion/MathToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/MathToLLVM/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRMathToLLVM
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/MathToLLVM
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/MathToLibm/CMakeLists.txt b/mlir/lib/Conversion/MathToLibm/CMakeLists.txt
index 0a4eb97474f3a..78cece30fa815 100644
--- a/mlir/lib/Conversion/MathToLibm/CMakeLists.txt
+++ b/mlir/lib/Conversion/MathToLibm/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRMathToLibm
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/MathToLibm
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/MathToNVVM/CMakeLists.txt b/mlir/lib/Conversion/MathToNVVM/CMakeLists.txt
index 589700d32646c..282a5f27573d9 100644
--- a/mlir/lib/Conversion/MathToNVVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/MathToNVVM/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRMathToNVVM
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/MathToNVVM
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/MathToROCDL/CMakeLists.txt b/mlir/lib/Conversion/MathToROCDL/CMakeLists.txt
index 8cc3fde827830..66cfd9ca33950 100644
--- a/mlir/lib/Conversion/MathToROCDL/CMakeLists.txt
+++ b/mlir/lib/Conversion/MathToROCDL/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRMathToROCDL
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/MathToROCDL
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/MathToSPIRV/CMakeLists.txt b/mlir/lib/Conversion/MathToSPIRV/CMakeLists.txt
index cbeb7a241b08d..2ddbeef8b275f 100644
--- a/mlir/lib/Conversion/MathToSPIRV/CMakeLists.txt
+++ b/mlir/lib/Conversion/MathToSPIRV/CMakeLists.txt
@@ -6,9 +6,6 @@ add_mlir_conversion_library(MLIRMathToSPIRV
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SPIRV
${MLIR_MAIN_INCLUDE_DIR}/mlir/IR
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRMathDialect
diff --git a/mlir/lib/Conversion/MathToXeVM/CMakeLists.txt b/mlir/lib/Conversion/MathToXeVM/CMakeLists.txt
index e8551d5ba70f2..ce20e7b9dfe51 100644
--- a/mlir/lib/Conversion/MathToXeVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/MathToXeVM/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRMathToXeVM
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/MathToXeVM
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/MemRefToEmitC/CMakeLists.txt b/mlir/lib/Conversion/MemRefToEmitC/CMakeLists.txt
index 23a40e7e48b8d..2806146911ad6 100644
--- a/mlir/lib/Conversion/MemRefToEmitC/CMakeLists.txt
+++ b/mlir/lib/Conversion/MemRefToEmitC/CMakeLists.txt
@@ -5,9 +5,6 @@ add_mlir_conversion_library(MLIRMemRefToEmitC
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/MemRefToEmitC
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/MemRefToLLVM/CMakeLists.txt b/mlir/lib/Conversion/MemRefToLLVM/CMakeLists.txt
index 9da4b23d42f41..5523b17e003d3 100644
--- a/mlir/lib/Conversion/MemRefToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/MemRefToLLVM/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRMemRefToLLVM
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/MemRefToLLVM
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/MemRefToSPIRV/CMakeLists.txt b/mlir/lib/Conversion/MemRefToSPIRV/CMakeLists.txt
index ca49f93748ce7..0195086dd6079 100644
--- a/mlir/lib/Conversion/MemRefToSPIRV/CMakeLists.txt
+++ b/mlir/lib/Conversion/MemRefToSPIRV/CMakeLists.txt
@@ -7,9 +7,6 @@ add_mlir_conversion_library(MLIRMemRefToSPIRV
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SPIRV
${MLIR_MAIN_INCLUDE_DIR}/mlir/IR
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRFunctionInterfaces
MLIRIR
diff --git a/mlir/lib/Conversion/NVGPUToNVVM/CMakeLists.txt b/mlir/lib/Conversion/NVGPUToNVVM/CMakeLists.txt
index 2e0a417bd823d..b6f5db788da76 100644
--- a/mlir/lib/Conversion/NVGPUToNVVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/NVGPUToNVVM/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRNVGPUToNVVM
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/NVGPUToNVVM
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/NVVMToLLVM/CMakeLists.txt b/mlir/lib/Conversion/NVVMToLLVM/CMakeLists.txt
index 23174d1128719..0a7786379cd27 100644
--- a/mlir/lib/Conversion/NVVMToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/NVVMToLLVM/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRNVVMToLLVM
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/NVVMToLLVM
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/OpenACCToLLVM/CMakeLists.txt b/mlir/lib/Conversion/OpenACCToLLVM/CMakeLists.txt
index 1cd092181f7dc..a66e735d5243c 100644
--- a/mlir/lib/Conversion/OpenACCToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/OpenACCToLLVM/CMakeLists.txt
@@ -7,9 +7,6 @@ add_mlir_conversion_library(MLIROpenACCToLLVM
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/OpenACCToLLVM
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRArithToLLVM
MLIRComplexDialect
diff --git a/mlir/lib/Conversion/OpenACCToSCF/CMakeLists.txt b/mlir/lib/Conversion/OpenACCToSCF/CMakeLists.txt
index aa90db92c582f..7f5a3b5d084d3 100644
--- a/mlir/lib/Conversion/OpenACCToSCF/CMakeLists.txt
+++ b/mlir/lib/Conversion/OpenACCToSCF/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIROpenACCToSCF
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/OpenACCToSCF
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRArithDialect
MLIRIR
diff --git a/mlir/lib/Conversion/OpenMPToLLVM/CMakeLists.txt b/mlir/lib/Conversion/OpenMPToLLVM/CMakeLists.txt
index c5f84aa95e64f..9279874d02e8e 100644
--- a/mlir/lib/Conversion/OpenMPToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/OpenMPToLLVM/CMakeLists.txt
@@ -5,7 +5,6 @@ add_mlir_conversion_library(MLIROpenMPToLLVM
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/OpenMPToLLVM
DEPENDS
- MLIRConversionPassIncGen
intrinsics_gen
LINK_COMPONENTS
diff --git a/mlir/lib/Conversion/PDLToPDLInterp/CMakeLists.txt b/mlir/lib/Conversion/PDLToPDLInterp/CMakeLists.txt
index fac84b14203bf..97a739303713f 100644
--- a/mlir/lib/Conversion/PDLToPDLInterp/CMakeLists.txt
+++ b/mlir/lib/Conversion/PDLToPDLInterp/CMakeLists.txt
@@ -7,9 +7,6 @@ add_mlir_conversion_library(MLIRPDLToPDLInterp
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/PDLToPDLInterp
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRInferTypeOpInterface
diff --git a/mlir/lib/Conversion/PtrToLLVM/CMakeLists.txt b/mlir/lib/Conversion/PtrToLLVM/CMakeLists.txt
index 2d416be13ee30..0b53f02a35e0e 100644
--- a/mlir/lib/Conversion/PtrToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/PtrToLLVM/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRPtrToLLVM
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/PtrToLLVM
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/RaiseWasm/CMakeLists.txt b/mlir/lib/Conversion/RaiseWasm/CMakeLists.txt
index 43b5fd79e49df..537dae40d571d 100644
--- a/mlir/lib/Conversion/RaiseWasm/CMakeLists.txt
+++ b/mlir/lib/Conversion/RaiseWasm/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRWasmRaise
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/RaiseWasm
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRArithDialect
MLIRControlFlowDialect
diff --git a/mlir/lib/Conversion/ReconcileUnrealizedCasts/CMakeLists.txt b/mlir/lib/Conversion/ReconcileUnrealizedCasts/CMakeLists.txt
index 1bed0d6944c08..72a31fb73a0d8 100644
--- a/mlir/lib/Conversion/ReconcileUnrealizedCasts/CMakeLists.txt
+++ b/mlir/lib/Conversion/ReconcileUnrealizedCasts/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRReconcileUnrealizedCasts
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/ReconcileUnrealizedCasts
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/SCFToAffine/CMakeLists.txt b/mlir/lib/Conversion/SCFToAffine/CMakeLists.txt
index f978d8309fc39..e6a3fa6e30fea 100644
--- a/mlir/lib/Conversion/SCFToAffine/CMakeLists.txt
+++ b/mlir/lib/Conversion/SCFToAffine/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRSCFToAffine
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/SCFToAffine
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRAffineDialect
MLIRArithDialect
diff --git a/mlir/lib/Conversion/SCFToControlFlow/CMakeLists.txt b/mlir/lib/Conversion/SCFToControlFlow/CMakeLists.txt
index 9c635ad7e664f..67eb7691f47fc 100644
--- a/mlir/lib/Conversion/SCFToControlFlow/CMakeLists.txt
+++ b/mlir/lib/Conversion/SCFToControlFlow/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRSCFToControlFlow
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/SCFToControlFlow
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRArithDialect
MLIRControlFlowDialect
diff --git a/mlir/lib/Conversion/SCFToEmitC/CMakeLists.txt b/mlir/lib/Conversion/SCFToEmitC/CMakeLists.txt
index 453aa6c44c467..5a0722c96bd59 100644
--- a/mlir/lib/Conversion/SCFToEmitC/CMakeLists.txt
+++ b/mlir/lib/Conversion/SCFToEmitC/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRSCFToEmitC
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/SCFToEmitC
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/SCFToGPU/CMakeLists.txt b/mlir/lib/Conversion/SCFToGPU/CMakeLists.txt
index b7853634bc44e..c910e7dee5336 100644
--- a/mlir/lib/Conversion/SCFToGPU/CMakeLists.txt
+++ b/mlir/lib/Conversion/SCFToGPU/CMakeLists.txt
@@ -5,9 +5,6 @@ add_mlir_conversion_library(MLIRSCFToGPU
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/SCFToGPU
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRAffineDialect
MLIRAffineToStandard
diff --git a/mlir/lib/Conversion/SCFToOpenMP/CMakeLists.txt b/mlir/lib/Conversion/SCFToOpenMP/CMakeLists.txt
index 1ad175dd7d3ff..7be6990055182 100644
--- a/mlir/lib/Conversion/SCFToOpenMP/CMakeLists.txt
+++ b/mlir/lib/Conversion/SCFToOpenMP/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRSCFToOpenMP
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/SCFToStandard
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/SCFToSPIRV/CMakeLists.txt b/mlir/lib/Conversion/SCFToSPIRV/CMakeLists.txt
index e509fb025ee19..b642d33d3f1c1 100644
--- a/mlir/lib/Conversion/SCFToSPIRV/CMakeLists.txt
+++ b/mlir/lib/Conversion/SCFToSPIRV/CMakeLists.txt
@@ -5,9 +5,6 @@ add_mlir_conversion_library(MLIRSCFToSPIRV
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/SCFToSPIRV
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRArithToSPIRV
MLIRFuncToSPIRV
diff --git a/mlir/lib/Conversion/SPIRVCommon/CMakeLists.txt b/mlir/lib/Conversion/SPIRVCommon/CMakeLists.txt
index cd5a4c225efbf..993105920584c 100644
--- a/mlir/lib/Conversion/SPIRVCommon/CMakeLists.txt
+++ b/mlir/lib/Conversion/SPIRVCommon/CMakeLists.txt
@@ -1,6 +1,7 @@
add_mlir_conversion_library(MLIRSPIRVAttrToLLVMConversion
AttrToLLVMConverter.cpp
- DEPENDS
- MLIRSPIRVEnumsIncGen
+ # AttrToLLVMConverter.h includes the generated SPIRVEnums.h.
+ HEADER_LIBS PUBLIC
+ MLIRSPIRVDialect
)
diff --git a/mlir/lib/Conversion/SPIRVToLLVM/CMakeLists.txt b/mlir/lib/Conversion/SPIRVToLLVM/CMakeLists.txt
index e563315d95c9c..31a0357f02e35 100644
--- a/mlir/lib/Conversion/SPIRVToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/SPIRVToLLVM/CMakeLists.txt
@@ -7,7 +7,6 @@ add_mlir_conversion_library(MLIRSPIRVToLLVM
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/SPIRVToLLVM
DEPENDS
- MLIRConversionPassIncGen
intrinsics_gen
LINK_LIBS PUBLIC
diff --git a/mlir/lib/Conversion/ShapeToStandard/CMakeLists.txt b/mlir/lib/Conversion/ShapeToStandard/CMakeLists.txt
index 246f10b389911..59b996d1949ec 100644
--- a/mlir/lib/Conversion/ShapeToStandard/CMakeLists.txt
+++ b/mlir/lib/Conversion/ShapeToStandard/CMakeLists.txt
@@ -1,6 +1,6 @@
set(LLVM_TARGET_DEFINITIONS ShapeToStandard.td)
mlir_tablegen(ShapeToStandard.cpp.inc -gen-rewriters)
-add_public_tablegen_target(ShapeToStandardIncGen)
+add_mlir_library_tablegen_target(ShapeToStandardIncGen MLIRShapeToStandard)
add_mlir_conversion_library(MLIRShapeToStandard
ConvertShapeConstraints.cpp
@@ -9,10 +9,6 @@ add_mlir_conversion_library(MLIRShapeToStandard
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/ShapeToStandard
- DEPENDS
- MLIRConversionPassIncGen
- ShapeToStandardIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/ShardToMPI/CMakeLists.txt b/mlir/lib/Conversion/ShardToMPI/CMakeLists.txt
index dfa8e77bb13ef..6c970bc0baeb3 100644
--- a/mlir/lib/Conversion/ShardToMPI/CMakeLists.txt
+++ b/mlir/lib/Conversion/ShardToMPI/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRShardToMPI
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/ShardToMPI
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/TensorToLinalg/CMakeLists.txt b/mlir/lib/Conversion/TensorToLinalg/CMakeLists.txt
index 0236dc6d397c4..89bf6edab37dc 100644
--- a/mlir/lib/Conversion/TensorToLinalg/CMakeLists.txt
+++ b/mlir/lib/Conversion/TensorToLinalg/CMakeLists.txt
@@ -6,9 +6,6 @@ add_mlir_conversion_library(MLIRTensorToLinalg
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Linalg
${MLIR_MAIN_INCLUDE_DIR}/mlir/IR
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRPass
diff --git a/mlir/lib/Conversion/TensorToSPIRV/CMakeLists.txt b/mlir/lib/Conversion/TensorToSPIRV/CMakeLists.txt
index 31266221f5b26..cc34b0b443fe9 100644
--- a/mlir/lib/Conversion/TensorToSPIRV/CMakeLists.txt
+++ b/mlir/lib/Conversion/TensorToSPIRV/CMakeLists.txt
@@ -6,9 +6,6 @@ add_mlir_conversion_library(MLIRTensorToSPIRV
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SPIRV
${MLIR_MAIN_INCLUDE_DIR}/mlir/IR
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRArithToSPIRV
MLIRFuncToSPIRV
diff --git a/mlir/lib/Conversion/TosaToArith/CMakeLists.txt b/mlir/lib/Conversion/TosaToArith/CMakeLists.txt
index 8f1640c321145..65ae1af81148a 100644
--- a/mlir/lib/Conversion/TosaToArith/CMakeLists.txt
+++ b/mlir/lib/Conversion/TosaToArith/CMakeLists.txt
@@ -6,9 +6,6 @@ add_mlir_conversion_library(MLIRTosaToArith
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Tosa
${MLIR_MAIN_INCLUDE_DIR}/mlir/IR
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRArithDialect
MLIRIR
diff --git a/mlir/lib/Conversion/TosaToLinalg/CMakeLists.txt b/mlir/lib/Conversion/TosaToLinalg/CMakeLists.txt
index 5123c2a7cf916..d1140ea0d3658 100644
--- a/mlir/lib/Conversion/TosaToLinalg/CMakeLists.txt
+++ b/mlir/lib/Conversion/TosaToLinalg/CMakeLists.txt
@@ -8,9 +8,6 @@ add_mlir_conversion_library(MLIRTosaToLinalg
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Tosa
${MLIR_MAIN_INCLUDE_DIR}/mlir/IR
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRArithDialect
MLIRDialectUtils
diff --git a/mlir/lib/Conversion/TosaToMLProgram/CMakeLists.txt b/mlir/lib/Conversion/TosaToMLProgram/CMakeLists.txt
index 82941424f1d10..5f651e52c7c83 100644
--- a/mlir/lib/Conversion/TosaToMLProgram/CMakeLists.txt
+++ b/mlir/lib/Conversion/TosaToMLProgram/CMakeLists.txt
@@ -6,9 +6,6 @@ add_mlir_conversion_library(MLIRTosaToMLProgram
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Tosa
${MLIR_MAIN_INCLUDE_DIR}/mlir/IR
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRMLProgramDialect
diff --git a/mlir/lib/Conversion/TosaToSCF/CMakeLists.txt b/mlir/lib/Conversion/TosaToSCF/CMakeLists.txt
index 017a2e8c921f2..1d23c9f715f25 100644
--- a/mlir/lib/Conversion/TosaToSCF/CMakeLists.txt
+++ b/mlir/lib/Conversion/TosaToSCF/CMakeLists.txt
@@ -6,9 +6,6 @@ add_mlir_conversion_library(MLIRTosaToSCF
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Tosa
${MLIR_MAIN_INCLUDE_DIR}/mlir/IR
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRSCFDialect
diff --git a/mlir/lib/Conversion/TosaToSPIRVTosa/CMakeLists.txt b/mlir/lib/Conversion/TosaToSPIRVTosa/CMakeLists.txt
index c4b71ed61f39b..52eac566c8159 100644
--- a/mlir/lib/Conversion/TosaToSPIRVTosa/CMakeLists.txt
+++ b/mlir/lib/Conversion/TosaToSPIRVTosa/CMakeLists.txt
@@ -9,9 +9,6 @@ add_mlir_conversion_library(MLIRTosaToSPIRVTosa
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Tosa
${MLIR_MAIN_INCLUDE_DIR}/mlir/IR
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRFuncDialect
MLIRIR
diff --git a/mlir/lib/Conversion/TosaToTensor/CMakeLists.txt b/mlir/lib/Conversion/TosaToTensor/CMakeLists.txt
index 2870baa20757b..bdbbbd85ef3ab 100644
--- a/mlir/lib/Conversion/TosaToTensor/CMakeLists.txt
+++ b/mlir/lib/Conversion/TosaToTensor/CMakeLists.txt
@@ -6,9 +6,6 @@ add_mlir_conversion_library(MLIRTosaToTensor
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Tosa
${MLIR_MAIN_INCLUDE_DIR}/mlir/IR
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRTensorDialect
MLIRTensorUtils
diff --git a/mlir/lib/Conversion/UBToLLVM/CMakeLists.txt b/mlir/lib/Conversion/UBToLLVM/CMakeLists.txt
index 645614614ce61..1a5183051926e 100644
--- a/mlir/lib/Conversion/UBToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/UBToLLVM/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRUBToLLVM
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/UBToLLVM
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/UBToSPIRV/CMakeLists.txt b/mlir/lib/Conversion/UBToSPIRV/CMakeLists.txt
index a7a26b0a8c606..e2631c528248c 100644
--- a/mlir/lib/Conversion/UBToSPIRV/CMakeLists.txt
+++ b/mlir/lib/Conversion/UBToSPIRV/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRUBToSPIRV
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/UBToSPIRV
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/VectorToAMX/CMakeLists.txt b/mlir/lib/Conversion/VectorToAMX/CMakeLists.txt
index 2ed864c519cb6..e39c9f9a3ef33 100644
--- a/mlir/lib/Conversion/VectorToAMX/CMakeLists.txt
+++ b/mlir/lib/Conversion/VectorToAMX/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRVectorToAMX
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/VectorToAMX
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRAffineUtils
MLIRArithDialect
diff --git a/mlir/lib/Conversion/VectorToArmSME/CMakeLists.txt b/mlir/lib/Conversion/VectorToArmSME/CMakeLists.txt
index 6a81a09776d37..d50d9fdccd913 100644
--- a/mlir/lib/Conversion/VectorToArmSME/CMakeLists.txt
+++ b/mlir/lib/Conversion/VectorToArmSME/CMakeLists.txt
@@ -5,9 +5,6 @@ add_mlir_conversion_library(MLIRVectorToArmSME
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/VectorToArmSME
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRArmSMEDialect
MLIRArmSVEDialect
diff --git a/mlir/lib/Conversion/VectorToLLVM/CMakeLists.txt b/mlir/lib/Conversion/VectorToLLVM/CMakeLists.txt
index 0d700ea65eb4e..06fad235d23b6 100644
--- a/mlir/lib/Conversion/VectorToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/VectorToLLVM/CMakeLists.txt
@@ -6,7 +6,6 @@ add_mlir_conversion_library(MLIRVectorToLLVM
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/VectorToLLVM
DEPENDS
- MLIRConversionPassIncGen
intrinsics_gen
LINK_COMPONENTS
diff --git a/mlir/lib/Conversion/VectorToSPIRV/CMakeLists.txt b/mlir/lib/Conversion/VectorToSPIRV/CMakeLists.txt
index f4cdb2cf95a30..7a307a8f52247 100644
--- a/mlir/lib/Conversion/VectorToSPIRV/CMakeLists.txt
+++ b/mlir/lib/Conversion/VectorToSPIRV/CMakeLists.txt
@@ -6,7 +6,6 @@ add_mlir_conversion_library(MLIRVectorToSPIRV
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/VectorToSPIRV
DEPENDS
- MLIRConversionPassIncGen
intrinsics_gen
LINK_LIBS PUBLIC
diff --git a/mlir/lib/Conversion/VectorToXeGPU/CMakeLists.txt b/mlir/lib/Conversion/VectorToXeGPU/CMakeLists.txt
index dd699f5b1880e..4a21b29a5c172 100644
--- a/mlir/lib/Conversion/VectorToXeGPU/CMakeLists.txt
+++ b/mlir/lib/Conversion/VectorToXeGPU/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRVectorToXeGPU
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/VectorToXeGPU
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_LIBS PUBLIC
MLIRArithDialect
MLIRMemRefDialect
diff --git a/mlir/lib/Conversion/XeGPUToXeVM/CMakeLists.txt b/mlir/lib/Conversion/XeGPUToXeVM/CMakeLists.txt
index dd9edc43a1657..15b09ead8bd6f 100644
--- a/mlir/lib/Conversion/XeGPUToXeVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/XeGPUToXeVM/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRXeGPUToXeVM
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/XeGPUToXeVM
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Conversion/XeVMToLLVM/CMakeLists.txt b/mlir/lib/Conversion/XeVMToLLVM/CMakeLists.txt
index 4ac60d8d43472..6fbb3fb10e2ac 100644
--- a/mlir/lib/Conversion/XeVMToLLVM/CMakeLists.txt
+++ b/mlir/lib/Conversion/XeVMToLLVM/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_conversion_library(MLIRXeVMToLLVM
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Conversion/XeVMToLLVM
- DEPENDS
- MLIRConversionPassIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Dialect/AMDGPU/IR/CMakeLists.txt b/mlir/lib/Dialect/AMDGPU/IR/CMakeLists.txt
index aef460904baaa..e8fc8bcc181d1 100644
--- a/mlir/lib/Dialect/AMDGPU/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/AMDGPU/IR/CMakeLists.txt
@@ -8,11 +8,6 @@ add_mlir_dialect_library(MLIRAMDGPUDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/AMDGPU
- DEPENDS
- MLIRAMDGPUEnumsGen
- MLIRAMDGPUAttributesIncGen
- MLIRAMDGPUIncGen
-
LINK_LIBS PUBLIC
MLIRArithDialect
MLIRROCDLDialect
diff --git a/mlir/lib/Dialect/AMDGPU/Transforms/CMakeLists.txt b/mlir/lib/Dialect/AMDGPU/Transforms/CMakeLists.txt
index 29baef635ec80..b183599031a8a 100644
--- a/mlir/lib/Dialect/AMDGPU/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/AMDGPU/Transforms/CMakeLists.txt
@@ -7,8 +7,9 @@ add_mlir_dialect_library(MLIRAMDGPUTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/AMDGPU/Transforms
- DEPENDS
- MLIRAMDGPUTransformsIncGen
+ # MaskedloadToLoad.cpp includes VectorTransforms.h.
+ HEADER_LIBS PRIVATE
+ MLIRVectorTransforms
LINK_LIBS PUBLIC
MLIRAMDGPUDialect
diff --git a/mlir/lib/Dialect/Affine/Analysis/CMakeLists.txt b/mlir/lib/Dialect/Affine/Analysis/CMakeLists.txt
index 3a1996349dbed..61e49b0da8b2d 100644
--- a/mlir/lib/Dialect/Affine/Analysis/CMakeLists.txt
+++ b/mlir/lib/Dialect/Affine/Analysis/CMakeLists.txt
@@ -8,9 +8,6 @@ add_mlir_dialect_library(MLIRAffineAnalysis
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Affine
- DEPENDS
- MLIRFuncOpsIncGen
-
LINK_LIBS PUBLIC
MLIRAffineDialect
MLIRAnalysis
diff --git a/mlir/lib/Dialect/Affine/IR/CMakeLists.txt b/mlir/lib/Dialect/Affine/IR/CMakeLists.txt
index e24cd4013bca3..2e2f0da93db3e 100644
--- a/mlir/lib/Dialect/Affine/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/Affine/IR/CMakeLists.txt
@@ -10,10 +10,6 @@ add_mlir_dialect_library(MLIRAffineDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Affine
- DEPENDS
- MLIRAffineMemoryOpInterfacesIncGen
- MLIRAffineOpsIncGen
-
LINK_LIBS PUBLIC
MLIRArithDialect
MLIRDialectUtils
diff --git a/mlir/lib/Dialect/Affine/TransformOps/CMakeLists.txt b/mlir/lib/Dialect/Affine/TransformOps/CMakeLists.txt
index 4797cd973e8fb..da33af92fcaa5 100644
--- a/mlir/lib/Dialect/Affine/TransformOps/CMakeLists.txt
+++ b/mlir/lib/Dialect/Affine/TransformOps/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_dialect_library(MLIRAffineTransformOps
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Affine/TransformOps
- DEPENDS
- MLIRAffineTransformOpsIncGen
-
LINK_LIBS PUBLIC
MLIRAffineAnalysis
MLIRAffineDialect
diff --git a/mlir/lib/Dialect/Affine/Transforms/CMakeLists.txt b/mlir/lib/Dialect/Affine/Transforms/CMakeLists.txt
index 9d912139810b2..f2aec87161081 100644
--- a/mlir/lib/Dialect/Affine/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/Affine/Transforms/CMakeLists.txt
@@ -24,11 +24,6 @@ add_mlir_dialect_library(MLIRAffineTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Affine
- DEPENDS
- MLIRAffineOpsIncGen
- MLIRAffinePassIncGen
- MLIRLoopLikeInterfaceIncGen
-
LINK_LIBS PUBLIC
MLIRAffineDialect
MLIRAffineAnalysis
diff --git a/mlir/lib/Dialect/Arith/IR/CMakeLists.txt b/mlir/lib/Dialect/Arith/IR/CMakeLists.txt
index 3423e11a7d0f0..92cf8893ea011 100644
--- a/mlir/lib/Dialect/Arith/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/Arith/IR/CMakeLists.txt
@@ -19,9 +19,11 @@ add_mlir_dialect_library(MLIRArithDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Arith
- DEPENDS
- MLIRArithOpsIncGen
- MLIRArithOpsInterfacesIncGen
+ # ArithDialect.cpp includes generated Bufferization interfaces and
+ # mlir/Transforms/InliningUtils.h.
+ HEADER_LIBS PRIVATE
+ MLIRBufferizationDialect
+ MLIRTransforms
LINK_LIBS PUBLIC
MLIRCastInterfaces
diff --git a/mlir/lib/Dialect/Arith/Transforms/CMakeLists.txt b/mlir/lib/Dialect/Arith/Transforms/CMakeLists.txt
index 637e16a3963d6..d5d5c56e0c569 100644
--- a/mlir/lib/Dialect/Arith/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/Arith/Transforms/CMakeLists.txt
@@ -14,9 +14,6 @@ add_mlir_dialect_library(MLIRArithTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Arith/Transforms
- DEPENDS
- MLIRArithTransformsIncGen
-
LINK_LIBS PUBLIC
MLIRAnalysis
MLIRArithDialect
diff --git a/mlir/lib/Dialect/ArmNeon/IR/CMakeLists.txt b/mlir/lib/Dialect/ArmNeon/IR/CMakeLists.txt
index b04919a3a3185..c14b3ac608c2f 100644
--- a/mlir/lib/Dialect/ArmNeon/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/ArmNeon/IR/CMakeLists.txt
@@ -4,8 +4,11 @@ add_mlir_dialect_library(MLIRArmNeonDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/ArmNeon
- DEPENDS
- MLIRArmNeonIncGen
+ # ArmNeonDialect.cpp includes VectorOps.h, whose generated declarations
+ # expose both Vector and Arith generated headers.
+ HEADER_LIBS PRIVATE
+ MLIRArithDialect
+ MLIRVectorDialect
LINK_LIBS PUBLIC
MLIRIR
diff --git a/mlir/lib/Dialect/ArmNeon/TransformOps/CMakeLists.txt b/mlir/lib/Dialect/ArmNeon/TransformOps/CMakeLists.txt
index 69d2143ad4e1f..90daf2db1f6ae 100644
--- a/mlir/lib/Dialect/ArmNeon/TransformOps/CMakeLists.txt
+++ b/mlir/lib/Dialect/ArmNeon/TransformOps/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_dialect_library(MLIRArmNeonVectorTransformOps
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/ArmNeon/TransformOps
- DEPENDS
- MLIRArmNeonVectorTransformOpsIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRLLVMCommonConversion
diff --git a/mlir/lib/Dialect/ArmNeon/Transforms/CMakeLists.txt b/mlir/lib/Dialect/ArmNeon/Transforms/CMakeLists.txt
index 368dacac7b835..40dbf64bdef3a 100644
--- a/mlir/lib/Dialect/ArmNeon/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/ArmNeon/Transforms/CMakeLists.txt
@@ -1,9 +1,6 @@
add_mlir_dialect_library(MLIRArmNeonTransforms
LowerContractToNeonPatterns.cpp
- DEPENDS
- MLIRArmNeonIncGen
-
LINK_LIBS PUBLIC
MLIRArmNeonDialect
MLIRFuncDialect
diff --git a/mlir/lib/Dialect/ArmSME/IR/CMakeLists.txt b/mlir/lib/Dialect/ArmSME/IR/CMakeLists.txt
index ce0c2f4986fc6..e22ef9c4d1561 100644
--- a/mlir/lib/Dialect/ArmSME/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/ArmSME/IR/CMakeLists.txt
@@ -5,10 +5,6 @@ add_mlir_dialect_library(MLIRArmSMEDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/ArmSME
- DEPENDS
- MLIRArmSMEOpsIncGen
- MLIRArmSMEIntrinsicOpsIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRLLVMDialect
diff --git a/mlir/lib/Dialect/ArmSME/Transforms/CMakeLists.txt b/mlir/lib/Dialect/ArmSME/Transforms/CMakeLists.txt
index a29624468ba2d..0845315253a73 100644
--- a/mlir/lib/Dialect/ArmSME/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/ArmSME/Transforms/CMakeLists.txt
@@ -7,9 +7,6 @@ add_mlir_dialect_library(MLIRArmSMETransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/ArmSME/Transforms
- DEPENDS
- MLIRArmSMETransformsIncGen
-
LINK_LIBS PUBLIC
MLIRPass
MLIRArmSMEDialect
diff --git a/mlir/lib/Dialect/ArmSVE/IR/CMakeLists.txt b/mlir/lib/Dialect/ArmSVE/IR/CMakeLists.txt
index 9ef7384fc5492..45a7209a719df 100644
--- a/mlir/lib/Dialect/ArmSVE/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/ArmSVE/IR/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_dialect_library(MLIRArmSVEDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/ArmSVE
- DEPENDS
- MLIRArmSVEIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRLLVMDialect
diff --git a/mlir/lib/Dialect/ArmSVE/TransformOps/CMakeLists.txt b/mlir/lib/Dialect/ArmSVE/TransformOps/CMakeLists.txt
index 235fe8f5ca0ce..716a5a3dc03a1 100644
--- a/mlir/lib/Dialect/ArmSVE/TransformOps/CMakeLists.txt
+++ b/mlir/lib/Dialect/ArmSVE/TransformOps/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_dialect_library(MLIRArmSVEVectorTransformOps
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/ArmSVE/TransformOps
- DEPENDS
- MLIRArmSVEVectorTransformOpsIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRLLVMCommonConversion
diff --git a/mlir/lib/Dialect/ArmSVE/Transforms/CMakeLists.txt b/mlir/lib/Dialect/ArmSVE/Transforms/CMakeLists.txt
index c29eaca244b4a..de1fb5db9ba3f 100644
--- a/mlir/lib/Dialect/ArmSVE/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/ArmSVE/Transforms/CMakeLists.txt
@@ -3,10 +3,6 @@ add_mlir_dialect_library(MLIRArmSVETransforms
LegalizeVectorStorage.cpp
LowerContractToSVEPatterns.cpp
- DEPENDS
- MLIRArmSVEConversionsIncGen
- MLIRArmSVEPassIncGen
-
LINK_LIBS PUBLIC
MLIRArmSVEDialect
MLIRFuncDialect
diff --git a/mlir/lib/Dialect/Async/IR/CMakeLists.txt b/mlir/lib/Dialect/Async/IR/CMakeLists.txt
index e0e667500308a..72b5e744e2443 100644
--- a/mlir/lib/Dialect/Async/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/Async/IR/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_dialect_library(MLIRAsyncDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Async
- DEPENDS
- MLIRAsyncOpsIncGen
-
LINK_LIBS PUBLIC
MLIRCallInterfaces
MLIRControlFlowInterfaces
diff --git a/mlir/lib/Dialect/Async/Transforms/CMakeLists.txt b/mlir/lib/Dialect/Async/Transforms/CMakeLists.txt
index 7b59bc0de30a6..a6e9614d4f7d2 100644
--- a/mlir/lib/Dialect/Async/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/Async/Transforms/CMakeLists.txt
@@ -8,9 +8,6 @@ add_mlir_dialect_library(MLIRAsyncTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Async
- DEPENDS
- MLIRAsyncPassIncGen
-
LINK_LIBS PUBLIC
MLIRArithDialect
MLIRAsyncDialect
diff --git a/mlir/lib/Dialect/Bufferization/IR/CMakeLists.txt b/mlir/lib/Dialect/Bufferization/IR/CMakeLists.txt
index a6403a5298dab..18706ed3f1085 100644
--- a/mlir/lib/Dialect/Bufferization/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/Bufferization/IR/CMakeLists.txt
@@ -12,11 +12,6 @@ add_mlir_dialect_library(MLIRBufferizationDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Bufferization
- DEPENDS
- MLIRAllocationOpInterfaceIncGen
- MLIRBufferizationOpsIncGen
- MLIRBufferizationEnumsIncGen
-
LINK_LIBS PUBLIC
MLIRAffineDialect
MLIRArithDialect
diff --git a/mlir/lib/Dialect/Bufferization/TransformOps/CMakeLists.txt b/mlir/lib/Dialect/Bufferization/TransformOps/CMakeLists.txt
index be5eb73b91229..976f1fc23122b 100644
--- a/mlir/lib/Dialect/Bufferization/TransformOps/CMakeLists.txt
+++ b/mlir/lib/Dialect/Bufferization/TransformOps/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_dialect_library(MLIRBufferizationTransformOps
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Bufferization/TransformOps
- DEPENDS
- MLIRBufferizationTransformOpsIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRBufferizationDialect
diff --git a/mlir/lib/Dialect/Bufferization/Transforms/CMakeLists.txt b/mlir/lib/Dialect/Bufferization/Transforms/CMakeLists.txt
index 2e6bc4d9503b9..7fe084d620d90 100644
--- a/mlir/lib/Dialect/Bufferization/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/Bufferization/Transforms/CMakeLists.txt
@@ -22,10 +22,6 @@ add_mlir_dialect_library(MLIRBufferizationTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Bufferization
- DEPENDS
- MLIRBufferizationPassIncGen
- MLIRBufferizationEnumsIncGen
-
LINK_LIBS PUBLIC
MLIRArithDialect
MLIRBufferizationDialect
diff --git a/mlir/lib/Dialect/Complex/IR/CMakeLists.txt b/mlir/lib/Dialect/Complex/IR/CMakeLists.txt
index a90f34ec1684d..7e829fe1ae1c3 100644
--- a/mlir/lib/Dialect/Complex/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/Complex/IR/CMakeLists.txt
@@ -5,9 +5,9 @@ add_mlir_dialect_library(MLIRComplexDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Complex
- DEPENDS
- MLIRComplexOpsIncGen
- MLIRComplexAttributesIncGen
+ # ComplexDialect.cpp includes mlir/Transforms/InliningUtils.h.
+ HEADER_LIBS PRIVATE
+ MLIRTransforms
LINK_LIBS PUBLIC
MLIRArithDialect
diff --git a/mlir/lib/Dialect/ControlFlow/IR/CMakeLists.txt b/mlir/lib/Dialect/ControlFlow/IR/CMakeLists.txt
index 05a787fa53ec3..d91f2ebc61112 100644
--- a/mlir/lib/Dialect/ControlFlow/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/ControlFlow/IR/CMakeLists.txt
@@ -4,8 +4,11 @@ add_mlir_dialect_library(MLIRControlFlowDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/ControlFlow/IR
- DEPENDS
- MLIRControlFlowOpsIncGen
+ # ControlFlowOps.cpp includes generated Bufferization interfaces and
+ # mlir/Transforms/InliningUtils.h.
+ HEADER_LIBS PRIVATE
+ MLIRBufferizationDialect
+ MLIRTransforms
LINK_LIBS PUBLIC
MLIRArithDialect
diff --git a/mlir/lib/Dialect/DLTI/CMakeLists.txt b/mlir/lib/Dialect/DLTI/CMakeLists.txt
index 7691a8a10a37a..d4dd514b80fec 100644
--- a/mlir/lib/Dialect/DLTI/CMakeLists.txt
+++ b/mlir/lib/Dialect/DLTI/CMakeLists.txt
@@ -3,9 +3,6 @@ add_mlir_dialect_library(MLIRDLTIDialect
DLTI.cpp
Traits.cpp
- DEPENDS
- MLIRDLTIIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRDataLayoutInterfaces
diff --git a/mlir/lib/Dialect/DLTI/TransformOps/CMakeLists.txt b/mlir/lib/Dialect/DLTI/TransformOps/CMakeLists.txt
index 05734353f9d11..10e5379ec3f18 100644
--- a/mlir/lib/Dialect/DLTI/TransformOps/CMakeLists.txt
+++ b/mlir/lib/Dialect/DLTI/TransformOps/CMakeLists.txt
@@ -4,10 +4,6 @@ add_mlir_dialect_library(MLIRDLTITransformOps
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/DLTI/TransformOps
- DEPENDS
- MLIRDLTITransformOpsIncGen
- MLIRDLTIDialect
-
LINK_LIBS PUBLIC
MLIRDLTIDialect
MLIRSideEffectInterfaces
diff --git a/mlir/lib/Dialect/EmitC/IR/CMakeLists.txt b/mlir/lib/Dialect/EmitC/IR/CMakeLists.txt
index 4cc54201d2745..f6fea0ff70011 100644
--- a/mlir/lib/Dialect/EmitC/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/EmitC/IR/CMakeLists.txt
@@ -4,10 +4,6 @@ add_mlir_dialect_library(MLIREmitCDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/EmitC
- DEPENDS
- MLIREmitCIncGen
- MLIREmitCAttributesIncGen
-
LINK_LIBS PUBLIC
MLIRCallInterfaces
MLIRCastInterfaces
diff --git a/mlir/lib/Dialect/EmitC/Transforms/CMakeLists.txt b/mlir/lib/Dialect/EmitC/Transforms/CMakeLists.txt
index ede2cb5e208f0..e7028bb2fdb94 100644
--- a/mlir/lib/Dialect/EmitC/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/EmitC/Transforms/CMakeLists.txt
@@ -8,9 +8,6 @@ add_mlir_dialect_library(MLIREmitCTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/EmitC/Transforms
- DEPENDS
- MLIREmitCTransformsIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRPass
diff --git a/mlir/lib/Dialect/Func/Extensions/CMakeLists.txt b/mlir/lib/Dialect/Func/Extensions/CMakeLists.txt
index 87ef51e63f1da..53567a3d0eab1 100644
--- a/mlir/lib/Dialect/Func/Extensions/CMakeLists.txt
+++ b/mlir/lib/Dialect/Func/Extensions/CMakeLists.txt
@@ -10,6 +10,10 @@ add_mlir_extension_library(MLIRFuncInlinerExtension
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Func/Extensions
+ # InlinerExtension.cpp includes mlir/Transforms/InliningUtils.h.
+ HEADER_LIBS PRIVATE
+ MLIRTransforms
+
LINK_LIBS PUBLIC
MLIRControlFlowDialect
MLIRInferTypeOpInterface
diff --git a/mlir/lib/Dialect/Func/IR/CMakeLists.txt b/mlir/lib/Dialect/Func/IR/CMakeLists.txt
index 329301c6fbafd..799fa72a6db56 100644
--- a/mlir/lib/Dialect/Func/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/Func/IR/CMakeLists.txt
@@ -4,8 +4,10 @@ add_mlir_dialect_library(MLIRFuncDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Func
- DEPENDS
- MLIRFuncOpsIncGen
+ # FuncOps.cpp includes generated Bufferization interfaces and InliningUtils.
+ HEADER_LIBS PRIVATE
+ MLIRBufferizationDialect
+ MLIRTransforms
LINK_LIBS PUBLIC
MLIRCallInterfaces
diff --git a/mlir/lib/Dialect/Func/TransformOps/CMakeLists.txt b/mlir/lib/Dialect/Func/TransformOps/CMakeLists.txt
index 968395c5bcfce..daf6f9907333e 100644
--- a/mlir/lib/Dialect/Func/TransformOps/CMakeLists.txt
+++ b/mlir/lib/Dialect/Func/TransformOps/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_dialect_library(MLIRFuncTransformOps
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Func/TransformOps
- DEPENDS
- MLIRFuncTransformOpsIncGen
-
LINK_LIBS PUBLIC
MLIRFuncDialect
MLIRFuncToLLVM
diff --git a/mlir/lib/Dialect/Func/Transforms/CMakeLists.txt b/mlir/lib/Dialect/Func/Transforms/CMakeLists.txt
index 0bed59e109503..25b48b1d35447 100644
--- a/mlir/lib/Dialect/Func/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/Func/Transforms/CMakeLists.txt
@@ -5,9 +5,6 @@ add_mlir_dialect_library(MLIRFuncTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Func/Transforms
- DEPENDS
- MLIRFuncTransformsIncGen
-
LINK_LIBS PUBLIC
MLIRFuncDialect
MLIRIR
diff --git a/mlir/lib/Dialect/GPU/CMakeLists.txt b/mlir/lib/Dialect/GPU/CMakeLists.txt
index 547812da0ab97..2ee43aeb5d2e7 100644
--- a/mlir/lib/Dialect/GPU/CMakeLists.txt
+++ b/mlir/lib/Dialect/GPU/CMakeLists.txt
@@ -6,12 +6,9 @@ add_mlir_dialect_library(MLIRGPUDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/GPU
+ # GPU dialect sources include llvm/IR/Attributes.h.
DEPENDS
- MLIRGPUOpsIncGen
- MLIRGPUOpsAttributesIncGen
- MLIRGPUOpsEnumsGen
- MLIRGPUOpInterfacesIncGen
- MLIRGPUCompilationAttrInterfacesIncGen
+ intrinsics_gen
LINK_LIBS PUBLIC
MLIRArithDialect
@@ -52,10 +49,6 @@ add_mlir_dialect_library(MLIRGPUTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/GPU
- DEPENDS
- MLIRGPUPassIncGen
- MLIRParallelLoopMapperEnumsGen
-
LINK_LIBS PUBLIC
MLIRAMDGPUDialect
MLIRAffineUtils
diff --git a/mlir/lib/Dialect/GPU/Pipelines/CMakeLists.txt b/mlir/lib/Dialect/GPU/Pipelines/CMakeLists.txt
index 3a0cd7ef5c39d..eeb777d98ab7b 100644
--- a/mlir/lib/Dialect/GPU/Pipelines/CMakeLists.txt
+++ b/mlir/lib/Dialect/GPU/Pipelines/CMakeLists.txt
@@ -6,6 +6,13 @@ add_mlir_dialect_library(MLIRGPUPipelines
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/GPU
+ # GPUToXeVMPipeline.cpp includes the aggregate Conversion/Passes.h header,
+ # whose declarations include these generated dialect and pass headers.
+ HEADER_LIBS PRIVATE
+ MLIRArmSMETransforms
+ MLIROpenACCDialect
+ MLIRTosaTransforms
+
LINK_LIBS PUBLIC
MLIRMemRefTransforms
MLIRFuncDialect
diff --git a/mlir/lib/Dialect/GPU/TransformOps/CMakeLists.txt b/mlir/lib/Dialect/GPU/TransformOps/CMakeLists.txt
index 2d3dfdbfc1136..dbda86235bd25 100644
--- a/mlir/lib/Dialect/GPU/TransformOps/CMakeLists.txt
+++ b/mlir/lib/Dialect/GPU/TransformOps/CMakeLists.txt
@@ -6,11 +6,6 @@ add_mlir_dialect_library(MLIRGPUTransformOps
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/GPU/TransformOps
${MLIR_MAIN_INCLUDE_DIR}/mlir/Interfaces
- DEPENDS
- MLIRGPUTransformOpsIncGen
- MLIRDeviceMappingInterfacesIncGen
- MLIRGPUDeviceMapperEnumsGen
-
LINK_LIBS PUBLIC
MLIRGPUDialect
MLIRGPUTransforms
diff --git a/mlir/lib/Dialect/GPU/Utils/CMakeLists.txt b/mlir/lib/Dialect/GPU/Utils/CMakeLists.txt
index 69094c518a159..a49baddc2bee8 100644
--- a/mlir/lib/Dialect/GPU/Utils/CMakeLists.txt
+++ b/mlir/lib/Dialect/GPU/Utils/CMakeLists.txt
@@ -5,10 +5,15 @@ add_mlir_dialect_library(MLIRGPUUtils
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/GPU/Utils
+ # GPU utility headers include llvm/IR/Attributes.h.
+ DEPENDS
+ intrinsics_gen
+
LINK_LIBS PUBLIC
MLIRArithDialect
MLIRAffineDialect
MLIRGPUDialect
MLIRSupport
MLIRIR
+ MLIRVectorDialect
)
diff --git a/mlir/lib/Dialect/IRDL/CMakeLists.txt b/mlir/lib/Dialect/IRDL/CMakeLists.txt
index db4b98ef5308e..3b65ab1541487 100644
--- a/mlir/lib/Dialect/IRDL/CMakeLists.txt
+++ b/mlir/lib/Dialect/IRDL/CMakeLists.txt
@@ -5,11 +5,6 @@ add_mlir_dialect_library(MLIRIRDL
IRDLSymbols.cpp
IRDLVerifiers.cpp
- DEPENDS
- MLIRIRDLIncGen
- MLIRIRDLOpsIncGen
- MLIRIRDLTypesIncGen
-
LINK_LIBS PUBLIC
MLIRDialect
MLIRIR
diff --git a/mlir/lib/Dialect/Index/IR/CMakeLists.txt b/mlir/lib/Dialect/Index/IR/CMakeLists.txt
index fce47d2ecc531..9a411c955f16d 100644
--- a/mlir/lib/Dialect/Index/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/Index/IR/CMakeLists.txt
@@ -4,8 +4,9 @@ add_mlir_dialect_library(MLIRIndexDialect
IndexOps.cpp
InferIntRangeInterfaceImpls.cpp
- DEPENDS
- MLIRIndexOpsIncGen
+ # IndexDialect.cpp includes mlir/Transforms/InliningUtils.h.
+ HEADER_LIBS PRIVATE
+ MLIRTransforms
LINK_LIBS PUBLIC
MLIRDialect
diff --git a/mlir/lib/Dialect/LLVMIR/CMakeLists.txt b/mlir/lib/Dialect/LLVMIR/CMakeLists.txt
index 18057048a509a..7f4debce44f70 100644
--- a/mlir/lib/Dialect/LLVMIR/CMakeLists.txt
+++ b/mlir/lib/Dialect/LLVMIR/CMakeLists.txt
@@ -29,21 +29,19 @@ add_mlir_dialect_library(MLIRLLVMDialect
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/LLVMIR
DEPENDS
- MLIRLLVMDialectBytecodeIncGen
- MLIRLLVMInterfacesIncGen
- MLIRLLVMIntrinsicOpsIncGen
- MLIRLLVMAllOpsIncGen
- MLIRLLVMOpsIncGen
MLIRLLVMOpsShardGen
- MLIRLLVMTranslationDialectInterfaceIncGen
- MLIRLLVMTypesIncGen
- MLIROpenMPOpsIncGen
intrinsics_gen
LINK_COMPONENTS
BinaryFormat
Core
+ HEADER_LIBS PRIVATE
+ # LLVMAttrs.cpp includes mlir/Dialect/Ptr/IR/PtrEnums.h.
+ MLIRPtrDialect
+ # LLVMDialect.cpp includes mlir/Transforms/InliningUtils.h.
+ MLIRTransforms
+
LINK_LIBS PUBLIC
MLIRCallInterfaces
MLIRControlFlowInterfaces
@@ -67,11 +65,6 @@ add_mlir_dialect_library(MLIRNVVMDialect
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/LLVMIR
DEPENDS
- MLIRGPUCompilationAttrInterfacesIncGen
- MLIRNVVMOpsIncGen
- MLIRNVVMConversionsIncGen
- MLIRBasicPtxBuilderInterfaceIncGen
- MLIRNVVMRequiresSMTraitsIncGen
intrinsics_gen
LINK_COMPONENTS
@@ -105,16 +98,18 @@ add_mlir_dialect_library(MLIRROCDLDialect
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/LLVMIR
DEPENDS
- MLIRGPUCompilationAttrInterfacesIncGen
- MLIRROCDLOpsIncGen
MLIRROCDLOpsShardGen
- MLIRROCDLConversionsIncGen
intrinsics_gen
LINK_COMPONENTS
AsmParser
Core
+ # ROCDLDialect.cpp includes GPU CompilationInterfaces and InliningUtils.
+ HEADER_LIBS PRIVATE
+ MLIRGPUDialect
+ MLIRTransforms
+
LINK_LIBS PUBLIC
MLIRIR
MLIRLLVMDialect
@@ -128,15 +123,16 @@ add_mlir_dialect_library(MLIRVCIXDialect
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/LLVMIR
DEPENDS
- MLIRGPUCompilationAttrInterfacesIncGen
- MLIRVCIXOpsIncGen
- MLIRVCIXConversionsIncGen
intrinsics_gen
LINK_COMPONENTS
AsmParser
Core
+ # VCIXDialect.cpp includes the generated GPU CompilationInterfaces.
+ HEADER_LIBS PRIVATE
+ MLIRGPUDialect
+
LINK_LIBS PUBLIC
MLIRIR
MLIRLLVMDialect
@@ -150,9 +146,6 @@ add_mlir_dialect_library(MLIRXeVMDialect
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/LLVMIR
DEPENDS
- MLIRGPUCompilationAttrInterfacesIncGen
- MLIRXeVMOpsIncGen
- MLIRXeVMConversionsIncGen
intrinsics_gen
LINK_COMPONENTS
@@ -160,6 +153,10 @@ add_mlir_dialect_library(MLIRXeVMDialect
Core
TargetParser
+ # XeVMDialect.cpp includes the generated GPU CompilationInterfaces.
+ HEADER_LIBS PRIVATE
+ MLIRGPUDialect
+
LINK_LIBS PUBLIC
MLIRDialectUtils
MLIRIR
diff --git a/mlir/lib/Dialect/LLVMIR/Transforms/CMakeLists.txt b/mlir/lib/Dialect/LLVMIR/Transforms/CMakeLists.txt
index fff166d39dad9..f3626e9c93fd5 100644
--- a/mlir/lib/Dialect/LLVMIR/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/LLVMIR/Transforms/CMakeLists.txt
@@ -8,9 +8,6 @@ add_mlir_dialect_library(MLIRLLVMIRTransforms
RequestCWrappers.cpp
UseDefaultVisibilityPass.cpp
- DEPENDS
- MLIRLLVMPassIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRFuncDialect
diff --git a/mlir/lib/Dialect/Linalg/IR/CMakeLists.txt b/mlir/lib/Dialect/Linalg/IR/CMakeLists.txt
index ec4fd82468dbb..5264a84526de7 100644
--- a/mlir/lib/Dialect/Linalg/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/Linalg/IR/CMakeLists.txt
@@ -7,14 +7,9 @@ add_mlir_dialect_library(MLIRLinalgDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Linalg
- DEPENDS
- MLIRLinalgInterfacesIncGen
- MLIRLinalgOpsAttributesIncGen
- MLIRLinalgOpsEnumsIncGen
- MLIRLinalgOpsIncGen
- MLIRLinalgStructuredOpsIncGen
- MLIRLinalgRelayoutOpsIncGen
- MLIRShardingInterfaceIncGen
+ # LinalgDialect.cpp includes ShardingInterface.h for promised interfaces.
+ HEADER_LIBS PRIVATE
+ MLIRShardingInterface
LINK_LIBS PUBLIC
MLIRAffineDialect
diff --git a/mlir/lib/Dialect/Linalg/TransformOps/CMakeLists.txt b/mlir/lib/Dialect/Linalg/TransformOps/CMakeLists.txt
index b15a4704f52a2..9d007e1202eea 100644
--- a/mlir/lib/Dialect/Linalg/TransformOps/CMakeLists.txt
+++ b/mlir/lib/Dialect/Linalg/TransformOps/CMakeLists.txt
@@ -8,11 +8,6 @@ add_mlir_dialect_library(MLIRLinalgTransformOps
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Linalg/TransformOps
- DEPENDS
- MLIRLinalgMatchOpsIncGen
- MLIRLinalgTransformOpsIncGen
- MLIRLinalgTransformEnumsIncGen
-
LINK_LIBS PUBLIC
MLIRAffineDialect
MLIRArithDialect
diff --git a/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt b/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt
index 6dcc6e6d18429..eca8729764fc9 100644
--- a/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt
@@ -50,9 +50,6 @@ add_mlir_dialect_library(MLIRLinalgTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Linalg
- DEPENDS
- MLIRLinalgPassIncGen
-
LINK_LIBS PUBLIC
MLIRAffineDialect
MLIRAffineUtils
diff --git a/mlir/lib/Dialect/MLProgram/IR/CMakeLists.txt b/mlir/lib/Dialect/MLProgram/IR/CMakeLists.txt
index 725bb5fd9da9e..96027a7ac2502 100644
--- a/mlir/lib/Dialect/MLProgram/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/MLProgram/IR/CMakeLists.txt
@@ -5,11 +5,6 @@ add_mlir_dialect_library(MLIRMLProgramDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/MLProgram
- DEPENDS
- MLIRMLProgramOpsIncGen
- MLIRMLProgramAttributesIncGen
- MLIRMLProgramTypesIncGen
-
LINK_LIBS PUBLIC
MLIRDialect
MLIRControlFlowInterfaces
diff --git a/mlir/lib/Dialect/MLProgram/Transforms/CMakeLists.txt b/mlir/lib/Dialect/MLProgram/Transforms/CMakeLists.txt
index 988019f0b648a..b2de48cfc4c6b 100644
--- a/mlir/lib/Dialect/MLProgram/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/MLProgram/Transforms/CMakeLists.txt
@@ -5,9 +5,6 @@ add_mlir_dialect_library(MLIRMLProgramTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/MLProgram/Transforms
- DEPENDS
- MLIRMLProgramPassIncGen
-
LINK_LIBS PUBLIC
MLIRBufferizationDialect
MLIRBufferizationTransforms
diff --git a/mlir/lib/Dialect/MPI/IR/CMakeLists.txt b/mlir/lib/Dialect/MPI/IR/CMakeLists.txt
index 86c53495f01a3..897c2fe5bddde 100644
--- a/mlir/lib/Dialect/MPI/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/MPI/IR/CMakeLists.txt
@@ -5,12 +5,6 @@ add_mlir_dialect_library(MLIRMPIDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/MPI
- DEPENDS
- MLIRMPIIncGen
- MLIRMPIOpsIncGen
- MLIRMPITypesIncGen
- MLIRMPIAttrsIncGen
-
LINK_LIBS PUBLIC
MLIRDialect
MLIRDLTIDialect
diff --git a/mlir/lib/Dialect/Math/IR/CMakeLists.txt b/mlir/lib/Dialect/Math/IR/CMakeLists.txt
index ed95bf846cdea..bc710b96c425c 100644
--- a/mlir/lib/Dialect/Math/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/Math/IR/CMakeLists.txt
@@ -5,8 +5,9 @@ add_mlir_dialect_library(MLIRMathDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Math
- DEPENDS
- MLIRMathOpsIncGen
+ # MathDialect.cpp includes mlir/Transforms/InliningUtils.h.
+ HEADER_LIBS PRIVATE
+ MLIRTransforms
LINK_LIBS PUBLIC
MLIRArithDialect
diff --git a/mlir/lib/Dialect/Math/Transforms/CMakeLists.txt b/mlir/lib/Dialect/Math/Transforms/CMakeLists.txt
index 3cbfe03d784ab..c65ed8af50422 100644
--- a/mlir/lib/Dialect/Math/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/Math/Transforms/CMakeLists.txt
@@ -9,9 +9,6 @@ add_mlir_dialect_library(MLIRMathTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Math/Transforms
- DEPENDS
- MLIRMathTransformsIncGen
-
LINK_LIBS PUBLIC
MLIRArithDialect
MLIRComplexDialect
diff --git a/mlir/lib/Dialect/MemRef/IR/CMakeLists.txt b/mlir/lib/Dialect/MemRef/IR/CMakeLists.txt
index 56d98dd431c8e..7c511befb2233 100644
--- a/mlir/lib/Dialect/MemRef/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/MemRef/IR/CMakeLists.txt
@@ -8,10 +8,6 @@ add_mlir_dialect_library(MLIRMemRefDialect
ADDITIONAL_HEADER_DIRS
${PROJECT_SOURCE_DIR}/inlude/mlir/Dialect/MemRef/IR
- DEPENDS
- MLIRMemRefOpsIncGen
- MLIRMemoryAccessOpInterfacesIncGen
-
LINK_LIBS PUBLIC
MLIRArithDialect
MLIRArithUtils
diff --git a/mlir/lib/Dialect/MemRef/TransformOps/CMakeLists.txt b/mlir/lib/Dialect/MemRef/TransformOps/CMakeLists.txt
index 4c9e3d3c813f7..456bfaaf2ae96 100644
--- a/mlir/lib/Dialect/MemRef/TransformOps/CMakeLists.txt
+++ b/mlir/lib/Dialect/MemRef/TransformOps/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_dialect_library(MLIRMemRefTransformOps
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/MemRef/TransformOps
- DEPENDS
- MLIRMemRefTransformOpsIncGen
-
LINK_LIBS PUBLIC
MLIRAffineDialect
MLIRArithDialect
diff --git a/mlir/lib/Dialect/MemRef/Transforms/CMakeLists.txt b/mlir/lib/Dialect/MemRef/Transforms/CMakeLists.txt
index 1a8b03dabcfb7..2857b6b2ce23a 100644
--- a/mlir/lib/Dialect/MemRef/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/MemRef/Transforms/CMakeLists.txt
@@ -21,9 +21,6 @@ add_mlir_dialect_library(MLIRMemRefTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/MemRef
- DEPENDS
- MLIRMemRefPassIncGen
-
LINK_LIBS PUBLIC
MLIRAffineTransforms
MLIRAffineUtils
diff --git a/mlir/lib/Dialect/NVGPU/IR/CMakeLists.txt b/mlir/lib/Dialect/NVGPU/IR/CMakeLists.txt
index 94776845c5321..a2024549c9678 100644
--- a/mlir/lib/Dialect/NVGPU/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/NVGPU/IR/CMakeLists.txt
@@ -4,12 +4,6 @@ add_mlir_dialect_library(MLIRNVGPUDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/NVGPU
- DEPENDS
- MLIRNVGPUOpsIncGen
- MLIRNVGPUEnumsIncGen
- MLIRNVGPUAttributesIncGen
- MLIRNVGPUTypesIncGen
-
LINK_LIBS PUBLIC
MLIRGPUDialect
MLIRNVVMDialect
diff --git a/mlir/lib/Dialect/NVGPU/TransformOps/CMakeLists.txt b/mlir/lib/Dialect/NVGPU/TransformOps/CMakeLists.txt
index 9a20f170b629b..b3f50ab8a02b7 100644
--- a/mlir/lib/Dialect/NVGPU/TransformOps/CMakeLists.txt
+++ b/mlir/lib/Dialect/NVGPU/TransformOps/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_dialect_library(MLIRNVGPUTransformOps
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/NVGPU/TransformOps
- DEPENDS
- MLIRNVGPUTransformOpsIncGen
-
LINK_LIBS PUBLIC
MLIRAffineDialect
MLIRArithDialect
diff --git a/mlir/lib/Dialect/NVGPU/Transforms/CMakeLists.txt b/mlir/lib/Dialect/NVGPU/Transforms/CMakeLists.txt
index 8852ed7fb30a8..6fa5ae75da3fe 100644
--- a/mlir/lib/Dialect/NVGPU/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/NVGPU/Transforms/CMakeLists.txt
@@ -8,9 +8,6 @@ add_mlir_dialect_library(MLIRNVGPUTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/NVGPU
- DEPENDS
- MLIRNVGPUPassIncGen
-
LINK_LIBS PUBLIC
MLIRArithDialect
MLIRGPUDialect
diff --git a/mlir/lib/Dialect/NVVM/Transforms/CMakeLists.txt b/mlir/lib/Dialect/NVVM/Transforms/CMakeLists.txt
index 935fa5700c7e5..879cf3f761a52 100644
--- a/mlir/lib/Dialect/NVVM/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/NVVM/Transforms/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_dialect_library(MLIRNVVMTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/NVVM
- DEPENDS
- MLIRNVVMPassIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRLLVMDialect
diff --git a/mlir/lib/Dialect/OpenACC/IR/CMakeLists.txt b/mlir/lib/Dialect/OpenACC/IR/CMakeLists.txt
index 409155ec18fe6..d986206a03ff7 100644
--- a/mlir/lib/Dialect/OpenACC/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/OpenACC/IR/CMakeLists.txt
@@ -5,14 +5,6 @@ add_mlir_dialect_library(MLIROpenACCDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/OpenACC
- DEPENDS
- MLIROpenACCOpsIncGen
- MLIROpenACCEnumsIncGen
- MLIROpenACCAttributesIncGen
- MLIROpenACCMPOpsInterfacesIncGen
- MLIROpenACCOpsInterfacesIncGen
- MLIROpenACCTypeInterfacesIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRDialectUtils
diff --git a/mlir/lib/Dialect/OpenACC/Transforms/CMakeLists.txt b/mlir/lib/Dialect/OpenACC/Transforms/CMakeLists.txt
index 3fd2672e82c50..a641bdb8ab051 100644
--- a/mlir/lib/Dialect/OpenACC/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/OpenACC/Transforms/CMakeLists.txt
@@ -25,15 +25,6 @@ add_mlir_dialect_library(MLIROpenACCTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/OpenACC
- DEPENDS
- MLIROpenACCPassIncGen
- MLIROpenACCOpsIncGen
- MLIROpenACCEnumsIncGen
- MLIROpenACCAttributesIncGen
- MLIROpenACCMPOpsInterfacesIncGen
- MLIROpenACCOpsInterfacesIncGen
- MLIROpenACCTypeInterfacesIncGen
-
LINK_LIBS PUBLIC
MLIRAnalysis
MLIRArithDialect
diff --git a/mlir/lib/Dialect/OpenACC/Utils/CMakeLists.txt b/mlir/lib/Dialect/OpenACC/Utils/CMakeLists.txt
index 359cf23aa4abf..031d85c7925a5 100644
--- a/mlir/lib/Dialect/OpenACC/Utils/CMakeLists.txt
+++ b/mlir/lib/Dialect/OpenACC/Utils/CMakeLists.txt
@@ -11,15 +11,6 @@ add_mlir_dialect_library(MLIROpenACCUtils
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/OpenACC
- DEPENDS
- MLIROpenACCPassIncGen
- MLIROpenACCOpsIncGen
- MLIROpenACCEnumsIncGen
- MLIROpenACCAttributesIncGen
- MLIROpenACCMPOpsInterfacesIncGen
- MLIROpenACCOpsInterfacesIncGen
- MLIROpenACCTypeInterfacesIncGen
-
LINK_LIBS PUBLIC
MLIRArithDialect
MLIRArithUtils
diff --git a/mlir/lib/Dialect/OpenACCMPCommon/Interfaces/CMakeLists.txt b/mlir/lib/Dialect/OpenACCMPCommon/Interfaces/CMakeLists.txt
index 2a82ff2150287..b1b9954f331ee 100644
--- a/mlir/lib/Dialect/OpenACCMPCommon/Interfaces/CMakeLists.txt
+++ b/mlir/lib/Dialect/OpenACCMPCommon/Interfaces/CMakeLists.txt
@@ -4,10 +4,6 @@ AtomicInterfaces.cpp
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/OpenACCMPCommon/Interfaces
-DEPENDS
-MLIRArithOpsIncGen
-MLIRAtomicInterfacesIncGen
-
LINK_LIBS PUBLIC
MLIRArithDialect
MLIRIR
diff --git a/mlir/lib/Dialect/OpenMP/IR/CMakeLists.txt b/mlir/lib/Dialect/OpenMP/IR/CMakeLists.txt
index 1beea2098d3bb..8c6d28ee2c66d 100644
--- a/mlir/lib/Dialect/OpenMP/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/OpenMP/IR/CMakeLists.txt
@@ -6,9 +6,6 @@ add_mlir_dialect_library(MLIROpenMPDialect
DEPENDS
omp_gen
- MLIROpenMPOpsIncGen
- MLIROpenMPOpsInterfacesIncGen
- MLIROpenMPTypeInterfacesIncGen
LINK_COMPONENTS
TargetParser
diff --git a/mlir/lib/Dialect/OpenMP/Transforms/CMakeLists.txt b/mlir/lib/Dialect/OpenMP/Transforms/CMakeLists.txt
index 04fba34ae625c..94af617314388 100644
--- a/mlir/lib/Dialect/OpenMP/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/OpenMP/Transforms/CMakeLists.txt
@@ -10,10 +10,6 @@ add_mlir_dialect_library(MLIROpenMPTransforms
DEPENDS
omp_gen
- MLIROpenMPPassIncGen
- MLIROpenMPOpsIncGen
- MLIROpenMPOpsInterfacesIncGen
- MLIROpenMPTypeInterfacesIncGen
LINK_LIBS PUBLIC
MLIRFunctionInterfaces
diff --git a/mlir/lib/Dialect/PDL/IR/CMakeLists.txt b/mlir/lib/Dialect/PDL/IR/CMakeLists.txt
index a0bec9f51a623..f62eb2a573e9d 100644
--- a/mlir/lib/Dialect/PDL/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/PDL/IR/CMakeLists.txt
@@ -5,9 +5,6 @@ add_mlir_dialect_library(MLIRPDLDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/PDL
- DEPENDS
- MLIRPDLOpsIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRInferTypeOpInterface
diff --git a/mlir/lib/Dialect/PDLInterp/IR/CMakeLists.txt b/mlir/lib/Dialect/PDLInterp/IR/CMakeLists.txt
index a2395872dca64..a9a9f352f1aa1 100644
--- a/mlir/lib/Dialect/PDLInterp/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/PDLInterp/IR/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_dialect_library(MLIRPDLInterpDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/PDLInterp
- DEPENDS
- MLIRPDLInterpOpsIncGen
-
LINK_LIBS PUBLIC
MLIRFunctionInterfaces
MLIRIR
diff --git a/mlir/lib/Dialect/Ptr/IR/CMakeLists.txt b/mlir/lib/Dialect/Ptr/IR/CMakeLists.txt
index a6b0d416a4165..7a86fee0828c1 100644
--- a/mlir/lib/Dialect/Ptr/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/Ptr/IR/CMakeLists.txt
@@ -9,9 +9,6 @@ add_mlir_dialect_library(
MLIRPtrMemorySpaceInterfaces
MemorySpaceInterfaces.cpp
- DEPENDS
- MLIRPtrOpsEnumsGen
- MLIRPtrMemorySpaceInterfacesIncGen
LINK_LIBS
PUBLIC
MLIRIR
@@ -23,11 +20,10 @@ add_mlir_dialect_library(
PtrTypes.cpp
PtrDialect.cpp
- DEPENDS
- MLIRPtrOpsAttributesIncGen
- MLIRPtrOpsIncGen
- MLIRPtrOpsEnumsGen
- MLIRPtrMemorySpaceInterfacesIncGen
+ # PtrDialect.cpp includes mlir/Transforms/InliningUtils.h.
+ HEADER_LIBS PRIVATE
+ MLIRTransforms
+
LINK_LIBS
PUBLIC
MLIRIR
diff --git a/mlir/lib/Dialect/Quant/IR/CMakeLists.txt b/mlir/lib/Dialect/Quant/IR/CMakeLists.txt
index c9e10ae52825e..31358fc14231b 100644
--- a/mlir/lib/Dialect/Quant/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/Quant/IR/CMakeLists.txt
@@ -9,9 +9,9 @@ add_mlir_dialect_library(MLIRQuantDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/QuantOps/IR
- DEPENDS
- MLIRQuantOpsIncGen
- MLIRQuantDialectBytecodeIncGen
+ # QuantOps.cpp includes mlir/Transforms/InliningUtils.h.
+ HEADER_LIBS PRIVATE
+ MLIRTransforms
LINK_LIBS PUBLIC
MLIRIR
diff --git a/mlir/lib/Dialect/Quant/Transforms/CMakeLists.txt b/mlir/lib/Dialect/Quant/Transforms/CMakeLists.txt
index deb7109c904f4..7e4f16ad8ca82 100644
--- a/mlir/lib/Dialect/Quant/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/Quant/Transforms/CMakeLists.txt
@@ -6,9 +6,6 @@ add_mlir_dialect_library(MLIRQuantTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Quant/Transforms
- DEPENDS
- MLIRQuantTransformsIncGen
-
LINK_LIBS PUBLIC
MLIRArithDialect
MLIRFuncDialect
diff --git a/mlir/lib/Dialect/SCF/IR/CMakeLists.txt b/mlir/lib/Dialect/SCF/IR/CMakeLists.txt
index 5e7d10e4a9d6a..e0da2e9a54852 100644
--- a/mlir/lib/Dialect/SCF/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/SCF/IR/CMakeLists.txt
@@ -7,9 +7,6 @@ add_mlir_dialect_library(MLIRSCFDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/SCF
- DEPENDS
- MLIRSCFOpsIncGen
-
LINK_LIBS PUBLIC
MLIRArithDialect
MLIRControlFlowDialect
diff --git a/mlir/lib/Dialect/SCF/TransformOps/CMakeLists.txt b/mlir/lib/Dialect/SCF/TransformOps/CMakeLists.txt
index 06bccab80e7d8..f346eba3826b7 100644
--- a/mlir/lib/Dialect/SCF/TransformOps/CMakeLists.txt
+++ b/mlir/lib/Dialect/SCF/TransformOps/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_dialect_library(MLIRSCFTransformOps
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SCF/TransformOps
- DEPENDS
- MLIRSCFTransformOpsIncGen
-
LINK_LIBS PUBLIC
MLIRAffineDialect
MLIRFuncDialect
diff --git a/mlir/lib/Dialect/SCF/Transforms/CMakeLists.txt b/mlir/lib/Dialect/SCF/Transforms/CMakeLists.txt
index fb9aa4018d263..30e9e4eef5305 100644
--- a/mlir/lib/Dialect/SCF/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/SCF/Transforms/CMakeLists.txt
@@ -21,9 +21,6 @@ add_mlir_dialect_library(MLIRSCFTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SCF
- DEPENDS
- MLIRSCFPassIncGen
-
LINK_LIBS PUBLIC
MLIRAffineDialect
MLIRAffineAnalysis
diff --git a/mlir/lib/Dialect/SMT/IR/CMakeLists.txt b/mlir/lib/Dialect/SMT/IR/CMakeLists.txt
index e287613da9fd0..a94042531dd94 100644
--- a/mlir/lib/Dialect/SMT/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/SMT/IR/CMakeLists.txt
@@ -7,11 +7,6 @@ add_mlir_dialect_library(MLIRSMT
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SMT
- DEPENDS
- MLIRSMTAttrIncGen
- MLIRSMTEnumsIncGen
- MLIRSMTIncGen
-
LINK_COMPONENTS
Support
@@ -21,7 +16,3 @@ add_mlir_dialect_library(MLIRSMT
MLIRSideEffectInterfaces
MLIRControlFlowInterfaces
)
-
-add_dependencies(mlir-headers
- MLIRSMTIncGen
-)
diff --git a/mlir/lib/Dialect/SPIRV/IR/CMakeLists.txt b/mlir/lib/Dialect/SPIRV/IR/CMakeLists.txt
index 742272163cd82..29d767bc67d5f 100644
--- a/mlir/lib/Dialect/SPIRV/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/SPIRV/IR/CMakeLists.txt
@@ -1,6 +1,7 @@
set(LLVM_TARGET_DEFINITIONS SPIRVCanonicalization.td)
mlir_tablegen(SPIRVCanonicalization.inc -gen-rewriters)
-add_public_tablegen_target(MLIRSPIRVCanonicalizationIncGen)
+add_mlir_library_tablegen_target(MLIRSPIRVCanonicalizationIncGen
+ MLIRSPIRVDialect)
set(LLVM_OPTIONAL_SOURCES
SPIRVOpDefinitions.cpp
@@ -44,16 +45,13 @@ add_mlir_dialect_library(MLIRSPIRVDialect
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SPIRV
DEPENDS
- MLIRGPUDialect
- MLIRSPIRVAttributeIncGen
- MLIRSPIRVAttrUtilsGen
- MLIRSPIRVAvailabilityIncGen
- MLIRSPIRVCanonicalizationIncGen
- MLIRSPIRVEnumAvailabilityIncGen
- MLIRSPIRVEnumsIncGen
- MLIRSPIRVImageInterfacesIncGen
- MLIRSPIRVOpsIncGen
MLIRSPIRVOpsShardGen
+ # SPIRVDialect.cpp includes llvm/IR/Attributes.h.
+ intrinsics_gen
+
+ # SPIRVDialect.cpp includes the generated GPU CompilationInterfaces.
+ HEADER_LIBS PRIVATE
+ MLIRGPUDialect
LINK_LIBS PUBLIC
MLIRControlFlowInterfaces
diff --git a/mlir/lib/Dialect/SPIRV/Interfaces/CMakeLists.txt b/mlir/lib/Dialect/SPIRV/Interfaces/CMakeLists.txt
index 2868e3b641b91..b22db8a222b83 100644
--- a/mlir/lib/Dialect/SPIRV/Interfaces/CMakeLists.txt
+++ b/mlir/lib/Dialect/SPIRV/Interfaces/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_library(MLIRSPIRVImageInterfaces
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SPIRV
- DEPENDS
- MLIRSPIRVImageInterfacesIncGen
-
LINK_LIBS PUBLIC
MLIRIR
)
diff --git a/mlir/lib/Dialect/SPIRV/Transforms/CMakeLists.txt b/mlir/lib/Dialect/SPIRV/Transforms/CMakeLists.txt
index b947447dad46a..807e4cca952c7 100644
--- a/mlir/lib/Dialect/SPIRV/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/SPIRV/Transforms/CMakeLists.txt
@@ -42,9 +42,6 @@ add_mlir_dialect_library(MLIRSPIRVTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SPIRV
- DEPENDS
- MLIRSPIRVPassIncGen
-
LINK_LIBS PUBLIC
MLIRPass
MLIRSPIRVConversion
diff --git a/mlir/lib/Dialect/Shape/IR/CMakeLists.txt b/mlir/lib/Dialect/Shape/IR/CMakeLists.txt
index 32a86b483a49b..2fbf0fdc1b464 100644
--- a/mlir/lib/Dialect/Shape/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/Shape/IR/CMakeLists.txt
@@ -8,9 +8,6 @@ add_mlir_dialect_library(MLIRShapeDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Shape
- DEPENDS
- MLIRShapeOpsIncGen
-
LINK_LIBS PUBLIC
MLIRArithDialect
MLIRCallInterfaces
diff --git a/mlir/lib/Dialect/Shape/Transforms/CMakeLists.txt b/mlir/lib/Dialect/Shape/Transforms/CMakeLists.txt
index a51c6780c2866..763582b20454a 100644
--- a/mlir/lib/Dialect/Shape/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/Shape/Transforms/CMakeLists.txt
@@ -7,12 +7,14 @@ add_mlir_dialect_library(MLIRShapeOpsTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/ShapeOps/Transforms
- DEPENDS
- MLIRShapeTransformsIncGen
- )
+ # The implementations include FuncOps.h and Tensor.h; Tensor.h includes
+ # Dialect/Utils/ReshapeOpsUtils.h.
+ HEADER_LIBS PRIVATE
+ MLIRDialectUtils
+ MLIRFuncDialect
+ MLIRTensorDialect
-target_link_libraries(MLIRShapeOpsTransforms
- PUBLIC
+ LINK_LIBS PUBLIC
MLIRArithDialect
MLIRBufferizationDialect
MLIRBufferizationTransforms
diff --git a/mlir/lib/Dialect/Shard/IR/CMakeLists.txt b/mlir/lib/Dialect/Shard/IR/CMakeLists.txt
index 70c6049884e12..3a4ff872f3838 100644
--- a/mlir/lib/Dialect/Shard/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/Shard/IR/CMakeLists.txt
@@ -4,8 +4,9 @@ add_mlir_dialect_library(MLIRShardDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Shard
- DEPENDS
- MLIRShardIncGen
+ # ShardOps.cpp includes mlir/Transforms/InliningUtils.h.
+ HEADER_LIBS PRIVATE
+ MLIRTransforms
LINK_LIBS PUBLIC
MLIRArithDialect
diff --git a/mlir/lib/Dialect/Shard/Interfaces/CMakeLists.txt b/mlir/lib/Dialect/Shard/Interfaces/CMakeLists.txt
index 01e8e56dd391d..dd011866a610b 100644
--- a/mlir/lib/Dialect/Shard/Interfaces/CMakeLists.txt
+++ b/mlir/lib/Dialect/Shard/Interfaces/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_library(MLIRShardingInterface
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Shard
- DEPENDS
- MLIRShardingInterfaceIncGen
-
LINK_LIBS PUBLIC
MLIRDialectUtils
MLIRIR
diff --git a/mlir/lib/Dialect/Shard/Transforms/CMakeLists.txt b/mlir/lib/Dialect/Shard/Transforms/CMakeLists.txt
index 4e3fb6db9966c..67b34f5a85152 100644
--- a/mlir/lib/Dialect/Shard/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/Shard/Transforms/CMakeLists.txt
@@ -7,8 +7,8 @@ add_mlir_dialect_library(MLIRShardTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Shard
- DEPENDS
- MLIRShardPassIncGen
+ # Partition.cpp and ShardingPropagation.cpp include ShardingInterface.h.
+ HEADER_LIBS PRIVATE
MLIRShardingInterface
LINK_LIBS PUBLIC
diff --git a/mlir/lib/Dialect/SparseTensor/IR/CMakeLists.txt b/mlir/lib/Dialect/SparseTensor/IR/CMakeLists.txt
index fe2cc90688d08..b89ca1f75edd0 100644
--- a/mlir/lib/Dialect/SparseTensor/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/SparseTensor/IR/CMakeLists.txt
@@ -38,10 +38,9 @@ add_mlir_dialect_library(MLIRSparseTensorDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SparseTensor
- DEPENDS
- MLIRSparseTensorAttrDefsIncGen
- MLIRSparseTensorOpsIncGen
- MLIRSparseTensorTypesIncGen
+ # SparseTensorDialect.cpp includes the generated BufferizableOpInterface.
+ HEADER_LIBS PRIVATE
+ MLIRBufferizationDialect
LINK_LIBS PUBLIC
MLIRArithDialect
diff --git a/mlir/lib/Dialect/SparseTensor/Pipelines/CMakeLists.txt b/mlir/lib/Dialect/SparseTensor/Pipelines/CMakeLists.txt
index c724b49762a1a..351033cd01898 100644
--- a/mlir/lib/Dialect/SparseTensor/Pipelines/CMakeLists.txt
+++ b/mlir/lib/Dialect/SparseTensor/Pipelines/CMakeLists.txt
@@ -4,6 +4,13 @@ add_mlir_dialect_library(MLIRSparseTensorPipelines
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SparseTensor
+ # SparseTensorPipelines.cpp includes the aggregate Conversion/Passes.h
+ # header, whose declarations include these generated dialect headers.
+ HEADER_LIBS PRIVATE
+ MLIRArmSMETransforms
+ MLIROpenACCDialect
+ MLIRTosaTransforms
+
LINK_LIBS PUBLIC
MLIRArithTransforms
MLIRAffineToStandard
diff --git a/mlir/lib/Dialect/SparseTensor/TransformOps/CMakeLists.txt b/mlir/lib/Dialect/SparseTensor/TransformOps/CMakeLists.txt
index 53ae92535b325..7356e66a09073 100644
--- a/mlir/lib/Dialect/SparseTensor/TransformOps/CMakeLists.txt
+++ b/mlir/lib/Dialect/SparseTensor/TransformOps/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_dialect_library(MLIRSparseTensorTransformOps
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SparseTensor/TransformOps
- DEPENDS
- MLIRSparseTensorTransformOpsIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRSparseTensorDialect
diff --git a/mlir/lib/Dialect/SparseTensor/Transforms/CMakeLists.txt b/mlir/lib/Dialect/SparseTensor/Transforms/CMakeLists.txt
index 43e5c3251c525..6be6bbe4ee2be 100644
--- a/mlir/lib/Dialect/SparseTensor/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/SparseTensor/Transforms/CMakeLists.txt
@@ -27,9 +27,6 @@ add_mlir_dialect_library(MLIRSparseTensorTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SparseTensor
- DEPENDS
- MLIRSparseTensorPassIncGen
-
LINK_LIBS PUBLIC
MLIRArithDialect
MLIRBufferizationDialect
diff --git a/mlir/lib/Dialect/Tensor/IR/CMakeLists.txt b/mlir/lib/Dialect/Tensor/IR/CMakeLists.txt
index 66b73f9bead5d..9feee13bfc4f2 100644
--- a/mlir/lib/Dialect/Tensor/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/Tensor/IR/CMakeLists.txt
@@ -14,8 +14,9 @@ add_mlir_dialect_library(MLIRTensorDialect
ADDITIONAL_HEADER_DIRS
${PROJECT_SOURCE_DIR}/include/mlir/Dialect/Tensor
- DEPENDS
- MLIRTensorOpsIncGen
+ # TensorDialect.cpp includes TransformInterfaces.h.
+ HEADER_LIBS PRIVATE
+ MLIRTransformDialectInterfaces
LINK_LIBS PUBLIC
MLIRAffineDialect
diff --git a/mlir/lib/Dialect/Tensor/TransformOps/CMakeLists.txt b/mlir/lib/Dialect/Tensor/TransformOps/CMakeLists.txt
index 113a29b31d0ac..b8b18686abf76 100644
--- a/mlir/lib/Dialect/Tensor/TransformOps/CMakeLists.txt
+++ b/mlir/lib/Dialect/Tensor/TransformOps/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_dialect_library(MLIRTensorTransformOps
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Tensor/TransformOps
- DEPENDS
- MLIRTensorTransformOpsIncGen
-
LINK_LIBS PUBLIC
MLIRAffineDialect
MLIRIR
diff --git a/mlir/lib/Dialect/Tensor/Transforms/CMakeLists.txt b/mlir/lib/Dialect/Tensor/Transforms/CMakeLists.txt
index 78e64c82544e0..a197e13b1436d 100644
--- a/mlir/lib/Dialect/Tensor/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/Tensor/Transforms/CMakeLists.txt
@@ -16,9 +16,6 @@ add_mlir_dialect_library(MLIRTensorTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Tensor/Transforms
- DEPENDS
- MLIRTensorTransformsIncGen
-
LINK_LIBS PUBLIC
MLIRAffineDialect
MLIRAffineTransforms
diff --git a/mlir/lib/Dialect/Tosa/CMakeLists.txt b/mlir/lib/Dialect/Tosa/CMakeLists.txt
index 6404ca8fc5a56..c65d6d3e47ac1 100644
--- a/mlir/lib/Dialect/Tosa/CMakeLists.txt
+++ b/mlir/lib/Dialect/Tosa/CMakeLists.txt
@@ -8,13 +8,9 @@ add_mlir_dialect_library(MLIRTosaDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Tosa
- DEPENDS
- MLIRTosaAttributesIncGen
- MLIRTosaDialectBytecodeIncGen
- MLIRTosaOpsIncGen
- MLIRTosaInterfacesIncGen
- MLIRTosaEnumsIncGen
- MLIRShardingInterfaceIncGen
+ # TosaOps.cpp includes ShardingInterface.h for promised interfaces.
+ HEADER_LIBS PRIVATE
+ MLIRShardingInterface
LINK_LIBS PUBLIC
MLIRIR
diff --git a/mlir/lib/Dialect/Tosa/Transforms/CMakeLists.txt b/mlir/lib/Dialect/Tosa/Transforms/CMakeLists.txt
index 1fd18bb5a395b..0d0533b4a0f1b 100644
--- a/mlir/lib/Dialect/Tosa/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/Tosa/Transforms/CMakeLists.txt
@@ -20,9 +20,6 @@ add_mlir_dialect_library(MLIRTosaTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Tosa/Transforms
- DEPENDS
- MLIRTosaPassIncGen
-
LINK_LIBS PUBLIC
MLIRFuncDialect
MLIRFuncTransformOps
diff --git a/mlir/lib/Dialect/Transform/DebugExtension/CMakeLists.txt b/mlir/lib/Dialect/Transform/DebugExtension/CMakeLists.txt
index 38aca4c7340e9..f57bf52005102 100644
--- a/mlir/lib/Dialect/Transform/DebugExtension/CMakeLists.txt
+++ b/mlir/lib/Dialect/Transform/DebugExtension/CMakeLists.txt
@@ -2,9 +2,6 @@ add_mlir_dialect_library(MLIRTransformDebugExtension
DebugExtension.cpp
DebugExtensionOps.cpp
- DEPENDS
- MLIRTransformDialectDebugExtensionOpsIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRTransformDialect
diff --git a/mlir/lib/Dialect/Transform/IRDLExtension/CMakeLists.txt b/mlir/lib/Dialect/Transform/IRDLExtension/CMakeLists.txt
index 9216a3d722021..813d3aa7d6bf7 100644
--- a/mlir/lib/Dialect/Transform/IRDLExtension/CMakeLists.txt
+++ b/mlir/lib/Dialect/Transform/IRDLExtension/CMakeLists.txt
@@ -2,9 +2,6 @@ add_mlir_dialect_library(MLIRTransformDialectIRDLExtension
IRDLExtension.cpp
IRDLExtensionOps.cpp
- DEPENDS
- MLIRTransformDialectIRDLExtensionOpsIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRTransformDialect
diff --git a/mlir/lib/Dialect/Transform/Interfaces/CMakeLists.txt b/mlir/lib/Dialect/Transform/Interfaces/CMakeLists.txt
index fc9cbfdc9a5bf..32a900532ea34 100644
--- a/mlir/lib/Dialect/Transform/Interfaces/CMakeLists.txt
+++ b/mlir/lib/Dialect/Transform/Interfaces/CMakeLists.txt
@@ -2,10 +2,6 @@ add_mlir_library(MLIRTransformDialectInterfaces
MatchInterfaces.cpp
TransformInterfaces.cpp
- DEPENDS
- MLIRMatchInterfacesIncGen
- MLIRTransformInterfacesIncGen
-
LINK_LIBS PUBLIC
MLIRCastInterfaces
MLIRIR
diff --git a/mlir/lib/Dialect/Transform/LoopExtension/CMakeLists.txt b/mlir/lib/Dialect/Transform/LoopExtension/CMakeLists.txt
index 9e1abdd1ca17b..97b97f8782609 100644
--- a/mlir/lib/Dialect/Transform/LoopExtension/CMakeLists.txt
+++ b/mlir/lib/Dialect/Transform/LoopExtension/CMakeLists.txt
@@ -2,9 +2,6 @@ add_mlir_dialect_library(MLIRTransformLoopExtension
LoopExtension.cpp
LoopExtensionOps.cpp
- DEPENDS
- MLIRTransformDialectLoopExtensionOpsIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRLoopLikeInterface
diff --git a/mlir/lib/Dialect/Transform/PDLExtension/CMakeLists.txt b/mlir/lib/Dialect/Transform/PDLExtension/CMakeLists.txt
index 4a60ed48a1343..cf80556eaf68c 100644
--- a/mlir/lib/Dialect/Transform/PDLExtension/CMakeLists.txt
+++ b/mlir/lib/Dialect/Transform/PDLExtension/CMakeLists.txt
@@ -2,9 +2,6 @@ add_mlir_dialect_library(MLIRTransformPDLExtension
PDLExtension.cpp
PDLExtensionOps.cpp
- DEPENDS
- MLIRTransformDialectPDLExtensionOpsIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRTransformDialect
diff --git a/mlir/lib/Dialect/Transform/SMTExtension/CMakeLists.txt b/mlir/lib/Dialect/Transform/SMTExtension/CMakeLists.txt
index ba1cc464e506d..fb027e9866c90 100644
--- a/mlir/lib/Dialect/Transform/SMTExtension/CMakeLists.txt
+++ b/mlir/lib/Dialect/Transform/SMTExtension/CMakeLists.txt
@@ -2,9 +2,6 @@ add_mlir_dialect_library(MLIRTransformSMTExtension
SMTExtension.cpp
SMTExtensionOps.cpp
- DEPENDS
- MLIRTransformDialectSMTExtensionOpsIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRTransformDialect
diff --git a/mlir/lib/Dialect/Transform/Transforms/CMakeLists.txt b/mlir/lib/Dialect/Transform/Transforms/CMakeLists.txt
index 9fed8c6b5caa9..305e64a4f301a 100644
--- a/mlir/lib/Dialect/Transform/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/Transform/Transforms/CMakeLists.txt
@@ -5,9 +5,6 @@ add_mlir_dialect_library(MLIRTransformDialectTransforms
PreloadLibraryPass.cpp
TransformInterpreterUtils.cpp
- DEPENDS
- MLIRTransformDialectTransformsIncGen
-
LINK_LIBS PUBLIC
MLIRFunctionInterfaces
MLIRTransformDialect
diff --git a/mlir/lib/Dialect/Transform/TuneExtension/CMakeLists.txt b/mlir/lib/Dialect/Transform/TuneExtension/CMakeLists.txt
index 56b90a9a04edf..eab161e025ec9 100644
--- a/mlir/lib/Dialect/Transform/TuneExtension/CMakeLists.txt
+++ b/mlir/lib/Dialect/Transform/TuneExtension/CMakeLists.txt
@@ -2,9 +2,6 @@ add_mlir_dialect_library(MLIRTransformTuneExtension
TuneExtension.cpp
TuneExtensionOps.cpp
- DEPENDS
- MLIRTransformDialectTuneExtensionOpsIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRTransformDialect
diff --git a/mlir/lib/Dialect/UB/IR/CMakeLists.txt b/mlir/lib/Dialect/UB/IR/CMakeLists.txt
index 84125ea0b5718..c5a3f4e97e5b7 100644
--- a/mlir/lib/Dialect/UB/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/UB/IR/CMakeLists.txt
@@ -4,9 +4,9 @@ add_mlir_dialect_library(MLIRUBDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/UB
- DEPENDS
- MLIRUBOpsIncGen
- MLIRUBOpsInterfacesIncGen
+ # UBOps.cpp includes mlir/Transforms/InliningUtils.h.
+ HEADER_LIBS PRIVATE
+ MLIRTransforms
LINK_LIBS PUBLIC
MLIRIR
diff --git a/mlir/lib/Dialect/Utils/CMakeLists.txt b/mlir/lib/Dialect/Utils/CMakeLists.txt
index 7673da5932304..91755a32a944d 100644
--- a/mlir/lib/Dialect/Utils/CMakeLists.txt
+++ b/mlir/lib/Dialect/Utils/CMakeLists.txt
@@ -5,8 +5,8 @@ add_mlir_library(MLIRDialectUtils
StaticValueUtils.cpp
VerificationUtils.cpp
- DEPENDS
- MLIRDialectUtilsIncGen
+ # ReshapeOpsUtils.h includes the generated Arith operation declarations.
+ HEADER_LIBS PUBLIC
MLIRArithDialect
LINK_LIBS PUBLIC
diff --git a/mlir/lib/Dialect/Vector/IR/CMakeLists.txt b/mlir/lib/Dialect/Vector/IR/CMakeLists.txt
index f45618cda8ece..8d6597ce5a692 100644
--- a/mlir/lib/Dialect/Vector/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/Vector/IR/CMakeLists.txt
@@ -6,12 +6,6 @@ add_mlir_dialect_library(MLIRVectorDialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Vector/IR
- DEPENDS
- MLIRMaskableOpInterfaceIncGen
- MLIRMaskingOpInterfaceIncGen
- MLIRVectorOpsIncGen
- MLIRVectorAttributesIncGen
-
LINK_LIBS PUBLIC
MLIRAffineDialect
MLIRArithDialect
diff --git a/mlir/lib/Dialect/Vector/Interfaces/CMakeLists.txt b/mlir/lib/Dialect/Vector/Interfaces/CMakeLists.txt
index b93cefd525fe5..ec7abc0e027b1 100644
--- a/mlir/lib/Dialect/Vector/Interfaces/CMakeLists.txt
+++ b/mlir/lib/Dialect/Vector/Interfaces/CMakeLists.txt
@@ -10,9 +10,6 @@ function(add_mlir_interface_library name)
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Vector/Interfaces
- DEPENDS
- MLIR${name}IncGen
-
LINK_LIBS PUBLIC
MLIRIR
)
diff --git a/mlir/lib/Dialect/Vector/TransformOps/CMakeLists.txt b/mlir/lib/Dialect/Vector/TransformOps/CMakeLists.txt
index ab3205e623fb3..a8fdd04ecff53 100644
--- a/mlir/lib/Dialect/Vector/TransformOps/CMakeLists.txt
+++ b/mlir/lib/Dialect/Vector/TransformOps/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_dialect_library(MLIRVectorTransformOps
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Vector/TransformOps
- DEPENDS
- MLIRVectorTransformOpsIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRLLVMCommonConversion
diff --git a/mlir/lib/Dialect/Vector/Transforms/CMakeLists.txt b/mlir/lib/Dialect/Vector/Transforms/CMakeLists.txt
index dfe873f1a1b8d..a0f4f9ce27b37 100644
--- a/mlir/lib/Dialect/Vector/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/Vector/Transforms/CMakeLists.txt
@@ -32,9 +32,6 @@ add_mlir_dialect_library(MLIRVectorTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Vector/Transforms
- DEPENDS
- MLIRVectorTransformsIncGen
-
LINK_LIBS PUBLIC
MLIRAffineDialect
MLIRAffineAnalysis
diff --git a/mlir/lib/Dialect/WasmSSA/IR/CMakeLists.txt b/mlir/lib/Dialect/WasmSSA/IR/CMakeLists.txt
index 9fc2d7b87abd7..5f6555d98a88e 100644
--- a/mlir/lib/Dialect/WasmSSA/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/WasmSSA/IR/CMakeLists.txt
@@ -7,10 +7,6 @@ add_mlir_dialect_library(MLIRWasmSSADialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/WasmSSA
- DEPENDS
- MLIRWasmSSAOpsIncGen
- MLIRWasmSSAInterfacesIncGen
-
LINK_LIBS PUBLIC
MLIRCastInterfaces
MLIRDataLayoutInterfaces
diff --git a/mlir/lib/Dialect/X86/IR/CMakeLists.txt b/mlir/lib/Dialect/X86/IR/CMakeLists.txt
index 1385e55169f84..e2594fa028b52 100644
--- a/mlir/lib/Dialect/X86/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/X86/IR/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_dialect_library(MLIRX86Dialect
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/X86
- DEPENDS
- MLIRX86IncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRLLVMCommonConversion
diff --git a/mlir/lib/Dialect/X86/TransformOps/CMakeLists.txt b/mlir/lib/Dialect/X86/TransformOps/CMakeLists.txt
index 5fe2fbc233eae..07d2d59d86bed 100644
--- a/mlir/lib/Dialect/X86/TransformOps/CMakeLists.txt
+++ b/mlir/lib/Dialect/X86/TransformOps/CMakeLists.txt
@@ -1,9 +1,6 @@
add_mlir_dialect_library(MLIRX86TransformOps
X86TransformOps.cpp
- DEPENDS
- MLIRX86TransformOpsIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRLLVMCommonConversion
diff --git a/mlir/lib/Dialect/XeGPU/IR/CMakeLists.txt b/mlir/lib/Dialect/XeGPU/IR/CMakeLists.txt
index 4ea73cda6de95..7d92ce43b0499 100644
--- a/mlir/lib/Dialect/XeGPU/IR/CMakeLists.txt
+++ b/mlir/lib/Dialect/XeGPU/IR/CMakeLists.txt
@@ -5,12 +5,6 @@ add_mlir_dialect_library(MLIRXeGPUDialect
ADDITIONAL_HEADER_DIRS
${PROJECT_SOURCE_DIR}/include/mlir/Dialect/XeGPU
- DEPENDS
- MLIRXeGPUIncGen
- MLIRXeGPUAttrInterfaceIncGen
- MLIRXeGPUAttrsIncGen
- MLIRXeGPUEnumsIncGen
-
LINK_LIBS PUBLIC
MLIRArithDialect
MLIRIndexDialect
diff --git a/mlir/lib/Dialect/XeGPU/TransformOps/CMakeLists.txt b/mlir/lib/Dialect/XeGPU/TransformOps/CMakeLists.txt
index 48fe841afaa83..a02b573808432 100644
--- a/mlir/lib/Dialect/XeGPU/TransformOps/CMakeLists.txt
+++ b/mlir/lib/Dialect/XeGPU/TransformOps/CMakeLists.txt
@@ -4,9 +4,6 @@ add_mlir_dialect_library(MLIRXeGPUTransformOps
ADDITIONAL_HEADER_DIRS
${PROJECT_SOURCE_DIR}/mlir/Dialect/XeGPU/TransformOps/
- DEPENDS
- MLIRXeGPUTransformOpsIncGen
-
LINK_LIBS PUBLIC
MLIRXeGPUDialect
MLIRXeGPUTransforms
diff --git a/mlir/lib/Dialect/XeGPU/Transforms/CMakeLists.txt b/mlir/lib/Dialect/XeGPU/Transforms/CMakeLists.txt
index 2ed81ae05ab34..67235427a4a04 100644
--- a/mlir/lib/Dialect/XeGPU/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/XeGPU/Transforms/CMakeLists.txt
@@ -13,9 +13,6 @@ add_mlir_dialect_library(MLIRXeGPUTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/XeGPU
- DEPENDS
- MLIRXeGPUPassIncGen
-
LINK_LIBS PUBLIC
MLIRAffineUtils
MLIRIR
diff --git a/mlir/lib/IR/CMakeLists.txt b/mlir/lib/IR/CMakeLists.txt
index 6cadc3131ccd4..c646df7747c90 100644
--- a/mlir/lib/IR/CMakeLists.txt
+++ b/mlir/lib/IR/CMakeLists.txt
@@ -50,28 +50,6 @@ add_mlir_library(MLIRIR
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/IR
- DEPENDS
- MLIRBuiltinAttributesIncGen
- MLIRBuiltinAttributeInterfacesIncGen
- MLIRBuiltinDialectBytecodeIncGen
- MLIRBuiltinDialectIncGen
- MLIRBuiltinLocationAttributesIncGen
- MLIRBuiltinOpsIncGen
- MLIRBuiltinTypesIncGen
- MLIRBuiltinTypeConstraintsIncGen
- MLIRBuiltinTypeInterfacesIncGen
- MLIRCallInterfacesIncGen
- MLIRCastInterfacesIncGen
- MLIRDataLayoutInterfacesIncGen
- MLIRDialectFoldInterfaceIncGen
- MLIROpAsmInterfaceIncGen
- MLIRQuantStorageTypeInterfaceIncGen
- MLIRRegionKindInterfaceIncGen
- MLIRSideEffectInterfacesIncGen
- MLIRSymbolInterfacesIncGen
- MLIRTensorEncodingIncGen
- MLIROpAsmDialectInterfaceIncGen
-
LINK_LIBS PUBLIC
MLIRSupport
)
diff --git a/mlir/lib/Interfaces/CMakeLists.txt b/mlir/lib/Interfaces/CMakeLists.txt
index d20d290c45c01..ac67b77082bd0 100644
--- a/mlir/lib/Interfaces/CMakeLists.txt
+++ b/mlir/lib/Interfaces/CMakeLists.txt
@@ -34,9 +34,6 @@ function(add_mlir_interface_library name)
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Interfaces
- DEPENDS
- MLIR${name}IncGen
-
LINK_LIBS PUBLIC
MLIRIR
)
@@ -58,9 +55,6 @@ add_mlir_library(MLIRFunctionInterfaces
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Interfaces
- DEPENDS
- MLIRFunctionInterfacesIncGen
-
LINK_LIBS PUBLIC
MLIRCallInterfaces
MLIRIR
@@ -76,9 +70,6 @@ add_mlir_library(MLIRInferStridedMetadataInterface
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Interfaces
- DEPENDS
- MLIRInferStridedMetadataInterfaceIncGen
-
LINK_LIBS PUBLIC
MLIRInferIntRangeInterface
MLIRIR
@@ -92,9 +83,6 @@ add_mlir_library(MLIRLoopLikeInterface
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Interfaces
- DEPENDS
- MLIRLoopLikeInterfaceIncGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRControlFlowInterfaces
@@ -114,11 +102,6 @@ add_mlir_library(MLIRSubsetOpInterface
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Interfaces
- DEPENDS
- MLIRDestinationStyleOpInterface
- MLIRSubsetOpInterfaceIncGen
- MLIRValueBoundsOpInterface
-
LINK_LIBS PUBLIC
MLIRDestinationStyleOpInterface
MLIRIR
@@ -131,8 +114,8 @@ add_mlir_library(MLIRTilingInterface
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Interfaces
- DEPENDS
- MLIRTilingInterfaceIncGen
+ # TilingInterface.h includes Dialect/Utils/StructuredOpsUtils.h.
+ HEADER_LIBS PUBLIC
MLIRDialectUtils
LINK_LIBS PUBLIC
@@ -148,9 +131,8 @@ add_mlir_library(MLIRValueBoundsOpInterface
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Interfaces
- DEPENDS
- MLIRDestinationStyleOpInterface
- MLIRValueBoundsOpInterfaceIncGen
+ # ValueBoundsOpInterface.cpp includes the generated ViewLike interface.
+ HEADER_LIBS PRIVATE
MLIRViewLikeInterface
LINK_LIBS PUBLIC
diff --git a/mlir/lib/Interfaces/Utils/CMakeLists.txt b/mlir/lib/Interfaces/Utils/CMakeLists.txt
index c722fbf4ece09..714e2193831e8 100644
--- a/mlir/lib/Interfaces/Utils/CMakeLists.txt
+++ b/mlir/lib/Interfaces/Utils/CMakeLists.txt
@@ -9,9 +9,6 @@ add_mlir_library(MLIRInferIntRangeCommon
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Interfaces/Utils
- DEPENDS
- MLIRInferIntRangeInterfaceIncGen
-
LINK_LIBS PUBLIC
MLIRShapedOpInterfaces
MLIRInferIntRangeInterface
diff --git a/mlir/lib/Reducer/CMakeLists.txt b/mlir/lib/Reducer/CMakeLists.txt
index 68864e373c993..25efe7e420098 100644
--- a/mlir/lib/Reducer/CMakeLists.txt
+++ b/mlir/lib/Reducer/CMakeLists.txt
@@ -10,9 +10,6 @@ add_mlir_library(MLIRReduce
MLIRRewrite
MLIRTransformUtils
- DEPENDS
- MLIRReducerIncGen
- MLIRDialectReductionPatternInterfaceIncGen
)
mlir_check_all_link_libraries(MLIRReduce)
diff --git a/mlir/lib/Rewrite/CMakeLists.txt b/mlir/lib/Rewrite/CMakeLists.txt
index 15b3739e4c633..53bf0b2d99bde 100644
--- a/mlir/lib/Rewrite/CMakeLists.txt
+++ b/mlir/lib/Rewrite/CMakeLists.txt
@@ -9,7 +9,12 @@ add_mlir_library(MLIRRewrite
DEPENDS
mlir-generic-headers
- MLIRConversionPassIncGen
+
+ # ByteCode.cpp and FrozenRewritePatternSet.cpp include generated PDL and
+ # PDLInterp operation declarations.
+ HEADER_LIBS PRIVATE
+ MLIRPDLDialect
+ MLIRPDLInterpDialect
LINK_LIBS PUBLIC
MLIRIR
@@ -40,4 +45,3 @@ if(MLIR_ENABLE_PDL_IN_PATTERNMATCH)
MLIRPDLToPDLInterp
MLIRRewritePDL)
endif()
-
diff --git a/mlir/lib/Target/LLVMIR/CMakeLists.txt b/mlir/lib/Target/LLVMIR/CMakeLists.txt
index 69fd5583fac2a..87141e9904b45 100644
--- a/mlir/lib/Target/LLVMIR/CMakeLists.txt
+++ b/mlir/lib/Target/LLVMIR/CMakeLists.txt
@@ -75,9 +75,6 @@ add_mlir_translation_library(MLIRTargetLLVMIRImport
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Target/LLVMIR
- DEPENDS
- MLIRLLVMImportDialectInterfaceIncGen
-
LINK_COMPONENTS
Core
IRReader
diff --git a/mlir/lib/Target/LLVMIR/Dialect/ArmNeon/CMakeLists.txt b/mlir/lib/Target/LLVMIR/Dialect/ArmNeon/CMakeLists.txt
index 516fa179aa56e..edfaae4827500 100644
--- a/mlir/lib/Target/LLVMIR/Dialect/ArmNeon/CMakeLists.txt
+++ b/mlir/lib/Target/LLVMIR/Dialect/ArmNeon/CMakeLists.txt
@@ -1,9 +1,6 @@
add_mlir_translation_library(MLIRArmNeonToLLVMIRTranslation
ArmNeonToLLVMIRTranslation.cpp
- DEPENDS
- MLIRArmNeonConversionsIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Target/LLVMIR/Dialect/ArmSME/CMakeLists.txt b/mlir/lib/Target/LLVMIR/Dialect/ArmSME/CMakeLists.txt
index d34cebf487271..88b802266b13e 100644
--- a/mlir/lib/Target/LLVMIR/Dialect/ArmSME/CMakeLists.txt
+++ b/mlir/lib/Target/LLVMIR/Dialect/ArmSME/CMakeLists.txt
@@ -1,9 +1,6 @@
add_mlir_translation_library(MLIRArmSMEToLLVMIRTranslation
ArmSMEToLLVMIRTranslation.cpp
- DEPENDS
- MLIRArmSMEConversionsIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Target/LLVMIR/Dialect/ArmSVE/CMakeLists.txt b/mlir/lib/Target/LLVMIR/Dialect/ArmSVE/CMakeLists.txt
index 66180f9e001d5..f5f6b6905222f 100644
--- a/mlir/lib/Target/LLVMIR/Dialect/ArmSVE/CMakeLists.txt
+++ b/mlir/lib/Target/LLVMIR/Dialect/ArmSVE/CMakeLists.txt
@@ -1,9 +1,6 @@
add_mlir_translation_library(MLIRArmSVEToLLVMIRTranslation
ArmSVEToLLVMIRTranslation.cpp
- DEPENDS
- MLIRArmSVEConversionsIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Target/LLVMIR/Dialect/NVVM/CMakeLists.txt b/mlir/lib/Target/LLVMIR/Dialect/NVVM/CMakeLists.txt
index a90de15798161..7a703e040c65d 100644
--- a/mlir/lib/Target/LLVMIR/Dialect/NVVM/CMakeLists.txt
+++ b/mlir/lib/Target/LLVMIR/Dialect/NVVM/CMakeLists.txt
@@ -19,9 +19,6 @@ add_mlir_translation_library(MLIRLLVMIRToNVVMTranslation
add_mlir_translation_library(MLIRNVVMToLLVMIRTranslation
NVVMToLLVMIRTranslation.cpp
- DEPENDS
- MLIRNVVMConversionsIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Target/LLVMIR/Dialect/ROCDL/CMakeLists.txt b/mlir/lib/Target/LLVMIR/Dialect/ROCDL/CMakeLists.txt
index 9e69bcd4e9465..de78894a07ffe 100644
--- a/mlir/lib/Target/LLVMIR/Dialect/ROCDL/CMakeLists.txt
+++ b/mlir/lib/Target/LLVMIR/Dialect/ROCDL/CMakeLists.txt
@@ -1,9 +1,6 @@
add_mlir_translation_library(MLIRROCDLToLLVMIRTranslation
ROCDLToLLVMIRTranslation.cpp
- DEPENDS
- MLIRROCDLConversionsIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Target/LLVMIR/Dialect/VCIX/CMakeLists.txt b/mlir/lib/Target/LLVMIR/Dialect/VCIX/CMakeLists.txt
index d2622af16d938..8bb678c0f2c2e 100644
--- a/mlir/lib/Target/LLVMIR/Dialect/VCIX/CMakeLists.txt
+++ b/mlir/lib/Target/LLVMIR/Dialect/VCIX/CMakeLists.txt
@@ -1,9 +1,6 @@
add_mlir_translation_library(MLIRVCIXToLLVMIRTranslation
VCIXToLLVMIRTranslation.cpp
- DEPENDS
- MLIRVCIXConversionsIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Target/LLVMIR/Dialect/XeVM/CMakeLists.txt b/mlir/lib/Target/LLVMIR/Dialect/XeVM/CMakeLists.txt
index 6308d7e2e4404..979f3a475af4c 100644
--- a/mlir/lib/Target/LLVMIR/Dialect/XeVM/CMakeLists.txt
+++ b/mlir/lib/Target/LLVMIR/Dialect/XeVM/CMakeLists.txt
@@ -5,9 +5,6 @@ set(LLVM_OPTIONAL_SOURCES
add_mlir_translation_library(MLIRXeVMToLLVMIRTranslation
XeVMToLLVMIRTranslation.cpp
- DEPENDS
- MLIRXeVMConversionsIncGen
-
LINK_COMPONENTS
Core
diff --git a/mlir/lib/Target/LLVMIR/Transforms/CMakeLists.txt b/mlir/lib/Target/LLVMIR/Transforms/CMakeLists.txt
index 044da1c442049..1d4f450d7a3c6 100644
--- a/mlir/lib/Target/LLVMIR/Transforms/CMakeLists.txt
+++ b/mlir/lib/Target/LLVMIR/Transforms/CMakeLists.txt
@@ -3,9 +3,6 @@ add_mlir_dialect_library(MLIRTargetLLVMIRTransforms
TargetToTargetFeatures.cpp
TargetUtils.cpp
- DEPENDS
- MLIRTargetLLVMIRTransformsIncGen
-
LINK_COMPONENTS
MC
Target
diff --git a/mlir/lib/Target/SPIRV/CMakeLists.txt b/mlir/lib/Target/SPIRV/CMakeLists.txt
index 2926320ed286b..1b4abc9c016c6 100644
--- a/mlir/lib/Target/SPIRV/CMakeLists.txt
+++ b/mlir/lib/Target/SPIRV/CMakeLists.txt
@@ -10,6 +10,10 @@ set(LLVM_OPTIONAL_SOURCES
add_mlir_translation_library(MLIRSPIRVBinaryUtils
SPIRVBinaryUtils.cpp
+ # SPIRVBinaryUtils.h includes the generated SPIRVEnums.h.
+ HEADER_LIBS PUBLIC
+ MLIRSPIRVDialect
+
LINK_LIBS PUBLIC
MLIRIR
MLIRSupport
@@ -28,6 +32,10 @@ add_mlir_translation_library(MLIRSPIRVTranslateRegistration
add_mlir_dialect_library(MLIRSPIRVTarget
Target.cpp
+ # Target.cpp includes llvm/IR/Attributes.h.
+ DEPENDS
+ intrinsics_gen
+
LINK_LIBS PUBLIC
MLIRIR
MLIRGPUDialect
diff --git a/mlir/lib/Target/SPIRV/Deserialization/CMakeLists.txt b/mlir/lib/Target/SPIRV/Deserialization/CMakeLists.txt
index 6b35a126af169..913eb55464435 100644
--- a/mlir/lib/Target/SPIRV/Deserialization/CMakeLists.txt
+++ b/mlir/lib/Target/SPIRV/Deserialization/CMakeLists.txt
@@ -3,9 +3,6 @@ add_mlir_translation_library(MLIRSPIRVDeserialization
Deserializer.cpp
Deserialization.cpp
- DEPENDS
- MLIRSPIRVSerializationGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRSPIRVDialect
diff --git a/mlir/lib/Target/SPIRV/Serialization/CMakeLists.txt b/mlir/lib/Target/SPIRV/Serialization/CMakeLists.txt
index e912efee08763..a8def57b85622 100644
--- a/mlir/lib/Target/SPIRV/Serialization/CMakeLists.txt
+++ b/mlir/lib/Target/SPIRV/Serialization/CMakeLists.txt
@@ -3,9 +3,6 @@ add_mlir_translation_library(MLIRSPIRVSerialization
Serializer.cpp
SerializeOps.cpp
- DEPENDS
- MLIRSPIRVSerializationGen
-
LINK_LIBS PUBLIC
MLIRIR
MLIRSPIRVDialect
diff --git a/mlir/lib/Transforms/CMakeLists.txt b/mlir/lib/Transforms/CMakeLists.txt
index 66b39f53c91df..397b2c10b09a8 100644
--- a/mlir/lib/Transforms/CMakeLists.txt
+++ b/mlir/lib/Transforms/CMakeLists.txt
@@ -26,10 +26,6 @@ add_mlir_library(MLIRTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Transforms
- DEPENDS
- MLIRTransformsPassIncGen
- MLIRTransformsDialectInterfaceIncGen
-
LINK_LIBS PUBLIC
MLIRAnalysis
MLIRFunctionInterfaces
diff --git a/mlir/test/CMake/header-dependencies.test b/mlir/test/CMake/header-dependencies.test
new file mode 100644
index 0000000000000..8eef682ae4450
--- /dev/null
+++ b/mlir/test/CMake/header-dependencies.test
@@ -0,0 +1,274 @@
+# RUN: rm -rf %t
+# RUN: split-file %s %t
+# RUN: "%cmake_exe" -S %t/valid -B %t/valid-build \
+# RUN: -G "%cmake_generator" -DMLIR_DIR=%mlir_cmake_dir 2>&1 \
+# RUN: | FileCheck %s --check-prefix=VALID
+# RUN: not "%cmake_exe" -S %t/owner-typo -B %t/owner-typo-build \
+# RUN: -G "%cmake_generator" -DMLIR_DIR=%mlir_cmake_dir 2>&1 \
+# RUN: | FileCheck %s --check-prefix=OWNER-TYPO
+# RUN: not "%cmake_exe" -S %t/ambiguous -B %t/ambiguous-build \
+# RUN: -G "%cmake_generator" -DMLIR_DIR=%mlir_cmake_dir 2>&1 \
+# RUN: | FileCheck %s --check-prefix=AMBIGUOUS
+# RUN: not "%cmake_exe" -S %t/header-genex -B %t/header-genex-build \
+# RUN: -G "%cmake_generator" -DMLIR_DIR=%mlir_cmake_dir 2>&1 \
+# RUN: | FileCheck %s --check-prefix=HEADER-GENEX
+# RUN: not "%cmake_exe" -S %t/target-header-genex \
+# RUN: -B %t/target-header-genex-build -G "%cmake_generator" \
+# RUN: -DMLIR_DIR=%mlir_cmake_dir 2>&1 \
+# RUN: | FileCheck %s --check-prefix=TARGET-HEADER-GENEX
+
+# VALID: -- MLIR generated-header dependency model checks passed
+# OWNER-TYPO: MissingOwnerGen names generated-header owner 'MissingOwner'
+# AMBIGUOUS: AmbiguousGen is in a directory shared by MLIR libraries
+# AMBIGUOUS-NEXT: 'AmbiguousA;AmbiguousB'
+# HEADER-GENEX: BadConsumer uses a generator expression in HEADER_LIBS
+# TARGET-HEADER-GENEX: BadTarget uses a generator expression in
+# TARGET-HEADER-GENEX-SAME: mlir_target_link_header_libraries
+
+#--- common.cmake
+cmake_minimum_required(VERSION 3.20)
+
+find_package(MLIR REQUIRED CONFIG)
+list(APPEND CMAKE_MODULE_PATH "${MLIR_CMAKE_DIR}" "${LLVM_CMAKE_DIR}")
+include(AddLLVM)
+include(AddMLIR)
+
+# Installed projects do not define the in-tree source roots used as optional
+# directory-inference hints. The fixtures only need one stable directory.
+set(MLIR_MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
+set(MLIR_MAIN_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
+if(NOT TARGET mlir-headers)
+ add_custom_target(mlir-headers)
+endif()
+
+function(add_fake_tablegen target)
+ add_custom_target(${target})
+ string(SHA1 directory_id "${CMAKE_CURRENT_SOURCE_DIR}")
+ set_property(TARGET ${target} PROPERTY MLIR_TABLEGEN_OUTPUTS
+ "${CMAKE_CURRENT_BINARY_DIR}/${target}.inc")
+ set_property(TARGET ${target} PROPERTY MLIR_TABLEGEN_DIRECTORY_ID
+ ${directory_id})
+ set_property(GLOBAL APPEND PROPERTY MLIR_TABLEGEN_TARGETS ${target})
+endfunction()
+
+function(add_fake_library target)
+ add_library(${target} STATIC empty.cpp)
+ _mlir_configure_library_header_dependencies(${target}
+ COMPILE_TARGET ${target} ${ARGN})
+endfunction()
+
+#--- valid/CMakeLists.txt
+cmake_minimum_required(VERSION 3.20)
+project(MLIRHeaderDependencies LANGUAGES CXX)
+include(../common.cmake)
+
+# Schedule final resolution before declaring the owner. The deferred pass must
+# still find the later library.
+add_fake_tablegen(LateOwnerGen)
+_mlir_register_tablegen_owner(LateOwner LateOwnerGen)
+_mlir_schedule_header_library_validation()
+add_fake_library(LateOwner)
+
+# An explicit OWNER must replace a viable conventional candidate.
+add_fake_tablegen(ExplicitOwnerGen)
+_mlir_register_tablegen_owner(InferredOwner ExplicitOwnerGen)
+_mlir_register_explicit_tablegen_owner(ExplicitOwner ExplicitOwnerGen)
+add_fake_library(InferredOwner)
+add_fake_library(ExplicitOwner)
+
+# Extra generators declared beside a single dialect inherit that dialect's
+# logical owner without repeating OWNER.
+_mlir_register_tablegen_directory_owners(DefaultDialect)
+add_fake_tablegen(DefaultDialectExtraGen)
+add_fake_library(DefaultDialect)
+
+# Two libraries in one directory must publish disjoint explicitly owned
+# generators instead of inheriting every generator from the directory.
+add_fake_tablegen(MixedAGen)
+add_fake_tablegen(MixedBGen)
+_mlir_register_explicit_tablegen_owner(MixedA MixedAGen)
+_mlir_register_explicit_tablegen_owner(MixedB MixedBGen)
+add_fake_library(MixedA)
+add_fake_library(MixedB)
+
+# Per-target MLIR wrappers must not inherit the preceding target's outputs or
+# cumulative LLVM_COMMON_DEPENDS ordering.
+set(first_output "${CMAKE_CURRENT_BINARY_DIR}/FirstOutput.inc")
+set_property(DIRECTORY PROPERTY MLIR_UNCLAIMED_TABLEGEN_OUTPUTS
+ ${first_output})
+set(TABLEGEN_OUTPUT ${first_output})
+_mlir_add_public_tablegen_target(FirstOutputGen)
+_mlir_register_tablegen_target(FirstOutputGen)
+_mlir_register_explicit_tablegen_owner(FirstOutputOwner FirstOutputGen)
+add_fake_library(FirstOutputOwner)
+
+set(second_output "${CMAKE_CURRENT_BINARY_DIR}/SecondOutput.inc")
+set_property(DIRECTORY PROPERTY MLIR_UNCLAIMED_TABLEGEN_OUTPUTS
+ ${second_output})
+set(TABLEGEN_OUTPUT ${first_output} ${second_output})
+_mlir_add_public_tablegen_target(SecondOutputGen)
+_mlir_register_tablegen_target(SecondOutputGen)
+_mlir_register_explicit_tablegen_owner(SecondOutputOwner SecondOutputGen)
+add_fake_library(SecondOutputOwner)
+
+# add_sharded_ops combines public .inc files from mlir_tablegen() with source
+# outputs from the raw source sharder. They must remain one exact target batch.
+add_sharded_ops(ShardedOps 1)
+add_fake_library(MLIRSharded)
+
+# Reciprocal PUBLIC links are legal for static libraries. Their carriers must
+# flatten to generator leaves rather than form an artificial carrier cycle.
+add_fake_tablegen(CycleAGen)
+add_fake_tablegen(CycleBGen)
+_mlir_register_explicit_tablegen_owner(CycleA CycleAGen)
+_mlir_register_explicit_tablegen_owner(CycleB CycleBGen)
+add_fake_library(CycleA PUBLIC_LIBRARIES CycleB)
+add_fake_library(CycleB PUBLIC_LIBRARIES CycleA)
+
+# INTERFACE dependencies propagate to consumers without becoming compile
+# dependencies of the library that declares them.
+add_fake_tablegen(InterfaceProviderGen)
+_mlir_register_explicit_tablegen_owner(InterfaceProvider
+ InterfaceProviderGen)
+add_fake_library(InterfaceProvider)
+add_fake_tablegen(InterfaceConsumerGen)
+_mlir_register_explicit_tablegen_owner(InterfaceConsumer
+ InterfaceConsumerGen)
+add_fake_library(InterfaceConsumer
+ INTERFACE_LIBRARIES InterfaceProvider)
+
+# Alias and conditional LINK_LIBS candidates must reach the real provider;
+# imported HEADER_LIBS providers are already generated and therefore a no-op.
+add_fake_tablegen(AliasProviderGen)
+_mlir_register_explicit_tablegen_owner(AliasProvider AliasProviderGen)
+add_fake_library(AliasProvider)
+add_library(AliasProviderName ALIAS AliasProvider)
+add_library(InstalledProvider STATIC IMPORTED)
+add_fake_library(AliasConsumer PUBLIC_LIBRARIES AliasProviderName)
+add_fake_library(ConditionalConsumer
+ EXPLICIT_LIBRARIES InstalledProvider
+ PRIVATE_LIBRARIES "$<$<BOOL:1>:AliasProviderName>" InstalledProvider)
+
+function(expect_owner tablegen_target expected)
+ get_target_property(actual ${tablegen_target} MLIR_TABLEGEN_RESOLVED_OWNER)
+ if(NOT "${actual}" STREQUAL "${expected}")
+ message(FATAL_ERROR
+ "${tablegen_target}: expected owner ${expected}, got ${actual}")
+ endif()
+endfunction()
+
+function(expect_manual_dependencies target expected)
+ get_target_property(actual ${target} MANUALLY_ADDED_DEPENDENCIES)
+ if(NOT actual)
+ set(actual)
+ endif()
+ list(SORT actual)
+ set(sorted_expected ${expected})
+ list(SORT sorted_expected)
+ if(NOT "${actual}" STREQUAL "${sorted_expected}")
+ message(FATAL_ERROR
+ "${target}: expected dependencies '${sorted_expected}', got '${actual}'")
+ endif()
+ foreach(dependency ${actual})
+ if(dependency MATCHES "^headers\\.")
+ message(FATAL_ERROR
+ "${target}: carrier dependency ${dependency} can create cycles")
+ endif()
+ endforeach()
+endfunction()
+
+function(expect_property target property expected)
+ get_target_property(actual ${target} ${property})
+ if(NOT "${actual}" STREQUAL "${expected}")
+ message(FATAL_ERROR
+ "${target}.${property}: expected '${expected}', got '${actual}'")
+ endif()
+endfunction()
+
+function(check_header_model)
+ expect_owner(LateOwnerGen LateOwner)
+ expect_owner(ExplicitOwnerGen ExplicitOwner)
+ expect_owner(DefaultDialectExtraGen DefaultDialect)
+ expect_owner(MixedAGen MixedA)
+ expect_owner(MixedBGen MixedB)
+ expect_property(FirstOutputGen MLIR_TABLEGEN_OUTPUTS "${first_output}")
+ expect_property(SecondOutputGen MLIR_TABLEGEN_OUTPUTS "${second_output}")
+ set(sharded_outputs
+ "${CMAKE_CURRENT_BINARY_DIR}/ShardedOps.h.inc"
+ "${CMAKE_CURRENT_BINARY_DIR}/ShardedOps.cpp.inc"
+ "${CMAKE_CURRENT_BINARY_DIR}/ShardedOps.0.cpp"
+ "${CMAKE_CURRENT_BINARY_DIR}/ShardedOps.1.cpp")
+ expect_property(MLIRShardedOpsShardGen MLIR_TABLEGEN_OUTPUTS
+ "${sharded_outputs}")
+ get_target_property(second_ordering SecondOutputGen
+ MANUALLY_ADDED_DEPENDENCIES)
+ if(second_ordering)
+ message(FATAL_ERROR
+ "SecondOutputGen inherited ordering '${second_ordering}'")
+ endif()
+ expect_manual_dependencies(headers.MixedA "MixedAGen")
+ expect_manual_dependencies(headers.MixedB "MixedBGen")
+ expect_manual_dependencies(headers.CycleA "CycleAGen;CycleBGen")
+ expect_manual_dependencies(headers.CycleB "CycleAGen;CycleBGen")
+ expect_manual_dependencies(headers.InterfaceConsumer
+ "InterfaceConsumerGen;InterfaceProviderGen")
+ expect_manual_dependencies(InterfaceConsumer "InterfaceConsumerGen")
+ expect_manual_dependencies(headers.AliasConsumer "AliasProviderGen")
+ expect_manual_dependencies(headers.ConditionalConsumer "")
+ expect_manual_dependencies(ConditionalConsumer "AliasProviderGen")
+ message(STATUS "MLIR generated-header dependency model checks passed")
+endfunction()
+
+cmake_language(DEFER CALL check_header_model)
+
+#--- valid/empty.cpp
+void empty() {}
+
+#--- valid/ShardedOps.td
+// Only configuration-time output ownership is under test.
+
+#--- valid/ShardedOps.cpp
+// Only configuration-time output ownership is under test.
+
+#--- owner-typo/CMakeLists.txt
+cmake_minimum_required(VERSION 3.20)
+project(MLIRHeaderOwnerTypo LANGUAGES CXX)
+include(../common.cmake)
+add_fake_tablegen(MissingOwnerGen)
+_mlir_register_explicit_tablegen_owner(MissingOwner MissingOwnerGen)
+_mlir_schedule_header_library_validation()
+
+#--- owner-typo/empty.cpp
+void empty() {}
+
+#--- ambiguous/CMakeLists.txt
+cmake_minimum_required(VERSION 3.20)
+project(MLIRHeaderAmbiguousOwner LANGUAGES CXX)
+include(../common.cmake)
+add_fake_tablegen(AmbiguousGen)
+add_fake_library(AmbiguousA)
+add_fake_library(AmbiguousB)
+
+#--- ambiguous/empty.cpp
+void empty() {}
+
+#--- header-genex/CMakeLists.txt
+cmake_minimum_required(VERSION 3.20)
+project(MLIRHeaderGeneratorExpression LANGUAGES CXX)
+include(../common.cmake)
+_mlir_collect_library_header_dependencies(BadConsumer
+ HEADER_LIBS PRIVATE "$<$<BOOL:1>:MisspelledProvider>")
+
+#--- header-genex/empty.cpp
+void empty() {}
+
+#--- target-header-genex/CMakeLists.txt
+cmake_minimum_required(VERSION 3.20)
+project(MLIRTargetHeaderGeneratorExpression LANGUAGES CXX)
+include(../common.cmake)
+add_executable(BadTarget empty.cpp)
+mlir_target_link_header_libraries(BadTarget
+ "$<$<BOOL:1>:MisspelledProvider>")
+
+#--- target-header-genex/empty.cpp
+int main() { return 0; }
diff --git a/mlir/test/CMake/lit.local.cfg b/mlir/test/CMake/lit.local.cfg
new file mode 100644
index 0000000000000..a16efaf9cc65c
--- /dev/null
+++ b/mlir/test/CMake/lit.local.cfg
@@ -0,0 +1,3 @@
+config.substitutions.append(("%cmake_exe", config.host_cmake))
+config.substitutions.append(("%cmake_generator", config.host_cmake_generator))
+config.substitutions.append(("%mlir_cmake_dir", config.mlir_cmake_dir))
diff --git a/mlir/test/lib/Dialect/NVGPU/CMakeLists.txt b/mlir/test/lib/Dialect/NVGPU/CMakeLists.txt
index 025f1a0dbc488..61abe68d00b93 100644
--- a/mlir/test/lib/Dialect/NVGPU/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/NVGPU/CMakeLists.txt
@@ -3,6 +3,12 @@ add_mlir_library(MLIRNVGPUTestPasses
TestNVGPUTransforms.cpp
EXCLUDE_FROM_LIBMLIR
+
+ # TestNVGPUTransforms.cpp includes Linalg and Vector transform headers.
+ HEADER_LIBS PRIVATE
+ MLIRLinalgDialect
+ MLIRLinalgTransforms
+ MLIRVectorTransforms
)
mlir_target_link_libraries(MLIRNVGPUTestPasses PUBLIC
MLIRIR
diff --git a/mlir/test/lib/Dialect/Shard/CMakeLists.txt b/mlir/test/lib/Dialect/Shard/CMakeLists.txt
index a97839b6b1ffd..87b30072fb867 100644
--- a/mlir/test/lib/Dialect/Shard/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/Shard/CMakeLists.txt
@@ -4,6 +4,10 @@ add_mlir_library(MLIRShardTest
TestReshardingPartition.cpp
EXCLUDE_FROM_LIBMLIR
+
+ # TestReshardingPartition.cpp includes SPIRVOps.h.
+ HEADER_LIBS PRIVATE
+ MLIRSPIRVDialect
)
mlir_target_link_libraries(MLIRShardTest PUBLIC
MLIRShardDialect
diff --git a/mlir/test/lib/Dialect/Test/CMakeLists.txt b/mlir/test/lib/Dialect/Test/CMakeLists.txt
index 4c4721193322b..91c0a125906fe 100644
--- a/mlir/test/lib/Dialect/Test/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/Test/CMakeLists.txt
@@ -13,33 +13,33 @@ mlir_tablegen(TestTypeInterfaces.h.inc -gen-type-interface-decls)
mlir_tablegen(TestTypeInterfaces.cpp.inc -gen-type-interface-defs)
mlir_tablegen(TestOpInterfaces.h.inc -gen-op-interface-decls)
mlir_tablegen(TestOpInterfaces.cpp.inc -gen-op-interface-defs)
-add_public_tablegen_target(MLIRTestInterfaceIncGen)
+add_mlir_library_tablegen_target(MLIRTestInterfaceIncGen MLIRTestDialect)
set(LLVM_TARGET_DEFINITIONS TestOps.td)
mlir_tablegen(TestAttrDefs.h.inc -gen-attrdef-decls -attrdefs-dialect=test)
mlir_tablegen(TestAttrDefs.cpp.inc -gen-attrdef-defs -attrdefs-dialect=test)
-add_public_tablegen_target(MLIRTestAttrDefIncGen)
+add_mlir_library_tablegen_target(MLIRTestAttrDefIncGen MLIRTestDialect)
set(LLVM_TARGET_DEFINITIONS TestTypeDefs.td)
mlir_tablegen(TestTypeDefs.h.inc -gen-typedef-decls -typedefs-dialect=test)
mlir_tablegen(TestTypeDefs.cpp.inc -gen-typedef-defs -typedefs-dialect=test)
-add_public_tablegen_target(MLIRTestTypeDefIncGen)
+add_mlir_library_tablegen_target(MLIRTestTypeDefIncGen MLIRTestDialect)
set(LLVM_TARGET_DEFINITIONS TestEnumDefs.td)
mlir_tablegen(TestOpEnums.h.inc -gen-enum-decls)
mlir_tablegen(TestOpEnums.cpp.inc -gen-enum-defs)
-add_public_tablegen_target(MLIRTestEnumDefIncGen)
+add_mlir_library_tablegen_target(MLIRTestEnumDefIncGen MLIRTestDialect)
set(LLVM_TARGET_DEFINITIONS TestOps.td)
mlir_tablegen(TestOpsDialect.h.inc -gen-dialect-decls -dialect=test)
mlir_tablegen(TestOpsDialect.cpp.inc -gen-dialect-defs -dialect=test)
mlir_tablegen(TestPatterns.inc -gen-rewriters)
-add_public_tablegen_target(MLIRTestOpsIncGen)
+add_mlir_library_tablegen_target(MLIRTestOpsIncGen MLIRTestDialect)
set(LLVM_TARGET_DEFINITIONS TestOpsSyntax.td)
mlir_tablegen(TestOpsSyntax.h.inc -gen-op-decls)
mlir_tablegen(TestOpsSyntax.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRTestOpsSyntaxIncGen)
+add_mlir_library_tablegen_target(MLIRTestOpsSyntaxIncGen MLIRTestDialect)
add_sharded_ops(TestOps 20)
@@ -60,15 +60,9 @@ add_mlir_library(MLIRTestDialect
EXCLUDE_FROM_LIBMLIR
- DEPENDS
- MLIRTestAttrDefIncGen
- MLIRTestEnumDefIncGen
- MLIRTestInterfaceIncGen
- MLIRTestTypeDefIncGen
- MLIRTestOpsIncGen
- MLIRTestOpsSyntaxIncGen
- MLIRTestOpsShardGen
- MLIRConvertToEmitCPatternInterfaceIncGen
+ # TestDialectInterfaces.cpp includes the generated ToEmitCInterface.
+ HEADER_LIBS PRIVATE
+ MLIRConvertToEmitC
)
mlir_target_link_libraries(MLIRTestDialect PUBLIC
MLIRControlFlowInterfaces
diff --git a/mlir/test/lib/Dialect/Tosa/CMakeLists.txt b/mlir/test/lib/Dialect/Tosa/CMakeLists.txt
index 7d40881ee6ee4..fc90132ce1e75 100644
--- a/mlir/test/lib/Dialect/Tosa/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/Tosa/CMakeLists.txt
@@ -6,8 +6,9 @@ add_mlir_dialect_library(MLIRTosaTestPasses
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Tosa/Transforms
- DEPENDS
- MLIRTosaPassIncGen
+ # TosaTestPasses.cpp includes the generated Tosa transform pass header.
+ HEADER_LIBS PRIVATE
+ MLIRTosaTransforms
)
mlir_target_link_libraries(MLIRTosaTestPasses PUBLIC
MLIRFuncDialect
diff --git a/mlir/test/lib/Dialect/Transform/CMakeLists.txt b/mlir/test/lib/Dialect/Transform/CMakeLists.txt
index 4d626461d63bf..5bdbe02a85f2c 100644
--- a/mlir/test/lib/Dialect/Transform/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/Transform/CMakeLists.txt
@@ -5,7 +5,8 @@ mlir_tablegen(TestTransformDialectExtensionAttrs.h.inc -gen-attrdef-decls -attrd
mlir_tablegen(TestTransformDialectExtensionAttrs.cpp.inc -gen-attrdef-defs -attrdefs-dialect=transform)
mlir_tablegen(TestTransformDialectExtensionTypes.h.inc -gen-typedef-decls -typedefs-dialect=transform)
mlir_tablegen(TestTransformDialectExtensionTypes.cpp.inc -gen-typedef-defs -typedefs-dialect=transform)
-add_public_tablegen_target(MLIRTestTransformDialectExtensionIncGen)
+add_mlir_library_tablegen_target(MLIRTestTransformDialectExtensionIncGen
+ MLIRTestTransformDialect)
add_mlir_library(MLIRTestTransformDialect
TestPassStateExtensionCommunication.cpp
@@ -15,8 +16,6 @@ add_mlir_library(MLIRTestTransformDialect
EXCLUDE_FROM_LIBMLIR
- DEPENDS
- MLIRTestTransformDialectExtensionIncGen
)
mlir_target_link_libraries(MLIRTestTransformDialect PUBLIC
MLIRIR
diff --git a/mlir/test/lib/Interfaces/TilingInterface/CMakeLists.txt b/mlir/test/lib/Interfaces/TilingInterface/CMakeLists.txt
index 657fcb76815bc..c45ea2f4a2d2f 100644
--- a/mlir/test/lib/Interfaces/TilingInterface/CMakeLists.txt
+++ b/mlir/test/lib/Interfaces/TilingInterface/CMakeLists.txt
@@ -1,14 +1,12 @@
set(LLVM_TARGET_DEFINITIONS TestTilingInterfaceTransformOps.td)
mlir_tablegen(TestTilingInterfaceTransformOps.h.inc -gen-op-decls)
mlir_tablegen(TestTilingInterfaceTransformOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRTestTilingInterfaceTransformOpsIncGen)
+add_mlir_library_tablegen_target(MLIRTestTilingInterfaceTransformOpsIncGen
+ MLIRTilingInterfaceTestPasses)
add_mlir_library(MLIRTilingInterfaceTestPasses
TestTilingInterfaceTransformOps.cpp
- DEPENDS
- MLIRTestTilingInterfaceTransformOpsIncGen
-
EXCLUDE_FROM_LIBMLIR
)
mlir_target_link_libraries(MLIRTilingInterfaceTestPasses PUBLIC
diff --git a/mlir/test/lib/Tools/PDLL/CMakeLists.txt b/mlir/test/lib/Tools/PDLL/CMakeLists.txt
index 60cf30b33e559..fb1c0609b0c08 100644
--- a/mlir/test/lib/Tools/PDLL/CMakeLists.txt
+++ b/mlir/test/lib/Tools/PDLL/CMakeLists.txt
@@ -16,9 +16,6 @@ add_mlir_library(MLIRTestPDLL
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Tools/PDLL
- DEPENDS
- MLIRTestPDLLPatternsIncGen
-
LINK_LIBS PUBLIC
MLIRTestDialect
)
diff --git a/mlir/test/lib/Transforms/CMakeLists.txt b/mlir/test/lib/Transforms/CMakeLists.txt
index ddc0a779e8f69..99ce55f65a444 100644
--- a/mlir/test/lib/Transforms/CMakeLists.txt
+++ b/mlir/test/lib/Transforms/CMakeLists.txt
@@ -1,11 +1,11 @@
set(LLVM_TARGET_DEFINITIONS TestTransformsOps.td)
mlir_tablegen(TestTransformsOps.h.inc -gen-op-decls)
mlir_tablegen(TestTransformsOps.cpp.inc -gen-op-defs)
-add_public_tablegen_target(MLIRTestTransformsOpsIncGen)
+add_mlir_library_tablegen_target(MLIRTestTransformsOpsIncGen
+ MLIRTestTransforms)
set(LLVM_OPTIONAL_SOURCES
TestDialectConversion.cpp)
-set(MLIRTestTransformsPDLDep)
set(MLIRTestTransformsPDLSrc)
if(MLIR_ENABLE_PDL_IN_PATTERNMATCH)
add_mlir_pdll_library(MLIRTestDialectConversionPDLLPatternsIncGen
@@ -18,8 +18,6 @@ add_mlir_pdll_library(MLIRTestDialectConversionPDLLPatternsIncGen
)
set(MLIRTestTransformsPDLSrc
TestDialectConversion.cpp)
- set(MLIRTestTransformsPDLDep
- MLIRTestDialectConversionPDLLPatternsIncGen)
endif()
# Exclude tests from libMLIR.so
@@ -39,10 +37,6 @@ add_mlir_library(MLIRTestTransforms
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Transforms
- DEPENDS
- ${MLIRTestTransformsPDLDep}
- MLIRTestTransformsOpsIncGen
-
LINK_LIBS PUBLIC
MLIRTestDialect
)
diff --git a/mlir/test/python/CMakeLists.txt b/mlir/test/python/CMakeLists.txt
index c81f75fc6a1af..1f52c37cb6e99 100644
--- a/mlir/test/python/CMakeLists.txt
+++ b/mlir/test/python/CMakeLists.txt
@@ -7,7 +7,7 @@ mlir_tablegen(lib/PythonTestAttributes.h.inc -gen-attrdef-decls)
mlir_tablegen(lib/PythonTestAttributes.cpp.inc -gen-attrdef-defs)
mlir_tablegen(lib/PythonTestTypes.h.inc -gen-typedef-decls)
mlir_tablegen(lib/PythonTestTypes.cpp.inc -gen-typedef-defs)
-add_public_tablegen_target(MLIRPythonTestIncGen)
+add_mlir_library_tablegen_target(MLIRPythonTestIncGen MLIRPythonTestDialect)
add_subdirectory(lib)
diff --git a/mlir/test/python/lib/CMakeLists.txt b/mlir/test/python/lib/CMakeLists.txt
index f51a7b44e64dd..b78bbd6a51c3c 100644
--- a/mlir/test/python/lib/CMakeLists.txt
+++ b/mlir/test/python/lib/CMakeLists.txt
@@ -9,8 +9,6 @@ add_mlir_library(MLIRPythonTestDialect
EXCLUDE_FROM_LIBMLIR
- DEPENDS
- MLIRPythonTestIncGen
)
mlir_target_link_libraries(MLIRPythonTestDialect PUBLIC
MLIRInferTypeOpInterface
@@ -21,12 +19,8 @@ mlir_target_link_libraries(MLIRPythonTestDialect PUBLIC
add_mlir_public_c_api_library(MLIRCAPIPythonTestDialect
PythonTestCAPI.cpp
- DEPENDS
- MLIRPythonTestIncGen
-
LINK_LIBS PUBLIC
MLIRCAPIInterfaces
MLIRCAPIIR
MLIRPythonTestDialect
)
-
diff --git a/mlir/unittests/CMakeLists.txt b/mlir/unittests/CMakeLists.txt
index 654ec44d90b04..cdeb89f8eddd2 100644
--- a/mlir/unittests/CMakeLists.txt
+++ b/mlir/unittests/CMakeLists.txt
@@ -2,7 +2,11 @@
add_definitions(-DGTEST_NO_LLVM_SUPPORT=0)
function(add_mlir_unittest test_dirname)
- add_unittest(MLIRUnitTests ${test_dirname} ${ARGN})
+ cmake_parse_arguments(ARG "" "" "HEADER_LIBS" ${ARGN})
+ add_unittest(MLIRUnitTests ${test_dirname} ${ARG_UNPARSED_ARGUMENTS})
+ if(ARG_HEADER_LIBS)
+ mlir_target_link_header_libraries(${test_dirname} ${ARG_HEADER_LIBS})
+ endif()
endfunction()
add_subdirectory(ABI)
diff --git a/mlir/unittests/IR/CMakeLists.txt b/mlir/unittests/IR/CMakeLists.txt
index ce9b230222f62..bab87d7e21596 100644
--- a/mlir/unittests/IR/CMakeLists.txt
+++ b/mlir/unittests/IR/CMakeLists.txt
@@ -27,8 +27,9 @@ add_mlir_unittest(MLIRIRTests
VerifierTest.cpp
BlobManagerTest.cpp
- DEPENDS
- MLIRTestInterfaceIncGen
+ # The IR unit tests include generated Test dialect headers directly.
+ HEADER_LIBS
+ MLIRTestDialect
)
target_include_directories(MLIRIRTests PRIVATE "${MLIR_BINARY_DIR}/test/lib/Dialect/Test")
mlir_target_link_libraries(MLIRIRTests PRIVATE MLIRIR)
diff --git a/mlir/unittests/Interfaces/CMakeLists.txt b/mlir/unittests/Interfaces/CMakeLists.txt
index 193edda6bf8d8..7259cde1619c2 100644
--- a/mlir/unittests/Interfaces/CMakeLists.txt
+++ b/mlir/unittests/Interfaces/CMakeLists.txt
@@ -6,8 +6,9 @@ add_mlir_unittest(MLIRInterfacesTests
SideEffectInterfacesTest.cpp
InferTypeOpInterfaceTest.cpp
- DEPENDS
- MLIRTestInterfaceIncGen
+ # The interface unit tests include generated Test dialect headers directly.
+ HEADER_LIBS
+ MLIRTestDialect
)
target_include_directories(MLIRInterfacesTests PRIVATE "${MLIR_BINARY_DIR}/test/lib/Dialect/Test")
diff --git a/mlir/unittests/Parser/CMakeLists.txt b/mlir/unittests/Parser/CMakeLists.txt
index 4b3fedbb638c0..d49c34d7d1e50 100644
--- a/mlir/unittests/Parser/CMakeLists.txt
+++ b/mlir/unittests/Parser/CMakeLists.txt
@@ -2,8 +2,9 @@ add_mlir_unittest(MLIRParserTests
ParserTest.cpp
ResourceTest.cpp
- DEPENDS
- MLIRTestInterfaceIncGen
+ # ResourceTest.cpp includes generated Test dialect headers directly.
+ HEADER_LIBS
+ MLIRTestDialect
)
target_include_directories(MLIRParserTests PRIVATE "${MLIR_BINARY_DIR}/test/lib/Dialect/Test")
More information about the cfe-commits
mailing list