Skip to content

Commit 6a2cc12

Browse files
authored
[flang] Support linking to MLIR dylib (#120966)
Introduce a new `MLIR_LIBS` argument to `add_flang_library`, that uses `mlir_target_link_libraries` to link the MLIR dylib alterantively to the component libraries. Use it, along with a few inline `mlir_target_link_libraries` in tools, to support linking Flang to MLIR dylib rather than the static libraries. With these changes, the vast majority of Flang can be linked dynamically. The only parts still using static libraries are these requiring MLIR test libraries, that are not included in the dylib.
1 parent 6ada002 commit 6a2cc12

File tree

27 files changed

+102
-52
lines changed

27 files changed

+102
-52
lines changed

flang/cmake/modules/AddFlang.cmake

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ endmacro()
1818

1919
function(add_flang_library name)
2020
set(options SHARED STATIC INSTALL_WITH_TOOLCHAIN)
21-
set(multiValueArgs ADDITIONAL_HEADERS CLANG_LIBS)
21+
set(multiValueArgs ADDITIONAL_HEADERS CLANG_LIBS MLIR_LIBS)
2222
cmake_parse_arguments(ARG
2323
"${options}"
2424
""
@@ -66,6 +66,7 @@ function(add_flang_library name)
6666
llvm_add_library(${name} ${LIBTYPE} ${ARG_UNPARSED_ARGUMENTS} ${srcs})
6767

6868
clang_target_link_libraries(${name} PRIVATE ${ARG_CLANG_LIBS})
69+
mlir_target_link_libraries(${name} PRIVATE ${ARG_MLIR_LIBS})
6970

7071
if (TARGET ${name})
7172

flang/lib/Common/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,6 @@ add_flang_library(FortranCommon
4747
LINK_COMPONENTS
4848
Support
4949

50-
LINK_LIBS
50+
MLIR_LIBS
5151
MLIRIR
5252
)

flang/lib/Frontend/CMakeLists.txt

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,6 @@ add_flang_library(flangFrontend
4141
flangPasses
4242
FIROpenACCSupport
4343
FlangOpenMPTransforms
44-
MLIRTransforms
45-
MLIRBuiltinToLLVMIRTranslation
46-
MLIRLLVMToLLVMIRTranslation
47-
MLIRSCFToControlFlow
48-
MLIRTargetLLVMIRImport
49-
${dialect_libs}
50-
${extension_libs}
5144

5245
LINK_COMPONENTS
5346
Passes
@@ -63,6 +56,15 @@ add_flang_library(flangFrontend
6356
FrontendOpenACC
6457
FrontendOpenMP
6558

59+
MLIR_LIBS
60+
MLIRTransforms
61+
MLIRBuiltinToLLVMIRTranslation
62+
MLIRLLVMToLLVMIRTranslation
63+
MLIRSCFToControlFlow
64+
MLIRTargetLLVMIRImport
65+
${dialect_libs}
66+
${extension_libs}
67+
6668
CLANG_LIBS
6769
clangBasic
6870
clangDriver

flang/lib/FrontendTool/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@ add_flang_library(flangFrontendTool
88

99
LINK_LIBS
1010
flangFrontend
11-
MLIRPass
1211

1312
LINK_COMPONENTS
1413
Option
1514
Support
1615

16+
MLIR_LIBS
17+
MLIRPass
18+
1719
CLANG_LIBS
1820
clangBasic
1921
clangDriver

flang/lib/Lower/CMakeLists.txt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,17 +55,19 @@ add_flang_library(FortranLower
5555
FIRSupport
5656
FIRTransforms
5757
HLFIRDialect
58-
${dialect_libs}
59-
${extension_libs}
6058
FortranCommon
6159
FortranParser
6260
FortranEvaluate
6361
FortranSemantics
62+
63+
LINK_COMPONENTS
64+
Support
65+
66+
MLIR_LIBS
67+
${dialect_libs}
68+
${extension_libs}
6469
MLIRAffineToStandard
6570
MLIRFuncDialect
6671
MLIRLLVMDialect
6772
MLIRSCFToControlFlow
68-
69-
LINK_COMPONENTS
70-
Support
7173
)

flang/lib/Optimizer/Analysis/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ add_flang_library(FIRAnalysis
1313
FIRBuilder
1414
FIRDialect
1515
HLFIRDialect
16+
17+
MLIR_LIBS
1618
MLIRFuncDialect
1719
MLIRLLVMDialect
1820
MLIRMathTransforms

flang/lib/Optimizer/Builder/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ add_flang_library(FIRBuilder
5151
FIRSupport
5252
FortranEvaluate
5353
HLFIRDialect
54+
55+
MLIR_LIBS
5456
${dialect_libs}
5557
${extension_libs}
5658
)

flang/lib/Optimizer/CodeGen/CMakeLists.txt

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,14 @@ add_flang_library(FIRCodeGen
2121
FIRDialect
2222
FIRDialectSupport
2323
FIRSupport
24+
25+
LINK_COMPONENTS
26+
AsmParser
27+
AsmPrinter
28+
Remarks
29+
TargetParser
30+
31+
MLIR_LIBS
2432
MLIRComplexToLLVM
2533
MLIRComplexToStandard
2634
MLIRGPUDialect
@@ -34,10 +42,4 @@ add_flang_library(FIRCodeGen
3442
MLIRLLVMToLLVMIRTranslation
3543
MLIRTargetLLVMIRExport
3644
MLIRVectorToLLVM
37-
38-
LINK_COMPONENTS
39-
AsmParser
40-
AsmPrinter
41-
Remarks
42-
TargetParser
4345
)

flang/lib/Optimizer/Dialect/CMakeLists.txt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,16 @@ add_flang_library(FIRDialect
2020
LINK_LIBS
2121
CUFAttrs
2222
FIRDialectSupport
23-
MLIRArithDialect
24-
MLIRBuiltinToLLVMIRTranslation
25-
MLIROpenMPToLLVM
26-
MLIRLLVMToLLVMIRTranslation
27-
MLIRTargetLLVMIRExport
2823

2924
LINK_COMPONENTS
3025
AsmParser
3126
AsmPrinter
3227
Remarks
28+
29+
MLIR_LIBS
30+
MLIRArithDialect
31+
MLIRBuiltinToLLVMIRTranslation
32+
MLIROpenMPToLLVM
33+
MLIRLLVMToLLVMIRTranslation
34+
MLIRTargetLLVMIRExport
3335
)

flang/lib/Optimizer/Dialect/CUF/Attributes/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ add_flang_library(CUFAttrs
77
CUFAttrsIncGen
88
CUFOpsIncGen
99

10-
LINK_LIBS
11-
MLIRTargetLLVMIRExport
12-
1310
LINK_COMPONENTS
1411
AsmParser
1512
AsmPrinter
1613
Remarks
14+
15+
MLIR_LIBS
16+
MLIRTargetLLVMIRExport
1717
)

flang/lib/Optimizer/Dialect/CUF/CMakeLists.txt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,14 @@ add_flang_library(CUFDialect
1414
CUFAttrs
1515
FIRDialect
1616
FIRDialectSupport
17-
MLIRIR
18-
MLIRGPUDialect
19-
MLIRTargetLLVMIRExport
2017

2118
LINK_COMPONENTS
2219
AsmParser
2320
AsmPrinter
2421
Remarks
22+
23+
MLIR_LIBS
24+
MLIRIR
25+
MLIRGPUDialect
26+
MLIRTargetLLVMIRExport
2527
)

flang/lib/Optimizer/Dialect/Support/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@ add_flang_library(FIRDialectSupport
88
MLIRIR
99
intrinsics_gen
1010

11-
LINK_LIBS
11+
MLIR_LIBS
1212
${dialect_libs}
1313
)

flang/lib/Optimizer/HLFIR/IR/CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@ add_flang_library(HLFIRDialect
1313
LINK_LIBS
1414
CUFAttrs
1515
FIRDialect
16-
MLIRIR
17-
${dialect_libs}
1816

1917
LINK_COMPONENTS
2018
AsmParser
2119
AsmPrinter
2220
Remarks
21+
22+
MLIR_LIBS
23+
MLIRIR
24+
${dialect_libs}
2325
)

flang/lib/Optimizer/HLFIR/Transforms/CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,13 @@ add_flang_library(HLFIRTransforms
2727
FIRTransforms
2828
FlangOpenMPTransforms
2929
HLFIRDialect
30-
MLIRIR
31-
${dialect_libs}
3230

3331
LINK_COMPONENTS
3432
AsmParser
3533
AsmPrinter
3634
Remarks
35+
36+
MLIR_LIBS
37+
MLIRIR
38+
${dialect_libs}
3739
)

flang/lib/Optimizer/OpenACC/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,7 @@ add_flang_library(FIROpenACCSupport
1818
FIRDialectSupport
1919
FIRSupport
2020
HLFIRDialect
21+
22+
MLIR_LIBS
2123
MLIROpenACCDialect
2224
)

flang/lib/Optimizer/OpenMP/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,11 @@ add_flang_library(FlangOpenMPTransforms
2323
FIRSupport
2424
FortranCommon
2525
FortranEvaluate
26+
HLFIRDialect
27+
28+
MLIR_LIBS
2629
MLIRFuncDialect
2730
MLIROpenMPDialect
28-
HLFIRDialect
2931
MLIRIR
3032
MLIRPass
3133
MLIRTransformUtils

flang/lib/Optimizer/Passes/CMakeLists.txt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,18 @@ add_flang_library(flangPasses
1212
FIRCodeGen
1313
FIRTransforms
1414
FlangOpenMPTransforms
15-
${dialect_libs}
16-
${extension_libs}
1715
FortranCommon
1816
HLFIRTransforms
17+
18+
LINK_COMPONENTS
19+
Passes
20+
21+
MLIR_LIBS
22+
${dialect_libs}
23+
${extension_libs}
1924
MLIRPass
2025
MLIRReconcileUnrealizedCasts
2126
MLIRSCFToControlFlow
2227
MLIRSupport
2328
MLIRTransforms
24-
25-
LINK_COMPONENTS
26-
Passes
2729
)

flang/lib/Optimizer/Support/CMakeLists.txt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ add_flang_library(FIRSupport
1616

1717
LINK_LIBS
1818
FIRDialect
19+
20+
LINK_COMPONENTS
21+
TargetParser
22+
23+
MLIR_LIBS
1924
${dialect_libs}
2025
${extension_libs}
2126
MLIRBuiltinToLLVMIRTranslation
@@ -24,7 +29,4 @@ add_flang_library(FIRSupport
2429
MLIRLLVMToLLVMIRTranslation
2530
MLIRTargetLLVMIRExport
2631
MLIRTargetLLVMIRImport
27-
28-
LINK_COMPONENTS
29-
TargetParser
3032
)

flang/lib/Optimizer/Transforms/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ add_flang_library(FIRTransforms
4848
FIRSupport
4949
FortranCommon
5050
HLFIRDialect
51+
52+
MLIR_LIBS
5153
MLIRAffineUtils
5254
MLIRFuncDialect
5355
MLIRGPUDialect

flang/lib/Support/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
add_flang_library(FortranSupport
22
Timing.cpp
33

4-
LINK_LIBS
5-
MLIRSupport
6-
74
LINK_COMPONENTS
85
Support
6+
7+
MLIR_LIBS
8+
MLIRSupport
99
)

flang/test/lib/Analysis/AliasAnalysis/CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,16 @@ add_flang_library(FIRTestAnalysis
1616
FIRSupport
1717
FIRTransforms
1818
FIRAnalysis
19+
MLIRTestAnalysis
20+
21+
MLIR_LIBS
1922
${dialect_libs}
2023
MLIRFuncDialect
2124
MLIRLLVMDialect
2225
MLIRAnalysis
23-
MLIRTestAnalysis
2426
)
2527

2628
target_include_directories(FIRTestAnalysis
2729
PRIVATE
2830
${MLIR_MAIN_SRC_DIR}/..
29-
)
31+
)

flang/test/lib/OpenACC/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ add_flang_library(FIRTestOpenACCInterfaces
1414
FIRDialect
1515
FIROpenACCSupport
1616
FIRSupport
17+
18+
MLIR_LIBS
1719
MLIRIR
1820
MLIROpenACCDialect
1921
MLIRPass

flang/tools/bbc/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ target_link_libraries(bbc PRIVATE
2929
flangFrontend
3030
flangPasses
3131
FlangOpenMPTransforms
32+
)
33+
34+
mlir_target_link_libraries(bbc PRIVATE
3235
${dialect_libs}
3336
${extension_libs}
3437
MLIRAffineToStandard

flang/tools/fir-lsp-server/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ target_link_libraries(fir-lsp-server PRIVATE
1212
CUFDialect
1313
FIRDialect
1414
FIROpenACCSupport
15-
HLFIRDialect
15+
HLFIRDialect)
16+
17+
mlir_target_link_libraries(fir-lsp-server PRIVATE
1618
MLIRLspServerLib
1719
${dialect_libs}
1820
${extension_libs})

flang/tools/fir-opt/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ target_link_libraries(fir-opt PRIVATE
2424
FlangOpenMPTransforms
2525
FIRAnalysis
2626
${test_libs}
27+
)
28+
29+
mlir_target_link_libraries(fir-opt PRIVATE
2730
${dialect_libs}
2831
${extension_libs}
2932

flang/tools/tco/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ target_link_libraries(tco PRIVATE
2121
FIROpenACCSupport
2222
FlangOpenMPTransforms
2323
FortranCommon
24+
)
25+
26+
mlir_target_link_libraries(tco PRIVATE
2427
${dialect_libs}
2528
${extension_libs}
2629
MLIRIR

0 commit comments

Comments
 (0)