mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-11 16:32:14 -06:00
CUDA: Revert "Always mark cuda toolkit as system include"
We need to revert this change as it can disable error messages
when compiling invalid CUDA code.
This reverts commit ea659b155d (CUDA: Always mark cuda toolkit as system
include, 2022-06-27, v3.25.0-rc1~269^2).
This commit is contained in:
committed by
Brad King
parent
20bfbf7838
commit
d0e52219eb
@@ -127,8 +127,10 @@ list(REMOVE_ITEM CMAKE_CUDA_IMPLICIT_LINK_LIBRARIES ${CMAKE_CUDA_IMPLICIT_LINK_L
|
||||
if(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
|
||||
# Remove the CUDA Toolkit include directories from the set of
|
||||
# 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)
|
||||
list(REMOVE_ITEM CMAKE_CUDA_IMPLICIT_INCLUDE_DIRECTORIES
|
||||
${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}
|
||||
|
||||
@@ -1855,15 +1855,6 @@ void cmGlobalGenerator::FinalizeTargetConfiguration()
|
||||
cmExpandedList(standardIncludesStr);
|
||||
standardIncludesSet.insert(standardIncludesVec.begin(),
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -27,12 +27,10 @@ if(CMake_TEST_CUDA AND NOT CMake_TEST_CUDA STREQUAL "Clang")
|
||||
add_cuda_test_macro(CudaOnly.GPUDebugFlag CudaOnlyGPUDebugFlag)
|
||||
endif()
|
||||
|
||||
# The CUDA only ships the shared version of the toolkit libraries
|
||||
# on windows
|
||||
if(NOT WIN32)
|
||||
# The CUDA only ships the shared version of the toolkit libraries
|
||||
# on windows
|
||||
add_cuda_test_macro(CudaOnly.StaticRuntimePlusToolkit CudaOnlyStaticRuntimePlusToolkit)
|
||||
# `isystem` behaves differently on windows with nvcc
|
||||
add_cuda_test_macro(CudaOnly.ToolkitIsSystemInclude CudaOnlySystemInclude)
|
||||
endif()
|
||||
|
||||
add_cuda_test_macro(CudaOnly.DeviceLTO CudaOnlyDeviceLTO)
|
||||
|
||||
@@ -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)
|
||||
@@ -1,5 +0,0 @@
|
||||
#define CMAKE_CUDA_TOOLKIT_IS_SYSTEM 1
|
||||
|
||||
int main()
|
||||
{
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
#include "nvrtc.h"
|
||||
#ifndef CMAKE_CUDA_TOOLKIT_IS_SYSTEM
|
||||
# error "Failed to specify the CUDA Toolkit includes as system"
|
||||
#endif
|
||||
Reference in New Issue
Block a user