@@ -48,6 +48,10 @@ set(LIBZE_SET_LOADER_FILENAME "" CACHE STRING "User-provided Level Zero Loader f
4848
4949set (LIBZE_DEFAULT_LOADER_FILENAME "libze_loader.so.1" CACHE STRING "Default Level Zero Loader filename" )
5050
51+ set (LIBCL_SET_LOADER_FILENAME "" CACHE STRING "User-provided OpenCL ICD Loader filename" )
52+
53+ set (LIBCL_DEFAULT_LOADER_FILENAME "libOpenCL.so.1" CACHE STRING "Default OpenCL ICD Loader filename" )
54+
5155# Minimum version requirement only when oneAPI dpcpp is used.
5256if (DPCTL_DPCPP_FROM_ONEAPI)
5357 find_package (IntelSyclCompiler 2021.3.0 REQUIRED )
@@ -65,21 +69,24 @@ if(DPCTL_ENABLE_L0_PROGRAM_CREATION)
6569 endif ()
6670 if (UNIX )
6771 if ("x${LIBZE_SET_LOADER_FILENAME} " STREQUAL "x" )
68- find_library (PI_LEVEL_ZERO_LIB
69- NAMES pi_level_zero ur_adapter_level_zero
72+ find_library (LEVEL_ZERO_LIB
73+ NAMES ur_adapter_level_zero
7074 HINTS ${IntelSyclCompiler_LIBRARY_DIR}
7175 )
72- find_program (READELF_PROG readelf )
73- find_program (GREP_PROG grep )
74- execute_process (
75- COMMAND ${READELF_PROG} -d ${PI_LEVEL_ZERO_LIB}
76- COMMAND ${GREP_PROG} libze_loader
77- COMMAND ${GREP_PROG} -Po "libze_loader[^\] ]*"
78- OUTPUT_VARIABLE LIBZE_LOADER_FILENAME
79- OUTPUT_STRIP_TRAILING_WHITESPACE
80- ERROR_STRIP_TRAILING_WHITESPACE
81- )
82- # if libze_loader is statically linked, LIBZE_LOADER_FILENAME will be an empty string
76+ if (LEVEL_ZERO_LIB)
77+ find_program (READELF_PROG readelf )
78+ find_program (GREP_PROG grep )
79+ execute_process (
80+ COMMAND ${READELF_PROG} -d ${LEVEL_ZERO_LIB}
81+ COMMAND ${GREP_PROG} libze_loader
82+ COMMAND ${GREP_PROG} -Po "libze_loader[^\] ]*"
83+ OUTPUT_VARIABLE LIBZE_LOADER_FILENAME
84+ OUTPUT_STRIP_TRAILING_WHITESPACE
85+ ERROR_STRIP_TRAILING_WHITESPACE
86+ )
87+ endif ()
88+ # empty if the adapter was not found or if it links the Level Zero
89+ # loader statically
8390 if ("x${LIBZE_LOADER_FILENAME} " STREQUAL "x" )
8491 set (LIBZE_LOADER_FILENAME ${LIBZE_DEFAULT_LOADER_FILENAME} )
8592 endif ()
@@ -91,20 +98,31 @@ if(DPCTL_ENABLE_L0_PROGRAM_CREATION)
9198endif ()
9299
93100if (UNIX )
94- find_library (PI_OPENCL_LIB
95- NAMES pi_opencl ur_adapter_opencl
96- HINTS ${IntelSyclCompiler_LIBRARY_DIR}
97- )
98- find_program (READELF_PROG readelf )
99- find_program (GREP_PROG grep )
100- execute_process (
101- COMMAND ${READELF_PROG} -d ${PI_OPENCL_LIB}
102- COMMAND ${GREP_PROG} OpenCL
103- COMMAND ${GREP_PROG} -Po "libOpenCL[^\] ]*"
104- OUTPUT_VARIABLE LIBCL_LOADER_FILENAME
105- OUTPUT_STRIP_TRAILING_WHITESPACE
106- ERROR_STRIP_TRAILING_WHITESPACE
107- )
101+ if ("x${LIBCL_SET_LOADER_FILENAME} " STREQUAL "x" )
102+ find_library (OPENCL_LIB
103+ NAMES ur_adapter_opencl OpenCL
104+ HINTS ${IntelSyclCompiler_LIBRARY_DIR}
105+ )
106+ if (OPENCL_LIB)
107+ find_program (READELF_PROG readelf )
108+ find_program (GREP_PROG grep )
109+ execute_process (
110+ COMMAND ${READELF_PROG} -d ${OPENCL_LIB}
111+ COMMAND ${GREP_PROG} OpenCL
112+ COMMAND ${GREP_PROG} -Po "libOpenCL[^\] ]*"
113+ OUTPUT_VARIABLE LIBCL_LOADER_FILENAME
114+ OUTPUT_STRIP_TRAILING_WHITESPACE
115+ ERROR_STRIP_TRAILING_WHITESPACE
116+ )
117+ endif ()
118+ # Empty if the adapter was not found or if it links the ICD loader
119+ # statically
120+ if ("x${LIBCL_LOADER_FILENAME} " STREQUAL "x" )
121+ set (LIBCL_LOADER_FILENAME ${LIBCL_DEFAULT_LOADER_FILENAME} )
122+ endif ()
123+ else ()
124+ set (LIBCL_LOADER_FILENAME ${LIBCL_SET_LOADER_FILENAME} )
125+ endif ()
108126 set (LIBCL_LOADER_FILENAME ${LIBCL_LOADER_FILENAME} PARENT_SCOPE )
109127endif ()
110128
0 commit comments