Skip to content

Commit d6f2716

Browse files
committed
[flang] Support linking to MLIR dylib
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 24fc8f0 commit d6f2716

File tree

24 files changed

+95
-49
lines changed

24 files changed

+95
-49
lines changed

flang/cmake/modules/AddFlang.cmake

+2-1
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

+1-1
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

+9-7
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,6 @@ add_flang_library(flangFrontend
3939
HLFIRTransforms
4040
flangPasses
4141
FlangOpenMPTransforms
42-
MLIRTransforms
43-
MLIRBuiltinToLLVMIRTranslation
44-
MLIRLLVMToLLVMIRTranslation
45-
MLIRSCFToControlFlow
46-
MLIRTargetLLVMIRImport
47-
${dialect_libs}
48-
${extension_libs}
4942

5043
LINK_COMPONENTS
5144
Passes
@@ -61,6 +54,15 @@ add_flang_library(flangFrontend
6154
FrontendOpenACC
6255
FrontendOpenMP
6356

57+
MLIR_LIBS
58+
MLIRTransforms
59+
MLIRBuiltinToLLVMIRTranslation
60+
MLIRLLVMToLLVMIRTranslation
61+
MLIRSCFToControlFlow
62+
MLIRTargetLLVMIRImport
63+
${dialect_libs}
64+
${extension_libs}
65+
6466
CLANG_LIBS
6567
clangBasic
6668
clangDriver

flang/lib/FrontendTool/CMakeLists.txt

+3-1
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

+7-5
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,19 @@ add_flang_library(FortranLower
5454
FIRSupport
5555
FIRTransforms
5656
HLFIRDialect
57-
${dialect_libs}
58-
${extension_libs}
5957
FortranCommon
6058
FortranParser
6159
FortranEvaluate
6260
FortranSemantics
61+
62+
LINK_COMPONENTS
63+
Support
64+
65+
MLIR_LIBS
66+
${dialect_libs}
67+
${extension_libs}
6368
MLIRAffineToStandard
6469
MLIRFuncDialect
6570
MLIRLLVMDialect
6671
MLIRSCFToControlFlow
67-
68-
LINK_COMPONENTS
69-
Support
7072
)

flang/lib/Optimizer/Analysis/CMakeLists.txt

+2
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

+2
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ add_flang_library(FIRBuilder
4949
FIRDialectSupport
5050
FIRSupport
5151
HLFIRDialect
52+
53+
MLIR_LIBS
5254
${dialect_libs}
5355
${extension_libs}
5456
)

flang/lib/Optimizer/CodeGen/CMakeLists.txt

+8-6
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

+7-5
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

+3-3
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

+5-3
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

+1-1
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

+4-2
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

+4-2
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,13 @@ add_flang_library(HLFIRTransforms
2626
FIRTransforms
2727
FlangOpenMPTransforms
2828
HLFIRDialect
29-
MLIRIR
30-
${dialect_libs}
3129

3230
LINK_COMPONENTS
3331
AsmParser
3432
AsmPrinter
3533
Remarks
34+
35+
MLIR_LIBS
36+
MLIRIR
37+
${dialect_libs}
3638
)

flang/lib/Optimizer/OpenMP/CMakeLists.txt

+3-1
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,11 @@ add_flang_library(FlangOpenMPTransforms
2222
FIRDialectSupport
2323
FIRSupport
2424
FortranCommon
25+
HLFIRDialect
26+
27+
MLIR_LIBS
2528
MLIRFuncDialect
2629
MLIROpenMPDialect
27-
HLFIRDialect
2830
MLIRIR
2931
MLIRPass
3032
MLIRTransformUtils

flang/lib/Optimizer/Passes/CMakeLists.txt

+7-5
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

+5-3
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

+2
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ add_flang_library(FIRTransforms
4949
FIRSupport
5050
FortranCommon
5151
HLFIRDialect
52+
53+
MLIR_LIBS
5254
MLIRAffineUtils
5355
MLIRFuncDialect
5456
MLIRGPUDialect

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

+4-2
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/tools/bbc/CMakeLists.txt

+3
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ target_link_libraries(bbc PRIVATE
2828
flangFrontend
2929
flangPasses
3030
FlangOpenMPTransforms
31+
)
32+
33+
mlir_target_link_libraries(bbc PRIVATE
3134
${dialect_libs}
3235
${extension_libs}
3336
MLIRAffineToStandard

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

+3-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ get_property(extension_libs GLOBAL PROPERTY MLIR_EXTENSION_LIBS)
1111
target_link_libraries(fir-lsp-server PRIVATE
1212
CUFDialect
1313
FIRDialect
14-
HLFIRDialect
14+
HLFIRDialect)
15+
16+
mlir_target_link_libraries(fir-lsp-server PRIVATE
1517
MLIRLspServerLib
1618
${dialect_libs}
1719
${extension_libs})

flang/tools/fir-opt/CMakeLists.txt

+3
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ target_link_libraries(fir-opt PRIVATE
2222
FlangOpenMPTransforms
2323
FIRAnalysis
2424
${test_libs}
25+
)
26+
27+
mlir_target_link_libraries(fir-opt PRIVATE
2528
${dialect_libs}
2629
${extension_libs}
2730

flang/tools/tco/CMakeLists.txt

+3
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ target_link_libraries(tco PRIVATE
2020
flangPasses
2121
FlangOpenMPTransforms
2222
FortranCommon
23+
)
24+
25+
mlir_target_link_libraries(tco PRIVATE
2326
${dialect_libs}
2427
${extension_libs}
2528
MLIRIR

flang/unittests/Frontend/CMakeLists.txt

+4
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,9 @@ target_link_libraries(FlangFrontendTests
2020
FortranSemantics
2121
FortranCommon
2222
FortranEvaluate
23+
)
24+
25+
mlir_target_link_libraries(FlangFrontendTests
26+
PRIVATE
2327
MLIRIR
2428
)

0 commit comments

Comments
 (0)