Public bug reported:

Description:

  Follow-up to LP: #2143705.

  The fix in cmake (4.2.3-2ubuntu2) 
(debian/patches/0003-fix-missing-multiarch-search-path-in-CMakeDetermineH.patch)
 adds a multiarch fallback for hip-lang-config.cmake, but only when 
CMAKE_LIBRARY_ARCHITECTURE is already populated. That variable is set during 
C/CXX compiler detection. In projects that use HIP as
  the only language (project(... LANGUAGES HIP)), no C/CXX detection runs 
before CMakeDetermineHIPCompiler.cmake, so CMAKE_LIBRARY_ARCHITECTURE is empty 
and the new elseif branch is never taken — leaving the bug visible exactly as 
reported in LP #2143705.

  Reproducer

  Tested on Ubuntu 26.04 (Resolute) with cmake 4.2.3-2ubuntu2,
libamdhip64-dev 7.2.4-0ubuntu1~ppa1~26.04, clang-22.

   $ cat > main.hip <<'EOF'
   #include <hip/hip_runtime.h>
   int main(){ return 0; }
   EOF
   $ cat > CMakeLists.txt <<'EOF'
   cmake_minimum_required(VERSION 3.22)
   project(example LANGUAGES HIP)
   add_executable(ex main.hip)
   EOF
   $ HIPCXX=/usr/bin/clang++ cmake -S. -Bbuild -DCMAKE_HIP_ARCHITECTURES=gfx1030
   -- The HIP compiler identification is unknown
   CMake Error at 
/usr/share/cmake-4.2/Modules/CMakeDetermineHIPCompiler.cmake:242 (message):
     The ROCm root directory:

      /usr

     does not contain the HIP runtime CMake package, expected at one of:

      /usr/lib/cmake/hip-lang/hip-lang-config.cmake
      /usr/lib64/cmake/hip-lang/hip-lang-config.cmake

   Call Stack (most recent call first):
     CMakeLists.txt:2 (project)

  The actual file /usr/lib/x86_64-linux-gnu/cmake/hip-lang/hip-lang-
config.cmake is shipped by libamdhip64-dev and is correctly located in
the multiarch path — just not searched by CMake when CXX isn't enabled.

  Workaround

  Either:

   - Add CXX to LANGUAGES, e.g. project(example LANGUAGES CXX HIP), so 
CMAKE_LIBRARY_ARCHITECTURE gets populated before 
CMakeDetermineHIPCompiler.cmake runs, or
   - Pass -DCMAKE_HIP_LIBRARY_ARCHITECTURE=x86_64-linux-gnu explicitly.

  Neither is documented and both should be unnecessary.

  Proposed fix

  Extend the patch from LP #2143705 with a third-tier fallback that
queries dpkg-architecture when neither HIP nor generic library
architecture is set. Suggested diff against
Modules/CMakeDetermineHIPCompiler.cmake:

        if(CMAKE_HIP_LIBRARY_ARCHITECTURE)
          list(APPEND _CMAKE_HIP_COMPILER_ROCM_LIB_DIRS
               
"${CMAKE_HIP_COMPILER_ROCM_ROOT}/lib/${CMAKE_HIP_LIBRARY_ARCHITECTURE}")
        elseif(CMAKE_LIBRARY_ARCHITECTURE)
          list(APPEND _CMAKE_HIP_COMPILER_ROCM_LIB_DIRS
               
"${CMAKE_HIP_COMPILER_ROCM_ROOT}/lib/${CMAKE_LIBRARY_ARCHITECTURE}")
   +    else()
   +      # HIP-only projects haven't run C/CXX detection yet, so
   +      # CMAKE_LIBRARY_ARCHITECTURE is unset.  Fall back to dpkg-architecture
   +      # on Debian/Ubuntu so multiarch installs are still discoverable.
   +      find_program(_CMAKE_HIP_DPKG_ARCH dpkg-architecture)
   +      if(_CMAKE_HIP_DPKG_ARCH)
   +        execute_process(COMMAND "${_CMAKE_HIP_DPKG_ARCH}" 
-qDEB_HOST_MULTIARCH
   +          OUTPUT_VARIABLE _CMAKE_HIP_DEB_MULTIARCH
   +          OUTPUT_STRIP_TRAILING_WHITESPACE
   +          ERROR_QUIET)
   +        if(_CMAKE_HIP_DEB_MULTIARCH)
   +          list(APPEND _CMAKE_HIP_COMPILER_ROCM_LIB_DIRS
   +               
"${CMAKE_HIP_COMPILER_ROCM_ROOT}/lib/${_CMAKE_HIP_DEB_MULTIARCH}")
   +        endif()
   +      endif()
        endif()

  This should also be forwarded upstream as an addendum to
https://gitlab.kitware.com/cmake/cmake/-/merge_requests/11796 (or a new
MR), so distros that lack dpkg-architecture aren't affected (the
find_program guards it).

  System Information

   $ lsb_release -rd
   Description:    Ubuntu Resolute Raccoon (development branch)
   Release:        26.04

   $ apt-cache policy cmake
   cmake:
     Installed: 4.2.3-2ubuntu2
     Candidate: 4.2.3-2ubuntu2

   $ apt-cache policy libamdhip64-dev
   libamdhip64-dev:
     Installed: 7.2.4-0ubuntu1~ppa1~26.04

  Surfaced by the rocm-hipamd 7.2.4 autopkgtest (cmake-hip-lang test) in
ppa:igorluppi/rocm-hipamd-7.2.4.

** Affects: cmake (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2156062

Title:
  CMakeDetermineHIPCompiler multiarch fallback fails for HIP-only
  projects

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/cmake/+bug/2156062/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to