Skip to content

Commit 04b26f0

Browse files
authored
[offload] Standalone build fixes (#118173)
A fair number of fixes to get standalone builds of offload working — mostly copying missing bits from openmp. It's almost ready — I still need to figure out why some of the tsts aren't linking to the right libraries.
1 parent 4d70f5f commit 04b26f0

File tree

6 files changed

+38
-20
lines changed

6 files changed

+38
-20
lines changed

offload/CMakeLists.txt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ if (OPENMP_STANDALONE_BUILD)
6464
# Do not use OPENMP_LIBDIR_SUFFIX directly, use OPENMP_INSTALL_LIBDIR.
6565
set(OPENMP_INSTALL_LIBDIR "lib${OPENMP_LIBDIR_SUFFIX}")
6666

67+
# Used by llvm_add_tool() and tests.
68+
set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR})
69+
6770
# Group test settings.
6871
set(OPENMP_TEST_C_COMPILER ${CMAKE_C_COMPILER} CACHE STRING
6972
"C compiler to use for testing OpenMP runtime libraries.")
@@ -129,6 +132,7 @@ include(LibomptargetGetDependencies)
129132
# Set up testing infrastructure.
130133
include(OpenMPTesting)
131134

135+
include(CheckCXXCompilerFlag)
132136
check_cxx_compiler_flag(-Werror=global-constructors OFFLOAD_HAVE_WERROR_CTOR)
133137

134138
# LLVM source tree is required at build time for libomptarget
@@ -286,6 +290,26 @@ if(OPENMP_STANDALONE_BUILD)
286290
${LLVM_LIBRARY_DIRS}
287291
REQUIRED
288292
)
293+
294+
find_path (
295+
LIBOMP_INCLUDE_DIR
296+
NAMES
297+
omp.h
298+
HINTS
299+
${COMPILER_RESOURCE_DIR}/include
300+
${CMAKE_INSTALL_PREFIX}/include
301+
)
302+
303+
get_filename_component(LIBOMP_LIBRARY_DIR ${LIBOMP_STANDALONE} DIRECTORY)
304+
305+
set(OPENMP_TEST_FLAGS "" CACHE STRING
306+
"Extra compiler flags to send to the test compiler.")
307+
set(OPENMP_TEST_OPENMP_FLAGS ${OPENMP_TEST_COMPILER_OPENMP_FLAGS} CACHE STRING
308+
"OpenMP compiler flag to use for testing OpenMP runtime libraries.")
309+
set(LIBOMPTARGET_OPENMP_HEADER_FOLDER "${LIBOMP_INCLUDE_DIR}" CACHE STRING
310+
"Path to folder containing omp.h")
311+
set(LIBOMPTARGET_OPENMP_HOST_RTL_FOLDER "${LIBOMP_LIBRARY_DIR}" CACHE STRING
312+
"Path to folder containing libomp.so, and libLLVMSupport.so with profiling enabled")
289313
endif()
290314

291315
macro(pythonize_bool var)

offload/cmake/OpenMPTesting.cmake

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,6 @@ function(find_standalone_test_dependencies)
3737
return()
3838
endif()
3939

