[flang-commits] [flang] c30a7f4 - [flang] Fix standalone builds against installed MLIR (#126387)
via flang-commits
flang-commits at lists.llvm.org
Fri Feb 14 23:15:05 PST 2025
Author: Michał Górny
Date: 2025-02-15T07:15:00Z
New Revision: c30a7f459452d5766da244564bc1d5888346c364
URL: https://github.com/llvm/llvm-project/commit/c30a7f459452d5766da244564bc1d5888346c364
DIFF: https://github.com/llvm/llvm-project/commit/c30a7f459452d5766da244564bc1d5888346c364.diff
LOG: [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.
Added:
Modified:
flang/CMakeLists.txt
flang/cmake/modules/AddFlang.cmake
flang/lib/Frontend/CMakeLists.txt
flang/lib/Lower/CMakeLists.txt
flang/lib/Optimizer/Analysis/CMakeLists.txt
flang/lib/Optimizer/Builder/CMakeLists.txt
flang/lib/Optimizer/Dialect/CMakeLists.txt
flang/lib/Optimizer/Dialect/CUF/Attributes/CMakeLists.txt
flang/lib/Optimizer/Dialect/CUF/CMakeLists.txt
flang/lib/Optimizer/Dialect/Support/CMakeLists.txt
flang/lib/Optimizer/HLFIR/IR/CMakeLists.txt
flang/lib/Optimizer/HLFIR/Transforms/CMakeLists.txt
flang/lib/Optimizer/OpenACC/CMakeLists.txt
flang/lib/Optimizer/OpenMP/CMakeLists.txt
flang/lib/Optimizer/Support/CMakeLists.txt
flang/test/CMakeLists.txt
flang/test/lib/Analysis/AliasAnalysis/CMakeLists.txt
flang/test/lib/OpenACC/CMakeLists.txt
flang/unittests/Optimizer/CMakeLists.txt
Removed:
################################################################################
diff --git a/flang/CMakeLists.txt b/flang/CMakeLists.txt
index c012b884ae3be..cca56bfdc88e6 100644
--- a/flang/CMakeLists.txt
+++ b/flang/CMakeLists.txt
@@ -230,6 +230,11 @@ if (FLANG_STANDALONE_BUILD)
add_custom_target(doxygen ALL)
endif()
+ # Override the value from installed CMake files, as they refer
+ # to the directory used during the original MLIR package build,
+ # which may be no longer available. Instead, use the current checkout.
+ set(MLIR_MAIN_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../mlir )
+
else()
option(FLANG_INCLUDE_TESTS
"Generate build targets for the Flang unit tests."
diff --git a/flang/cmake/modules/AddFlang.cmake b/flang/cmake/modules/AddFlang.cmake
index c9f65eb73fef0..badbd4e7b964b 100644
--- a/flang/cmake/modules/AddFlang.cmake
+++ b/flang/cmake/modules/AddFlang.cmake
@@ -18,7 +18,7 @@ endmacro()
function(add_flang_library name)
set(options SHARED STATIC INSTALL_WITH_TOOLCHAIN)
- set(multiValueArgs ADDITIONAL_HEADERS CLANG_LIBS MLIR_LIBS)
+ set(multiValueArgs ADDITIONAL_HEADERS CLANG_LIBS MLIR_LIBS MLIR_DEPS)
cmake_parse_arguments(ARG
"${options}"
""
@@ -69,6 +69,9 @@ function(add_flang_library name)
if (ARG_MLIR_LIBS)
mlir_target_link_libraries(${name} PRIVATE ${ARG_MLIR_LIBS})
endif()
+ if (ARG_MLIR_DEPS AND NOT FLANG_STANDALONE_BUILD)
+ add_dependencies(${name} ${ARG_MLIR_DEPS})
+ endif()
if (TARGET ${name})
diff --git a/flang/lib/Frontend/CMakeLists.txt b/flang/lib/Frontend/CMakeLists.txt
index 81eef2d468d8c..80d63fca6fb76 100644
--- a/flang/lib/Frontend/CMakeLists.txt
+++ b/flang/lib/Frontend/CMakeLists.txt
@@ -18,9 +18,6 @@ add_flang_library(flangFrontend
FIROptCodeGenPassIncGen
FIROptTransformsPassIncGen
HLFIRDialect
- MLIRIR
- ${dialect_libs}
- ${extension_libs}
LINK_LIBS
CUFDialect
@@ -56,6 +53,11 @@ add_flang_library(flangFrontend
FrontendOpenACC
FrontendOpenMP
+ MLIR_DEPS
+ MLIRIR
+ ${dialect_libs}
+ ${extension_libs}
+
MLIR_LIBS
MLIRTransforms
MLIRBuiltinToLLVMIRTranslation
diff --git a/flang/lib/Lower/CMakeLists.txt b/flang/lib/Lower/CMakeLists.txt
index c9b249781552e..87dc2a052796a 100644
--- a/flang/lib/Lower/CMakeLists.txt
+++ b/flang/lib/Lower/CMakeLists.txt
@@ -44,8 +44,6 @@ add_flang_library(FortranLower
FIRDialect
FIRTransforms
HLFIRDialect
- ${dialect_libs}
- ${extension_libs}
LINK_LIBS
CUFAttrs
@@ -64,6 +62,10 @@ add_flang_library(FortranLower
LINK_COMPONENTS
Support
+ MLIR_DEPS
+ ${dialect_libs}
+ ${extension_libs}
+
MLIR_LIBS
${dialect_libs}
${extension_libs}
diff --git a/flang/lib/Optimizer/Analysis/CMakeLists.txt b/flang/lib/Optimizer/Analysis/CMakeLists.txt
index c4dae898f8e57..4d4ad882c27d3 100644
--- a/flang/lib/Optimizer/Analysis/CMakeLists.txt
+++ b/flang/lib/Optimizer/Analysis/CMakeLists.txt
@@ -6,8 +6,6 @@ add_flang_library(FIRAnalysis
FIRDialect
FIRSupport
HLFIRDialect
- MLIRIR
- MLIROpenMPDialect
LINK_LIBS
FIRBuilder
@@ -15,6 +13,10 @@ add_flang_library(FIRAnalysis
FIRSupport
HLFIRDialect
+ MLIR_DEPS
+ MLIRIR
+ MLIROpenMPDialect
+
MLIR_LIBS
MLIRFuncDialect
MLIRLLVMDialect
diff --git a/flang/lib/Optimizer/Builder/CMakeLists.txt b/flang/lib/Optimizer/Builder/CMakeLists.txt
index f8faeaa81c90c..f0563d092e3dc 100644
--- a/flang/lib/Optimizer/Builder/CMakeLists.txt
+++ b/flang/lib/Optimizer/Builder/CMakeLists.txt
@@ -40,8 +40,6 @@ add_flang_library(FIRBuilder
CUFDialect
FIRDialect
HLFIRDialect
- ${dialect_libs}
- ${extension_libs}
LINK_LIBS
CUFAttrs
@@ -52,6 +50,10 @@ add_flang_library(FIRBuilder
FortranEvaluate
HLFIRDialect
+ MLIR_DEPS
+ ${dialect_libs}
+ ${extension_libs}
+
MLIR_LIBS
${dialect_libs}
${extension_libs}
diff --git a/flang/lib/Optimizer/Dialect/CMakeLists.txt b/flang/lib/Optimizer/Dialect/CMakeLists.txt
index d39dca8ed0000..61f9c6110491e 100644
--- a/flang/lib/Optimizer/Dialect/CMakeLists.txt
+++ b/flang/lib/Optimizer/Dialect/CMakeLists.txt
@@ -12,7 +12,6 @@ add_flang_library(FIRDialect
DEPENDS
CanonicalizationPatternsIncGen
- MLIRIR
FIROpsIncGen
CUFAttrsIncGen
intrinsics_gen
@@ -26,6 +25,9 @@ add_flang_library(FIRDialect
AsmPrinter
Remarks
+ MLIR_DEPS
+ MLIRIR
+
MLIR_LIBS
MLIRArithDialect
MLIRBuiltinToLLVMIRTranslation
diff --git a/flang/lib/Optimizer/Dialect/CUF/Attributes/CMakeLists.txt b/flang/lib/Optimizer/Dialect/CUF/Attributes/CMakeLists.txt
index a0f58504eff05..713bd0e97bac3 100644
--- a/flang/lib/Optimizer/Dialect/CUF/Attributes/CMakeLists.txt
+++ b/flang/lib/Optimizer/Dialect/CUF/Attributes/CMakeLists.txt
@@ -3,7 +3,6 @@ add_flang_library(CUFAttrs
CUFAttr.cpp
DEPENDS
- MLIRIR
CUFAttrsIncGen
CUFOpsIncGen
@@ -12,6 +11,9 @@ add_flang_library(CUFAttrs
AsmPrinter
Remarks
+ MLIR_DEPS
+ MLIRIR
+
MLIR_LIBS
MLIRTargetLLVMIRExport
)
diff --git a/flang/lib/Optimizer/Dialect/CUF/CMakeLists.txt b/flang/lib/Optimizer/Dialect/CUF/CMakeLists.txt
index e483b4a164113..5b398f2ad506a 100644
--- a/flang/lib/Optimizer/Dialect/CUF/CMakeLists.txt
+++ b/flang/lib/Optimizer/Dialect/CUF/CMakeLists.txt
@@ -6,7 +6,6 @@ add_flang_library(CUFDialect
CUFToLLVMIRTranslation.cpp
DEPENDS
- MLIRIR
CUFAttrsIncGen
CUFOpsIncGen
@@ -20,6 +19,9 @@ add_flang_library(CUFDialect
AsmPrinter
Remarks
+ MLIR_DEPS
+ MLIRIR
+
MLIR_LIBS
MLIRIR
MLIRGPUDialect
diff --git a/flang/lib/Optimizer/Dialect/Support/CMakeLists.txt b/flang/lib/Optimizer/Dialect/Support/CMakeLists.txt
index bfdd5279b6f29..a85d9521af1c4 100644
--- a/flang/lib/Optimizer/Dialect/Support/CMakeLists.txt
+++ b/flang/lib/Optimizer/Dialect/Support/CMakeLists.txt
@@ -5,9 +5,11 @@ add_flang_library(FIRDialectSupport
FIRContext.cpp
DEPENDS
- MLIRIR
intrinsics_gen
+ MLIR_DEPS
+ MLIRIR
+
MLIR_LIBS
${dialect_libs}
)
diff --git a/flang/lib/Optimizer/HLFIR/IR/CMakeLists.txt b/flang/lib/Optimizer/HLFIR/IR/CMakeLists.txt
index 8a646bedf94b8..99e31a43e01e5 100644
--- a/flang/lib/Optimizer/HLFIR/IR/CMakeLists.txt
+++ b/flang/lib/Optimizer/HLFIR/IR/CMakeLists.txt
@@ -8,7 +8,6 @@ add_flang_library(HLFIRDialect
CUFAttrsIncGen
FIRDialect
HLFIROpsIncGen
- ${dialect_libs}
LINK_LIBS
CUFAttrs
@@ -19,6 +18,9 @@ add_flang_library(HLFIRDialect
AsmPrinter
Remarks
+ MLIR_DEPS
+ ${dialect_libs}
+
MLIR_LIBS
MLIRIR
${dialect_libs}
diff --git a/flang/lib/Optimizer/HLFIR/Transforms/CMakeLists.txt b/flang/lib/Optimizer/HLFIR/Transforms/CMakeLists.txt
index 09286aced6089..7eb3cb4001d5f 100644
--- a/flang/lib/Optimizer/HLFIR/Transforms/CMakeLists.txt
+++ b/flang/lib/Optimizer/HLFIR/Transforms/CMakeLists.txt
@@ -15,7 +15,6 @@ add_flang_library(HLFIRTransforms
CUFAttrsIncGen
FIRDialect
HLFIROpsIncGen
- ${dialect_libs}
LINK_LIBS
CUFAttrs
@@ -33,6 +32,9 @@ add_flang_library(HLFIRTransforms
AsmPrinter
Remarks
+ MLIR_DEPS
+ ${dialect_libs}
+
MLIR_LIBS
MLIRIR
${dialect_libs}
diff --git a/flang/lib/Optimizer/OpenACC/CMakeLists.txt b/flang/lib/Optimizer/OpenACC/CMakeLists.txt
index 1bfae603fd80d..4a09133fc110d 100644
--- a/flang/lib/Optimizer/OpenACC/CMakeLists.txt
+++ b/flang/lib/Optimizer/OpenACC/CMakeLists.txt
@@ -11,7 +11,6 @@ add_flang_library(FIROpenACCSupport
FIRDialectSupport
FIRSupport
HLFIRDialect
- MLIROpenACCDialect
LINK_LIBS
FIRBuilder
@@ -21,6 +20,9 @@ add_flang_library(FIROpenACCSupport
FIRSupport
HLFIRDialect
+ MLIR_DEPS
+ MLIROpenACCDialect
+
MLIR_LIBS
MLIROpenACCDialect
)
diff --git a/flang/lib/Optimizer/OpenMP/CMakeLists.txt b/flang/lib/Optimizer/OpenMP/CMakeLists.txt
index 86ae93f3207cc..4a48d6e0936db 100644
--- a/flang/lib/Optimizer/OpenMP/CMakeLists.txt
+++ b/flang/lib/Optimizer/OpenMP/CMakeLists.txt
@@ -12,7 +12,6 @@ add_flang_library(FlangOpenMPTransforms
FIRDialect
HLFIROpsIncGen
FlangOpenMPPassesIncGen
- ${dialect_libs}
LINK_LIBS
FIRAnalysis
@@ -24,6 +23,9 @@ add_flang_library(FlangOpenMPTransforms
FortranSupport
HLFIRDialect
+ MLIR_DEPS
+ ${dialect_libs}
+
MLIR_LIBS
MLIRFuncDialect
MLIROpenMPDialect
diff --git a/flang/lib/Optimizer/Support/CMakeLists.txt b/flang/lib/Optimizer/Support/CMakeLists.txt
index f8e4fc5bcefea..7ccdd4fd9c25c 100644
--- a/flang/lib/Optimizer/Support/CMakeLists.txt
+++ b/flang/lib/Optimizer/Support/CMakeLists.txt
@@ -10,9 +10,6 @@ add_flang_library(FIRSupport
DEPENDS
FIROpsIncGen
HLFIROpsIncGen
- MLIRIR
- ${dialect_libs}
- ${extension_libs}
LINK_LIBS
FIRDialect
@@ -20,6 +17,11 @@ add_flang_library(FIRSupport
LINK_COMPONENTS
TargetParser
+ MLIR_DEPS
+ MLIRIR
+ ${dialect_libs}
+ ${extension_libs}
+
MLIR_LIBS
${dialect_libs}
${extension_libs}
diff --git a/flang/test/CMakeLists.txt b/flang/test/CMakeLists.txt
index 3fac8717e9bd9..777cf5fc5433b 100644
--- a/flang/test/CMakeLists.txt
+++ b/flang/test/CMakeLists.txt
@@ -59,26 +59,30 @@ set(FLANG_TEST_PARAMS
set(FLANG_TEST_DEPENDS
flang
- llvm-config
- FileCheck
- count
- not
module_files
fir-opt
tco
bbc
- llvm-dis
- llvm-objdump
- llvm-readobj
- split-file
FortranDecimal
)
+if (NOT FLANG_STANDALONE_BUILD)
+ list(APPEND FLANG_TEST_DEPENDS
+ llvm-config
+ FileCheck
+ count
+ not
+ llvm-dis
+ llvm-objdump
+ llvm-readobj
+ split-file
+ )
+endif ()
if (FLANG_INCLUDE_RUNTIME)
list(APPEND FLANG_TEST_DEPENDS flang_rt.runtime)
endif ()
-if (LLVM_ENABLE_PLUGINS AND NOT WIN32)
+if (LLVM_ENABLE_PLUGINS AND NOT WIN32 AND NOT FLANG_STANDALONE_BUILD)
list(APPEND FLANG_TEST_DEPENDS Bye)
endif()
diff --git a/flang/test/lib/Analysis/AliasAnalysis/CMakeLists.txt b/flang/test/lib/Analysis/AliasAnalysis/CMakeLists.txt
index cba47a4114517..16df2b607ca93 100644
--- a/flang/test/lib/Analysis/AliasAnalysis/CMakeLists.txt
+++ b/flang/test/lib/Analysis/AliasAnalysis/CMakeLists.txt
@@ -8,7 +8,6 @@ add_flang_library(FIRTestAnalysis
FIRSupport
FIRTransforms
FIRAnalysis
- ${dialect_libs}
LINK_LIBS
FIRDialect
@@ -18,6 +17,9 @@ add_flang_library(FIRTestAnalysis
FIRAnalysis
MLIRTestAnalysis
+ MLIR_DEPS
+ ${dialect_libs}
+
MLIR_LIBS
${dialect_libs}
MLIRFuncDialect
diff --git a/flang/test/lib/OpenACC/CMakeLists.txt b/flang/test/lib/OpenACC/CMakeLists.txt
index e296827ef53be..1c0ac748f85e8 100644
--- a/flang/test/lib/OpenACC/CMakeLists.txt
+++ b/flang/test/lib/OpenACC/CMakeLists.txt
@@ -5,16 +5,18 @@ add_flang_library(FIRTestOpenACCInterfaces
FIRDialect
FIROpenACCSupport
FIRSupport
- MLIRIR
- MLIROpenACCDialect
- MLIRPass
- MLIRSupport
LINK_LIBS
FIRDialect
FIROpenACCSupport
FIRSupport
+ MLIR_DEPS
+ MLIRIR
+ MLIROpenACCDialect
+ MLIRPass
+ MLIRSupport
+
MLIR_LIBS
MLIRIR
MLIROpenACCDialect
diff --git a/flang/unittests/Optimizer/CMakeLists.txt b/flang/unittests/Optimizer/CMakeLists.txt
index f535677c19fd2..1289341619118 100644
--- a/flang/unittests/Optimizer/CMakeLists.txt
+++ b/flang/unittests/Optimizer/CMakeLists.txt
@@ -1,6 +1,10 @@
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
get_property(extension_libs GLOBAL PROPERTY MLIR_EXTENSION_LIBS)
+set(LLVM_LINK_COMPONENTS
+ TargetParser
+)
+
set(LIBS
CUFDialect
FIRBuilder
@@ -9,7 +13,6 @@ set(LIBS
FIRDialectSupport
FIRSupport
HLFIRDialect
- LLVMTargetParser
)
add_flang_unittest(FlangOptimizerTests
@@ -39,8 +42,12 @@ DEPENDS
CUFDialect
FIRDialect
FIRSupport
- HLFIRDialect
- ${dialect_libs})
+ HLFIRDialect)
+
+if(NOT FLANG_STANDALONE_BUILD)
+ add_dependencies(FlangOptimizerTests
+ ${dialect_libs})
+endif()
target_link_libraries(FlangOptimizerTests
PRIVATE
More information about the flang-commits
mailing list