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

0 commit comments

Comments
 (0)