[Mlir-commits] [mlir] Reapply "[mlir] Link libraries that aren't included in libMLIR to libMLIR" (PR #123910)
Michał Górny
llvmlistbot at llvm.org
Wed Jan 22 01:01:34 PST 2025
https://github.com/mgorny created https://github.com/llvm/llvm-project/pull/123910
Use `mlir_target_link_libraries()` to link dependencies of libraries that are not included in libMLIR, to ensure that they link to the dylib when they are used in Flang. Otherwise, they implicitly pull in all their static dependencies, effectively causing Flang binaries to simultaneously link to the dylib and to static libraries, which is never a good idea.
I have only covered the libraries that are used by Flang. If you wish, I can extend this approach to all non-libMLIR libraries in MLIR, making MLIR itself also link to the dylib consistently.
[v3 with more `-DBUILD_SHARED_LIBS=ON` fixes]
>From d3f3e0b2640e9c45b68856dbf1fd12d13d89dea5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny at gentoo.org>
Date: Sat, 18 Jan 2025 21:16:54 +0100
Subject: [PATCH 1/6] [mlir] Link libraries that aren't included in libMLIR to
libMLIR
Use `mlir_target_link_libraries()` to link dependencies of libraries
that are not included in libMLIR, to ensure that they link to the dylib
when they are used in Flang. Otherwise, they implicitly pull in all
their static dependencies, effectively causing Flang binaries to
simultaneously link to the dylib and to static libraries, which is never
a good idea.
I have only covered the libraries that are used by Flang. If you wish,
I can extend this approach to all non-libMLIR libraries in MLIR, making
MLIR itself also link to the dylib consistently.
---
mlir/test/lib/Analysis/CMakeLists.txt | 8 +++++++-
mlir/test/lib/Dialect/Test/CMakeLists.txt | 6 +++++-
mlir/test/lib/IR/CMakeLists.txt | 6 +++++-
3 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/mlir/test/lib/Analysis/CMakeLists.txt b/mlir/test/lib/Analysis/CMakeLists.txt
index 7c6b31ae8b73e5..8135d22d1f7baa 100644
--- a/mlir/test/lib/Analysis/CMakeLists.txt
+++ b/mlir/test/lib/Analysis/CMakeLists.txt
@@ -21,12 +21,18 @@ add_mlir_library(MLIRTestAnalysis
EXCLUDE_FROM_LIBMLIR
LINK_LIBS PUBLIC
+ MLIRTestDialect
+ )
+
+# Since this library is excluded from libMLIR, link it to the dylib
+# to ensure that it can be used in flang without implicitly pulling in
+# static libraries.
+mlir_target_link_libraries(MLIRTestAnalysis PUBLIC
MLIRAffineDialect
MLIRAnalysis
MLIRFunctionInterfaces
MLIRMemRefDialect
MLIRPass
- MLIRTestDialect
)
target_include_directories(MLIRTestAnalysis
diff --git a/mlir/test/lib/Dialect/Test/CMakeLists.txt b/mlir/test/lib/Dialect/Test/CMakeLists.txt
index 967101242e26b5..aebf4724be34e9 100644
--- a/mlir/test/lib/Dialect/Test/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/Test/CMakeLists.txt
@@ -68,8 +68,12 @@ add_mlir_library(MLIRTestDialect
MLIRTestOpsIncGen
MLIRTestOpsSyntaxIncGen
MLIRTestOpsShardGen
+ )
- LINK_LIBS PUBLIC
+# Since this library is excluded from libMLIR, link it to the dylib
+# to ensure that it can be used in flang without implicitly pulling in
+# static libraries.
+mlir_target_link_libraries(MLIRTestDialect PUBLIC
MLIRControlFlowInterfaces
MLIRDataLayoutInterfaces
MLIRDerivedAttributeOpInterface
diff --git a/mlir/test/lib/IR/CMakeLists.txt b/mlir/test/lib/IR/CMakeLists.txt
index 01297ad0a11482..09e370007a424e 100644
--- a/mlir/test/lib/IR/CMakeLists.txt
+++ b/mlir/test/lib/IR/CMakeLists.txt
@@ -27,8 +27,12 @@ add_mlir_library(MLIRTestIR
TestVisitorsGeneric.cpp
EXCLUDE_FROM_LIBMLIR
+ )
- LINK_LIBS PUBLIC
+# Since this library is excluded from libMLIR, link it to the dylib
+# to ensure that it can be used in flang without implicitly pulling in
+# static libraries.
+mlir_target_link_libraries(MLIRTestIR PUBLIC
MLIRPass
MLIRBytecodeReader
MLIRBytecodeWriter
>From bd6a4619e1b55961467831c3a11fdca4e9511318 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny at gentoo.org>
Date: Sun, 19 Jan 2025 20:34:47 +0100
Subject: [PATCH 2/6] Cover the remaining libraries
Hopefully I didn't mess anything up. The tests build and pass for me
(except for these that failed already) both with MLIR_LINK_MLIR_DYLIB
and without.
---
mlir/lib/ExecutionEngine/CMakeLists.txt | 7 +++++--
mlir/lib/ExecutionEngine/SparseTensor/CMakeLists.txt | 4 ++--
mlir/test/lib/Conversion/ConvertToSPIRV/CMakeLists.txt | 4 ++--
mlir/test/lib/Conversion/FuncToLLVM/CMakeLists.txt | 4 +++-
mlir/test/lib/Conversion/MathToVCIX/CMakeLists.txt | 4 ++--
.../lib/Conversion/OneToNTypeConversion/CMakeLists.txt | 4 +++-
mlir/test/lib/Conversion/VectorToSPIRV/CMakeLists.txt | 4 ++--
mlir/test/lib/Dialect/Affine/CMakeLists.txt | 4 +++-
mlir/test/lib/Dialect/Arith/CMakeLists.txt | 4 ++--
mlir/test/lib/Dialect/ArmNeon/CMakeLists.txt | 4 ++--
mlir/test/lib/Dialect/ArmSME/CMakeLists.txt | 4 ++--
mlir/test/lib/Dialect/Bufferization/CMakeLists.txt | 4 ++--
mlir/test/lib/Dialect/ControlFlow/CMakeLists.txt | 4 ++--
mlir/test/lib/Dialect/DLTI/CMakeLists.txt | 4 +++-
mlir/test/lib/Dialect/Func/CMakeLists.txt | 4 +++-
mlir/test/lib/Dialect/GPU/CMakeLists.txt | 4 ++--
mlir/test/lib/Dialect/LLVM/CMakeLists.txt | 4 ++--
mlir/test/lib/Dialect/Linalg/CMakeLists.txt | 4 ++--
mlir/test/lib/Dialect/Math/CMakeLists.txt | 4 ++--
mlir/test/lib/Dialect/MemRef/CMakeLists.txt | 4 +++-
mlir/test/lib/Dialect/Mesh/CMakeLists.txt | 4 ++--
mlir/test/lib/Dialect/NVGPU/CMakeLists.txt | 4 ++--
mlir/test/lib/Dialect/SCF/CMakeLists.txt | 4 ++--
mlir/test/lib/Dialect/SPIRV/CMakeLists.txt | 4 ++--
mlir/test/lib/Dialect/Shape/CMakeLists.txt | 4 ++--
mlir/test/lib/Dialect/Tensor/CMakeLists.txt | 4 ++--
mlir/test/lib/Dialect/TestDyn/CMakeLists.txt | 4 ++--
mlir/test/lib/Dialect/Tosa/CMakeLists.txt | 4 ++--
mlir/test/lib/Dialect/Transform/CMakeLists.txt | 4 ++--
mlir/test/lib/Dialect/Vector/CMakeLists.txt | 4 ++--
mlir/test/lib/Interfaces/LoopLikeInterface/CMakeLists.txt | 4 ++--
mlir/test/lib/Interfaces/TilingInterface/CMakeLists.txt | 4 ++--
mlir/test/lib/Pass/CMakeLists.txt | 4 ++--
mlir/test/lib/Reducer/CMakeLists.txt | 4 ++--
mlir/test/lib/Rewrite/CMakeLists.txt | 4 ++--
mlir/test/lib/Tools/PDLL/CMakeLists.txt | 4 +++-
mlir/test/lib/Transforms/CMakeLists.txt | 4 ++--
mlir/test/python/lib/CMakeLists.txt | 4 ++--
mlir/tools/mlir-opt/CMakeLists.txt | 4 ++--
39 files changed, 88 insertions(+), 71 deletions(-)
diff --git a/mlir/lib/ExecutionEngine/CMakeLists.txt b/mlir/lib/ExecutionEngine/CMakeLists.txt
index 1579cc36b5d065..dd2ac75b88798a 100644
--- a/mlir/lib/ExecutionEngine/CMakeLists.txt
+++ b/mlir/lib/ExecutionEngine/CMakeLists.txt
@@ -91,8 +91,9 @@ add_mlir_library(MLIRExecutionEngine
IPO
Passes
${LLVM_JIT_LISTENER_LIB}
+ )
- LINK_LIBS PUBLIC
+mlir_target_link_libraries(MLIRExecutionEngine PUBLIC
MLIRBuiltinToLLVMIRTranslation
MLIRExecutionEngineUtils
MLIRLLVMDialect
@@ -139,8 +140,10 @@ add_mlir_library(MLIRJitRunner
JITLink
LINK_LIBS PUBLIC
- ${dialect_libs}
MLIRExecutionEngine
+)
+mlir_target_link_libraries(MLIRJitRunner PUBLIC
+ ${dialect_libs}
MLIRFuncDialect
MLIRFuncToLLVM
MLIRIR
diff --git a/mlir/lib/ExecutionEngine/SparseTensor/CMakeLists.txt b/mlir/lib/ExecutionEngine/SparseTensor/CMakeLists.txt
index 15024b2475b91f..6ef15293434534 100644
--- a/mlir/lib/ExecutionEngine/SparseTensor/CMakeLists.txt
+++ b/mlir/lib/ExecutionEngine/SparseTensor/CMakeLists.txt
@@ -11,8 +11,8 @@ add_mlir_library(MLIRSparseTensorRuntime
Storage.cpp
EXCLUDE_FROM_LIBMLIR
-
- LINK_LIBS PUBLIC
+ )
+mlir_target_link_libraries(MLIRSparseTensorRuntime PUBLIC
MLIRSparseTensorEnums
mlir_float16_utils
)
diff --git a/mlir/test/lib/Conversion/ConvertToSPIRV/CMakeLists.txt b/mlir/test/lib/Conversion/ConvertToSPIRV/CMakeLists.txt
index aeade52c7ade5d..fd557e0c989f52 100644
--- a/mlir/test/lib/Conversion/ConvertToSPIRV/CMakeLists.txt
+++ b/mlir/test/lib/Conversion/ConvertToSPIRV/CMakeLists.txt
@@ -4,8 +4,8 @@ add_mlir_library(MLIRTestConvertToSPIRV
TestSPIRVVectorUnrolling.cpp
EXCLUDE_FROM_LIBMLIR
-
- LINK_LIBS PUBLIC
+ )
+mlir_target_link_libraries(MLIRTestConvertToSPIRV PUBLIC
MLIRArithDialect
MLIRFuncDialect
MLIRPass
diff --git a/mlir/test/lib/Conversion/FuncToLLVM/CMakeLists.txt b/mlir/test/lib/Conversion/FuncToLLVM/CMakeLists.txt
index d3dbc94a99bc7e..f190b2da5a190c 100644
--- a/mlir/test/lib/Conversion/FuncToLLVM/CMakeLists.txt
+++ b/mlir/test/lib/Conversion/FuncToLLVM/CMakeLists.txt
@@ -6,12 +6,14 @@ add_mlir_library(MLIRTestFuncToLLVM
EXCLUDE_FROM_LIBMLIR
LINK_LIBS PUBLIC
+ MLIRTestDialect
+ )
+mlir_target_link_libraries(MLIRTestFuncToLLVM PUBLIC
MLIRFuncToLLVM
MLIRLLVMCommonConversion
MLIRLLVMDialect
MLIRLLVMIRTransforms
MLIRPass
- MLIRTestDialect
)
target_include_directories(MLIRTestFuncToLLVM
diff --git a/mlir/test/lib/Conversion/MathToVCIX/CMakeLists.txt b/mlir/test/lib/Conversion/MathToVCIX/CMakeLists.txt
index 933e84722fbba8..3726993b59692f 100644
--- a/mlir/test/lib/Conversion/MathToVCIX/CMakeLists.txt
+++ b/mlir/test/lib/Conversion/MathToVCIX/CMakeLists.txt
@@ -3,8 +3,8 @@ add_mlir_library(MLIRTestMathToVCIX
TestMathToVCIXConversion.cpp
EXCLUDE_FROM_LIBMLIR
-
- LINK_LIBS PUBLIC
+)
+mlir_target_link_libraries(MLIRTestMathToVCIX PUBLIC
MLIRArithDialect
MLIRFuncDialect
MLIRMathDialect
diff --git a/mlir/test/lib/Conversion/OneToNTypeConversion/CMakeLists.txt b/mlir/test/lib/Conversion/OneToNTypeConversion/CMakeLists.txt
index b72302202f72b0..f0ea87946a9831 100644
--- a/mlir/test/lib/Conversion/OneToNTypeConversion/CMakeLists.txt
+++ b/mlir/test/lib/Conversion/OneToNTypeConversion/CMakeLists.txt
@@ -4,13 +4,15 @@ add_mlir_library(MLIRTestOneToNTypeConversionPass
EXCLUDE_FROM_LIBMLIR
LINK_LIBS PUBLIC
+ MLIRTestDialect
+ )
+mlir_target_link_libraries(MLIRTestOneToNTypeConversionPass PUBLIC
MLIRFuncDialect
MLIRFuncTransforms
MLIRIR
MLIRPass
MLIRSCFDialect
MLIRSCFTransforms
- MLIRTestDialect
MLIRTransformUtils
)
diff --git a/mlir/test/lib/Conversion/VectorToSPIRV/CMakeLists.txt b/mlir/test/lib/Conversion/VectorToSPIRV/CMakeLists.txt
index 09ed283ac97bc4..cb5ecc933ad82e 100644
--- a/mlir/test/lib/Conversion/VectorToSPIRV/CMakeLists.txt
+++ b/mlir/test/lib/Conversion/VectorToSPIRV/CMakeLists.txt
@@ -3,8 +3,8 @@ add_mlir_library(MLIRTestVectorToSPIRV
TestVectorReductionToSPIRVDotProd.cpp
EXCLUDE_FROM_LIBMLIR
-
- LINK_LIBS PUBLIC
+ )
+mlir_target_link_libraries(MLIRTestVectorToSPIRV PUBLIC
MLIRVectorToSPIRV
MLIRArithDialect
MLIRFuncDialect
diff --git a/mlir/test/lib/Dialect/Affine/CMakeLists.txt b/mlir/test/lib/Dialect/Affine/CMakeLists.txt
index 33cefab9fa2edf..885bc9b4c3afc9 100644
--- a/mlir/test/lib/Dialect/Affine/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/Affine/CMakeLists.txt
@@ -21,6 +21,9 @@ add_mlir_library(MLIRAffineTransformsTestPasses
Core
LINK_LIBS PUBLIC
+ MLIRTestDialect
+ )
+mlir_target_link_libraries(MLIRAffineTransformsTestPasses PUBLIC
MLIRArithTransforms
MLIRAffineAnalysis
MLIRAffineTransforms
@@ -30,7 +33,6 @@ add_mlir_library(MLIRAffineTransformsTestPasses
MLIRSupport
MLIRMemRefDialect
MLIRTensorDialect
- MLIRTestDialect
MLIRVectorUtils
)
diff --git a/mlir/test/lib/Dialect/Arith/CMakeLists.txt b/mlir/test/lib/Dialect/Arith/CMakeLists.txt
index 33615ab21a177a..0c05ed5ce62107 100644
--- a/mlir/test/lib/Dialect/Arith/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/Arith/CMakeLists.txt
@@ -3,8 +3,8 @@ add_mlir_library(MLIRArithTestPasses
TestEmulateWideInt.cpp
EXCLUDE_FROM_LIBMLIR
-
- LINK_LIBS PUBLIC
+)
+mlir_target_link_libraries(MLIRArithTestPasses PUBLIC
MLIRArithDialect
MLIRArithTransforms
MLIRFuncDialect
diff --git a/mlir/test/lib/Dialect/ArmNeon/CMakeLists.txt b/mlir/test/lib/Dialect/ArmNeon/CMakeLists.txt
index 21548ca57701f9..460842d2385338 100644
--- a/mlir/test/lib/Dialect/ArmNeon/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/ArmNeon/CMakeLists.txt
@@ -3,8 +3,8 @@ add_mlir_library(MLIRArmNeonTestPasses
TestLowerToArmNeon.cpp
EXCLUDE_FROM_LIBMLIR
-
- LINK_LIBS PUBLIC
+ )
+mlir_target_link_libraries(MLIRArmNeonTestPasses PUBLIC
MLIRArmNeonDialect
MLIRArmNeonTransforms
MLIRIR
diff --git a/mlir/test/lib/Dialect/ArmSME/CMakeLists.txt b/mlir/test/lib/Dialect/ArmSME/CMakeLists.txt
index cdd8afe1414219..9ee93dec65943c 100644
--- a/mlir/test/lib/Dialect/ArmSME/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/ArmSME/CMakeLists.txt
@@ -3,8 +3,8 @@ add_mlir_library(MLIRArmSMETestPasses
TestLowerToArmSME.cpp
EXCLUDE_FROM_LIBMLIR
-
- LINK_LIBS PUBLIC
+ )
+mlir_target_link_libraries(MLIRArmSMETestPasses PUBLIC
MLIRArithToArmSME
MLIRArmSMEToLLVM
MLIRArmSMEToSCF
diff --git a/mlir/test/lib/Dialect/Bufferization/CMakeLists.txt b/mlir/test/lib/Dialect/Bufferization/CMakeLists.txt
index a183d02cefed7b..c14a9f2cc9bb08 100644
--- a/mlir/test/lib/Dialect/Bufferization/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/Bufferization/CMakeLists.txt
@@ -3,8 +3,8 @@ add_mlir_library(MLIRBufferizationTestPasses
TestTensorCopyInsertion.cpp
EXCLUDE_FROM_LIBMLIR
-
- LINK_LIBS PUBLIC
+)
+mlir_target_link_libraries(MLIRBufferizationTestPasses PUBLIC
MLIRBufferizationDialect
MLIRBufferizationTransforms
MLIRIR
diff --git a/mlir/test/lib/Dialect/ControlFlow/CMakeLists.txt b/mlir/test/lib/Dialect/ControlFlow/CMakeLists.txt
index 39d9555c7405e3..03ae3c749f9917 100644
--- a/mlir/test/lib/Dialect/ControlFlow/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/ControlFlow/CMakeLists.txt
@@ -3,8 +3,8 @@ add_mlir_library(MLIRControlFlowTestPasses
TestAssert.cpp
EXCLUDE_FROM_LIBMLIR
-
- LINK_LIBS PUBLIC
+)
+mlir_target_link_libraries(MLIRControlFlowTestPasses PUBLIC
MLIRControlFlowToLLVM
MLIRFuncDialect
MLIRLLVMCommonConversion
diff --git a/mlir/test/lib/Dialect/DLTI/CMakeLists.txt b/mlir/test/lib/Dialect/DLTI/CMakeLists.txt
index fddc3e342e0ac9..98cf47c78866fc 100644
--- a/mlir/test/lib/Dialect/DLTI/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/DLTI/CMakeLists.txt
@@ -5,9 +5,11 @@ add_mlir_library(MLIRDLTITestPasses
EXCLUDE_FROM_LIBMLIR
LINK_LIBS PUBLIC
+ MLIRTestDialect
+ )
+mlir_target_link_libraries(MLIRDLTITestPasses PUBLIC
MLIRDLTIDialect
MLIRPass
- MLIRTestDialect
)
target_include_directories(MLIRDLTITestPasses
diff --git a/mlir/test/lib/Dialect/Func/CMakeLists.txt b/mlir/test/lib/Dialect/Func/CMakeLists.txt
index 6adf893e44f05b..1fbe1f59e2fe5d 100644
--- a/mlir/test/lib/Dialect/Func/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/Func/CMakeLists.txt
@@ -5,10 +5,12 @@ add_mlir_library(MLIRFuncTestPasses
EXCLUDE_FROM_LIBMLIR
LINK_LIBS PUBLIC
+ MLIRTestDialect
+ )
+mlir_target_link_libraries(MLIRFuncTestPasses PUBLIC
MLIRAffineDialect
MLIRPass
MLIRFuncTransforms
- MLIRTestDialect
MLIRTransformUtils
)
diff --git a/mlir/test/lib/Dialect/GPU/CMakeLists.txt b/mlir/test/lib/Dialect/GPU/CMakeLists.txt
index 48cbc4ad5505b0..4ca5974ed5a493 100644
--- a/mlir/test/lib/Dialect/GPU/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/GPU/CMakeLists.txt
@@ -36,8 +36,8 @@ add_mlir_library(MLIRGPUTestPasses
TestGpuRewrite.cpp
EXCLUDE_FROM_LIBMLIR
-
- LINK_LIBS PUBLIC
+ )
+mlir_target_link_libraries(MLIRGPUTestPasses PUBLIC
${LIBS}
)
diff --git a/mlir/test/lib/Dialect/LLVM/CMakeLists.txt b/mlir/test/lib/Dialect/LLVM/CMakeLists.txt
index 6a2f0ba2756d43..616f00a94a56e5 100644
--- a/mlir/test/lib/Dialect/LLVM/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/LLVM/CMakeLists.txt
@@ -4,8 +4,8 @@ add_mlir_library(MLIRLLVMTestPasses
TestPatterns.cpp
EXCLUDE_FROM_LIBMLIR
-
- LINK_LIBS PUBLIC
+ )
+mlir_target_link_libraries(MLIRLLVMTestPasses PUBLIC
MLIRAffineToStandard
MLIRFuncDialect
MLIRFuncToLLVM
diff --git a/mlir/test/lib/Dialect/Linalg/CMakeLists.txt b/mlir/test/lib/Dialect/Linalg/CMakeLists.txt
index 283e426b4e5947..eb6f581252181a 100644
--- a/mlir/test/lib/Dialect/Linalg/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/Linalg/CMakeLists.txt
@@ -10,8 +10,8 @@ add_mlir_library(MLIRLinalgTestPasses
TestPadFusion.cpp
EXCLUDE_FROM_LIBMLIR
-
- LINK_LIBS PUBLIC
+ )
+mlir_target_link_libraries(MLIRLinalgTestPasses PUBLIC
MLIRAffineDialect
MLIRArithDialect
MLIRArithTransforms
diff --git a/mlir/test/lib/Dialect/Math/CMakeLists.txt b/mlir/test/lib/Dialect/Math/CMakeLists.txt
index 195d392d6ad346..91e70d17853697 100644
--- a/mlir/test/lib/Dialect/Math/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/Math/CMakeLists.txt
@@ -5,8 +5,8 @@ add_mlir_library(MLIRMathTestPasses
TestPolynomialApproximation.cpp
EXCLUDE_FROM_LIBMLIR
-
- LINK_LIBS PUBLIC
+ )
+mlir_target_link_libraries(MLIRMathTestPasses PUBLIC
MLIRMathTransforms
MLIRPass
MLIRTransformUtils
diff --git a/mlir/test/lib/Dialect/MemRef/CMakeLists.txt b/mlir/test/lib/Dialect/MemRef/CMakeLists.txt
index 0498de3eb93178..39457ab2d0bf7c 100644
--- a/mlir/test/lib/Dialect/MemRef/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/MemRef/CMakeLists.txt
@@ -7,10 +7,12 @@ add_mlir_library(MLIRMemRefTestPasses
EXCLUDE_FROM_LIBMLIR
LINK_LIBS PUBLIC
+ MLIRTestDialect
+ )
+mlir_target_link_libraries(MLIRMemRefTestPasses PUBLIC
MLIRPass
MLIRMemRefDialect
MLIRMemRefTransforms
- MLIRTestDialect
)
target_include_directories(MLIRMemRefTestPasses
diff --git a/mlir/test/lib/Dialect/Mesh/CMakeLists.txt b/mlir/test/lib/Dialect/Mesh/CMakeLists.txt
index 07e9bb6f9f238a..7bd0493d11a7ee 100644
--- a/mlir/test/lib/Dialect/Mesh/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/Mesh/CMakeLists.txt
@@ -5,8 +5,8 @@ add_mlir_library(MLIRMeshTest
TestSimplifications.cpp
EXCLUDE_FROM_LIBMLIR
-
- LINK_LIBS PUBLIC
+ )
+mlir_target_link_libraries(MLIRMeshTest PUBLIC
MLIRMeshDialect
MLIRMeshTransforms
MLIRPass
diff --git a/mlir/test/lib/Dialect/NVGPU/CMakeLists.txt b/mlir/test/lib/Dialect/NVGPU/CMakeLists.txt
index 6b333bdb3c08cd..025f1a0dbc488a 100644
--- a/mlir/test/lib/Dialect/NVGPU/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/NVGPU/CMakeLists.txt
@@ -3,8 +3,8 @@ add_mlir_library(MLIRNVGPUTestPasses
TestNVGPUTransforms.cpp
EXCLUDE_FROM_LIBMLIR
-
- LINK_LIBS PUBLIC
+ )
+mlir_target_link_libraries(MLIRNVGPUTestPasses PUBLIC
MLIRIR
MLIRAffineDialect
MLIRAnalysis
diff --git a/mlir/test/lib/Dialect/SCF/CMakeLists.txt b/mlir/test/lib/Dialect/SCF/CMakeLists.txt
index 792430cc84b650..791c2e681415a0 100644
--- a/mlir/test/lib/Dialect/SCF/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/SCF/CMakeLists.txt
@@ -8,8 +8,8 @@ add_mlir_library(MLIRSCFTestPasses
TestWhileOpBuilder.cpp
EXCLUDE_FROM_LIBMLIR
-
- LINK_LIBS PUBLIC
+ )
+mlir_target_link_libraries(MLIRSCFTestPasses PUBLIC
MLIRMemRefDialect
MLIRPass
MLIRSCFDialect
diff --git a/mlir/test/lib/Dialect/SPIRV/CMakeLists.txt b/mlir/test/lib/Dialect/SPIRV/CMakeLists.txt
index 11760da0005cc8..0e2c1344782d96 100644
--- a/mlir/test/lib/Dialect/SPIRV/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/SPIRV/CMakeLists.txt
@@ -9,8 +9,8 @@ add_mlir_library(MLIRSPIRVTestPasses
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SPIRV
${MLIR_MAIN_INCLUDE_DIR}/mlir/IR
-
- LINK_LIBS PUBLIC
+ )
+mlir_target_link_libraries(MLIRSPIRVTestPasses PUBLIC
MLIRGPUDialect
MLIRIR
MLIRPass
diff --git a/mlir/test/lib/Dialect/Shape/CMakeLists.txt b/mlir/test/lib/Dialect/Shape/CMakeLists.txt
index 545f13db25a841..90c8c6cb223b81 100644
--- a/mlir/test/lib/Dialect/Shape/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/Shape/CMakeLists.txt
@@ -8,8 +8,8 @@ add_mlir_library(MLIRShapeTestPasses
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Shape
${MLIR_MAIN_INCLUDE_DIR}/mlir/IR
-
- LINK_LIBS PUBLIC
+ )
+mlir_target_link_libraries(MLIRShapeTestPasses PUBLIC
MLIRIR
MLIRPass
MLIRShapeOpsTransforms
diff --git a/mlir/test/lib/Dialect/Tensor/CMakeLists.txt b/mlir/test/lib/Dialect/Tensor/CMakeLists.txt
index f22b21d173296a..28eae8ffb670f2 100644
--- a/mlir/test/lib/Dialect/Tensor/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/Tensor/CMakeLists.txt
@@ -3,8 +3,8 @@ add_mlir_library(MLIRTensorTestPasses
TestTensorTransforms.cpp
EXCLUDE_FROM_LIBMLIR
-
- LINK_LIBS PUBLIC
+ )
+mlir_target_link_libraries(MLIRTensorTestPasses PUBLIC
MLIRArithDialect
MLIRLinalgDialect
MLIRPass
diff --git a/mlir/test/lib/Dialect/TestDyn/CMakeLists.txt b/mlir/test/lib/Dialect/TestDyn/CMakeLists.txt
index 13eb9040b07448..2c6854efee530f 100644
--- a/mlir/test/lib/Dialect/TestDyn/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/TestDyn/CMakeLists.txt
@@ -2,7 +2,7 @@ add_mlir_dialect_library(MLIRTestDynDialect
TestDynDialect.cpp
EXCLUDE_FROM_LIBMLIR
-
- LINK_LIBS PUBLIC
+)
+mlir_target_link_libraries(MLIRTestDynDialect PUBLIC
MLIRIR
)
diff --git a/mlir/test/lib/Dialect/Tosa/CMakeLists.txt b/mlir/test/lib/Dialect/Tosa/CMakeLists.txt
index e5dd35d6dbcb75..7d40881ee6ee40 100644
--- a/mlir/test/lib/Dialect/Tosa/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/Tosa/CMakeLists.txt
@@ -8,8 +8,8 @@ add_mlir_dialect_library(MLIRTosaTestPasses
DEPENDS
MLIRTosaPassIncGen
-
- LINK_LIBS PUBLIC
+ )
+mlir_target_link_libraries(MLIRTosaTestPasses PUBLIC
MLIRFuncDialect
MLIRPass
MLIRTosaDialect
diff --git a/mlir/test/lib/Dialect/Transform/CMakeLists.txt b/mlir/test/lib/Dialect/Transform/CMakeLists.txt
index ca141d2778ee2d..512a0a89bfea91 100644
--- a/mlir/test/lib/Dialect/Transform/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/Transform/CMakeLists.txt
@@ -15,8 +15,8 @@ add_mlir_library(MLIRTestTransformDialect
DEPENDS
MLIRTestTransformDialectExtensionIncGen
-
- LINK_LIBS PUBLIC
+)
+mlir_target_link_libraries(MLIRTestTransformDialect PUBLIC
MLIRIR
MLIRPass
MLIRPDLDialect
diff --git a/mlir/test/lib/Dialect/Vector/CMakeLists.txt b/mlir/test/lib/Dialect/Vector/CMakeLists.txt
index d8e6b24b0c26fa..e16937029ac0ee 100644
--- a/mlir/test/lib/Dialect/Vector/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/Vector/CMakeLists.txt
@@ -3,8 +3,8 @@ add_mlir_library(MLIRVectorTestPasses
TestVectorTransforms.cpp
EXCLUDE_FROM_LIBMLIR
-
- LINK_LIBS PUBLIC
+ )
+mlir_target_link_libraries(MLIRVectorTestPasses PUBLIC
MLIRAffineDialect
MLIRAnalysis
MLIRArithDialect
diff --git a/mlir/test/lib/Interfaces/LoopLikeInterface/CMakeLists.txt b/mlir/test/lib/Interfaces/LoopLikeInterface/CMakeLists.txt
index f20219e00cb865..cb1e7adb412c5e 100644
--- a/mlir/test/lib/Interfaces/LoopLikeInterface/CMakeLists.txt
+++ b/mlir/test/lib/Interfaces/LoopLikeInterface/CMakeLists.txt
@@ -2,8 +2,8 @@ add_mlir_library(MLIRLoopLikeInterfaceTestPasses
TestBlockInLoop.cpp
EXCLUDE_FROM_LIBMLIR
-
- LINK_LIBS PUBLIC
+ )
+mlir_target_link_libraries(MLIRLoopLikeInterfaceTestPasses PUBLIC
MLIRPass
MLIRLoopLikeInterface
MLIRFuncDialect
diff --git a/mlir/test/lib/Interfaces/TilingInterface/CMakeLists.txt b/mlir/test/lib/Interfaces/TilingInterface/CMakeLists.txt
index c2431dd15f1d51..657fcb76815bc6 100644
--- a/mlir/test/lib/Interfaces/TilingInterface/CMakeLists.txt
+++ b/mlir/test/lib/Interfaces/TilingInterface/CMakeLists.txt
@@ -10,8 +10,8 @@ add_mlir_library(MLIRTilingInterfaceTestPasses
MLIRTestTilingInterfaceTransformOpsIncGen
EXCLUDE_FROM_LIBMLIR
-
- LINK_LIBS PUBLIC
+ )
+mlir_target_link_libraries(MLIRTilingInterfaceTestPasses PUBLIC
MLIRAffineDialect
MLIRArithDialect
MLIRIndexDialect
diff --git a/mlir/test/lib/Pass/CMakeLists.txt b/mlir/test/lib/Pass/CMakeLists.txt
index b474c1863f335b..6698af86b8ae66 100644
--- a/mlir/test/lib/Pass/CMakeLists.txt
+++ b/mlir/test/lib/Pass/CMakeLists.txt
@@ -10,8 +10,8 @@ add_mlir_library(MLIRTestPass
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Pass
-
- LINK_LIBS PUBLIC
+ )
+mlir_target_link_libraries(MLIRTestPass PUBLIC
${conversion_libs}
MLIRIR
MLIRPass
diff --git a/mlir/test/lib/Reducer/CMakeLists.txt b/mlir/test/lib/Reducer/CMakeLists.txt
index 61743b6097d612..1ea33bdd0a5b99 100644
--- a/mlir/test/lib/Reducer/CMakeLists.txt
+++ b/mlir/test/lib/Reducer/CMakeLists.txt
@@ -9,8 +9,8 @@ add_mlir_library(MLIRTestReducer
LINK_COMPONENTS
Core
-
- LINK_LIBS PUBLIC
+ )
+mlir_target_link_libraries(MLIRTestReducer PUBLIC
MLIRIR
MLIRPass
MLIRSupport
diff --git a/mlir/test/lib/Rewrite/CMakeLists.txt b/mlir/test/lib/Rewrite/CMakeLists.txt
index f8926aa8e4870d..75702ca89333a5 100644
--- a/mlir/test/lib/Rewrite/CMakeLists.txt
+++ b/mlir/test/lib/Rewrite/CMakeLists.txt
@@ -7,8 +7,8 @@ if (MLIR_ENABLE_PDL_IN_PATTERNMATCH)
ADDITIONAL_HEADER_DIRS
${MLIR_MAIN_INCLUDE_DIR}/mlir/Rewrite
-
- LINK_LIBS PUBLIC
+ )
+ mlir_target_link_libraries(MLIRTestRewrite PUBLIC
MLIRIR
MLIRPass
MLIRSupport
diff --git a/mlir/test/lib/Tools/PDLL/CMakeLists.txt b/mlir/test/lib/Tools/PDLL/CMakeLists.txt
index 408c29ea35ec35..60cf30b33e5599 100644
--- a/mlir/test/lib/Tools/PDLL/CMakeLists.txt
+++ b/mlir/test/lib/Tools/PDLL/CMakeLists.txt
@@ -20,13 +20,15 @@ add_mlir_library(MLIRTestPDLL
MLIRTestPDLLPatternsIncGen
LINK_LIBS PUBLIC
+ MLIRTestDialect
+ )
+mlir_target_link_libraries(MLIRTestPDLL PUBLIC
MLIRCastInterfaces
MLIRIR
MLIRPass
MLIRPDLInterpDialect
MLIRPDLDialect
MLIRSupport
- MLIRTestDialect
MLIRTransformUtils
)
diff --git a/mlir/test/lib/Transforms/CMakeLists.txt b/mlir/test/lib/Transforms/CMakeLists.txt
index 66b1faf78e2d8b..b91265d20fb481 100644
--- a/mlir/test/lib/Transforms/CMakeLists.txt
+++ b/mlir/test/lib/Transforms/CMakeLists.txt
@@ -34,8 +34,8 @@ add_mlir_library(MLIRTestTransforms
DEPENDS
${MLIRTestTransformsPDLDep}
-
- LINK_LIBS PUBLIC
+ )
+mlir_target_link_libraries(MLIRTestTransforms PUBLIC
MLIRAnalysis
MLIRFuncDialect
MLIRInferIntRangeInterface
diff --git a/mlir/test/python/lib/CMakeLists.txt b/mlir/test/python/lib/CMakeLists.txt
index 198ed8211e773f..9a813dace2f541 100644
--- a/mlir/test/python/lib/CMakeLists.txt
+++ b/mlir/test/python/lib/CMakeLists.txt
@@ -12,8 +12,8 @@ add_mlir_library(MLIRPythonTestDialect
DEPENDS
MLIRPythonTestIncGen
-
- LINK_LIBS PUBLIC
+)
+mlir_target_link_libraries(MLIRPythonTestDialect PUBLIC
MLIRInferTypeOpInterface
MLIRIR
MLIRSupport
diff --git a/mlir/tools/mlir-opt/CMakeLists.txt b/mlir/tools/mlir-opt/CMakeLists.txt
index 3563d66fa9e798..68b31e563ba351 100644
--- a/mlir/tools/mlir-opt/CMakeLists.txt
+++ b/mlir/tools/mlir-opt/CMakeLists.txt
@@ -91,8 +91,8 @@ add_mlir_library(MLIRMlirOptMain
mlir-opt.cpp
EXCLUDE_FROM_LIBMLIR
-
- LINK_LIBS PUBLIC
+ )
+mlir_target_link_libraries(MLIRMlirOptMain PUBLIC
${LIBS}
${test_libs}
)
>From 230041244e8febb4880795996b2ef3f239b1f1f5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny at gentoo.org>
Date: Mon, 20 Jan 2025 05:35:14 +0100
Subject: [PATCH 3/6] Replace comments with a note in EXCLUDE_FROM_LIBMLIR doc
---
mlir/cmake/modules/AddMLIR.cmake | 4 +++-
mlir/test/lib/Analysis/CMakeLists.txt | 4 ----
mlir/test/lib/Dialect/Test/CMakeLists.txt | 4 ----
mlir/test/lib/IR/CMakeLists.txt | 4 ----
4 files changed, 3 insertions(+), 13 deletions(-)
diff --git a/mlir/cmake/modules/AddMLIR.cmake b/mlir/cmake/modules/AddMLIR.cmake
index 9c7b00b660ba7d..2fc84a5b287910 100644
--- a/mlir/cmake/modules/AddMLIR.cmake
+++ b/mlir/cmake/modules/AddMLIR.cmake
@@ -305,7 +305,9 @@ endfunction()
# EXCLUDE_FROM_LIBMLIR
# Don't include this library in libMLIR.so. This option should be used
# for test libraries, executable-specific libraries, or rarely used libraries
-# with large dependencies.
+# with large dependencies. When using it, please link libraries included
+# in libMLIR via mlir_target_link_libraries(), to ensure that the library
+# does not pull in static dependencies when MLIR_LINK_MLIR_DYLIB=ON is used.
# OBJECT
# The library's object library is referenced using "obj.${name}". For this to
# work reliably, this flag ensures that the OBJECT library exists.
diff --git a/mlir/test/lib/Analysis/CMakeLists.txt b/mlir/test/lib/Analysis/CMakeLists.txt
index 8135d22d1f7baa..91879981bffd2a 100644
--- a/mlir/test/lib/Analysis/CMakeLists.txt
+++ b/mlir/test/lib/Analysis/CMakeLists.txt
@@ -23,10 +23,6 @@ add_mlir_library(MLIRTestAnalysis
LINK_LIBS PUBLIC
MLIRTestDialect
)
-
-# Since this library is excluded from libMLIR, link it to the dylib
-# to ensure that it can be used in flang without implicitly pulling in
-# static libraries.
mlir_target_link_libraries(MLIRTestAnalysis PUBLIC
MLIRAffineDialect
MLIRAnalysis
diff --git a/mlir/test/lib/Dialect/Test/CMakeLists.txt b/mlir/test/lib/Dialect/Test/CMakeLists.txt
index aebf4724be34e9..618b13da9899f3 100644
--- a/mlir/test/lib/Dialect/Test/CMakeLists.txt
+++ b/mlir/test/lib/Dialect/Test/CMakeLists.txt
@@ -69,10 +69,6 @@ add_mlir_library(MLIRTestDialect
MLIRTestOpsSyntaxIncGen
MLIRTestOpsShardGen
)
-
-# Since this library is excluded from libMLIR, link it to the dylib
-# to ensure that it can be used in flang without implicitly pulling in
-# static libraries.
mlir_target_link_libraries(MLIRTestDialect PUBLIC
MLIRControlFlowInterfaces
MLIRDataLayoutInterfaces
diff --git a/mlir/test/lib/IR/CMakeLists.txt b/mlir/test/lib/IR/CMakeLists.txt
index 09e370007a424e..e5416da70d5008 100644
--- a/mlir/test/lib/IR/CMakeLists.txt
+++ b/mlir/test/lib/IR/CMakeLists.txt
@@ -28,10 +28,6 @@ add_mlir_library(MLIRTestIR
EXCLUDE_FROM_LIBMLIR
)
-
-# Since this library is excluded from libMLIR, link it to the dylib
-# to ensure that it can be used in flang without implicitly pulling in
-# static libraries.
mlir_target_link_libraries(MLIRTestIR PUBLIC
MLIRPass
MLIRBytecodeReader
>From 0f8cbac36c718a3f4c49e3aa99326970c677f3b0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny at gentoo.org>
Date: Tue, 21 Jan 2025 18:08:50 +0100
Subject: [PATCH 4/6] Explicitly link `MLIRCAPIExecutionEngine` to LLVM
components
Add explicit links from `MLIRCAPIExecutionEngine` to the LLVM components
that are used directly in the code. This fixes link failures
with `-DBUILD_SHARED_LIBS=ON`, since `MLIRExecutionEngine` no longer
transitively provides these.
---
mlir/lib/CAPI/ExecutionEngine/CMakeLists.txt | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/mlir/lib/CAPI/ExecutionEngine/CMakeLists.txt b/mlir/lib/CAPI/ExecutionEngine/CMakeLists.txt
index 0be8f2af5dcf49..2c2cef3380bd11 100644
--- a/mlir/lib/CAPI/ExecutionEngine/CMakeLists.txt
+++ b/mlir/lib/CAPI/ExecutionEngine/CMakeLists.txt
@@ -7,6 +7,10 @@ set(LLVM_LINK_COMPONENTS
add_mlir_upstream_c_api_library(MLIRCAPIExecutionEngine
ExecutionEngine.cpp
+ LINK_COMPONENTS
+ OrcJit
+ Support
+
LINK_LIBS PUBLIC
MLIRBuiltinToLLVMIRTranslation
MLIRExecutionEngine
>From 9ab91d82fdffa17508e142d6dfdcf47f5e7f9522 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny at gentoo.org>
Date: Wed, 22 Jan 2025 08:53:51 +0100
Subject: [PATCH 5/6] Use LLVM_LINK_COMPONENTS instead
---
mlir/lib/CAPI/ExecutionEngine/CMakeLists.txt | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/mlir/lib/CAPI/ExecutionEngine/CMakeLists.txt b/mlir/lib/CAPI/ExecutionEngine/CMakeLists.txt
index 2c2cef3380bd11..15c72a15a9a9de 100644
--- a/mlir/lib/CAPI/ExecutionEngine/CMakeLists.txt
+++ b/mlir/lib/CAPI/ExecutionEngine/CMakeLists.txt
@@ -1,16 +1,14 @@
set(LLVM_LINK_COMPONENTS
nativecodegen
native
+ orcjit
+ support
)
# Main API shared library.
add_mlir_upstream_c_api_library(MLIRCAPIExecutionEngine
ExecutionEngine.cpp
- LINK_COMPONENTS
- OrcJit
- Support
-
LINK_LIBS PUBLIC
MLIRBuiltinToLLVMIRTranslation
MLIRExecutionEngine
>From 2f22990d2a271a5e1a86f58f9b4e769f9be0ba6e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny at gentoo.org>
Date: Wed, 22 Jan 2025 09:59:31 +0100
Subject: [PATCH 6/6] Add LLVM link components to unittests too
---
mlir/lib/CAPI/ExecutionEngine/CMakeLists.txt | 2 +-
mlir/unittests/ExecutionEngine/CMakeLists.txt | 7 +++++++
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/mlir/lib/CAPI/ExecutionEngine/CMakeLists.txt b/mlir/lib/CAPI/ExecutionEngine/CMakeLists.txt
index 15c72a15a9a9de..bf7dff897ab6d4 100644
--- a/mlir/lib/CAPI/ExecutionEngine/CMakeLists.txt
+++ b/mlir/lib/CAPI/ExecutionEngine/CMakeLists.txt
@@ -4,7 +4,7 @@ set(LLVM_LINK_COMPONENTS
orcjit
support
)
-
+
# Main API shared library.
add_mlir_upstream_c_api_library(MLIRCAPIExecutionEngine
ExecutionEngine.cpp
diff --git a/mlir/unittests/ExecutionEngine/CMakeLists.txt b/mlir/unittests/ExecutionEngine/CMakeLists.txt
index 8aee46f261b567..4ef69a8ea042df 100644
--- a/mlir/unittests/ExecutionEngine/CMakeLists.txt
+++ b/mlir/unittests/ExecutionEngine/CMakeLists.txt
@@ -1,3 +1,10 @@
+set(LLVM_LINK_COMPONENTS
+ nativecodegen
+ native
+ orcjit
+ support
+)
+
add_mlir_unittest(MLIRExecutionEngineTests
DynamicMemRef.cpp
StridedMemRef.cpp
More information about the Mlir-commits
mailing list