Skip to content

Commit bddf24d

Browse files
authored
[Flang] Add omp_lib dependency to check-flang (#130975)
With `LLVM_ENABLE_RUNTIMES=openmp`, flang enables the OpenMP regression tests, but `check-flang` was not ensuring that the OpenMP requirements are built first. Fix by adding a `libomp-mod` to `flang-test-depends`. Adding `libomp-mod` to extra_targets is necessary because there is no target from openmp/ that is reachable from the parent bootstrapping-build. `ninja openmp` fails because openmp/ has no `openmp` target. `check-openmp` would also run the OpenMP tests and does not even build `omp_lib.mod`. `runtimes` would build all the runtimes, not just OpenMP. Also fix the misleading CMake configure status messages that suggest the only way to build omp_lib.mod/.h is `LLVM_ENABLE_PROJECTS=openmp`.
1 parent 9b83ffb commit bddf24d

File tree

3 files changed

+17
-4
lines changed

3 files changed

+17
-4
lines changed

flang/test/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,10 @@ if (LLVM_BUILD_EXAMPLES)
100100
)
101101
endif ()
102102

103+
if ("openmp" IN_LIST LLVM_ENABLE_RUNTIMES AND NOT FLANG_STANDALONE_BUILD)
104+
list(APPEND FLANG_TEST_DEPENDS "libomp-mod")
105+
endif ()
106+
103107
add_custom_target(flang-test-depends DEPENDS ${FLANG_TEST_DEPENDS})
104108
set_target_properties(flang-test-depends PROPERTIES FOLDER "Flang/Meta")
105109

flang/tools/f18/CMakeLists.txt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ if (NOT CMAKE_CROSSCOMPILING)
142142
# It also produces two module files: omp_lib.mod and omp_lib_kinds.mod. Compile these
143143
# files only if OpenMP support has been configured.
144144
if (LLVM_TOOL_OPENMP_BUILD)
145-
message(STATUS "OpenMP runtime support enabled via LLVM_ENABLED_PROJECTS, building omp_lib.mod")
145+
message(STATUS "OpenMP runtime support enabled via LLVM_ENABLE_PROJECTS, building omp_lib.mod")
146146
set(base ${FLANG_INTRINSIC_MODULES_DIR}/omp_lib)
147147
add_custom_command(OUTPUT ${base}.mod ${base}_kinds.mod
148148
COMMAND ${CMAKE_COMMAND} -E make_directory ${FLANG_INTRINSIC_MODULES_DIR}
@@ -158,8 +158,10 @@ if (NOT CMAKE_CROSSCOMPILING)
158158
COMMAND ${CMAKE_COMMAND} -E copy ${base}_kinds.mod ${base}_kinds.f18.mod)
159159
list(APPEND MODULE_FILES ${base}.mod ${base}.f18.mod ${base}_kinds.mod ${base}_kinds.f18.mod)
160160
install(FILES ${base}.mod ${base}.f18.mod ${base}_kinds.mod ${base}_kinds.f18.mod DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/flang")
161+
elseif ("openmp" IN_LIST LLVM_ENABLE_RUNTIMES)
162+
message(STATUS "OpenMP runtime support enabled via LLVM_ENABLE_RUNTIMES, assuming omp_lib.mod is built there")
161163
else()
162-
message(STATUS "Not building omp_lib.mod, no OpenMP runtime in LLVM_ENABLED_PROJECTS")
164+
message(WARNING "Not building omp_lib.mod, no OpenMP runtime in either LLVM_ENABLE_PROJECTS or LLVM_ENABLE_RUNTIMES")
163165
endif()
164166
endif()
165167

@@ -169,9 +171,11 @@ set_target_properties(module_files PROPERTIES FOLDER "Flang/Resources")
169171
# TODO Move this to a more suitable location
170172
# Copy the generated omp_lib.h header file, if OpenMP support has been configured.
171173
if (LLVM_TOOL_OPENMP_BUILD)
172-
message(STATUS "OpenMP runtime support enabled via LLVM_ENABLED_PROJECTS, building omp_lib.h")
174+
message(STATUS "OpenMP runtime support enabled via LLVM_ENABLE_PROJECTS, building omp_lib.h")
173175
file(COPY ${CMAKE_BINARY_DIR}/projects/openmp/runtime/src/omp_lib.h DESTINATION "${CMAKE_BINARY_DIR}/include/flang/OpenMP/" FILE_PERMISSIONS OWNER_READ OWNER_WRITE)
174176
install(FILES ${CMAKE_BINARY_DIR}/include/flang/OpenMP/omp_lib.h DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/flang/OpenMP")
177+
elseif ("openmp" IN_LIST LLVM_ENABLE_RUNTIMES)
178+
message(STATUS "OpenMP runtime support enabled via LLVM_ENABLE_RUNTIMES, assuming omp_lib.h is built there")
175179
else()
176-
message(STATUS "Not copying omp_lib.h, no OpenMP runtime in LLVM_ENABLED_PROJECTS")
180+
message(STATUS "Not copying omp_lib.h, no OpenMP runtime in either LLVM_ENABLE_PROJECTS or LLVM_ENABLE_RUNTIMES")
177181
endif()

llvm/runtimes/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,11 @@ function(runtime_default_target)
250250
list(APPEND extra_targets install-${component} install-${component}-stripped)
251251
endif()
252252
endforeach()
253+
if ("openmp" IN_LIST LLVM_ENABLE_RUNTIMES)
254+
# The target libomp-mod is a dependee of check-flang needed to run its
255+
# OpenMP tests
256+
list(APPEND extra_targets "libomp-mod")
257+
endif ()
253258

254259
if(LLVM_INCLUDE_TESTS)
255260
set_property(GLOBAL APPEND PROPERTY LLVM_ALL_LIT_TESTSUITES "@${LLVM_BINARY_DIR}/runtimes/runtimes-bins/lit.tests")

0 commit comments

Comments
 (0)