Skip to content

Commit 047e8e4

Browse files
authored
Reapply "[mlir] Link libraries that aren't included in libMLIR to libMLIR" (#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]
1 parent 3088c31 commit 047e8e4

File tree

45 files changed

+108
-78
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+108
-78
lines changed

mlir/cmake/modules/AddMLIR.cmake

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,9 @@ endfunction()
305305
# EXCLUDE_FROM_LIBMLIR
306306
# Don't include this library in libMLIR.so. This option should be used
307307
# for test libraries, executable-specific libraries, or rarely used libraries
308-
# with large dependencies.
308+
# with large dependencies. When using it, please link libraries included
309+
# in libMLIR via mlir_target_link_libraries(), to ensure that the library
310+
# does not pull in static dependencies when MLIR_LINK_MLIR_DYLIB=ON is used.
309311
# OBJECT
310312
# The library's object library is referenced using "obj.${name}". For this to
311313
# work reliably, this flag ensures that the OBJECT library exists.

mlir/lib/CAPI/ExecutionEngine/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
set(LLVM_LINK_COMPONENTS
22
nativecodegen
33
native
4+
orcjit
5+
support
46
)
5-
7+
68
# Main API shared library.
79
add_mlir_upstream_c_api_library(MLIRCAPIExecutionEngine
810
ExecutionEngine.cpp

mlir/lib/ExecutionEngine/CMakeLists.txt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,9 @@ add_mlir_library(MLIRExecutionEngine
9191
IPO
9292
Passes
9393
${LLVM_JIT_LISTENER_LIB}
94+
)
9495

95-
LINK_LIBS PUBLIC
96+
mlir_target_link_libraries(MLIRExecutionEngine PUBLIC
9697
MLIRBuiltinToLLVMIRTranslation
9798
MLIRExecutionEngineUtils
9899
MLIRLLVMDialect
@@ -139,8 +140,10 @@ add_mlir_library(MLIRJitRunner
139140
JITLink
140141

141142
LINK_LIBS PUBLIC
142-
${dialect_libs}
143143
MLIRExecutionEngine
144+
)
145+
mlir_target_link_libraries(MLIRJitRunner PUBLIC
146+
${dialect_libs}
144147
MLIRFuncDialect
145148
MLIRFuncToLLVM
146149
MLIRIR

mlir/lib/ExecutionEngine/SparseTensor/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ add_mlir_library(MLIRSparseTensorRuntime
1111
Storage.cpp
1212

1313
EXCLUDE_FROM_LIBMLIR
14-
15-
LINK_LIBS PUBLIC
14+
)
15+
mlir_target_link_libraries(MLIRSparseTensorRuntime PUBLIC
1616
MLIRSparseTensorEnums
1717
mlir_float16_utils
1818
)

mlir/test/lib/Analysis/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,14 @@ add_mlir_library(MLIRTestAnalysis
2121
EXCLUDE_FROM_LIBMLIR
2222

2323
LINK_LIBS PUBLIC
24+
MLIRTestDialect
25+
)
26+
mlir_target_link_libraries(MLIRTestAnalysis PUBLIC
2427
MLIRAffineDialect
2528
MLIRAnalysis
2629
MLIRFunctionInterfaces
2730
MLIRMemRefDialect
2831
MLIRPass
29-
MLIRTestDialect
3032
)
3133

3234
target_include_directories(MLIRTestAnalysis

mlir/test/lib/Conversion/ConvertToSPIRV/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ add_mlir_library(MLIRTestConvertToSPIRV
44
TestSPIRVVectorUnrolling.cpp
55

66
EXCLUDE_FROM_LIBMLIR
7-
8-
LINK_LIBS PUBLIC
7+
)
8+
mlir_target_link_libraries(MLIRTestConvertToSPIRV PUBLIC
99
MLIRArithDialect
1010
MLIRFuncDialect
1111
MLIRPass

mlir/test/lib/Conversion/FuncToLLVM/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@ add_mlir_library(MLIRTestFuncToLLVM
66
EXCLUDE_FROM_LIBMLIR
77

88
LINK_LIBS PUBLIC
9+
MLIRTestDialect
10+
)
11+
mlir_target_link_libraries(MLIRTestFuncToLLVM PUBLIC
912
MLIRFuncToLLVM
1013
MLIRLLVMCommonConversion
1114
MLIRLLVMDialect
1215
MLIRLLVMIRTransforms
1316
MLIRPass
14-
MLIRTestDialect
1517
)
1618

1719
target_include_directories(MLIRTestFuncToLLVM

mlir/test/lib/Conversion/MathToVCIX/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ add_mlir_library(MLIRTestMathToVCIX
33
TestMathToVCIXConversion.cpp
44

55
EXCLUDE_FROM_LIBMLIR
6-
7-
LINK_LIBS PUBLIC
6+
)
7+
mlir_target_link_libraries(MLIRTestMathToVCIX PUBLIC
88
MLIRArithDialect
99
MLIRFuncDialect
1010
MLIRMathDialect

mlir/test/lib/Conversion/OneToNTypeConversion/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@ add_mlir_library(MLIRTestOneToNTypeConversionPass
44
EXCLUDE_FROM_LIBMLIR
55

66
LINK_LIBS PUBLIC
7+
MLIRTestDialect
8+
)
9+
mlir_target_link_libraries(MLIRTestOneToNTypeConversionPass PUBLIC
710
MLIRFuncDialect
811
MLIRFuncTransforms
912
MLIRIR
1013
MLIRPass
1114
MLIRSCFDialect
1215
MLIRSCFTransforms
13-
MLIRTestDialect
1416
MLIRTransformUtils
1517
)
1618

mlir/test/lib/Conversion/VectorToSPIRV/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ add_mlir_library(MLIRTestVectorToSPIRV
33
TestVectorReductionToSPIRVDotProd.cpp
44

55
EXCLUDE_FROM_LIBMLIR
6-
7-
LINK_LIBS PUBLIC
6+
)
7+
mlir_target_link_libraries(MLIRTestVectorToSPIRV PUBLIC
88
MLIRVectorToSPIRV
99
MLIRArithDialect
1010
MLIRFuncDialect

mlir/test/lib/Dialect/Affine/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ add_mlir_library(MLIRAffineTransformsTestPasses
2121
Core
2222

2323
LINK_LIBS PUBLIC
24+
MLIRTestDialect
25+
)
26+
mlir_target_link_libraries(MLIRAffineTransformsTestPasses PUBLIC
2427
MLIRArithTransforms
2528
MLIRAffineAnalysis
2629
MLIRAffineTransforms
@@ -30,7 +33,6 @@ add_mlir_library(MLIRAffineTransformsTestPasses
3033
MLIRSupport
3134
MLIRMemRefDialect
3235
MLIRTensorDialect
33-
MLIRTestDialect
3436
MLIRVectorUtils
3537
)
3638

mlir/test/lib/Dialect/Arith/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ add_mlir_library(MLIRArithTestPasses
33
TestEmulateWideInt.cpp
44

55
EXCLUDE_FROM_LIBMLIR
6-
7-
LINK_LIBS PUBLIC
6+
)
7+
mlir_target_link_libraries(MLIRArithTestPasses PUBLIC
88
MLIRArithDialect
99
MLIRArithTransforms
1010
MLIRFuncDialect

mlir/test/lib/Dialect/ArmNeon/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ add_mlir_library(MLIRArmNeonTestPasses
33
TestLowerToArmNeon.cpp
44

55
EXCLUDE_FROM_LIBMLIR
6-
7-
LINK_LIBS PUBLIC
6+
)
7+
mlir_target_link_libraries(MLIRArmNeonTestPasses PUBLIC
88
MLIRArmNeonDialect
99
MLIRArmNeonTransforms
1010
MLIRIR

mlir/test/lib/Dialect/ArmSME/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ add_mlir_library(MLIRArmSMETestPasses
33
TestLowerToArmSME.cpp
44

55
EXCLUDE_FROM_LIBMLIR
6-
7-
LINK_LIBS PUBLIC
6+
)
7+
mlir_target_link_libraries(MLIRArmSMETestPasses PUBLIC
88
MLIRArithToArmSME
99
MLIRArmSMEToLLVM
1010
MLIRArmSMEToSCF

mlir/test/lib/Dialect/Bufferization/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ add_mlir_library(MLIRBufferizationTestPasses
33
TestTensorCopyInsertion.cpp
44

55
EXCLUDE_FROM_LIBMLIR
6-
7-
LINK_LIBS PUBLIC
6+
)
7+
mlir_target_link_libraries(MLIRBufferizationTestPasses PUBLIC
88
MLIRBufferizationDialect
99
MLIRBufferizationTransforms
1010
MLIRIR

mlir/test/lib/Dialect/ControlFlow/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ add_mlir_library(MLIRControlFlowTestPasses
33
TestAssert.cpp
44

55
EXCLUDE_FROM_LIBMLIR
6-
7-
LINK_LIBS PUBLIC
6+
)
7+
mlir_target_link_libraries(MLIRControlFlowTestPasses PUBLIC
88
MLIRControlFlowToLLVM
99
MLIRFuncDialect
1010
MLIRLLVMCommonConversion

mlir/test/lib/Dialect/DLTI/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@ add_mlir_library(MLIRDLTITestPasses
55
EXCLUDE_FROM_LIBMLIR
66

77
LINK_LIBS PUBLIC
8+
MLIRTestDialect
9+
)
10+
mlir_target_link_libraries(MLIRDLTITestPasses PUBLIC
811
MLIRDLTIDialect
912
MLIRPass
10-
MLIRTestDialect
1113
)
1214

1315
target_include_directories(MLIRDLTITestPasses

mlir/test/lib/Dialect/Func/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@ add_mlir_library(MLIRFuncTestPasses
55
EXCLUDE_FROM_LIBMLIR
66

77
LINK_LIBS PUBLIC
8+
MLIRTestDialect
9+
)
10+
mlir_target_link_libraries(MLIRFuncTestPasses PUBLIC
811
MLIRAffineDialect
912
MLIRPass
1013
MLIRFuncTransforms
11-
MLIRTestDialect
1214
MLIRTransformUtils
1315
)
1416

mlir/test/lib/Dialect/GPU/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ add_mlir_library(MLIRGPUTestPasses
3636
TestGpuRewrite.cpp
3737

3838
EXCLUDE_FROM_LIBMLIR
39-
40-
LINK_LIBS PUBLIC
39+
)
40+
mlir_target_link_libraries(MLIRGPUTestPasses PUBLIC
4141
${LIBS}
4242
)
4343

mlir/test/lib/Dialect/LLVM/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ add_mlir_library(MLIRLLVMTestPasses
44
TestPatterns.cpp
55

66
EXCLUDE_FROM_LIBMLIR
7-
8-
LINK_LIBS PUBLIC
7+
)
8+
mlir_target_link_libraries(MLIRLLVMTestPasses PUBLIC
99
MLIRAffineToStandard
1010
MLIRFuncDialect
1111
MLIRFuncToLLVM

mlir/test/lib/Dialect/Linalg/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ add_mlir_library(MLIRLinalgTestPasses
1010
TestPadFusion.cpp
1111

1212
EXCLUDE_FROM_LIBMLIR
13-
14-
LINK_LIBS PUBLIC
13+
)
14+
mlir_target_link_libraries(MLIRLinalgTestPasses PUBLIC
1515
MLIRAffineDialect
1616
MLIRArithDialect
1717
MLIRArithTransforms

mlir/test/lib/Dialect/Math/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ add_mlir_library(MLIRMathTestPasses
55
TestPolynomialApproximation.cpp
66

77
EXCLUDE_FROM_LIBMLIR
8-
9-
LINK_LIBS PUBLIC
8+
)
9+
mlir_target_link_libraries(MLIRMathTestPasses PUBLIC
1010
MLIRMathTransforms
1111
MLIRPass
1212
MLIRTransformUtils

mlir/test/lib/Dialect/MemRef/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ add_mlir_library(MLIRMemRefTestPasses
77
EXCLUDE_FROM_LIBMLIR
88

99
LINK_LIBS PUBLIC
10+
MLIRTestDialect
11+
)
12+
mlir_target_link_libraries(MLIRMemRefTestPasses PUBLIC
1013
MLIRPass
1114
MLIRMemRefDialect
1215
MLIRMemRefTransforms
13-
MLIRTestDialect
1416
)
1517

1618
target_include_directories(MLIRMemRefTestPasses

mlir/test/lib/Dialect/Mesh/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ add_mlir_library(MLIRMeshTest
55
TestSimplifications.cpp
66

77
EXCLUDE_FROM_LIBMLIR
8-
9-
LINK_LIBS PUBLIC
8+
)
9+
mlir_target_link_libraries(MLIRMeshTest PUBLIC
1010
MLIRMeshDialect
1111
MLIRMeshTransforms
1212
MLIRPass

mlir/test/lib/Dialect/NVGPU/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ add_mlir_library(MLIRNVGPUTestPasses
33
TestNVGPUTransforms.cpp
44

55
EXCLUDE_FROM_LIBMLIR
6-
7-
LINK_LIBS PUBLIC
6+
)
7+
mlir_target_link_libraries(MLIRNVGPUTestPasses PUBLIC
88
MLIRIR
99
MLIRAffineDialect
1010
MLIRAnalysis

mlir/test/lib/Dialect/SCF/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ add_mlir_library(MLIRSCFTestPasses
88
TestWhileOpBuilder.cpp
99

1010
EXCLUDE_FROM_LIBMLIR
11-
12-
LINK_LIBS PUBLIC
11+
)
12+
mlir_target_link_libraries(MLIRSCFTestPasses PUBLIC
1313
MLIRMemRefDialect
1414
MLIRPass
1515
MLIRSCFDialect

mlir/test/lib/Dialect/SPIRV/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ add_mlir_library(MLIRSPIRVTestPasses
99
ADDITIONAL_HEADER_DIRS
1010
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/SPIRV
1111
${MLIR_MAIN_INCLUDE_DIR}/mlir/IR
12-
13-
LINK_LIBS PUBLIC
12+
)
13+
mlir_target_link_libraries(MLIRSPIRVTestPasses PUBLIC
1414
MLIRGPUDialect
1515
MLIRIR
1616
MLIRPass

mlir/test/lib/Dialect/Shape/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ add_mlir_library(MLIRShapeTestPasses
88
ADDITIONAL_HEADER_DIRS
99
${MLIR_MAIN_INCLUDE_DIR}/mlir/Dialect/Shape
1010
${MLIR_MAIN_INCLUDE_DIR}/mlir/IR
11-
12-
LINK_LIBS PUBLIC
11+
)
12+
mlir_target_link_libraries(MLIRShapeTestPasses PUBLIC
1313
MLIRIR
1414
MLIRPass
1515
MLIRShapeOpsTransforms

mlir/test/lib/Dialect/Tensor/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ add_mlir_library(MLIRTensorTestPasses
33
TestTensorTransforms.cpp
44

55
EXCLUDE_FROM_LIBMLIR
6-
7-
LINK_LIBS PUBLIC
6+
)
7+
mlir_target_link_libraries(MLIRTensorTestPasses PUBLIC
88
MLIRArithDialect
99
MLIRLinalgDialect
1010
MLIRPass

mlir/test/lib/Dialect/Test/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ add_mlir_library(MLIRTestDialect
6868
MLIRTestOpsIncGen
6969
MLIRTestOpsSyntaxIncGen
7070
MLIRTestOpsShardGen
71-
72-
LINK_LIBS PUBLIC
71+
)
72+
mlir_target_link_libraries(MLIRTestDialect PUBLIC
7373
MLIRControlFlowInterfaces
7474
MLIRDataLayoutInterfaces
7575
MLIRDerivedAttributeOpInterface

mlir/test/lib/Dialect/TestDyn/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ add_mlir_dialect_library(MLIRTestDynDialect
22
TestDynDialect.cpp
33

44
EXCLUDE_FROM_LIBMLIR
5-
6-
LINK_LIBS PUBLIC
5+
)
6+
mlir_target_link_libraries(MLIRTestDynDialect PUBLIC
77
MLIRIR
88
)

mlir/test/lib/Dialect/Tosa/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ add_mlir_dialect_library(MLIRTosaTestPasses
88

99
DEPENDS
1010
MLIRTosaPassIncGen
11-
12-
LINK_LIBS PUBLIC
11+
)
12+
mlir_target_link_libraries(MLIRTosaTestPasses PUBLIC
1313
MLIRFuncDialect
1414
MLIRPass
1515
MLIRTosaDialect

0 commit comments

Comments
 (0)