mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-05 13:20:47 -06:00
CUDA: Add support for [CMAKE_]CUDA_LINKER_LAUNCHER
`CMAKE_<LANG>_LINKER_LAUNCHER` and `<LANG>_LINKER_LAUNCHER` are already support for C, CXX, OBJC, OBJCXX, and Fortran. Add CUDA. Issue: #26967
This commit is contained in:
committed by
Brad King
parent
ab5866c2d2
commit
77312cc636
@@ -6,9 +6,17 @@
|
||||
This property is implemented only when ``<LANG>`` is one of:
|
||||
|
||||
* ``C``
|
||||
|
||||
* ``CXX``
|
||||
|
||||
* ``CUDA``
|
||||
|
||||
.. versionadded:: 4.1
|
||||
|
||||
* ``OBJC``
|
||||
|
||||
* ``OBJCXX``
|
||||
|
||||
* ``Fortran``
|
||||
|
||||
.. versionadded:: 4.1
|
||||
|
||||
@@ -2,6 +2,6 @@ linker-launcher
|
||||
---------------
|
||||
|
||||
* :ref:`Makefile Generators` and :ref:`Ninja Generators` gained support
|
||||
for adding a linker launcher with ``Fortran``.
|
||||
for adding a linker launcher with ``Fortran`` and ``CUDA``.
|
||||
See the :variable:`CMAKE_<LANG>_LINKER_LAUNCHER` variable
|
||||
and :prop_tgt:`<LANG>_LINKER_LAUNCHER` target property for details.
|
||||
|
||||
@@ -8,9 +8,17 @@ variable is used to initialize the property on each target as it is created.
|
||||
This is done only when ``<LANG>`` is one of:
|
||||
|
||||
* ``C``
|
||||
|
||||
* ``CXX``
|
||||
|
||||
* ``CUDA``
|
||||
|
||||
.. versionadded:: 4.1
|
||||
|
||||
* ``OBJC``
|
||||
|
||||
* ``OBJCXX``
|
||||
|
||||
* ``Fortran``
|
||||
|
||||
.. versionadded:: 4.1
|
||||
|
||||
@@ -75,6 +75,11 @@ if(NOT CMAKE_CUDA_COMPILER_LAUNCHER AND DEFINED ENV{CMAKE_CUDA_COMPILER_LAUNCHER
|
||||
CACHE STRING "Compiler launcher for CUDA.")
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_CUDA_LINKER_LAUNCHER AND DEFINED ENV{CMAKE_CUDA_LINKER_LAUNCHER})
|
||||
set(CMAKE_CUDA_LINKER_LAUNCHER "$ENV{CMAKE_CUDA_LINKER_LAUNCHER}"
|
||||
CACHE STRING "Linker launcher for CUDA.")
|
||||
endif()
|
||||
|
||||
include(CMakeCommonLanguageInclude)
|
||||
_cmake_common_language_platform_flags(CUDA)
|
||||
|
||||
|
||||
@@ -449,6 +449,7 @@ TargetProperty const StaticTargetProperties[] = {
|
||||
// ---- C++
|
||||
{ "CXX_LINKER_LAUNCHER"_s, IC::CanCompileSources },
|
||||
// ---- CUDA
|
||||
{ "CUDA_LINKER_LAUNCHER"_s, IC::CanCompileSources },
|
||||
{ "CUDA_RESOLVE_DEVICE_SYMBOLS"_s, IC::CanCompileSources },
|
||||
{ "CUDA_RUNTIME_LIBRARY"_s, IC::CanCompileSources },
|
||||
// ---- HIP
|
||||
|
||||
1
Tests/RunCMake/LinkerLauncher/CUDA-Build-stdout.txt
Normal file
1
Tests/RunCMake/LinkerLauncher/CUDA-Build-stdout.txt
Normal file
@@ -0,0 +1 @@
|
||||
.*-E env USED_LAUNCHER=1.*
|
||||
4
Tests/RunCMake/LinkerLauncher/CUDA-common.cmake
Normal file
4
Tests/RunCMake/LinkerLauncher/CUDA-common.cmake
Normal file
@@ -0,0 +1,4 @@
|
||||
cmake_policy(SET CMP0104 NEW)
|
||||
enable_language(CUDA)
|
||||
set(CMAKE_VERBOSE_MAKEFILE TRUE)
|
||||
add_executable(main main.cu)
|
||||
1
Tests/RunCMake/LinkerLauncher/CUDA-env-Build-stdout.txt
Normal file
1
Tests/RunCMake/LinkerLauncher/CUDA-env-Build-stdout.txt
Normal file
@@ -0,0 +1 @@
|
||||
.*-E env USED_LAUNCHER=1 TARGET_NAME=main LANGUAGE=CUDA.*
|
||||
1
Tests/RunCMake/LinkerLauncher/CUDA-env.cmake
Normal file
1
Tests/RunCMake/LinkerLauncher/CUDA-env.cmake
Normal file
@@ -0,0 +1 @@
|
||||
include(CUDA-common.cmake)
|
||||
@@ -0,0 +1 @@
|
||||
.*-E env USED_LAUNCHER=1.*
|
||||
@@ -0,0 +1 @@
|
||||
.*-E env USED_LAUNCHER=1 TARGET_NAME=main LANGUAGE=CUDA.*
|
||||
3
Tests/RunCMake/LinkerLauncher/CUDA-launch-env.cmake
Normal file
3
Tests/RunCMake/LinkerLauncher/CUDA-launch-env.cmake
Normal file
@@ -0,0 +1,3 @@
|
||||
set(CTEST_USE_LAUNCHERS 1)
|
||||
include(CTestUseLaunchers)
|
||||
include(CUDA-env.cmake)
|
||||
3
Tests/RunCMake/LinkerLauncher/CUDA-launch.cmake
Normal file
3
Tests/RunCMake/LinkerLauncher/CUDA-launch.cmake
Normal file
@@ -0,0 +1,3 @@
|
||||
set(CTEST_USE_LAUNCHERS 1)
|
||||
include(CTestUseLaunchers)
|
||||
include(CUDA.cmake)
|
||||
2
Tests/RunCMake/LinkerLauncher/CUDA.cmake
Normal file
2
Tests/RunCMake/LinkerLauncher/CUDA.cmake
Normal file
@@ -0,0 +1,2 @@
|
||||
set(CMAKE_CUDA_LINKER_LAUNCHER "${CMAKE_COMMAND};-E;env;USED_LAUNCHER=1")
|
||||
include(CUDA-common.cmake)
|
||||
@@ -24,6 +24,9 @@ function(run_linker_launcher_env lang)
|
||||
endfunction()
|
||||
|
||||
set(langs C CXX)
|
||||
if(CMake_TEST_CUDA)
|
||||
list(APPEND langs CUDA)
|
||||
endif()
|
||||
if(CMake_TEST_Fortran)
|
||||
list(APPEND langs Fortran)
|
||||
endif()
|
||||
|
||||
4
Tests/RunCMake/LinkerLauncher/main.cu
Normal file
4
Tests/RunCMake/LinkerLauncher/main.cu
Normal file
@@ -0,0 +1,4 @@
|
||||
int main()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user