40-
find_program(OFFLOAD_DEVICE_INFO_EXECUTABLE
41-
NAMES llvm-offload-device-info
42-
PATHS ${OPENMP_LLVM_TOOLS_DIR})
43-
if (NOT OFFLOAD_DEVICE_INFO_EXECUTABLE)
44-
message(STATUS "Cannot find 'llvm-offload-device-info'.")
45-
message(STATUS "Please put 'not' in your PATH, set OFFLOAD_DEVICE_INFO_EXECUTABLE to its full path, or point OPENMP_LLVM_TOOLS_DIR to its directory.")
46-
message(WARNING "The check targets will not be available!")
47-
set(ENABLE_CHECK_TARGETS FALSE PARENT_SCOPE)
48-
return()
49-
endif()
50-
5140
find_program(OPENMP_NOT_EXECUTABLE
5241
NAMES not
5342
PATHS ${OPENMP_LLVM_TOOLS_DIR})
@@ -82,8 +71,8 @@ else()
8271
set(OPENMP_FILECHECK_EXECUTABLE ${LLVM_RUNTIME_OUTPUT_INTDIR}/FileCheck)
8372
endif()
8473
set(OPENMP_NOT_EXECUTABLE ${LLVM_RUNTIME_OUTPUT_INTDIR}/not)
85-
set(OFFLOAD_DEVICE_INFO_EXECUTABLE ${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-offload-device-info)
8674
endif()
75+
set(OFFLOAD_DEVICE_INFO_EXECUTABLE ${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-offload-device-info)
8776

8877
# Macro to extract information about compiler from file. (no own scope)
8978
macro(extract_test_compiler_information lang file)
@@ -136,7 +125,7 @@ if (${OPENMP_STANDALONE_BUILD})
136125
# project is built which is too late for detecting the compiler...
137126
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DetectTestCompiler)
138127
execute_process(
139-
COMMAND ${CMAKE_COMMAND} -G${CMAKE_GENERATOR} ${CMAKE_CURRENT_LIST_DIR}/DetectTestCompiler
128+
COMMAND ${CMAKE_COMMAND} -G${CMAKE_GENERATOR} ${CMAKE_CURRENT_SOURCE_DIR}/../openmp/cmake/DetectTestCompiler
140129
-DCMAKE_C_COMPILER=${OPENMP_TEST_C_COMPILER}
141130
-DCMAKE_CXX_COMPILER=${OPENMP_TEST_CXX_COMPILER}
142131
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DetectTestCompiler

offload/plugins-nextgen/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ function(add_target_library target_name lib_name)
1212
CodeGen
1313
Core
1414
Extensions
15+
FrontendOffloading
1516
InstCombine
1617
Instrumentation
1718
IPO
@@ -20,6 +21,7 @@ function(add_target_library target_name lib_name)
2021
MC
2122
Object
2223
Passes
24+
ProfileData
2325
Remarks
2426
ScalarOpts
2527
Support

offload/plugins-nextgen/amdgpu/CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,11 @@ target_include_directories(omptarget.rtl.amdgpu PRIVATE
1010

1111
if(hsa-runtime64_FOUND AND NOT "amdgpu" IN_LIST LIBOMPTARGET_DLOPEN_PLUGINS)
1212
message(STATUS "Building AMDGPU plugin linked against libhsa")
13-
target_link_libraries(omptarget.rtl.amdgpu PRIVATE hsa-runtime64::hsa-runtime64 LLVMFrontendOffloading)
13+
target_link_libraries(omptarget.rtl.amdgpu PRIVATE hsa-runtime64::hsa-runtime64)
1414
else()
1515
message(STATUS "Building AMDGPU plugin for dlopened libhsa")
1616
target_include_directories(omptarget.rtl.amdgpu PRIVATE dynamic_hsa)
1717
target_sources(omptarget.rtl.amdgpu PRIVATE dynamic_hsa/hsa.cpp)
18-
target_link_libraries(omptarget.rtl.amdgpu PRIVATE LLVMFrontendOffloading)
1918
endif()
2019

2120
# Configure testing for the AMDGPU plugin. We will build tests if we could a

offload/plugins-nextgen/common/CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ add_library(PluginCommon OBJECT
77
src/RPC.cpp
88
src/Utils/ELF.cpp
99
)
10-
add_dependencies(PluginCommon intrinsics_gen LLVMProfileData)
10+
add_dependencies(PluginCommon intrinsics_gen)
1111

1212
# Only enable JIT for those targets that LLVM can support.
1313
set(supported_jit_targets AMDGPU NVPTX)
@@ -44,7 +44,6 @@ target_compile_definitions(PluginCommon PRIVATE
4444

4545
target_compile_options(PluginCommon PUBLIC ${offload_compile_flags})
4646
target_link_options(PluginCommon PUBLIC ${offload_link_flags})
47-
target_link_libraries(PluginCommon PRIVATE LLVMProfileData)
4847

4948
target_include_directories(PluginCommon PUBLIC
5049
${CMAKE_CURRENT_SOURCE_DIR}/include

offload/test/CMakeLists.txt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,19 @@ if(CUDAToolkit_FOUND)
2828
get_filename_component(CUDA_LIBDIR "${CUDA_cudart_static_LIBRARY}" DIRECTORY)
2929
endif()
3030

31+
set(OMP_DEPEND)
32+
if(TARGET omp)
33+
set(OMP_DEPEND omp)
34+
endif()
35+
3136
string(REGEX MATCHALL "([^\ ]+\ |[^\ ]+$)" SYSTEM_TARGETS "${LIBOMPTARGET_SYSTEM_TARGETS}")
3237
foreach(CURRENT_TARGET IN LISTS SYSTEM_TARGETS)
3338
string(STRIP "${CURRENT_TARGET}" CURRENT_TARGET)
3439

3540
add_offload_testsuite(check-libomptarget-${CURRENT_TARGET}
3641
"Running libomptarget tests"
3742
${CMAKE_CURRENT_BINARY_DIR}/${CURRENT_TARGET}
38-
DEPENDS omptarget omp ${LIBOMPTARGET_TESTED_PLUGINS}
43+
DEPENDS omptarget ${OMP_DEPEND} ${LIBOMPTARGET_TESTED_PLUGINS}
3944
ARGS ${LIBOMPTARGET_LIT_ARG_LIST})
4045
list(APPEND LIBOMPTARGET_LIT_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/${CURRENT_TARGET})
4146

@@ -49,12 +54,12 @@ add_offload_testsuite(check-libomptarget
4954
"Running libomptarget tests"
5055
${LIBOMPTARGET_LIT_TESTSUITES}
5156
EXCLUDE_FROM_CHECK_ALL
52-
DEPENDS omptarget omp ${LIBOMPTARGET_TESTED_PLUGINS}
57+
DEPENDS llvm-offload-device-info omptarget ${OMP_DEPEND} ${LIBOMPTARGET_TESTED_PLUGINS}
5358
ARGS ${LIBOMPTARGET_LIT_ARG_LIST})
5459

5560
add_offload_testsuite(check-offload
5661
"Running libomptarget tests"
5762
${LIBOMPTARGET_LIT_TESTSUITES}
5863
EXCLUDE_FROM_CHECK_ALL
59-
DEPENDS omptarget omp ${LIBOMPTARGET_TESTED_PLUGINS}
64+
DEPENDS llvm-offload-device-info omptarget ${OMP_DEPEND} ${LIBOMPTARGET_TESTED_PLUGINS}
6065
ARGS ${LIBOMPTARGET_LIT_ARG_LIST})

0 commit comments

Comments
 (0)