Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion sycl/include/sycl/detail/os_util.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -120,9 +120,13 @@ fn *dynLookupFunction(const char *WinName, const char *LinName,
const char *FunName) {
return reinterpret_cast<fn *>(dynLookup(WinName, LinName, FunName));
}
// On Linux, the name of OpenCL that was used to link against may be either
// `OpenCL.so`, `OpenCL.so.1` or possibly anything else.
// `libur_adapter_opencl.so` is a more stable name, since it is hardcoded into
// the loader.
#define __SYCL_OCL_CALL(FN, ...) \
(sycl::_V1::detail::dynLookupFunction<decltype(FN)>( \
"OpenCL", "libOpenCL.so", #FN)(__VA_ARGS__))
"OpenCL", "libur_adapter_opencl.so", #FN)(__VA_ARGS__))

} // namespace detail
} // namespace _V1
Expand Down
12 changes: 10 additions & 2 deletions sycl/unittests/mock_opencl/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
get_target_property(SYCL_BINARY_DIR sycl-toolchain BINARY_DIR)

# Linux looks up ur_adapter_opencl rather than libOpenCL.
# On Windows, this is copied into libOpenCL.dll.
if(WIN32)
set(LIBNAME OpenCL)
else()
set(LIBNAME ur_adapter_opencl)
endif()

add_library(mockOpenCL SHARED EXCLUDE_FROM_ALL mock_opencl.cpp)
set_target_properties(mockOpenCL PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${SYCL_BINARY_DIR}/unittests/lib
LIBRARY_OUTPUT_NAME OpenCL
LIBRARY_OUTPUT_NAME ${LIBNAME}
RUNTIME_OUTPUT_DIRECTORY ${SYCL_BINARY_DIR}/unittests/lib
RUNTIME_OUTPUT_NAME OpenCL
RUNTIME_OUTPUT_NAME ${LIBNAME}
)