Skip to content

Conversation

RossBrunton
Copy link
Contributor

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.

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.
@llvmbot
Copy link
Member

llvmbot commented Sep 19, 2025

@llvm/pr-subscribers-offload

Author: Ross Brunton (RossBrunton)

Changes

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.


Full diff: https://github.com/llvm/llvm-project/pull/159775.diff

4 Files Affected:

  • (modified) llvm/runtimes/CMakeLists.txt (+1-1)
  • (modified) offload/CMakeLists.txt (+11)
  • (modified) offload/test/CMakeLists.txt (+2)
  • (modified) offload/tools/CMakeLists.txt (+3)
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()

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants