10
10
#
11
11
##===----------------------------------------------------------------------===##
12
12
13
+ cmake_minimum_required (VERSION 3.20.0 )
14
+
15
+ if ("${CMAKE_SOURCE_DIR} " STREQUAL "${CMAKE_CURRENT_SOURCE_DIR} " )
16
+ set (OPENMP_STANDALONE_BUILD TRUE )
17
+ project (offload C CXX ASM )
18
+ endif ()
19
+
13
20
set (ENABLE_LIBOMPTARGET ON )
14
21
# Currently libomptarget cannot be compiled on Windows or MacOS X.
15
22
# Since the device plugins are only supported on Linux anyway,
@@ -35,11 +42,12 @@ endif()
35
42
# TODO: Leftover from the move, could probably be just LLVM_LIBDIR_SUFFIX everywhere.
36
43
set (OFFLOAD_INSTALL_LIBDIR "lib${LLVM_LIBDIR_SUFFIX} " )
37
44
38
- set (LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR} /cmake )
45
+ set (LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR} /../ cmake )
39
46
40
47
# Add path for custom modules
41
48
list (INSERT CMAKE_MODULE_PATH 0
42
49
"${CMAKE_CURRENT_SOURCE_DIR} /cmake"
50
+ "${CMAKE_CURRENT_SOURCE_DIR} /cmake/Modules"
43
51
"${LLVM_COMMON_CMAKE_UTILS} /Modules"
44
52
)
45
53
@@ -190,6 +198,58 @@ if (LIBOMPTARGET_USE_LTO)
190
198
list (APPEND offload_link_flags ${CMAKE_CXX_COMPILE_OPTIONS_IPO} )
191
199
endif ()
192
200
201
+ if (OPENMP_STANDALONE_BUILD )
202
+ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
203
+ execute_process (
204
+ OUTPUT_STRIP_TRAILING_WHITESPACE
205
+ COMMAND ${CMAKE_CXX_COMPILER} --print-resource-dir
206
+ RESULT_VARIABLE COMMAND_RETURN_CODE
207
+ OUTPUT_VARIABLE COMPILER_RESOURCE_DIR
208
+ )
209
+ endif ()
210
+
211
+ set (LIBOMP_HAVE_OMPT_SUPPORT FALSE )
212
+ set (LIBOMP_OMPT_SUPPORT FALSE )
213
+
214
+ find_path (
215
+ LIBOMP_OMP_TOOLS_INCLUDE_DIR
216
+ NAMES
217
+ omp-tools.h
218
+ HINTS
219
+ ${COMPILER_RESOURCE_DIR} /include
220
+ ${CMAKE_INSTALL_PREFIX} /include
221
+ )
222
+
223
+ if (LIBOMP_OMP_TOOLS_INCLUDE_DIR )
224
+ set (LIBOMP_HAVE_OMPT_SUPPORT TRUE )
225
+ set (LIBOMP_OMPT_SUPPORT TRUE )
226
+ endif ()
227
+
228
+ # LLVM_LIBRARY_DIRS set by find_package(LLVM) in LibomptargetGetDependencies
229
+ find_library (
230
+ LIBOMP_STANDALONE
231
+ NAMES
232
+ omp
233
+ HINTS
234
+ ${CMAKE_INSTALL_PREFIX} /lib
235
+ ${LLVM_LIBRARY_DIRS}
236
+ REQUIRED
237
+ )
238
+ # Check LIBOMP_HAVE_VERSION_SCRIPT_FLAG
239
+ include (LLVMCheckCompilerLinkerFlag )
240
+ if (NOT APPLE )
241
+ llvm_check_compiler_linker_flag (C "-Wl,--version-script=${CMAKE_CURRENT_LIST_DIR} /../openmp/runtime/src/exports_test_so.txt" LIBOMP_HAVE_VERSION_SCRIPT_FLAG )
242
+ endif ()
243
+
244
+ macro (pythonize_bool var )
245
+ if (${var} )
246
+ set (${var} True )
247
+ else ()
248
+ set (${var} False )
249
+ endif ()
250
+ endmacro ()
251
+ endif ()
252
+
193
253
# OMPT support for libomptarget
194
254
# Follow host OMPT support and check if host support has been requested.
195
255
# LIBOMP_HAVE_OMPT_SUPPORT indicates whether host OMPT support has been implemented.
@@ -216,7 +276,9 @@ pythonize_bool(LIBOMPTARGET_GPU_LIBC_SUPPORT)
216
276
217
277
set (LIBOMPTARGET_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /include )
218
278
message (STATUS "OpenMP tools dir in libomptarget: ${LIBOMP_OMP_TOOLS_INCLUDE_DIR} " )
219
- include_directories (${LIBOMP_OMP_TOOLS_INCLUDE_DIR} )
279
+ if (LIBOMP_OMP_TOOLS_INCLUDE_DIR )
280
+ include_directories (${LIBOMP_OMP_TOOLS_INCLUDE_DIR} )
281
+ endif ()
220
282
221
283
set (LIBOMPTARGET_LLVM_LIBRARY_DIR "${LLVM_LIBRARY_DIR} " CACHE STRING
222
284
"Path to folder containing llvm library libomptarget.so" )
0 commit comments