# -----------------------------------------------------------------
#       Let Kokkos do the job and find good compilier flags
# -----------------------------------------------------------------

#
# This file is slightly adapted from Trilinos build system
# (https://trilinos.org/)
#

set(KOKKOS_SRC_PATH ${Kokkos_SOURCE_DIR})
set(KOKKOS_PATH ${KOKKOS_SRC_PATH})
set(Kokkos_GEN_DIR ${CMAKE_BINARY_DIR})

set_kokkos_cxx_compiler()
set_kokkos_cxx_standard()

include(${KOKKOS_SRC_PATH}/cmake/kokkos_options.cmake)

#------------ COMPUTE KOKKOS_SETTINGS ----------------------------------------
include(${KOKKOS_SRC_PATH}/cmake/kokkos_settings.cmake)

#------------ GENERATE HEADER AND SOURCE FILES -------------------------------
execute_process(
  COMMAND ${KOKKOS_SETTINGS} make -f ${KOKKOS_SRC_PATH}/cmake/Makefile.generate_cmake_settings CXX=${CMAKE_CXX_COMPILER} generate_build_settings
  WORKING_DIRECTORY "${Kokkos_GEN_DIR}"
  OUTPUT_FILE ${Kokkos_GEN_DIR}/core_src_make.out
  RESULT_VARIABLE GEN_SETTINGS_RESULT
  )

if (GEN_SETTINGS_RESULT)
  message(FATAL_ERROR "Kokkos settings generation failed:\n"
    "${KOKKOS_SETTINGS} make -f ${KOKKOS_SRC_PATH}/cmake/Makefile.generate_cmake_settings CXX=${CMAKE_CXX_COMPILER} generate_build_settings")
endif()

include(${Kokkos_GEN_DIR}/kokkos_generated_settings.cmake)

#------------ GET KOKKOS COMPILER OPTIONS ------------------------------------

set(CMAKE_CXX_FLAGSl "")
foreach(opt ${KOKKOS_CXX_FLAGS})
  set(CMAKE_CXX_FLAGSl "${CMAKE_CXX_FLAGSl} ${opt}")
endforeach()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGSl}")