Skip to content

Commit c30a7f4

Browse files
authored
[flang] Fix standalone builds against installed MLIR (#126387)
1. Add a new `MLIR_DEPS` argument group to `flang_add_library()`, and move MLIR-specific dependencies to that group. These dependencies are added as usual in regular builds, and are skipped in standalone builds, since MLIR targets are not visible there (and were already built and installed). 2. Fix the value of `MLIR_MAIN_SRC_DIR` to refer to the current source directory rather than the directory written into MLIR CMake files. The latter refers to the directory used to build the MLIR package, and is no longer valid. 3. Fix non-dylib friendly linking of `LLVMTargetParser` in `Optimizer` unittests. With these changes, I can successfully run Flang's regression tests.
1 parent 776fa2d commit c30a7f4

File tree

19 files changed

+87
-38
lines changed

19 files changed

+87
-38
lines changed

flang/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,11 @@ if (FLANG_STANDALONE_BUILD)
230230
add_custom_target(doxygen ALL)
231231
endif()
232232

233+
# Override the value from installed CMake files, as they refer
234+
# to the directory used during the original MLIR package build,
235+
# which may be no longer available. Instead, use the current checkout.
236+
set(MLIR_MAIN_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../mlir )
237+
233238
else()
234239
option(FLANG_INCLUDE_TESTS
235240
"Generate build targets for the Flang unit tests."

flang/cmake/modules/AddFlang.cmake

Lines changed: 4 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 MLIR_LIBS)
21+
set(multiValueArgs ADDITIONAL_HEADERS CLANG_LIBS MLIR_LIBS MLIR_DEPS)
2222
cmake_parse_arguments(ARG
2323
"${options}"
2424
""
@@ -69,6 +69,9 @@ function(add_flang_library name)
6969
if (ARG_MLIR_LIBS)
7070
mlir_target_link_libraries(${name} PRIVATE ${ARG_MLIR_LIBS})
7171
endif()
72+
if (ARG_MLIR_DEPS AND NOT FLANG_STANDALONE_BUILD)
73+
add_dependencies(${name} ${ARG_MLIR_DEPS})
74+
endif()
7275

7376
if (TARGET ${name})
7477

flang/lib/Frontend/CMakeLists.txt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,6 @@ add_flang_library(flangFrontend
1818
FIROptCodeGenPassIncGen
1919
FIROptTransformsPassIncGen
2020
HLFIRDialect
21-
MLIRIR
22-
${dialect_libs}
23-
${extension_libs}
2421

2522
LINK_LIBS
2623
CUFDialect
@@ -56,6 +53,11 @@ add_flang_library(flangFrontend
5653
FrontendOpenACC
5754
FrontendOpenMP
5855

56+
MLIR_DEPS
57+
MLIRIR
58+
${dialect_libs}
59+
${extension_libs}
60+
5961
MLIR_LIBS
6062
MLIRTransforms
6163
MLIRBuiltinToLLVMIRTranslation

flang/lib/Lower/CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,6 @@ add_flang_library(FortranLower
4444
FIRDialect
4545
FIRTransforms
4646
HLFIRDialect
47-
${dialect_libs}
48-
${extension_libs}
4947

5048
LINK_LIBS
5149
CUFAttrs
@@ -64,6 +62,10 @@ add_flang_library(FortranLower
6462
LINK_COMPONENTS
6563
Support
6664

65+
MLIR_DEPS
66+
${dialect_libs}
67+
${extension_libs}
68+
6769
MLIR_LIBS
6870
${dialect_libs}
6971
${extension_libs}

flang/lib/Optimizer/Analysis/CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,17 @@ add_flang_library(FIRAnalysis
66
FIRDialect
77
FIRSupport
88
HLFIRDialect
9-
MLIRIR
10-
MLIROpenMPDialect
119

1210
LINK_LIBS
1311
FIRBuilder
1412
FIRDialect
1513
FIRSupport
1614
HLFIRDialect
1715

16+
MLIR_DEPS
17+
MLIRIR
18+
MLIROpenMPDialect
19+
1820
MLIR_LIBS
1921
MLIRFuncDialect
2022
MLIRLLVMDialect

flang/lib/Optimizer/Builder/CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@ add_flang_library(FIRBuilder
4040
CUFDialect
4141
FIRDialect
4242
HLFIRDialect
43-
${dialect_libs}
44-
${extension_libs}
4543

4644
LINK_LIBS
4745
CUFAttrs
@@ -52,6 +50,10 @@ add_flang_library(FIRBuilder
5250
FortranEvaluate
5351
HLFIRDialect
5452

53+
MLIR_DEPS
54+
${dialect_libs}
55+
${extension_libs}
56+
5557
MLIR_LIBS
5658
${dialect_libs}
5759
${extension_libs}

flang/lib/Optimizer/Dialect/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ add_flang_library(FIRDialect
1212

1313
DEPENDS
1414
CanonicalizationPatternsIncGen
15-
MLIRIR
1615
FIROpsIncGen
1716
CUFAttrsIncGen
1817
intrinsics_gen
@@ -26,6 +25,9 @@ add_flang_library(FIRDialect
2625
AsmPrinter
2726
Remarks
2827

28+
MLIR_DEPS
29+
MLIRIR
30+
2931
MLIR_LIBS
3032
MLIRArithDialect
3133
MLIRBuiltinToLLVMIRTranslation

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ add_flang_library(CUFAttrs
33
CUFAttr.cpp
44

55
DEPENDS
6-
MLIRIR
76
CUFAttrsIncGen
87
CUFOpsIncGen
98

@@ -12,6 +11,9 @@ add_flang_library(CUFAttrs
1211
AsmPrinter
1312
Remarks
1413

14+
MLIR_DEPS
15+
MLIRIR
16+
1517
MLIR_LIBS
1618
MLIRTargetLLVMIRExport
1719
)

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ add_flang_library(CUFDialect
66
CUFToLLVMIRTranslation.cpp
77

88
DEPENDS
9-
MLIRIR
109
CUFAttrsIncGen
1110
CUFOpsIncGen
1211

@@ -20,6 +19,9 @@ add_flang_library(CUFDialect
2019
AsmPrinter
2120
Remarks
2221

22+
MLIR_DEPS
23+
MLIRIR
24+
2325
MLIR_LIBS
2426
MLIRIR
2527
MLIRGPUDialect

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@ add_flang_library(FIRDialectSupport
55
FIRContext.cpp
66

77
DEPENDS
8-
MLIRIR
98
intrinsics_gen
109

10+
MLIR_DEPS
11+
MLIRIR
12+
1113
MLIR_LIBS
1214
${dialect_libs}
1315
)

0 commit comments

Comments
 (0)