11#
2- # Copyright 2014-2017 Benjamin Worpitz, Erik Zenker
2+ # Copyright 2014-2018 Benjamin Worpitz, Erik Zenker, Axel Huebl
33#
44# This file is part of alpaka.
55#
@@ -50,10 +50,6 @@ UNSET(_ALPAKA_ADD_EXECUTABLE_FILE)
5050UNSET (_ALPAKA_ADD_LIBRRAY_FILE)
5151UNSET (_ALPAKA_FILES_HEADER)
5252UNSET (_ALPAKA_FILES_OTHER)
53- UNSET (_ALPAKA_VERSION_DEFINE)
54- UNSET (_ALPAKA_VER_MAJOR)
55- UNSET (_ALPAKA_VER_MINOR)
56- UNSET (_ALPAKA_VER_PATCH)
5753
5854#-------------------------------------------------------------------------------
5955# Common.
@@ -119,6 +115,18 @@ IF(${ALPAKA_DEBUG} GREATER 1)
119115 MESSAGE (STATUS "CMAKE_BUILD_TYPE : ${CMAKE_BUILD_TYPE} " )
120116ENDIF ()
121117
118+ #-------------------------------------------------------------------------------
119+ # Check supported compilers.
120+ IF (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.5)
121+ MESSAGE (FATAL_ERROR "Clang versions < 3.5 are not supported!" )
122+ SET (_ALPAKA_FOUND FALSE )
123+ ENDIF ()
124+
125+ IF (ALPAKA_ACC_CPU_B_SEQ_T_FIBERS_ENABLE AND ALPAKA_ACC_GPU_CUDA_ENABLE)
126+ MESSAGE (FATAL_ERROR "Fibers and CUDA back-end can not be enabled both at the same time." )
127+ SET (_ALPAKA_FOUND FALSE )
128+ ENDIF ()
129+
122130#-------------------------------------------------------------------------------
123131# Find Boost.
124132SET (_ALPAKA_BOOST_MIN_VER "1.62.0" )
@@ -325,6 +333,20 @@ IF(ALPAKA_ACC_GPU_CUDA_ENABLE)
325333 OPTION (ALPAKA_CUDA_KEEP_FILES "Keep all intermediate files that are generated during internal compilation steps (folder: nvcc_tmp)" OFF )
326334
327335 IF (ALPAKA_CUDA_COMPILER MATCHES "clang" )
336+ IF (NOT "${CMAKE_CXX_COMPILER_ID} " STREQUAL "Clang" )
337+ MESSAGE (FATAL_ERROR "Using clang as CUDA compiler is only possible if clang is the host compiler!" )
338+ ENDIF ()
339+
340+ IF (CMAKE_CXX_COMPILER_VERSION LESS 6.0)
341+ IF (CUDA_VERSION GREATER_EQUAL 9.0)
342+ MESSAGE (FATAL_ERROR "Clang versions lower than 6 do not support CUDA 9 or greater!" )
343+ ENDIF ()
344+ ELSEIF (CMAKE_CXX_COMPILER_VERSION LESS 7.0)
345+ IF (CUDA_VERSION GREATER_EQUAL 9.2)
346+ MESSAGE (FATAL_ERROR "Clang versions lower than 7 do not support CUDA 9.2 or greater!" )
347+ ENDIF ()
348+ ENDIF ()
349+
328350 FOREACH (_CUDA_ARCH_ELEM ${ALPAKA_CUDA_ARCH} )
329351 LIST (APPEND _ALPAKA_COMPILE_OPTIONS_PUBLIC "--cuda-gpu-arch=sm_${_CUDA_ARCH_ELEM} " )
330352 ENDFOREACH ()
@@ -357,6 +379,46 @@ IF(ALPAKA_ACC_GPU_CUDA_ENABLE)
357379 ENDIF ()
358380
359381 ELSE ()
382+ IF ("${CMAKE_CXX_COMPILER_ID} " STREQUAL "GNU" )
383+ IF (CUDA_VERSION VERSION_EQUAL 8.0)
384+ IF (CMAKE_CXX_COMPILER_VERSION GREATER_EQUAL 5.4)
385+ MESSAGE (FATAL_ERROR "NVCC 8.0 does not support GCC 5.4+. Please use GCC 4.9 - 5.3!" )
386+ ENDIF ()
387+ ELSEIF ((CUDA_VERSION VERSION_EQUAL 9.0) OR (CUDA_VERSION VERSION_EQUAL 9.1))
388+ IF (CMAKE_CXX_COMPILER_VERSION GREATER_EQUAL 6.0)
389+ MESSAGE (FATAL_ERROR "NVCC 9.0 - 9.1 do not support GCC 7+ and fail compiling the std::tuple implementation in GCC 6+. Please use GCC 4.9 - 5.5!" )
390+ ENDIF ()
391+ ELSEIF (CUDA_VERSION VERSION_EQUAL 9.2)
392+ IF (CMAKE_CXX_COMPILER_VERSION GREATER_EQUAL 8.0)
393+ MESSAGE (FATAL_ERROR "NVCC 9.2 does not support GCC 8+. Please use GCC 4.9, 5, 6 or 7!" )
394+ ENDIF ()
395+ ENDIF ()
396+ ELSEIF ("${CMAKE_CXX_COMPILER_ID} " STREQUAL "Clang" )
397+ IF (CUDA_VERSION VERSION_EQUAL 8.0)
398+ IF (CMAKE_CXX_COMPILER_VERSION GREATER_EQUAL 4.0)
399+ MESSAGE (FATAL_ERROR "NVCC 8.0 does not support clang 4+. Please use NVCC 9.1!" )
400+ ENDIF ()
401+ ELSEIF (CUDA_VERSION VERSION_EQUAL 9.0)
402+ IF (CMAKE_CXX_COMPILER_VERSION GREATER_EQUAL 4.0)
403+ MESSAGE (FATAL_ERROR "NVCC 9.0 does not support clang 4+. Please use NVCC 9.1!" )
404+ ENDIF ()
405+ ELSEIF (CUDA_VERSION VERSION_EQUAL 9.1)
406+ IF (CMAKE_CXX_COMPILER_VERSION GREATER_EQUAL 5.0)
407+ MESSAGE (FATAL_ERROR "NVCC 9.1 does not support clang 5+. Please use clang 4!" )
408+ ENDIF ()
409+ ELSEIF (CUDA_VERSION VERSION_EQUAL 9.2)
410+ IF (CMAKE_CXX_COMPILER_VERSION GREATER_EQUAL 6.0)
411+ MESSAGE (FATAL_ERROR "NVCC 9.2 does not support clang 6+ and fails compiling with clang 5. Please use clang 4!" )
412+ ENDIF ()
413+ ENDIF ()
414+ ENDIF ()
415+
416+ # CUDA 9.0 removed the __CUDACC_VER__ macro. Boost versions lower than 1.65.1 still use this macro.
417+ IF (CUDA_VERSION VERSION_GREATER_EQUAL 9.0 AND Boost_VERSION VERSION_LESS 1.65.1)
418+ MESSAGE (WARNING "CUDA 9.0 or newer requires boost-1.65.1 or newer!" )
419+ SET (_ALPAKA_FOUND FALSE )
420+ ENDIF ()
421+
360422 # Clean up the flags. Else, multiple find calls would result in duplicate flags. Furthermore, other modules may have set different settings.
361423 SET (CUDA_NVCC_FLAGS)
362424
@@ -386,8 +448,6 @@ IF(ALPAKA_ACC_GPU_CUDA_ENABLE)
386448
387449 IF (NOT MSVC )
388450 LIST (APPEND CUDA_NVCC_FLAGS "-std=c++11" )
389- ELSE ()
390- LIST (APPEND _ALPAKA_COMPILE_DEFINITIONS_PUBLIC "_HAS_ITERATOR_DEBUGGING=0" )
391451 ENDIF ()
392452
393453 SET (CUDA_HOST_COMPILER "${CMAKE_CXX_COMPILER} " )
@@ -677,10 +737,6 @@ IF(NOT _ALPAKA_FOUND)
677737 UNSET (_ALPAKA_FILES_HEADER)
678738 UNSET (_ALPAKA_FILES_OTHER)
679739 UNSET (_ALPAKA_BOOST_MIN_VER)
680- UNSET (_ALPAKA_VERSION_DEFINE)
681- UNSET (_ALPAKA_VER_MAJOR)
682- UNSET (_ALPAKA_VER_MINOR)
683- UNSET (_ALPAKA_VER_PATCH)
684740ELSE ()
685741 # Make internal variables advanced options in the GUI.
686742 MARK_AS_ADVANCED (
@@ -698,11 +754,7 @@ ELSE()
698754 _ALPAKA_ADD_LIBRARY_FILE
699755 _ALPAKA_FILES_HEADER
700756 _ALPAKA_FILES_OTHER
701- _ALPAKA_BOOST_MIN_VER
702- _ALPAKA_VERSION_DEFINE
703- _ALPAKA_VER_MAJOR
704- _ALPAKA_VER_MINOR
705- _ALPAKA_VER_PATCH)
757+ _ALPAKA_BOOST_MIN_VER)
706758ENDIF ()
707759
708760###############################################################################
0 commit comments