Skip to content

Commit

Permalink
Adjust OpenCL clang paths
Browse files Browse the repository at this point in the history
* Adjust OpenCL clang paths

Adding support for `opencl-clang2` lib version
  • Loading branch information
bokrzesi authored and igcbot committed Feb 27, 2025
1 parent 75c4209 commit 28d2135
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 20 deletions.
39 changes: 22 additions & 17 deletions IGC/BiFModule/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -30,23 +30,28 @@ if(UNIX)
if(CCLANG_READELF_RESULT AND NOT CCLANG_READELF_RESULT EQUAL 0)
message(FATAL_ERROR "[IGC\\BiFModule] : Error occurred while executing readelf: ${CCLANG_READELF_RESULT}")
endif()
string(REGEX MATCH "\\[${COMMON_CLANG_LIB_FULL_NAME}\\.([0-9](\\.[0-9]*)*[a-zA-Z0-9]*)\\]" CCLANG_SONAME_VERSION "${CCLANG_READELF_CALL}")
set(CCLANG_SONAME_VERSION "${CMAKE_MATCH_1}")

# Check if common clang library is newer than 5.0.0 version on which we have SPIR-V support
if("${CCLANG_SONAME_VERSION}" VERSION_GREATER "5.0.0")
set_property(TARGET opencl-clang-lib PROPERTY "IMPORTED_SONAME" "${COMMON_CLANG_LIB_FULL_NAME}.${CCLANG_SONAME_VERSION}")
else()
# Handle libopencl-clang2.so
string(REPLACE "-clang${CMAKE_SHARED_LIBRARY_SUFFIX}" "-clang2${CMAKE_SHARED_LIBRARY_SUFFIX}" TEST_COMMON_CLANG_LIB_FULL_NAME ${COMMON_CLANG_LIB_FULL_NAME})
string(REGEX MATCH "\\[${TEST_COMMON_CLANG_LIB_FULL_NAME}\\.([0-9](\\.[0-9]*)*[a-zA-Z0-9]*)\\]" CCLANG_SONAME_VERSION "${CCLANG_READELF_CALL}")
set(CCLANG_SONAME_VERSION "${CMAKE_MATCH_1}")
if(NOT CCLANG_SONAME_VERSION STREQUAL "")
set_property(TARGET opencl-clang-lib PROPERTY "IMPORTED_SONAME" "${TEST_COMMON_CLANG_LIB_FULL_NAME}.${CCLANG_SONAME_VERSION}")
else()
message(FATAL_ERROR "[IGC\\BiFModule] : Version ${CCLANG_SONAME_VERSION} of library ${COMMON_CLANG_LIB_FULL_NAME} is below version 5.0.0 (where it's starts support of SPIR-V), please upgrade this library at least to version 5.0.0")
endif()
endif()

# READ ELF CALL Output:
# Dynamic section at offset 0x6957838 contains 35 entries:
# Tag Type Name/Value
# 0x0000000000000001 (NEEDED) Shared library: [libz.so.1]
# 0x0000000000000001 (NEEDED) Shared library: [libzstd.so.1]
# 0x0000000000000001 (NEEDED) Shared library: [libstdc++.so.6]
# 0x0000000000000001 (NEEDED) Shared library: [libm.so.6]
# 0x0000000000000001 (NEEDED) Shared library: [libgcc_s.so.1]
# 0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
# 0x0000000000000001 (NEEDED) Shared library: [ld-linux-x86-64.so.2]
# 0x000000000000000e (SONAME) Library soname: [libopencl-clang.so.16]
# 0x0000000000000010 (SYMBOLIC) 0x0
# 0x000000000000001d (RUNPATH) Library runpath: [$ORIGIN/../lib]
# 0x000000000000000c (INIT) 0x7ab000
# 0x000000000000000d (FINI) 0x53ed664

set(CLANG_LIB_REGEX "${COMMON_CLANG_LIB_NAME_WITH_PREFIX}([0-9]+|\\.|so)+")
string(REGEX MATCH "${CLANG_LIB_REGEX}" IMPORTED_SONAME "${CCLANG_READELF_CALL}")
message("Extraced SONAME: ${IMPORTED_SONAME}")

set_property(TARGET opencl-clang-lib PROPERTY "IMPORTED_SONAME" "${IMPORTED_SONAME}")
endif()
if (NOT CCLANG_FROM_SYSTEM)
install(FILES $<TARGET_SONAME_FILE:opencl-clang-lib> DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR} COMPONENT igc-opencl)
Expand Down
10 changes: 7 additions & 3 deletions IGC/cmake/igc_find_opencl_clang.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ if(NOT DEFINED COMMON_CLANG_LIBRARY_NAME)
set(COMMON_CLANG_LIBRARY_NAME opencl-clang)
endif()

set(COMMON_CLANG_LIB_FULL_NAME "lib${COMMON_CLANG_LIBRARY_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}")
set(COMMON_CLANG_LIB_NAME_WITH_PREFIX "lib${COMMON_CLANG_LIBRARY_NAME}")
set(COMMON_CLANG_LIB_FULL_NAME "${COMMON_CLANG_LIB_NAME_WITH_PREFIX}*${CMAKE_SHARED_LIBRARY_SUFFIX}")

find_library(CCLANG_FROM_SYSTEM ${COMMON_CLANG_LIBRARY_NAME})

Expand All @@ -43,16 +44,19 @@ endif()
###

if(CMAKE_SYSTEM_NAME MATCHES "Linux")
set(LINUX_PATH_GENERIC "prebuild-opencl-clang-linux/linux/${OS_NAME}/${OS_VERSION_NUMBER}")
set(LINUX_PATH_VERSIONED "prebuild-opencl-clang-linux-${OS_VERSION_NUMBER}/linux/${OS_NAME}/${OS_VERSION_NUMBER}")
string(TOLOWER "${OS_NAME}" OS_NAME_LOWER_CASE)
set(LINUX_PATH_GENERIC "prebuild-opencl-clang-linux/linux/${OS_NAME_LOWER_CASE}/${OS_VERSION_NUMBER}")
set(LINUX_PATH_VERSIONED "prebuild-opencl-clang-linux-${OS_VERSION_NUMBER}/linux/${OS_NAME_LOWER_CASE}/${OS_VERSION_NUMBER}")

if (EXISTS ${IGC_BUILD__GFX_DEV_SRC_DIR}/../../${LINUX_PATH_VERSIONED})
set(LINUX_PATH "${LINUX_PATH_VERSIONED}")
else()
set(LINUX_PATH "${LINUX_PATH_GENERIC}")
endif()
message("Prebuild OpenCL Clang Linux Path: ${LINUX_PATH}")
else()
set(WINDOWS_PATH "prebuild-opencl-clang_${IGC_BUILD__CLANG_VERSION}/windows/Release/${cpuSuffix}")
message("Prebuild OpenCL Clang Windows Path: ${WINDOWS_PATH}")
endif()
### Check by order first available way to link with opencl-clang
if(NOT CCLANG_FROM_SYSTEM)
Expand Down

0 comments on commit 28d2135

Please sign in to comment.