mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-02 20:00:38 -06:00
CUDA: Add option to run the compiler through launcher tools
Add a `CUDA_COMPILER_LAUNCHER` target property like those added for C and CXX by commit v3.4.0-rc1~450^2 (Add options to launch the compiler through tools like ccache or distcc, 2015-06-04). Fixes: #16953
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
<LANG>_COMPILER_LAUNCHER
|
||||
------------------------
|
||||
|
||||
This property is implemented only when ``<LANG>`` is ``C`` or ``CXX``.
|
||||
This property is implemented only when ``<LANG>`` is ``C``, ``CXX``,
|
||||
or ``CUDA``.
|
||||
|
||||
Specify a :ref:`;-list <CMake Language Lists>` containing a command line
|
||||
for a compiler launching tool. The :ref:`Makefile Generators` and the
|
||||
|
||||
8
Help/release/dev/cuda-compiler-launcher.rst
Normal file
8
Help/release/dev/cuda-compiler-launcher.rst
Normal file
@@ -0,0 +1,8 @@
|
||||
cuda-compiler-launcher
|
||||
----------------------
|
||||
|
||||
* The :ref:`Makefile Generators` and the :generator:`Ninja` generator learned
|
||||
to add compiler launcher tools like ccache along with the compiler for the
|
||||
``CUDA`` language (``C`` and ``CXX`` were supported previously). See the
|
||||
:variable:`CMAKE_<LANG>_COMPILER_LAUNCHER` variable and
|
||||
:prop_tgt:`<LANG>_COMPILER_LAUNCHER` target property for details.
|
||||
@@ -3,4 +3,4 @@ CMAKE_<LANG>_COMPILER_LAUNCHER
|
||||
|
||||
Default value for :prop_tgt:`<LANG>_COMPILER_LAUNCHER` target property.
|
||||
This variable is used to initialize the property on each target as it is
|
||||
created. This is done only when ``<LANG>`` is ``C`` or ``CXX``.
|
||||
created. This is done only when ``<LANG>`` is ``C``, ``CXX``, or ``CUDA``.
|
||||
|
||||
@@ -657,7 +657,8 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile(
|
||||
}
|
||||
|
||||
// Maybe insert a compiler launcher like ccache or distcc
|
||||
if (!compileCommands.empty() && (lang == "C" || lang == "CXX")) {
|
||||
if (!compileCommands.empty() &&
|
||||
(lang == "C" || lang == "CXX" || lang == "CUDA")) {
|
||||
std::string const clauncher_prop = lang + "_COMPILER_LAUNCHER";
|
||||
const char* clauncher =
|
||||
this->GeneratorTarget->GetProperty(clauncher_prop);
|
||||
|
||||
@@ -648,7 +648,8 @@ void cmNinjaTargetGenerator::WriteCompileRule(const std::string& lang)
|
||||
}
|
||||
|
||||
// Maybe insert a compiler launcher like ccache or distcc
|
||||
if (!compileCmds.empty() && (lang == "C" || lang == "CXX")) {
|
||||
if (!compileCmds.empty() &&
|
||||
(lang == "C" || lang == "CXX" || lang == "CUDA")) {
|
||||
std::string const clauncher_prop = lang + "_COMPILER_LAUNCHER";
|
||||
const char* clauncher = this->GeneratorTarget->GetProperty(clauncher_prop);
|
||||
if (clauncher && *clauncher) {
|
||||
|
||||
@@ -276,6 +276,7 @@ cmTarget::cmTarget(std::string const& name, cmStateEnums::TargetType type,
|
||||
this->SetPropertyDefault("CUDA_STANDARD", CM_NULLPTR);
|
||||
this->SetPropertyDefault("CUDA_STANDARD_REQUIRED", CM_NULLPTR);
|
||||
this->SetPropertyDefault("CUDA_EXTENSIONS", CM_NULLPTR);
|
||||
this->SetPropertyDefault("CUDA_COMPILER_LAUNCHER", CM_NULLPTR);
|
||||
this->SetPropertyDefault("LINK_SEARCH_START_STATIC", CM_NULLPTR);
|
||||
this->SetPropertyDefault("LINK_SEARCH_END_STATIC", CM_NULLPTR);
|
||||
}
|
||||
|
||||
@@ -341,6 +341,9 @@ if("${CMAKE_GENERATOR}" MATCHES "Make|Ninja")
|
||||
add_RunCMake_test(ClangTidy -DPSEUDO_TIDY=$<TARGET_FILE:pseudo_tidy>)
|
||||
add_RunCMake_test(IncludeWhatYouUse -DPSEUDO_IWYU=$<TARGET_FILE:pseudo_iwyu>)
|
||||
add_RunCMake_test(Cpplint -DPSEUDO_CPPLINT=$<TARGET_FILE:pseudo_cpplint>)
|
||||
if(DEFINED CMake_TEST_CUDA)
|
||||
list(APPEND CompilerLauncher_ARGS -DCMake_TEST_CUDA=${CMake_TEST_CUDA})
|
||||
endif()
|
||||
add_RunCMake_test(CompilerLauncher)
|
||||
endif()
|
||||
|
||||
|
||||
1
Tests/RunCMake/CompilerLauncher/CUDA-Build-stdout.txt
Normal file
1
Tests/RunCMake/CompilerLauncher/CUDA-Build-stdout.txt
Normal file
@@ -0,0 +1 @@
|
||||
.*-E env USED_LAUNCHER=1.*
|
||||
@@ -0,0 +1 @@
|
||||
.*-E env USED_LAUNCHER=1.*
|
||||
3
Tests/RunCMake/CompilerLauncher/CUDA-launch.cmake
Normal file
3
Tests/RunCMake/CompilerLauncher/CUDA-launch.cmake
Normal file
@@ -0,0 +1,3 @@
|
||||
set(CTEST_USE_LAUNCHERS 1)
|
||||
include(CTestUseLaunchers)
|
||||
include(CUDA.cmake)
|
||||
4
Tests/RunCMake/CompilerLauncher/CUDA.cmake
Normal file
4
Tests/RunCMake/CompilerLauncher/CUDA.cmake
Normal file
@@ -0,0 +1,4 @@
|
||||
enable_language(CUDA)
|
||||
set(CMAKE_CUDA_COMPILER_LAUNCHER "${CMAKE_COMMAND};-E;env;USED_LAUNCHER=1")
|
||||
set(CMAKE_VERBOSE_MAKEFILE TRUE)
|
||||
add_executable(main main.cu)
|
||||
@@ -15,9 +15,14 @@ function(run_compiler_launcher lang)
|
||||
run_cmake_command(${lang}-Build ${CMAKE_COMMAND} --build . ${verbose_args})
|
||||
endfunction()
|
||||
|
||||
run_compiler_launcher(C)
|
||||
run_compiler_launcher(CXX)
|
||||
if (NOT RunCMake_GENERATOR STREQUAL "Watcom WMake")
|
||||
run_compiler_launcher(C-launch)
|
||||
run_compiler_launcher(CXX-launch)
|
||||
set(langs C CXX)
|
||||
if(CMake_TEST_CUDA)
|
||||
list(APPEND langs CUDA)
|
||||
endif()
|
||||
|
||||
foreach(lang ${langs})
|
||||
run_compiler_launcher(${lang})
|
||||
if (NOT RunCMake_GENERATOR STREQUAL "Watcom WMake")
|
||||
run_compiler_launcher(${lang}-launch)
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
4
Tests/RunCMake/CompilerLauncher/main.cu
Normal file
4
Tests/RunCMake/CompilerLauncher/main.cu
Normal file
@@ -0,0 +1,4 @@
|
||||
int main()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user