Revert "[OpenMP] Remove LLVM_ENABLE_PROJECTS=openmp build mode (#174963)"
This reverts commit f7b5b670c1cf0fe54e59aa0d1f1a11ee66e442ab. It had broken the publish-doxygen-docs buildbot
This commit is contained in:
parent
67cf9b8f82
commit
8acf454ed1
4
.github/workflows/docs.yml
vendored
4
.github/workflows/docs.yml
vendored
@ -186,10 +186,10 @@ jobs:
|
||||
steps.docs-changed-subprojects.outputs.openmp_any_changed == 'true' ||
|
||||
steps.docs-changed-subprojects.outputs.workflow_any_changed == 'true'
|
||||
run: |
|
||||
cmake -B openmp-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_RUNTIMES="openmp" -DLLVM_ENABLE_SPHINX=ON -DLLVM_INCLUDE_TESTS=OFF ./runtimes
|
||||
cmake -B openmp-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang;openmp" -DLLVM_ENABLE_SPHINX=ON ./llvm
|
||||
TZ=UTC ninja -C openmp-build docs-openmp-html
|
||||
mkdir built-docs/openmp
|
||||
cp -r openmp-build/openmp/docs/* built-docs/openmp/
|
||||
cp -r openmp-build/docs/* built-docs/openmp/
|
||||
- name: Build Polly docs
|
||||
if: |
|
||||
steps.docs-changed-subprojects.outputs.polly_any_changed == 'true' ||
|
||||
|
||||
@ -53,8 +53,8 @@ def is_cmake_needed():
|
||||
CMAKE_COMMAND = (
|
||||
"cmake -G Ninja -DCMAKE_BUILD_TYPE=Release "
|
||||
"-DCMAKE_INSTALL_PREFIX=/analyzer -DLLVM_TARGETS_TO_BUILD=X86 "
|
||||
'-DLLVM_ENABLE_PROJECTS="clang" -DLLVM_ENABLE_RUNTIMES="openmp" '
|
||||
"-DLLVM_BUILD_RUNTIME=OFF -DCLANG_ENABLE_STATIC_ANALYZER=ON"
|
||||
'-DLLVM_ENABLE_PROJECTS="clang;openmp" -DLLVM_BUILD_RUNTIME=OFF '
|
||||
"-DCLANG_ENABLE_STATIC_ANALYZER=ON"
|
||||
)
|
||||
|
||||
|
||||
|
||||
@ -58,8 +58,8 @@ not provide all C-ABI functionality (such as Windows).
|
||||
cmake -S <path-to-llvm-project-source>/llvm \
|
||||
-GNinja \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DLLVM_ENABLE_PROJECTS="clang;flang" \
|
||||
-DLLVM_ENABLE_RUNTIMES="compiler-rt;flang-rt;openmp" \
|
||||
-DLLVM_ENABLE_PROJECTS="clang;flang;openmp" \
|
||||
-DLLVM_ENABLE_RUNTIMES="compiler-rt;flang-rt" \
|
||||
...
|
||||
```
|
||||
|
||||
|
||||
@ -135,7 +135,18 @@ if (NOT CMAKE_CROSSCOMPILING)
|
||||
# Special case for omp_lib.mod, because its source comes from openmp/runtime/src/include.
|
||||
# It also produces two module files: omp_lib.mod and omp_lib_kinds.mod. Compile these
|
||||
# files only if OpenMP support has been configured.
|
||||
if ("openmp" IN_LIST LLVM_ENABLE_RUNTIMES)
|
||||
if (LLVM_TOOL_OPENMP_BUILD)
|
||||
message(STATUS "OpenMP runtime support enabled via LLVM_ENABLE_PROJECTS, building omp_lib.mod")
|
||||
set(base ${FLANG_INTRINSIC_MODULES_DIR}/omp_lib)
|
||||
add_custom_command(OUTPUT ${base}.mod ${base}_kinds.mod
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${FLANG_INTRINSIC_MODULES_DIR}
|
||||
COMMAND flang -cpp -fsyntax-only ${opts} -module-dir ${FLANG_INTRINSIC_MODULES_DIR}
|
||||
${CMAKE_BINARY_DIR}/projects/openmp/runtime/src/omp_lib.F90
|
||||
DEPENDS flang ${FLANG_INTRINSIC_MODULES_DIR}/iso_c_binding.mod ${CMAKE_BINARY_DIR}/projects/openmp/runtime/src/omp_lib.F90 ${depends}
|
||||
)
|
||||
list(APPEND MODULE_FILES ${base}.mod ${base}_kinds.mod)
|
||||
install(FILES ${base}.mod ${base}_kinds.mod DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/flang" COMPONENT flang-module-interfaces)
|
||||
elseif ("openmp" IN_LIST LLVM_ENABLE_RUNTIMES)
|
||||
message(STATUS "OpenMP runtime support enabled via LLVM_ENABLE_RUNTIMES, assuming omp_lib.mod is built there")
|
||||
else()
|
||||
message(WARNING "Not building omp_lib.mod, no OpenMP runtime in either LLVM_ENABLE_PROJECTS or LLVM_ENABLE_RUNTIMES")
|
||||
@ -149,7 +160,11 @@ set_target_properties(module_files PROPERTIES FOLDER "Flang/Resources")
|
||||
|
||||
# TODO Move this to a more suitable location
|
||||
# Copy the generated omp_lib.h header file, if OpenMP support has been configured.
|
||||
if ("openmp" IN_LIST LLVM_ENABLE_RUNTIMES)
|
||||
if (LLVM_TOOL_OPENMP_BUILD)
|
||||
message(STATUS "OpenMP runtime support enabled via LLVM_ENABLE_PROJECTS, building omp_lib.h")
|
||||
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)
|
||||
install(FILES ${CMAKE_BINARY_DIR}/include/flang/OpenMP/omp_lib.h DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/flang/OpenMP")
|
||||
elseif ("openmp" IN_LIST LLVM_ENABLE_RUNTIMES)
|
||||
message(STATUS "OpenMP runtime support enabled via LLVM_ENABLE_RUNTIMES, assuming omp_lib.h is built there")
|
||||
else()
|
||||
message(STATUS "Not copying omp_lib.h, no OpenMP runtime in either LLVM_ENABLE_PROJECTS or LLVM_ENABLE_RUNTIMES")
|
||||
|
||||
@ -104,7 +104,12 @@ endif()
|
||||
# This allows an easy way of setting up a build directory for llvm and another
|
||||
# one for llvm+clang+... using the same sources.
|
||||
# These projects will be included when "all" is included in LLVM_ENABLE_PROJECTS.
|
||||
set(LLVM_ALL_PROJECTS "bolt;clang;clang-tools-extra;compiler-rt;cross-project-tests;libclc;lld;lldb;mlir;polly")
|
||||
set(LLVM_ALL_PROJECTS "bolt;clang;clang-tools-extra;compiler-rt;cross-project-tests;libclc;lld;lldb;mlir;openmp;polly")
|
||||
if ("${CMAKE_SYSTEM_NAME}" MATCHES "AIX")
|
||||
# Disallow 'openmp' as a LLVM PROJECT on AIX as the supported way is to use
|
||||
# LLVM_ENABLE_RUNTIMES.
|
||||
list(REMOVE_ITEM LLVM_ALL_PROJECTS openmp)
|
||||
endif()
|
||||
|
||||
# The "libc" project, which is not part of "all" projects, could be included in
|
||||
# LLVM_ENABLE_PROJECTS. It is preferred to include "libc" in
|
||||
@ -121,15 +126,6 @@ if( LLVM_ENABLE_PROJECTS STREQUAL "all" )
|
||||
set( LLVM_ENABLE_PROJECTS ${LLVM_ALL_PROJECTS})
|
||||
endif()
|
||||
|
||||
if ("openmp" IN_LIST LLVM_ENABLE_PROJECTS)
|
||||
message(FATAL_ERROR "
|
||||
Support for the LLVM_ENABLE_PROJECTS=openmp build mode has been removed. Please switch to the bootstrapping build
|
||||
cmake -S <llvm-project>/llvm -B build -DLLVM_ENABLE_PROJECTS=clang -DLLVM_ENABLE_RUNTIMES=openmp
|
||||
or to the runtimes default build
|
||||
cmake -S <llvm-project>/runtimes -B build -DLLVM_ENABLE_RUNTIMES=openmp
|
||||
")
|
||||
endif()
|
||||
|
||||
foreach(proj ${LLVM_ENABLE_PROJECTS})
|
||||
if (NOT proj STREQUAL "llvm" AND NOT "${proj}" IN_LIST LLVM_KNOWN_PROJECTS)
|
||||
MESSAGE(FATAL_ERROR "${proj} isn't a known project: ${LLVM_KNOWN_PROJECTS}. Did you mean to enable it as a runtime in LLVM_ENABLE_RUNTIMES?")
|
||||
@ -199,6 +195,13 @@ if ("offload" IN_LIST LLVM_ENABLE_PROJECTS)
|
||||
"https://openmp.llvm.org/ for building the runtimes.")
|
||||
endif()
|
||||
|
||||
if ("openmp" IN_LIST LLVM_ENABLE_PROJECTS)
|
||||
message(WARNING "Using LLVM_ENABLE_PROJECTS=openmp is deprecated now, and will "
|
||||
"become a fatal error in a future release. Please use "
|
||||
"-DLLVM_ENABLE_RUNTIMES=openmp or see the instructions at "
|
||||
"https://openmp.llvm.org/ for building the runtimes.")
|
||||
endif()
|
||||
|
||||
if ("flang-rt" IN_LIST LLVM_ENABLE_RUNTIMES)
|
||||
if (NOT "flang" IN_LIST LLVM_ENABLE_PROJECTS)
|
||||
message(FATAL_ERROR "Flang is not enabled, but is required for the Flang-RT runtime")
|
||||
|
||||
@ -688,6 +688,13 @@ if(build_runtimes)
|
||||
# We need to add the runtimes as a dependency because compiler-rt can be
|
||||
# built as part of runtimes and we need the profile runtime for PGO
|
||||
add_dependencies(clang-bootstrap-deps runtimes)
|
||||
# The bootstrap build will attempt to configure the offload runtime
|
||||
# before the openmp project which will error out due to failing to
|
||||
# find libomp.so. We must add omp as a dependency before runtimes
|
||||
# are configured.
|
||||
if("openmp" IN_LIST LLVM_ENABLE_PROJECTS AND "offload" IN_LIST LLVM_ENABLE_RUNTIMES)
|
||||
add_dependencies(clang-bootstrap-deps omp)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(LLVM_INCLUDE_TESTS)
|
||||
|
||||
@ -27,4 +27,3 @@ Device Runtime
|
||||
always build support for AMDGPU and NVPTX targets.
|
||||
- Updated the offloading entry format but retained backwards compatibility with
|
||||
the old format.
|
||||
- The LLVM_ENABLE_PROJECTS=openmp build mode has been removed.
|
||||
@ -74,7 +74,9 @@ information about building LLVM is available `here
|
||||
are targeted by OpenMP are enabled. That can be done by adjusting the CMake
|
||||
option ``LLVM_TARGETS_TO_BUILD``. The corresponding targets for offloading to AMD
|
||||
and Nvidia GPUs are ``"AMDGPU"`` and ``"NVPTX"``, respectively. By default,
|
||||
Clang will be built with all backends enabled.
|
||||
Clang will be built with all backends enabled. When building with
|
||||
``LLVM_ENABLE_RUNTIMES="openmp"`` OpenMP should not be enabled in
|
||||
``LLVM_ENABLE_PROJECTS`` because it is enabled by default.
|
||||
|
||||
Support for the device library comes from a separate build of the OpenMP library
|
||||
that targets the GPU architecture. Building it requires enabling the runtime
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user