ff687016ee
It is very easy to cause ODR violations with DeviceAdapterTagCuda. If you include that header from a C++ file and a CUDA file inside the same program we an ODR violation. The reasons is that the C++ versions will say the tag is invalid, and the CUDA will say the tag is valid. The solution to this is that any compilation unit that includes DeviceAdapterTagCuda from a version of VTK-m that has CUDA enabled must be invoked by the cuda compiler.
50 lines
1.3 KiB
CMake
50 lines
1.3 KiB
CMake
##============================================================================
|
|
## Copyright (c) Kitware, Inc.
|
|
## All rights reserved.
|
|
## See LICENSE.txt for details.
|
|
##
|
|
## This software is distributed WITHOUT ANY WARRANTY; without even
|
|
## the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
## PURPOSE. See the above copyright notice for more information.
|
|
##============================================================================
|
|
|
|
set(headers
|
|
TestingOpenGLInterop.h
|
|
TestingTransferFancyHandles.h
|
|
)
|
|
vtkm_declare_headers(${headers})
|
|
|
|
|
|
if(NOT TARGET GLUT::GLUT)
|
|
find_package(GLUT QUIET)
|
|
|
|
if(NOT TARGET GLUT::GLUT)
|
|
return()
|
|
endif()
|
|
endif()
|
|
|
|
# rendering can only have a single backend so we need to
|
|
if(VTKm_ENABLE_OSMESA_CONTEXT AND TARGET vtkm_rendering)
|
|
list(APPEND unit_tests
|
|
UnitTestTransferOSMesa.cxx
|
|
UnitTestFancyTransferOSMesa.cxx
|
|
)
|
|
elseif(VTKm_ENABLE_EGL_CONTEXT AND TARGET vtkm_rendering)
|
|
list(APPEND unit_tests
|
|
UnitTestTransferEGL.cxx
|
|
UnitTestFancyTransferEGL.cxx
|
|
)
|
|
elseif(VTKm_ENABLE_GL_CONTEXT AND TARGET vtkm_rendering)
|
|
list(APPEND unit_tests
|
|
UnitTestTransferGLUT.cxx
|
|
UnitTestFancyTransferGLUT.cxx
|
|
)
|
|
endif()
|
|
|
|
if(unit_tests)
|
|
vtkm_unit_tests(SOURCES ${unit_tests}
|
|
LIBRARIES vtkm_rendering GLUT::GLUT
|
|
DEFINES VTKM_NO_ERROR_ON_MIXED_CUDA_CXX_TAG)
|
|
|
|
endif()
|