diff --git a/pkgs/development/compilers/hip/default.nix b/pkgs/development/compilers/hip/default.nix index a459d30dbc95..329d523ddc23 100644 --- a/pkgs/development/compilers/hip/default.nix +++ b/pkgs/development/compilers/hip/default.nix @@ -21,6 +21,7 @@ , rocm-runtime , rocm-thunk , rocminfo +, substituteAll , writeScript , writeText }: @@ -37,6 +38,14 @@ let hash = "sha256-QaN666Rku2Tkio2Gm5/3RD8D5JgmCZLe0Yun1fGxa8U="; }; + patches = [ + (substituteAll { + src = ./hip-config-paths.patch; + inherit llvm; + rocm_runtime = rocm-runtime; + }) + ]; + # - fix bash paths # - fix path to rocm_agent_enumerator # - fix hcc path @@ -121,6 +130,14 @@ stdenv.mkDerivation rec { rocminfo ]; + patches = [ + (substituteAll { + src = ./hipamd-config-paths.patch; + inherit llvm hip; + rocm_runtime = rocm-runtime; + }) + ]; + preConfigure = '' export HIP_CLANG_PATH=${clang}/bin export DEVICE_LIB_PATH=${rocm-device-libs}/lib diff --git a/pkgs/development/compilers/hip/hip-config-paths.patch b/pkgs/development/compilers/hip/hip-config-paths.patch new file mode 100644 index 000000000000..71e804c74482 --- /dev/null +++ b/pkgs/development/compilers/hip/hip-config-paths.patch @@ -0,0 +1,36 @@ +diff --git a/hip-lang-config.cmake.in b/hip-lang-config.cmake.in +index 1a72643a..7f35031f 100644 +--- a/hip-lang-config.cmake.in ++++ b/hip-lang-config.cmake.in +@@ -72,8 +72,8 @@ get_filename_component(_IMPORT_PREFIX "${_DIR}/../../../" REALPATH) + + + #need _IMPORT_PREFIX to be set #FILE_REORG_BACKWARD_COMPATIBILITY +-file(GLOB HIP_CLANG_INCLUDE_SEARCH_PATHS "${_IMPORT_PREFIX}/../llvm/lib/clang/*/include") +-file(GLOB HIP_CLANG_INCLUDE_SEARCH_PATHS_REORG "${_IMPORT_PREFIX}/llvm/lib/clang/*/include") ++file(GLOB HIP_CLANG_INCLUDE_SEARCH_PATHS "@llvm@/lib/clang/*/include") ++file(GLOB HIP_CLANG_INCLUDE_SEARCH_PATHS_REORG "@llvm@/lib/clang/*/include") + find_path(HIP_CLANG_INCLUDE_PATH __clang_cuda_math.h + HINTS ${HIP_CLANG_INCLUDE_SEARCH_PATHS} + ${HIP_CLANG_INCLUDE_SEARCH_PATHS_REORG} +@@ -88,10 +88,7 @@ endif() + #if HSA is not under ROCm then provide CMAKE_PREFIX_PATH= + find_path(HSA_HEADER hsa/hsa.h + PATHS +- "${_IMPORT_PREFIX}/../include" #FILE_REORG_BACKWARD_COMPATIBILITY +- "${_IMPORT_PREFIX}/include" +- "${ROCM_PATH}/include" +- /opt/rocm/include ++ "@rocm_runtime@/include" + ) + + if (HSA_HEADER-NOTFOUND) +@@ -99,7 +96,7 @@ if (HSA_HEADER-NOTFOUND) + endif() + + get_filename_component(HIP_COMPILER_INSTALL_PATH ${CMAKE_HIP_COMPILER} DIRECTORY) +-file(GLOB HIP_CLANGRT_LIB_SEARCH_PATHS "${HIP_COMPILER_INSTALL_PATH}/../lib/clang/*/lib/*") ++file(GLOB HIP_CLANGRT_LIB_SEARCH_PATHS "@llvm@/lib/clang/*/lib/*") + find_library(CLANGRT_BUILTINS + NAMES + clang_rt.builtins diff --git a/pkgs/development/compilers/hip/hipamd-config-paths.patch b/pkgs/development/compilers/hip/hipamd-config-paths.patch new file mode 100644 index 000000000000..605b73f75c7a --- /dev/null +++ b/pkgs/development/compilers/hip/hipamd-config-paths.patch @@ -0,0 +1,47 @@ +diff --git a/hip-config.cmake.in b/hip-config.cmake.in +index 89d1224e..120b68c6 100755 +--- a/hip-config.cmake.in ++++ b/hip-config.cmake.in +@@ -142,7 +142,7 @@ if(HIP_COMPILER STREQUAL "clang") + file(TO_CMAKE_PATH "${HIP_PATH}/../lc" HIP_CLANG_ROOT) + endif() + else() +- set(HIP_CLANG_ROOT "${ROCM_PATH}/llvm") ++ set(HIP_CLANG_ROOT "@llvm@") + endif() + if(NOT HIP_CXX_COMPILER) + set(HIP_CXX_COMPILER ${CMAKE_CXX_COMPILER}) +@@ -206,10 +206,7 @@ if(NOT WIN32) + #if HSA is not under ROCm then provide CMAKE_PREFIX_PATH= + find_path(HSA_HEADER hsa/hsa.h + PATHS +- "${_IMPORT_PREFIX}/include" +- #FILE_REORG_BACKWARD_COMPATIBILITY ${_IMPORT_PREFIX}/../include is for Backward compatibility +- "${_IMPORT_PREFIX}/../include" +- ${ROCM_PATH}/include ++ "@rocm_runtime@/include" + ) + + if (NOT HSA_HEADER) +@@ -224,8 +221,8 @@ set_target_properties(hip::host PROPERTIES + + if(HIP_RUNTIME MATCHES "rocclr") + set_target_properties(hip::amdhip64 PROPERTIES +- INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${HSA_HEADER}" +- INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${HSA_HEADER}" ++ INTERFACE_INCLUDE_DIRECTORIES "@hip@/include;${HSA_HEADER}" ++ INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "@hip@/include;${HSA_HEADER}" + ) + + get_target_property(amdhip64_type hip::amdhip64 TYPE) +@@ -233,8 +230,8 @@ if(HIP_RUNTIME MATCHES "rocclr") + + if(NOT WIN32) + set_target_properties(hip::device PROPERTIES +- INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" +- INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" ++ INTERFACE_INCLUDE_DIRECTORIES "@hip@/include" ++ INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "@hip@/include" + ) + endif() + endif()