Skip to content

Commit 8d56cac

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 226a9d7 commit 8d56cac

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
)

0 commit comments

Comments
 (0)