# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.

if(NOT DEFINED CMAKE_CUDA_STANDARD)
    set(CMAKE_CUDA_STANDARD 11)
    set(CMAKE_CUDA_STANDARD_REQUIRED ON)
endif()

enable_language(CUDA)

if(NOT DEFINED NVCC_ARCHS_SUPPORTED)
    # Reference: https://github.com/NVIDIA/cutlass/blob/0e137486498a52954eff239d874ee27ab23358e7/CMakeLists.txt#L89
    set(NVCC_ARCHS_SUPPORTED "")
    if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 7.5)
      list(APPEND NVCC_ARCHS_SUPPORTED 53)
    endif()
    if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 8.0)
      list(APPEND NVCC_ARCHS_SUPPORTED 60 61)
    endif()
    if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 9.0)
      list(APPEND NVCC_ARCHS_SUPPORTED 70)
    endif()
    if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 9.2)
      list(APPEND NVCC_ARCHS_SUPPORTED 72)
    endif()
    if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 10.0)
      list(APPEND NVCC_ARCHS_SUPPORTED 75)
    endif()
    if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 11.0)
      list(APPEND NVCC_ARCHS_SUPPORTED 80)
    endif()
    if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 11.1)
      list(APPEND NVCC_ARCHS_SUPPORTED 86)
    endif()
    if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 11.8)
      list(APPEND NVCC_ARCHS_SUPPORTED 89 90)
    endif()
endif()
