CUDA: NVCC support for COMPILE_WARNING_AS_ERROR target property

This commit is contained in:
Robert Maynard
2022-06-27 14:42:46 -04:00
committed by Brad King
parent 2e9ac1d272
commit cd324110d2
10 changed files with 23 additions and 1 deletions

View File

@@ -29,6 +29,11 @@ if(CMAKE_CUDA_HOST_COMPILER AND NOT CMAKE_GENERATOR MATCHES "Visual Studio")
string(APPEND _CMAKE_CUDA_EXTRA_FLAGS " -ccbin=<CMAKE_CUDA_HOST_COMPILER>")
endif()
if (CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 10.2.89)
# Starting in 10.2, nvcc supported treating all warnings as errors
set(CMAKE_CUDA_COMPILE_OPTIONS_WARNING_AS_ERROR "-Werror all-warnings")
endif()
if (CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 10.2.89)
# The -MD flag was only added to nvcc in 10.2 so
# before that we had to invoke the compiler twice

View File

@@ -372,7 +372,8 @@ add_RunCMake_test(TargetProperties)
add_RunCMake_test(ToolchainFile)
add_RunCMake_test(find_dependency)
add_RunCMake_test(CompileDefinitions)
add_RunCMake_test(CompileWarningAsError)
add_RunCMake_test(CompileWarningAsError -DCMake_TEST_CUDA=${CMake_TEST_CUDA})
set_property(TEST RunCMake.CompileWarningAsError APPEND PROPERTY LABELS "CUDA")
add_RunCMake_test(CompileFeatures -DCMake_NO_C_STANDARD=${CMake_NO_C_STANDARD} -DCMake_NO_CXX_STANDARD=${CMake_NO_CXX_STANDARD})
add_RunCMake_test(Policy)
add_RunCMake_test(PolicyScope)

View File

@@ -10,6 +10,10 @@ endfunction()
set(langs C CXX)
set(exts c cxx)
if(CMake_TEST_CUDA)
list(APPEND langs CUDA)
list(APPEND exts cu)
endif()
foreach(lang ext IN ZIP_LISTS langs exts)
run_compile_warn(WerrorOn ${lang} ${ext})

View File

@@ -6,6 +6,13 @@ macro(get_warning_options warning_options lang)
elseif (CMAKE_${lang}_COMPILER_ID STREQUAL "MSVC"
OR (CMAKE_${lang}_COMPILER_ID STREQUAL "Intel" AND CMAKE_${lang}_SIMULATE_ID MATCHES "MSVC"))
set(${warning_options} "-W4")
elseif (CMAKE_${lang}_COMPILER_ID STREQUAL "NVIDIA"
AND CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 10.2.89)
if(CMAKE_${lang}_SIMULATE_ID MATCHES "MSVC")
set(${warning_options} "-Xcompiler=-W4")
else()
set(${warning_options} "-Xcompiler=-Wall")
endif()
elseif (CMAKE_${lang}_COMPILER_ID STREQUAL "Intel")
set(${warning_options} "-w3")
elseif (CMAKE_${lang}_COMPILER_ID STREQUAL "XL")

View File

@@ -0,0 +1 @@
include(WerrorOff.cmake)

View File

@@ -0,0 +1 @@
include(WerrorOnIgnore.cmake)

View File

@@ -0,0 +1 @@
[^0]

View File

@@ -0,0 +1 @@
include(WerrorOn.cmake)

View File

@@ -0,0 +1 @@
#include "warn.c"