[llvm] [Offload] Allow building liboffload without libomptarget (PR #159775)
Ross Brunton via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 19 06:13:22 PDT 2025
https://github.com/RossBrunton created https://github.com/llvm/llvm-project/pull/159775
This patch makes `LLVM_ENABLE_RUNTIMES="offload"` build. The
target `libomptarget` will not be available, but `LLVMOffload` will
still be built.
The check target `check-offload` is not available (it has a mix of
both liboffload and libomptarget), but `check-offload-unit` is and
passes.
>From 0bca72641ce4ad186544f20f05e7046b4eb7e90e Mon Sep 17 00:00:00 2001
From: Ross Brunton <ross at codeplay.com>
Date: Wed, 10 Sep 2025 11:14:53 +0100
Subject: [PATCH] [Offload] Allow building liboffload without libomptarget
This patch makes `LLVM_ENABLE_RUNTIMES="offload"` build. The
target `libomptarget` will not be available, but `LLVMOffload` will
still be built.
The check target `check-offload` is not available (it has a mix of
both liboffload and libomptarget), but `check-offload-unit` is and
passes.
---
llvm/runtimes/CMakeLists.txt | 2 +-
offload/CMakeLists.txt | 11 +++++++++++
offload/test/CMakeLists.txt | 2 ++
offload/tools/CMakeLists.txt | 3 +++
4 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/llvm/runtimes/CMakeLists.txt b/llvm/runtimes/CMakeLists.txt
index c98d12ce7992d..90f93c569fdd2 100644
--- a/llvm/runtimes/CMakeLists.txt
+++ b/llvm/runtimes/CMakeLists.txt
@@ -209,7 +209,7 @@ foreach(entry ${runtimes})
string(REPLACE "-" "_" canon_name ${name})
string(TOUPPER ${canon_name} canon_name)
list(APPEND prefixes ${canon_name})
- if (${canon_name} STREQUAL "OPENMP")
+ if (${canon_name} STREQUAL "OPENMP" OR ${canon_name} STREQUAL "OFFLOAD")
list(APPEND prefixes "LIBOMP" "LIBOMPTARGET")
endif()
# Many compiler-rt options start with SANITIZER_ and DARWIN_ rather than
diff --git a/offload/CMakeLists.txt b/offload/CMakeLists.txt
index b277380783500..2385e6245fc84 100644
--- a/offload/CMakeLists.txt
+++ b/offload/CMakeLists.txt
@@ -24,6 +24,15 @@ elseif(NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
return()
endif()
+set(OPENMP_ENABLED OFF)
+if("openmp" IN_LIST LLVM_ENABLE_RUNTIMES)
+ set(OPENMP_ENABLED ON)
+endif()
+set(LIBOFFLOAD_ENABLED OFF)
+if("offload" IN_LIST LLVM_ENABLE_RUNTIMES)
+ set(OFFLOAD_ENABLED ON)
+endif()
+
set(OFFLOAD_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
if(OPENMP_STANDALONE_BUILD)
@@ -376,7 +385,9 @@ add_subdirectory(tools)
add_subdirectory(docs)
# Build target agnostic offloading library.
+if(OPENMP_ENABLED)
add_subdirectory(libomptarget)
+endif()
add_subdirectory(liboffload)
diff --git a/offload/test/CMakeLists.txt b/offload/test/CMakeLists.txt
index 711621de9075d..667014ef5d746 100644
--- a/offload/test/CMakeLists.txt
+++ b/offload/test/CMakeLists.txt
@@ -33,6 +33,7 @@ if(TARGET omp)
set(OMP_DEPEND omp)
endif()
+if(OPENMP_ENABLED)
string(REGEX MATCHALL "([^\ ]+\ |[^\ ]+$)" SYSTEM_TARGETS "${LIBOMPTARGET_SYSTEM_TARGETS}")
foreach(CURRENT_TARGET IN LISTS SYSTEM_TARGETS)
string(STRIP "${CURRENT_TARGET}" CURRENT_TARGET)
@@ -63,6 +64,7 @@ add_offload_testsuite(check-offload
EXCLUDE_FROM_CHECK_ALL
DEPENDS llvm-offload-device-info omptarget ${OMP_DEPEND} ${LIBOMPTARGET_TESTED_PLUGINS}
ARGS ${LIBOMPTARGET_LIT_ARG_LIST})
+endif()
# Add liboffload unit tests - the test binary will run on all available devices
configure_lit_site_cfg(
diff --git a/offload/tools/CMakeLists.txt b/offload/tools/CMakeLists.txt
index 13772a4a675e5..a877922081710 100644
--- a/offload/tools/CMakeLists.txt
+++ b/offload/tools/CMakeLists.txt
@@ -13,4 +13,7 @@ macro(add_openmp_tool_symlink name)
endmacro()
add_subdirectory(deviceinfo)
+
+if(OPENMP_ENABLED)
add_subdirectory(kernelreplay)
+endif()
More information about the llvm-commits
mailing list