TRIBITS_SUBPACKAGE(Tacho)

IF (Kokkos_ENABLE_CUDA)
  # Tacho requires CUDA >= 8.0.
  IF (DEFINED CUDA_VERSION AND (CUDA_VERSION VERSION_LESS "8.0"))
    MESSAGE(FATAL_ERROR "Tacho requires CUDA 8 if CUDA is enabled")
  ENDIF()
  # If RDC is off, emits a warning message
  IF (NOT Kokkos_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE)
    MESSAGE(WARNING "Tacho requires CUDA relocatable device code to be enabled if CUDA is enabled. Set: Kokkos_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE=ON ")
  ENDIF()
ENDIF()
IF (Kokkos_ENABLE_PTHREAD)
  IF (NOT Kokkos_ENABLE_OPENMP)
    MESSAGE(FATAL_ERROR "Tacho can not be build with Pthreads as the Kokkos Host Backend.")
  ENDIF()
ENDIF()

# Set cmake variable to control examples and tests
IF (Kokkos_ENABLE_CUDA)
  IF (DEFINED CUDA_VERSION AND (CUDA_VERSION VERSION_LESS "8.0"))
    SET(TACHO_HAVE_KOKKOS_TASK OFF)
  ELSE()
    IF (Kokkos_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE)
      SET(TACHO_HAVE_KOKKOS_TASK ON)
    ELSE()
      SET(TACHO_HAVE_KOKKOS_TASK OFF)
    ENDIF()
  ENDIF()
ELSE()
  SET(TACHO_HAVE_KOKKOS_TASK ON)
ENDIF()

ADD_SUBDIRECTORY(src)
IF (TACHO_HAVE_KOKKOS_TASK)
  IF (Trilinos_ENABLE_Gtest)
    TRIBITS_ADD_EXAMPLE_DIRECTORIES(example)
    TRIBITS_ADD_TEST_DIRECTORIES(unit-test)
  ELSE()
    MESSAGE(STATUS "Tacho disables examples and tests as Trilinos disables Gtest")
  ENDIF()
ENDIF()
TRIBITS_SUBPACKAGE_POSTPROCESS()
