xref: /llvm-project/offload/plugins-nextgen/host/CMakeLists.txt (revision bdf727065b581c45b68a81090272f497f1ce5485)
1*bdf72706Swangleiset(supported_targets x86_64 aarch64 ppc64 ppc64le riscv64 s390x loongarch64)
2330d8983SJohannes Doerfertif(NOT ${CMAKE_SYSTEM_PROCESSOR} IN_LIST supported_targets)
3770d9283SJoseph Huber  message(STATUS "Not building ${machine} NextGen offloading plugin")
4330d8983SJohannes Doerfert  return()
5330d8983SJohannes Doerfertendif()
6330d8983SJohannes Doerfert
7330d8983SJohannes Doerfertset(machine ${CMAKE_SYSTEM_PROCESSOR})
8330d8983SJohannes Doerfertif(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64le$")
9330d8983SJohannes Doerfert  set(machine ppc64)
10330d8983SJohannes Doerfertendif()
11330d8983SJohannes Doerfert
12330d8983SJohannes Doerfert# Create the library and add the default arguments.
1372b0c11cSJoseph Huberadd_target_library(omptarget.rtl.host ${machine})
14330d8983SJohannes Doerfert
1572b0c11cSJoseph Hubertarget_sources(omptarget.rtl.host PRIVATE src/rtl.cpp)
16330d8983SJohannes Doerfert
17330d8983SJohannes Doerfertif(LIBOMPTARGET_DEP_LIBFFI_FOUND)
18770d9283SJoseph Huber  message(STATUS "Building ${machine} plugin linked with libffi")
19330d8983SJohannes Doerfert  if(FFI_STATIC_LIBRARIES)
2072b0c11cSJoseph Huber    target_link_libraries(omptarget.rtl.host PRIVATE FFI::ffi_static)
21330d8983SJohannes Doerfert  else()
2272b0c11cSJoseph Huber    target_link_libraries(omptarget.rtl.host PRIVATE FFI::ffi)
23330d8983SJohannes Doerfert  endif()
24330d8983SJohannes Doerfertelse()
25770d9283SJoseph Huber  message(STATUS "Building ${machine} plugin for dlopened libffi")
2672b0c11cSJoseph Huber  target_sources(omptarget.rtl.host PRIVATE dynamic_ffi/ffi.cpp)
2772b0c11cSJoseph Huber  target_include_directories(omptarget.rtl.host PRIVATE dynamic_ffi)
28330d8983SJohannes Doerfertendif()
29330d8983SJohannes Doerfert
3072b0c11cSJoseph Hubertarget_include_directories(omptarget.rtl.host PRIVATE
31330d8983SJohannes Doerfert                           ${LIBOMPTARGET_INCLUDE_DIR})
32330d8983SJohannes Doerfert
33330d8983SJohannes Doerfertif(LIBOMPTARGET_DEP_LIBFFI_FOUND)
3472b0c11cSJoseph Huber  list(APPEND LIBOMPTARGET_TESTED_PLUGINS omptarget.rtl.host)
35330d8983SJohannes Doerfert  set(LIBOMPTARGET_TESTED_PLUGINS
36330d8983SJohannes Doerfert      "${LIBOMPTARGET_TESTED_PLUGINS}" PARENT_SCOPE)
37330d8983SJohannes Doerfertelse()
38770d9283SJoseph Huber  message(STATUS "Not generating ${tmachine_name} tests. LibFFI not found.")
39330d8983SJohannes Doerfertendif()
40330d8983SJohannes Doerfert
41330d8983SJohannes Doerfert# Define the target specific triples and ELF machine values.
42330d8983SJohannes Doerfertif(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64le$")
43330d8983SJohannes Doerfert  list(APPEND LIBOMPTARGET_SYSTEM_TARGETS
44330d8983SJohannes Doerfert       "powerpc64le-ibm-linux-gnu" "powerpc64le-ibm-linux-gnu-LTO")
45330d8983SJohannes Doerfert  set(LIBOMPTARGET_SYSTEM_TARGETS "${LIBOMPTARGET_SYSTEM_TARGETS}" PARENT_SCOPE)
46330d8983SJohannes Doerfertelseif(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64$")
47330d8983SJohannes Doerfert  list(APPEND LIBOMPTARGET_SYSTEM_TARGETS
48330d8983SJohannes Doerfert       "powerpc64-ibm-linux-gnu" "powerpc64-ibm-linux-gnu-LTO")
49330d8983SJohannes Doerfert  set(LIBOMPTARGET_SYSTEM_TARGETS "${LIBOMPTARGET_SYSTEM_TARGETS}" PARENT_SCOPE)
50330d8983SJohannes Doerfertelseif(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64$")
51330d8983SJohannes Doerfert  list(APPEND LIBOMPTARGET_SYSTEM_TARGETS
521a0cf245SJan Patrick Lehr       "x86_64-unknown-linux-gnu" "x86_64-unknown-linux-gnu-LTO")
53330d8983SJohannes Doerfert  set(LIBOMPTARGET_SYSTEM_TARGETS "${LIBOMPTARGET_SYSTEM_TARGETS}" PARENT_SCOPE)
54330d8983SJohannes Doerfertelseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64$")
55330d8983SJohannes Doerfert  list(APPEND LIBOMPTARGET_SYSTEM_TARGETS
56330d8983SJohannes Doerfert       "aarch64-unknown-linux-gnu" "aarch64-unknown-linux-gnu-LTO")
57330d8983SJohannes Doerfert  set(LIBOMPTARGET_SYSTEM_TARGETS "${LIBOMPTARGET_SYSTEM_TARGETS}" PARENT_SCOPE)
58330d8983SJohannes Doerfertelseif(CMAKE_SYSTEM_PROCESSOR MATCHES "s390x$")
59330d8983SJohannes Doerfert  list(APPEND LIBOMPTARGET_SYSTEM_TARGETS
60330d8983SJohannes Doerfert       "s390x-ibm-linux-gnu" "s390x-ibm-linux-gnu-LTO")
61330d8983SJohannes Doerfert  set(LIBOMPTARGET_SYSTEM_TARGETS "${LIBOMPTARGET_SYSTEM_TARGETS}" PARENT_SCOPE)
62b6bd7477Saurel32elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "riscv64$")
63b6bd7477Saurel32  list(APPEND LIBOMPTARGET_SYSTEM_TARGETS
64b6bd7477Saurel32       "riscv64-unknown-linux-gnu" "riscv64-unknown-linux-gnu-LTO")
65b6bd7477Saurel32  set(LIBOMPTARGET_SYSTEM_TARGETS "${LIBOMPTARGET_SYSTEM_TARGETS}" PARENT_SCOPE)
66*bdf72706Swangleielseif(CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64$")
67*bdf72706Swanglei  list(APPEND LIBOMPTARGET_SYSTEM_TARGETS
68*bdf72706Swanglei       "loongarch64-unknown-linux-gnu" "loongarch64-unknown-linux-gnu-LTO")
69*bdf72706Swanglei  set(LIBOMPTARGET_SYSTEM_TARGETS "${LIBOMPTARGET_SYSTEM_TARGETS}" PARENT_SCOPE)
70330d8983SJohannes Doerfertendif()
71