[OpenMP] Disable building `libomptarget` on 32-bit systems
authorShilei Tian <i@tianshilei.me>
Wed, 18 Jan 2023 18:39:58 +0000 (13:39 -0500)
committerShilei Tian <i@tianshilei.me>
Wed, 18 Jan 2023 18:40:08 +0000 (13:40 -0500)
There are plenty of assumptions in `libomptarget` and the device runtime
about the pointer size or `size_t`, etc. 32-bit systems are not supported. There
is no point to refine whole things to make it portable. This patch simply disables
building on 32-bit systems.

Fix #60121.

Reviewed By: jdoerfert

Differential Revision: https://reviews.llvm.org/D142023

openmp/CMakeLists.txt

index 287d15d..a87ea2f 100644 (file)
@@ -74,7 +74,8 @@ set(ENABLE_LIBOMPTARGET ON)
 # Currently libomptarget cannot be compiled on Windows or MacOS X.
 # Since the device plugins are only supported on Linux anyway,
 # there is no point in trying to compile libomptarget on other OSes.
-if (APPLE OR WIN32 OR NOT OPENMP_HAVE_STD_CPP17_FLAG)
+# 32-bit systems are not supported either.
+if (APPLE OR WIN32 OR NOT OPENMP_HAVE_STD_CPP17_FLAG OR NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
   set(ENABLE_LIBOMPTARGET OFF)
 endif()
 
@@ -100,6 +101,8 @@ if (OPENMP_ENABLE_LIBOMPTARGET)
     message(FATAL_ERROR "libomptarget cannot be built on Windows and MacOS X!")
   elseif (NOT OPENMP_HAVE_STD_CPP17_FLAG)
     message(FATAL_ERROR "Host compiler must support C++17 to build libomptarget!")
+  elseif (NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
+    message(FATAL_ERROR "libomptarget on 32-bit systems are not supported!")
   endif()
 
   add_subdirectory(libomptarget)