Browse Source

Merge topic 'revert_nvcc_marking_include_as_system'

d0e52219eb CUDA: Revert "Always mark cuda toolkit as system include"

Acked-by: Kitware Robot <[email protected]>
Merge-request: !7798
Brad King 3 years ago
parent
commit
b3cf2da514

+ 4 - 2
Modules/CMakeTestCUDACompiler.cmake

@@ -127,8 +127,10 @@ list(REMOVE_ITEM CMAKE_CUDA_IMPLICIT_LINK_LIBRARIES ${CMAKE_CUDA_IMPLICIT_LINK_L
 if(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
 if(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
   # Remove the CUDA Toolkit include directories from the set of
   # Remove the CUDA Toolkit include directories from the set of
   # implicit system include directories.
   # implicit system include directories.
-  # CMake will explicitly mark these as SYSTEM to NVCC since it implicitly
-  # adds them as user includes and not system
+  # This resolves the issue that NVCC doesn't specify these
+  # includes as SYSTEM includes when compiling device code, and sometimes
+  # they contain headers that generate warnings, so let users mark them
+  # as SYSTEM explicitly
   if(CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES)
   if(CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES)
     list(REMOVE_ITEM CMAKE_CUDA_IMPLICIT_INCLUDE_DIRECTORIES
     list(REMOVE_ITEM CMAKE_CUDA_IMPLICIT_INCLUDE_DIRECTORIES
       ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}
       ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}

+ 0 - 9
Source/cmGlobalGenerator.cxx

@@ -1855,15 +1855,6 @@ void cmGlobalGenerator::FinalizeTargetConfiguration()
         cmExpandedList(standardIncludesStr);
         cmExpandedList(standardIncludesStr);
       standardIncludesSet.insert(standardIncludesVec.begin(),
       standardIncludesSet.insert(standardIncludesVec.begin(),
                                  standardIncludesVec.end());
                                  standardIncludesVec.end());
-      if (li == "CUDA") {
-        std::string const& cudaSystemIncludeVar =
-          mf->GetSafeDefinition("CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES");
-        std::vector<std::string> cudaToolkitIncludeVec =
-          cmExpandedList(cudaSystemIncludeVar);
-        standardIncludesSet.insert(cudaToolkitIncludeVec.begin(),
-                                   cudaToolkitIncludeVec.end());
-        mf->AddIncludeDirectories(cudaToolkitIncludeVec);
-      }
     }
     }
     mf->AddSystemIncludeDirectories(standardIncludesSet);
     mf->AddSystemIncludeDirectories(standardIncludesSet);
   }
   }

+ 2 - 4
Tests/CudaOnly/CMakeLists.txt

@@ -27,12 +27,10 @@ if(CMake_TEST_CUDA AND NOT CMake_TEST_CUDA STREQUAL "Clang")
   add_cuda_test_macro(CudaOnly.GPUDebugFlag CudaOnlyGPUDebugFlag)
   add_cuda_test_macro(CudaOnly.GPUDebugFlag CudaOnlyGPUDebugFlag)
 endif()
 endif()
 
 
+# The CUDA only ships the shared version of the toolkit libraries
+# on windows
 if(NOT WIN32)
 if(NOT WIN32)
-  # The CUDA only ships the shared version of the toolkit libraries
-  # on windows
   add_cuda_test_macro(CudaOnly.StaticRuntimePlusToolkit CudaOnlyStaticRuntimePlusToolkit)
   add_cuda_test_macro(CudaOnly.StaticRuntimePlusToolkit CudaOnlyStaticRuntimePlusToolkit)
-  # `isystem` behaves differently on windows with nvcc
-  add_cuda_test_macro(CudaOnly.ToolkitIsSystemInclude CudaOnlySystemInclude)
 endif()
 endif()
 
 
 add_cuda_test_macro(CudaOnly.DeviceLTO CudaOnlyDeviceLTO)
 add_cuda_test_macro(CudaOnly.DeviceLTO CudaOnlyDeviceLTO)

+ 0 - 7
Tests/CudaOnly/ToolkitIsSystemInclude/CMakeLists.txt

@@ -1,7 +0,0 @@
-cmake_minimum_required(VERSION 3.24)
-project(ToolkitIsSystemInclude CUDA)
-
-# Verify that the nvrtc.h that is inside `CMAKE_CURRENT_SOURCE_DIR` is still
-# the first include for `.cu` files.
-add_executable(CudaOnlySystemInclude main.cu)
-target_include_directories(CudaOnlySystemInclude SYSTEM PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)

+ 0 - 5
Tests/CudaOnly/ToolkitIsSystemInclude/include/nvrtc.h

@@ -1,5 +0,0 @@
-#define CMAKE_CUDA_TOOLKIT_IS_SYSTEM 1
-
-int main()
-{
-}

+ 0 - 4
Tests/CudaOnly/ToolkitIsSystemInclude/main.cu

@@ -1,4 +0,0 @@
-#include "nvrtc.h"
-#ifndef CMAKE_CUDA_TOOLKIT_IS_SYSTEM
-#  error "Failed to specify the CUDA Toolkit includes as system"
-#endif