Skip to content

Commit c30a7f4

Browse files
authored
[flang] Fix standalone builds against installed MLIR (llvm#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
)

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ add_flang_library(HLFIRDialect
88
CUFAttrsIncGen
99
FIRDialect
1010
HLFIROpsIncGen
11-
${dialect_libs}
1211

1312
LINK_LIBS
1413
CUFAttrs
@@ -19,6 +18,9 @@ add_flang_library(HLFIRDialect
1918
AsmPrinter
2019
Remarks
2120

21+
MLIR_DEPS
22+
${dialect_libs}
23+
2224
MLIR_LIBS
2325
MLIRIR
2426
${dialect_libs}

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ add_flang_library(HLFIRTransforms
1515
CUFAttrsIncGen
1616
FIRDialect
1717
HLFIROpsIncGen
18-
${dialect_libs}
1918

2019
LINK_LIBS
2120
CUFAttrs
@@ -33,6 +32,9 @@ add_flang_library(HLFIRTransforms
3332
AsmPrinter
3433
Remarks
3534

35+
MLIR_DEPS
36+
${dialect_libs}
37+
3638
MLIR_LIBS
3739
MLIRIR
3840
${dialect_libs}

flang/lib/Optimizer/OpenACC/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ add_flang_library(FIROpenACCSupport
1111
FIRDialectSupport
1212
FIRSupport
1313
HLFIRDialect
14-
MLIROpenACCDialect
1514

1615
LINK_LIBS
1716
FIRBuilder
@@ -21,6 +20,9 @@ add_flang_library(FIROpenACCSupport
2120
FIRSupport
2221
HLFIRDialect
2322

23+
MLIR_DEPS
24+
MLIROpenACCDialect
25+
2426
MLIR_LIBS
2527
MLIROpenACCDialect
2628
)

flang/lib/Optimizer/OpenMP/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ add_flang_library(FlangOpenMPTransforms
1212
FIRDialect
1313
HLFIROpsIncGen
1414
FlangOpenMPPassesIncGen
15-
${dialect_libs}
1615

1716
LINK_LIBS
1817
FIRAnalysis
@@ -24,6 +23,9 @@ add_flang_library(FlangOpenMPTransforms
2423
FortranSupport
2524
HLFIRDialect
2625

26+
MLIR_DEPS
27+
${dialect_libs}
28+
2729
MLIR_LIBS
2830
MLIRFuncDialect
2931
MLIROpenMPDialect

flang/lib/Optimizer/Support/CMakeLists.txt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,18 @@ add_flang_library(FIRSupport
1010
DEPENDS
1111
FIROpsIncGen
1212
HLFIROpsIncGen
13-
MLIRIR
14-
${dialect_libs}
15-
${extension_libs}
1613

1714
LINK_LIBS
1815
FIRDialect
1916

2017
LINK_COMPONENTS
2118
TargetParser
2219

20+
MLIR_DEPS
21+
MLIRIR
22+
${dialect_libs}
23+
${extension_libs}
24+
2325
MLIR_LIBS
2426
${dialect_libs}
2527
${extension_libs}

flang/test/CMakeLists.txt

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -59,26 +59,30 @@ set(FLANG_TEST_PARAMS
5959

6060
set(FLANG_TEST_DEPENDS
6161
flang
62-
llvm-config
63-
FileCheck
64-
count
65-
not
6662
module_files
6763
fir-opt
6864
tco
6965
bbc
70-
llvm-dis
71-
llvm-objdump
72-
llvm-readobj
73-
split-file
7466
FortranDecimal
7567
)
68+
if (NOT FLANG_STANDALONE_BUILD)
69+
list(APPEND FLANG_TEST_DEPENDS
70+
llvm-config
71+
FileCheck
72+
count
73+
not
74+
llvm-dis
75+
llvm-objdump
76+
llvm-readobj
77+
split-file
78+
)
79+
endif ()
7680

7781
if (FLANG_INCLUDE_RUNTIME)
7882
list(APPEND FLANG_TEST_DEPENDS flang_rt.runtime)
7983
endif ()
8084

81-
if (LLVM_ENABLE_PLUGINS AND NOT WIN32)
85+
if (LLVM_ENABLE_PLUGINS AND NOT WIN32 AND NOT FLANG_STANDALONE_BUILD)
8286
list(APPEND FLANG_TEST_DEPENDS Bye)
8387
endif()
8488

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ add_flang_library(FIRTestAnalysis
88
FIRSupport
99
FIRTransforms
1010
FIRAnalysis
11-
${dialect_libs}
1211

1312
LINK_LIBS
1413
FIRDialect
@@ -18,6 +17,9 @@ add_flang_library(FIRTestAnalysis
1817
FIRAnalysis
1918
MLIRTestAnalysis
2019

20+
MLIR_DEPS
21+
${dialect_libs}
22+
2123
MLIR_LIBS
2224
${dialect_libs}
2325
MLIRFuncDialect

flang/test/lib/OpenACC/CMakeLists.txt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,18 @@ add_flang_library(FIRTestOpenACCInterfaces
55
FIRDialect
66
FIROpenACCSupport
77
FIRSupport
8-
MLIRIR
9-
MLIROpenACCDialect
10-
MLIRPass
11-
MLIRSupport
128

139
LINK_LIBS
1410
FIRDialect
1511
FIROpenACCSupport
1612
FIRSupport
1713

14+
MLIR_DEPS
15+
MLIRIR
16+
MLIROpenACCDialect
17+
MLIRPass
18+
MLIRSupport
19+
1820
MLIR_LIBS
1921
MLIRIR
2022
MLIROpenACCDialect

flang/unittests/Optimizer/CMakeLists.txt

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
22
get_property(extension_libs GLOBAL PROPERTY MLIR_EXTENSION_LIBS)
33

4+
set(LLVM_LINK_COMPONENTS
5+
TargetParser
6+
)
7+
48
set(LIBS
59
CUFDialect
610
FIRBuilder
@@ -9,7 +13,6 @@ set(LIBS
913
FIRDialectSupport
1014
FIRSupport
1115
HLFIRDialect
12-
LLVMTargetParser
1316
)
1417

1518
add_flang_unittest(FlangOptimizerTests
@@ -39,8 +42,12 @@ DEPENDS
3942
CUFDialect
4043
FIRDialect
4144
FIRSupport
42-
HLFIRDialect
43-
${dialect_libs})
45+
HLFIRDialect)
46+
47+
if(NOT FLANG_STANDALONE_BUILD)
48+
add_dependencies(FlangOptimizerTests
49+
${dialect_libs})
50+
endif()
4451

4552
target_link_libraries(FlangOptimizerTests
4653
PRIVATE

0 commit comments

Comments
 (0)