diff options
author | Brad King <brad.king@kitware.com> | 2017-06-26 10:22:17 -0400 |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2017-06-27 09:08:50 -0400 |
commit | bbc1f3642cb86ce59908ee33eeb409d7921f73f8 (patch) | |
tree | c7d460c116f70f0f37d08532b849236eceb66293 | |
parent | 3b75421515835b2fc6713be3015cc3f7324bb5a8 (diff) | |
download | cmake-bbc1f3642cb86ce59908ee33eeb409d7921f73f8.tar.gz |
VS: Fix support for nvcc flags not in our flag table
The change in commit v3.9.0-rc4~3^2 (VS: Improve workaround for CUDA
-Xcompiler placement bug, 2017-06-21) accidentally appended to the
`AdditionalOptions` as if it were a `;`-separated list, but it is
actually a command-line string. Append with a space instead.
While at it, fix the same problem for the `AdditionalOptions` added to
`CudaLink` by commit v3.9.0-rc3~1^2 (CUDA: When linking device code
suppress CUDA 8.0+ deprecation warnings, 2017-06-09).
Fixes: #17008
-rw-r--r-- | Source/cmVisualStudio10TargetGenerator.cxx | 6 | ||||
-rw-r--r-- | Tests/CudaOnly/SeparateCompilation/CMakeLists.txt | 5 |
2 files changed, 8 insertions, 3 deletions
diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 32ece3f33a..67c02b2241 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -2530,7 +2530,7 @@ bool cmVisualStudio10TargetGenerator::ComputeCudaOptions( cudaOptions.RemoveFlag("AdditionalCompilerOptions"); if (!aco.empty()) { aco = this->LocalGenerator->EscapeForShell(aco, false); - cudaOptions.AppendFlag("AdditionalOptions", "-Xcompiler=" + aco); + cudaOptions.AppendFlagString("AdditionalOptions", "-Xcompiler=" + aco); } } @@ -2619,8 +2619,8 @@ bool cmVisualStudio10TargetGenerator::ComputeCudaLinkOptions( // Suppress deprecation warnings for default GPU targets during device link. if (cmSystemTools::VersionCompareGreaterEq( this->GlobalGenerator->GetPlatformToolsetCudaString(), "8.0")) { - cudaLinkOptions.AppendFlag("AdditionalOptions", - "-Wno-deprecated-gpu-targets"); + cudaLinkOptions.AppendFlagString("AdditionalOptions", + "-Wno-deprecated-gpu-targets"); } this->CudaLinkOptions[configName] = pOptions.release(); diff --git a/Tests/CudaOnly/SeparateCompilation/CMakeLists.txt b/Tests/CudaOnly/SeparateCompilation/CMakeLists.txt index f42324ed12..3d4a17073d 100644 --- a/Tests/CudaOnly/SeparateCompilation/CMakeLists.txt +++ b/Tests/CudaOnly/SeparateCompilation/CMakeLists.txt @@ -16,6 +16,11 @@ set(CMAKE_CUDA_STANDARD 11) add_library(CUDASeparateLibA STATIC file1.cu file2.cu file3.cu) if(CMAKE_CUDA_SIMULATE_ID STREQUAL "MSVC") + # Test adding a flag that is not in our CUDA flag table for VS. + if(NOT CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 8) + string(APPEND CMAKE_CUDA_FLAGS " --ftemplate-depth 50") + endif() + # Test adding a flag that nvcc should pass to the host compiler. target_compile_options(CUDASeparateLibA PRIVATE -Xcompiler=-bigobj) endif() |