From c02f8be0acece5644bad37a66a2178d85409e4fa Mon Sep 17 00:00:00 2001 From: Jatin Chaudhary <51944368+cjatin@users.noreply.github.com> Date: Thu, 25 Nov 2021 15:09:00 +0530 Subject: [PATCH] SWDEV-303745 - Add new path of clangrt lib (#2385) Change-Id: I3bfe28ac5c50884653187d733a466e661ff32f7d [ROCm/hip commit: 5d57c55c4a30753a6bf6bddbce3d14e226eeb6d5] --- projects/hip/bin/hipcc | 19 ++++++++++++++++--- projects/hip/hip-lang-config.cmake.in | 19 ++++++++++++++++--- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/projects/hip/bin/hipcc b/projects/hip/bin/hipcc index 840aaafd41..a0d12505f9 100755 --- a/projects/hip/bin/hipcc +++ b/projects/hip/bin/hipcc @@ -146,11 +146,15 @@ $setStdLib = 0; # TODO - set to 0 $default_amdgpu_target = 1; if ($HIP_PLATFORM eq "amd") { - $HIPCC="\"$HIP_CLANG_PATH/clang++\""; + $execExtension = ""; + if($isWindows) { + $execExtension = ".exe"; + } + $HIPCC="$HIP_CLANG_PATH/clang++" . $execExtension; # If $HIPCC clang++ is not compiled, use clang instead if ( ! -e $HIPCC ) { - $HIPCC="\"$HIP_CLANG_PATH/clang\""; + $HIPCC="$HIP_CLANG_PATH/clang" . $execExtension; $HIPLDFLAGS = "--driver-mode=g++"; } @@ -158,6 +162,9 @@ if ($HIP_PLATFORM eq "amd") { $HIP_CLANG_VERSION=~/.*clang version (\S+).*/; $HIP_CLANG_VERSION=$1; + # Figure out the target with which llvm is configured + $HIP_CLANG_TARGET = `$HIPCC -print-target-triple`; + if (! defined $HIP_CLANG_INCLUDE_PATH) { $HIP_CLANG_INCLUDE_PATH = abs_path("$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/include"); } @@ -177,6 +184,7 @@ if ($HIP_PLATFORM eq "amd") { print ("HIP_INCLUDE_PATH=$HIP_INCLUDE_PATH\n"); print ("HIP_LIB_PATH=$HIP_LIB_PATH\n"); print ("DEVICE_LIB_PATH=$DEVICE_LIB_PATH\n"); + print ("HIP_CLANG_TARGET=$HIP_CLANG_TARGET\n"); } if ($isWindows) { @@ -711,7 +719,12 @@ if ($HIP_PLATFORM eq "amd") { $toolArgs = " -Wl,--enable-new-dtags -Wl,-rpath=$HIP_LIB_PATH:$ROCM_PATH/lib -lamdhip64 " . ${toolArgs}; } # To support __fp16 and _Float16, explicitly link with compiler-rt - $toolArgs .= " -L$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/lib/linux -lclang_rt.builtins-x86_64 " + $HIP_CLANG_BUILTIN_LIB="$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/lib/$HIP_CLANG_TARGET/libclang_rt.builtins.a"; + if (-e $HIP_CLANG_BUILTIN_LIB) { + $toolArgs .= " -L$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/lib/$HIP_CLANG_TARGET -lclang_rt.builtins " + } else { + $toolArgs .= " -L$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/lib/linux -lclang_rt.builtins-x86_64 " + } } } diff --git a/projects/hip/hip-lang-config.cmake.in b/projects/hip/hip-lang-config.cmake.in index 9d3c9cc22a..4ab61ef203 100644 --- a/projects/hip/hip-lang-config.cmake.in +++ b/projects/hip/hip-lang-config.cmake.in @@ -94,6 +94,15 @@ if (HSA_HEADER-NOTFOUND) message (FATAL_ERROR "HSA header not found! ROCM_PATH environment not set") endif() +file(GLOB HIP_CLANGRT_LIB_SEARCH_PATHS "${CMAKE_HIP_COMPILER}/../lib/clang/*/lib/*") +find_library(CLANGRT_BUILTINS + NAMES + clang_rt.builtins + clang_rt.builtins-x86_64 + PATHS + ${HIP_CLANGRT_LIB_SEARCH_PATHS} + ${HIP_CLANG_INCLUDE_PATH}/../lib/linux) + set_target_properties(hip-lang::device PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "$<$:${_IMPORT_PREFIX}/../include;${HIP_CLANG_INCLUDE_PATH}>" INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "$<$:${_IMPORT_PREFIX}/../include;${HIP_CLANG_INCLUDE_PATH}>" @@ -123,9 +132,13 @@ set_property(TARGET hip-lang::device APPEND PROPERTY ) # Add support for __fp16 and _Float16, explicitly link with compiler-rt -set_property(TARGET hip-lang::device APPEND PROPERTY - INTERFACE_LINK_LIBRARIES "$<$:${HIP_CLANG_INCLUDE_PATH}/lib/linux/libclang_rt.builtins-x86_64.a>" -) +if(CLANGRT_BUILTINS-NOTFOUND) + message(FATAL_ERROR "clangrt builtins lib not found") +else() + set_property(TARGET hip-lang::device APPEND PROPERTY + INTERFACE_LINK_LIBRARIES "$<$:${CLANGRT_BUILTINS}>" + ) +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