From cdf2a36f48b066bd99483f7176bb65ba41b7535c Mon Sep 17 00:00:00 2001 From: Maximilian Sander Date: Fri, 30 May 2025 14:48:27 +0200 Subject: [PATCH] HIP: Add support for [CMAKE_]HIP_LINKER_LAUNCHER `CMAKE__LINKER_LAUNCHER` and `_LINKER_LAUNCHER` are already support for C, CXX, CUDA, OBJC, OBJCXX, and Fortran. Add HIP. Closes: #26967 --- Help/prop_tgt/LANG_LINKER_LAUNCHER.rst | 4 ++++ Help/release/dev/linker-launcher.rst | 2 +- Help/variable/CMAKE_LANG_LINKER_LAUNCHER.rst | 4 ++++ Modules/CMakeHIPInformation.cmake | 5 +++++ Source/cmTarget.cxx | 1 + Tests/RunCMake/LinkerLauncher/HIP-common.cmake | 5 +++++ Tests/RunCMake/LinkerLauncher/HIP-env-Build-stdout.txt | 1 + Tests/RunCMake/LinkerLauncher/HIP-env.cmake | 1 + Tests/RunCMake/LinkerLauncher/HIP-launch-Build-stdout.txt | 1 + .../RunCMake/LinkerLauncher/HIP-launch-env-Build-stdout.txt | 1 + Tests/RunCMake/LinkerLauncher/HIP-launch-env.cmake | 3 +++ Tests/RunCMake/LinkerLauncher/HIP-launch.cmake | 3 +++ Tests/RunCMake/LinkerLauncher/HIP.cmake | 2 ++ Tests/RunCMake/LinkerLauncher/RunCMakeTest.cmake | 3 +++ Tests/RunCMake/LinkerLauncher/main.hip | 4 ++++ 15 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 Tests/RunCMake/LinkerLauncher/HIP-common.cmake create mode 100644 Tests/RunCMake/LinkerLauncher/HIP-env-Build-stdout.txt create mode 100644 Tests/RunCMake/LinkerLauncher/HIP-env.cmake create mode 100644 Tests/RunCMake/LinkerLauncher/HIP-launch-Build-stdout.txt create mode 100644 Tests/RunCMake/LinkerLauncher/HIP-launch-env-Build-stdout.txt create mode 100644 Tests/RunCMake/LinkerLauncher/HIP-launch-env.cmake create mode 100644 Tests/RunCMake/LinkerLauncher/HIP-launch.cmake create mode 100644 Tests/RunCMake/LinkerLauncher/HIP.cmake create mode 100644 Tests/RunCMake/LinkerLauncher/main.hip diff --git a/Help/prop_tgt/LANG_LINKER_LAUNCHER.rst b/Help/prop_tgt/LANG_LINKER_LAUNCHER.rst index df3a4f47f1..875cf740bc 100644 --- a/Help/prop_tgt/LANG_LINKER_LAUNCHER.rst +++ b/Help/prop_tgt/LANG_LINKER_LAUNCHER.rst @@ -21,6 +21,10 @@ This property is implemented only when ```` is one of: .. versionadded:: 4.1 +* ``HIP`` + + .. versionadded:: 4.1 + Specify a :ref:`semicolon-separated list ` containing a command line for a linker launching tool. The :ref:`Makefile Generators` and the :generator:`Ninja` generator will run this tool and pass the linker and its diff --git a/Help/release/dev/linker-launcher.rst b/Help/release/dev/linker-launcher.rst index 29bf5e622f..78badc9932 100644 --- a/Help/release/dev/linker-launcher.rst +++ b/Help/release/dev/linker-launcher.rst @@ -2,6 +2,6 @@ linker-launcher --------------- * :ref:`Makefile Generators` and :ref:`Ninja Generators` gained support - for adding a linker launcher with ``Fortran`` and ``CUDA``. + for adding a linker launcher with ``Fortran``, ``CUDA``, and ``HIP``. See the :variable:`CMAKE__LINKER_LAUNCHER` variable and :prop_tgt:`_LINKER_LAUNCHER` target property for details. diff --git a/Help/variable/CMAKE_LANG_LINKER_LAUNCHER.rst b/Help/variable/CMAKE_LANG_LINKER_LAUNCHER.rst index 77338f4ad1..d51951ac4e 100644 --- a/Help/variable/CMAKE_LANG_LINKER_LAUNCHER.rst +++ b/Help/variable/CMAKE_LANG_LINKER_LAUNCHER.rst @@ -23,5 +23,9 @@ This is done only when ```` is one of: .. versionadded:: 4.1 +* ``HIP`` + + .. versionadded:: 4.1 + This variable is initialized to the :envvar:`CMAKE__LINKER_LAUNCHER` environment variable if it is set. diff --git a/Modules/CMakeHIPInformation.cmake b/Modules/CMakeHIPInformation.cmake index f015cdf362..13a062c302 100644 --- a/Modules/CMakeHIPInformation.cmake +++ b/Modules/CMakeHIPInformation.cmake @@ -55,6 +55,11 @@ if(NOT CMAKE_HIP_COMPILER_LAUNCHER AND DEFINED ENV{CMAKE_HIP_COMPILER_LAUNCHER}) CACHE STRING "Compiler launcher for HIP.") endif() +if(NOT CMAKE_HIP_LINKER_LAUNCHER AND DEFINED ENV{CMAKE_HIP_LINKER_LAUNCHER}) + set(CMAKE_HIP_LINKER_LAUNCHER "$ENV{CMAKE_HIP_LINKER_LAUNCHER}" + CACHE STRING "Linker launcher for HIP.") +endif() + include(CMakeCommonLanguageInclude) _cmake_common_language_platform_flags(HIP) diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 5675ca4f53..8c4973a1f9 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -453,6 +453,7 @@ TargetProperty const StaticTargetProperties[] = { { "CUDA_RESOLVE_DEVICE_SYMBOLS"_s, IC::CanCompileSources }, { "CUDA_RUNTIME_LIBRARY"_s, IC::CanCompileSources }, // ---- HIP + { "HIP_LINKER_LAUNCHER"_s, IC::CanCompileSources }, { "HIP_RUNTIME_LIBRARY"_s, IC::CanCompileSources }, // ---- Objective C { "OBJC_LINKER_LAUNCHER"_s, IC::CanCompileSources }, diff --git a/Tests/RunCMake/LinkerLauncher/HIP-common.cmake b/Tests/RunCMake/LinkerLauncher/HIP-common.cmake new file mode 100644 index 0000000000..53ece7814e --- /dev/null +++ b/Tests/RunCMake/LinkerLauncher/HIP-common.cmake @@ -0,0 +1,5 @@ +enable_language(HIP) +enable_language(CXX) +set(CMAKE_VERBOSE_MAKEFILE TRUE) + +add_executable(main main.hip) diff --git a/Tests/RunCMake/LinkerLauncher/HIP-env-Build-stdout.txt b/Tests/RunCMake/LinkerLauncher/HIP-env-Build-stdout.txt new file mode 100644 index 0000000000..354e317028 --- /dev/null +++ b/Tests/RunCMake/LinkerLauncher/HIP-env-Build-stdout.txt @@ -0,0 +1 @@ +.*-E env USED_LAUNCHER=1 TARGET_NAME=main LANGUAGE=HIP.* diff --git a/Tests/RunCMake/LinkerLauncher/HIP-env.cmake b/Tests/RunCMake/LinkerLauncher/HIP-env.cmake new file mode 100644 index 0000000000..1bf56cee95 --- /dev/null +++ b/Tests/RunCMake/LinkerLauncher/HIP-env.cmake @@ -0,0 +1 @@ +include(HIP-common.cmake) diff --git a/Tests/RunCMake/LinkerLauncher/HIP-launch-Build-stdout.txt b/Tests/RunCMake/LinkerLauncher/HIP-launch-Build-stdout.txt new file mode 100644 index 0000000000..3313e31f63 --- /dev/null +++ b/Tests/RunCMake/LinkerLauncher/HIP-launch-Build-stdout.txt @@ -0,0 +1 @@ +.*-E env USED_LAUNCHER=1.* diff --git a/Tests/RunCMake/LinkerLauncher/HIP-launch-env-Build-stdout.txt b/Tests/RunCMake/LinkerLauncher/HIP-launch-env-Build-stdout.txt new file mode 100644 index 0000000000..354e317028 --- /dev/null +++ b/Tests/RunCMake/LinkerLauncher/HIP-launch-env-Build-stdout.txt @@ -0,0 +1 @@ +.*-E env USED_LAUNCHER=1 TARGET_NAME=main LANGUAGE=HIP.* diff --git a/Tests/RunCMake/LinkerLauncher/HIP-launch-env.cmake b/Tests/RunCMake/LinkerLauncher/HIP-launch-env.cmake new file mode 100644 index 0000000000..37985a52a3 --- /dev/null +++ b/Tests/RunCMake/LinkerLauncher/HIP-launch-env.cmake @@ -0,0 +1,3 @@ +set(CTEST_USE_LAUNCHERS 1) +include(CTestUseLaunchers) +include(HIP-env.cmake) diff --git a/Tests/RunCMake/LinkerLauncher/HIP-launch.cmake b/Tests/RunCMake/LinkerLauncher/HIP-launch.cmake new file mode 100644 index 0000000000..78fd16ba0f --- /dev/null +++ b/Tests/RunCMake/LinkerLauncher/HIP-launch.cmake @@ -0,0 +1,3 @@ +set(CTEST_USE_LAUNCHERS 1) +include(CTestUseLaunchers) +include(HIP.cmake) diff --git a/Tests/RunCMake/LinkerLauncher/HIP.cmake b/Tests/RunCMake/LinkerLauncher/HIP.cmake new file mode 100644 index 0000000000..32a750b497 --- /dev/null +++ b/Tests/RunCMake/LinkerLauncher/HIP.cmake @@ -0,0 +1,2 @@ +set(CMAKE_HIP_LINKER_LAUNCHER "${CMAKE_COMMAND};-E;env;USED_LAUNCHER=1") +include(HIP-common.cmake) diff --git a/Tests/RunCMake/LinkerLauncher/RunCMakeTest.cmake b/Tests/RunCMake/LinkerLauncher/RunCMakeTest.cmake index e29427f779..f5775fb017 100644 --- a/Tests/RunCMake/LinkerLauncher/RunCMakeTest.cmake +++ b/Tests/RunCMake/LinkerLauncher/RunCMakeTest.cmake @@ -30,6 +30,9 @@ endif() if(CMake_TEST_Fortran) list(APPEND langs Fortran) endif() +if(CMake_TEST_HIP) + list(APPEND langs HIP) +endif() if(CMake_TEST_OBJC) list(APPEND langs OBJC OBJCXX) endif() diff --git a/Tests/RunCMake/LinkerLauncher/main.hip b/Tests/RunCMake/LinkerLauncher/main.hip new file mode 100644 index 0000000000..f8b643afbf --- /dev/null +++ b/Tests/RunCMake/LinkerLauncher/main.hip @@ -0,0 +1,4 @@ +int main() +{ + return 0; +}