SWDEV-414194 - Make hip-lang available on nvidia platform
Change-Id: Ic0082d3960aadbb7ac559140b6e84bd29a75b5cb
This commit is contained in:
+35
-1
@@ -447,8 +447,42 @@ install(
|
||||
DESTINATION
|
||||
${CONFIG_PACKAGE_INSTALL_DIR}
|
||||
)
|
||||
# Packaging invokes UNIX commands, which are not available on Windows.
|
||||
|
||||
configure_package_config_file(
|
||||
${HIP_COMMON_DIR}/hip-lang-config.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/hip-lang-config.cmake
|
||||
INSTALL_DESTINATION ${CONFIG_LANG_PACKAGE_INSTALL_DIR}
|
||||
NO_CHECK_REQUIRED_COMPONENTS_MACRO
|
||||
PATH_VARS LIB_INSTALL_DIR INCLUDE_INSTALL_DIR BIN_INSTALL_DIR)
|
||||
|
||||
configure_package_config_file(
|
||||
hip-lang-config-amd.cmake
|
||||
${CMAKE_CURRENT_BINARY_DIR}/hip-lang-config-amd.cmake
|
||||
INSTALL_DESTINATION ${CONFIG_LANG_PACKAGE_INSTALL_DIR}
|
||||
PATH_VARS LIB_INSTALL_DIR INCLUDE_INSTALL_DIR BIN_INSTALL_DIR)
|
||||
|
||||
configure_package_config_file(
|
||||
hip-lang-config-nvidia.cmake
|
||||
${CMAKE_CURRENT_BINARY_DIR}/hip-lang-config-nvidia.cmake
|
||||
INSTALL_DESTINATION ${CONFIG_LANG_PACKAGE_INSTALL_DIR}
|
||||
PATH_VARS LIB_INSTALL_DIR INCLUDE_INSTALL_DIR BIN_INSTALL_DIR)
|
||||
|
||||
write_basic_package_version_file(
|
||||
${CMAKE_CURRENT_BINARY_DIR}/hip-lang-config-version.cmake
|
||||
VERSION "${HIP_VERSION_MAJOR}.${HIP_VERSION_MINOR}.${HIP_VERSION_GITDATE}"
|
||||
COMPATIBILITY SameMajorVersion)
|
||||
|
||||
install(
|
||||
FILES
|
||||
${CMAKE_CURRENT_BINARY_DIR}/hip-lang-config.cmake
|
||||
${CMAKE_CURRENT_BINARY_DIR}/hip-lang-config-amd.cmake
|
||||
${CMAKE_CURRENT_BINARY_DIR}/hip-lang-config-nvidia.cmake
|
||||
${CMAKE_CURRENT_BINARY_DIR}/hip-lang-config-version.cmake
|
||||
DESTINATION
|
||||
${CONFIG_LANG_PACKAGE_INSTALL_DIR}/
|
||||
)
|
||||
|
||||
# Packaging invokes UNIX commands, which are not available on Windows.
|
||||
if(NOT WIN32)
|
||||
add_subdirectory(packaging)
|
||||
endif()
|
||||
|
||||
@@ -165,7 +165,7 @@ function(create_cmake_symlink)
|
||||
|
||||
#create symlink to hip-lang
|
||||
file(MAKE_DIRECTORY ${HIP_WRAPPER_CMAKE_DIR}/hip-lang)
|
||||
file(GLOB config_files ${HIP_BUILD_DIR}/src/hip-lang-config*)
|
||||
file(GLOB config_files ${HIP_BUILD_DIR}/hip-lang-config*)
|
||||
foreach(config_name ${config_files})
|
||||
get_filename_component(file_name ${config_name} NAME)
|
||||
add_custom_target(link_${file_name} ALL
|
||||
@@ -250,7 +250,7 @@ endif()#End HIP_PLATFORM AMD
|
||||
install(FILES ${HIP_WRAPPER_LIB_DIR}/${HIP_INFO_FILE} DESTINATION hip/lib COMPONENT binary)
|
||||
#create symlink to cmake files
|
||||
create_cmake_symlink()
|
||||
install(DIRECTORY ${HIP_WRAPPER_CMAKE_DIR}/hip-lang DESTINATION hip/lib/cmake COMPONENT binary)
|
||||
install(DIRECTORY ${HIP_WRAPPER_CMAKE_DIR}/hip-lang DESTINATION hip/lib/cmake COMPONENT dev)
|
||||
install(DIRECTORY ${HIP_WRAPPER_CMAKE_DIR}/hiprtc DESTINATION hip/lib/cmake COMPONENT binary)
|
||||
install(DIRECTORY ${HIP_WRAPPER_CMAKE_DIR}/hip DESTINATION hip/lib/cmake COMPONENT dev)
|
||||
install(DIRECTORY ${HIP_WRAPPER_FINDHIP_DIR}/ DESTINATION hip/cmake COMPONENT dev)
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
# Copyright (c) 2023 Advanced Micro Devices, Inc. All Rights Reserved.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
include( "${CMAKE_CURRENT_LIST_DIR}/hip-lang-targets.cmake" )
|
||||
|
||||
# Find the hip-lang config file path with symlinks resolved
|
||||
# RealPath: /opt/rocm-ver/lib/cmake/hip-lang/hip-lang-config.cmake
|
||||
# Go 4 level up to get IMPORT PREFIX
|
||||
get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" REALPATH)
|
||||
get_filename_component(_IMPORT_PREFIX "${_DIR}/../../../../" ABSOLUTE)
|
||||
|
||||
|
||||
set_target_properties(hip-lang::device PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "$<$<COMPILE_LANGUAGE:HIP>:${_IMPORT_PREFIX}/include>"
|
||||
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "$<$<COMPILE_LANGUAGE:HIP>:${_IMPORT_PREFIX}/include>"
|
||||
)
|
||||
|
||||
set_target_properties(hip-lang::amdhip64 PROPERTIES
|
||||
INTERFACE_COMPILE_DEFINITIONS "$<$<COMPILE_LANGUAGE:HIP>:__HIP_ROCclr__=1>"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "$<$<COMPILE_LANGUAGE:HIP>:${_IMPORT_PREFIX}/include>"
|
||||
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "$<$<COMPILE_LANGUAGE:HIP>:${_IMPORT_PREFIX}/include>"
|
||||
)
|
||||
set_target_properties(hip-lang::device PROPERTIES
|
||||
INTERFACE_COMPILE_DEFINITIONS "$<$<COMPILE_LANGUAGE:HIP>:__HIP_ROCclr__=1>"
|
||||
)
|
||||
|
||||
set_property(TARGET hip-lang::device APPEND PROPERTY
|
||||
INTERFACE_COMPILE_OPTIONS "$<$<COMPILE_LANGUAGE:HIP>:SHELL:-mllvm;-amdgpu-early-inline-all=true;-mllvm;-amdgpu-function-calls=false>"
|
||||
)
|
||||
|
||||
set_property(TARGET hip-lang::device APPEND PROPERTY
|
||||
INTERFACE_LINK_OPTIONS "$<$<LINK_LANGUAGE:HIP>:--hip-link>"
|
||||
)
|
||||
|
||||
# Approach: Check CLANGRT LIB support for CMAKE_HIP_COMPILER
|
||||
# Use CMAKE_HIP_COMPILER option -print-libgcc-file-name --rtlib=compiler-rt
|
||||
# Note: For Linux add additional option -unwindlib=libgcc also
|
||||
# To fetch the compiler rt library file name and confirm.
|
||||
# If unsuccessful in getting clangrt using this option then
|
||||
# FATAL_ERROR message send since compiler-rt linkage dependency is mandatory.
|
||||
# If successful then --rtlib=compiler-rt (and -unwindlib=libgcc for non windows)
|
||||
# added to Target's INTERFACE_LINK_LIBRARIES property
|
||||
if (NOT WIN32)
|
||||
set(CLANGRT_LINUX_OPTION "-unwindlib=libgcc")
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_HIP_COMPILER} -print-libgcc-file-name --rtlib=compiler-rt ${CLANGRT_LINUX_OPTION}
|
||||
OUTPUT_VARIABLE CLANGRT_BUILTINS
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
RESULT_VARIABLE CLANGRT_BUILTINS_FETCH_EXIT_CODE)
|
||||
|
||||
# Add support for __fp16 and _Float16, explicitly link with compiler-rt
|
||||
if( "${CLANGRT_BUILTINS_FETCH_EXIT_CODE}" STREQUAL "0" )
|
||||
set_property(TARGET hip-lang::device APPEND PROPERTY
|
||||
INTERFACE_LINK_OPTIONS $<$<LINK_LANGUAGE:HIP>:--rtlib=compiler-rt ${CLANGRT_LINUX_OPTION}>
|
||||
)
|
||||
else()
|
||||
# FATAL_ERROR send if not successfull on compiler-rt linkage dependency
|
||||
message(FATAL_ERROR
|
||||
"${CMAKE_FIND_PACKAGE_NAME} Error:${CLANGRT_BUILTINS_FETCH_EXIT_CODE} - clangrt builtins lib could not be found.")
|
||||
endif()
|
||||
|
||||
# Approved by CMake to use this name. This is used so that HIP can
|
||||
# change the name of the target and not require any modifications in CMake
|
||||
set(_CMAKE_HIP_DEVICE_RUNTIME_TARGET "hip-lang::device")
|
||||
@@ -0,0 +1,42 @@
|
||||
# Copyright (c) 2023 Advanced Micro Devices, Inc. All Rights Reserved.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
add_library(hip-lang::device INTERFACE IMPORTED)
|
||||
add_library(hip-lang::host INTERFACE IMPORTED)
|
||||
add_library(hip-lang::amdhip64 INTERFACE IMPORTED)
|
||||
|
||||
# Find the hip-lang config file path with symlinks resolved
|
||||
# RealPath: /opt/rocm-ver/lib/cmake/hip-lang/hip-lang-config.cmake
|
||||
# Go 4 level up to get IMPORT PREFIX
|
||||
get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" REALPATH)
|
||||
get_filename_component(_IMPORT_PREFIX "${_DIR}/../../../../" ABSOLUTE)
|
||||
|
||||
|
||||
set_target_properties(hip-lang::device PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "$<$<COMPILE_LANGUAGE:HIP>:${_IMPORT_PREFIX}/include>"
|
||||
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "$<$<COMPILE_LANGUAGE:HIP>:${_IMPORT_PREFIX}/include>"
|
||||
)
|
||||
|
||||
set_target_properties(hip-lang::amdhip64 PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "$<$<COMPILE_LANGUAGE:HIP>:${_IMPORT_PREFIX}/include>"
|
||||
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "$<$<COMPILE_LANGUAGE:HIP>:${_IMPORT_PREFIX}/include>"
|
||||
)
|
||||
|
||||
set(_CMAKE_HIP_DEVICE_RUNTIME_TARGET "hip-lang::device")
|
||||
@@ -63,8 +63,6 @@ if(HIP_PLATFORM STREQUAL "amd" )
|
||||
install(FILES ${CMAKE_BINARY_DIR}/hipamd/.hipInfo DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT binary)
|
||||
|
||||
install ( EXPORT hip-targets FILE hip-targets.cmake NAMESPACE hip:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/hip COMPONENT binary)
|
||||
|
||||
install(FILES ${CMAKE_BINARY_DIR}/hipamd/src/hip-lang-config.cmake ${CMAKE_BINARY_DIR}/hipamd/src/hip-lang-config-version.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/hip-lang COMPONENT binary)
|
||||
install ( EXPORT hip-lang-targets FILE hip-lang-targets.cmake NAMESPACE hip-lang:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/hip-lang COMPONENT binary)
|
||||
|
||||
install(FILES ${CMAKE_BINARY_DIR}/hipamd/hiprtc-config.cmake ${CMAKE_BINARY_DIR}/hipamd/hiprtc-config-version.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/hiprtc COMPONENT binary)
|
||||
@@ -106,6 +104,9 @@ install(DIRECTORY ${HIP_COMMON_DIR}/cmake/ DESTINATION ${CMAKE_INSTALL_LIBDIR}/c
|
||||
install(FILES ${CMAKE_BINARY_DIR}/hipamd/hip-config.cmake ${CMAKE_BINARY_DIR}/hipamd/hip-config-version.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/hip COMPONENT dev)
|
||||
install(FILES ${CMAKE_BINARY_DIR}/hipamd/hip-config-amd.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/hip COMPONENT dev)
|
||||
install(FILES ${CMAKE_BINARY_DIR}/hipamd/hip-config-nvidia.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/hip COMPONENT dev)
|
||||
install(FILES ${CMAKE_BINARY_DIR}/hipamd/hip-lang-config.cmake ${CMAKE_BINARY_DIR}/hipamd/hip-lang-config-version.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/hip-lang COMPONENT dev)
|
||||
install(FILES ${CMAKE_BINARY_DIR}/hipamd/hip-lang-config-amd.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/hip-lang COMPONENT dev)
|
||||
install(FILES ${CMAKE_BINARY_DIR}/hipamd/hip-lang-config-nvidia.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/hip-lang COMPONENT dev)
|
||||
#End dev files install
|
||||
|
||||
#Begin doc files install
|
||||
|
||||
@@ -291,26 +291,3 @@ INSTALL(TARGETS amdhip64 host device
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
INSTALL(EXPORT hip-lang-targets DESTINATION ${CONFIG_LANG_PACKAGE_INSTALL_DIR} NAMESPACE hip-lang::)
|
||||
|
||||
include(CMakePackageConfigHelpers)
|
||||
|
||||
configure_package_config_file(
|
||||
${HIP_COMMON_DIR}/hip-lang-config.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/hip-lang-config.cmake
|
||||
INSTALL_DESTINATION ${CONFIG_LANG_PACKAGE_INSTALL_DIR}
|
||||
NO_SET_AND_CHECK_MACRO
|
||||
NO_CHECK_REQUIRED_COMPONENTS_MACRO
|
||||
PATH_VARS LIB_INSTALL_DIR INCLUDE_INSTALL_DIR BIN_INSTALL_DIR)
|
||||
|
||||
write_basic_package_version_file(
|
||||
${CMAKE_CURRENT_BINARY_DIR}/hip-lang-config-version.cmake
|
||||
VERSION "${HIP_VERSION_MAJOR}.${HIP_VERSION_MINOR}.${HIP_VERSION_GITDATE}"
|
||||
COMPATIBILITY SameMajorVersion)
|
||||
install(
|
||||
FILES
|
||||
${CMAKE_CURRENT_BINARY_DIR}/hip-lang-config.cmake
|
||||
${CMAKE_CURRENT_BINARY_DIR}/hip-lang-config-version.cmake
|
||||
DESTINATION
|
||||
${CONFIG_LANG_PACKAGE_INSTALL_DIR}/
|
||||
)
|
||||
|
||||
|
||||
Referens i nytt ärende
Block a user