# This file drives compilation of all examples and is installed together with the example sources.
cmake_minimum_required(VERSION 3.14.5)

project(GridTools-examples LANGUAGES CXX)

#include(ExternalProject)

enable_testing()

include(workaround_check_language.cmake) # see https://gitlab.kitware.com/cmake/cmake/issues/19013
_workaround_check_language(CUDA)
if(GT_EXAMPLES_FORCE_CUDA AND NOT CMAKE_CUDA_COMPILER)
    message(FATAL_ERROR "No CUDA compiler is available, but CUDA compilation was requested.")
endif()

foreach(ex IN ITEMS stencil_composition;stencil_computation;boundary_conditions;c_bindings)
    ExternalProject_Add(${ex}_example
        DOWNLOAD_COMMAND ""
        SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/${ex}
        CMAKE_ARGS
            -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
            -DCMAKE_CUDA_HOST_COMPILER=${CMAKE_CUDA_HOST_COMPILER}
            -DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON
        INSTALL_COMMAND ""
        )
    ExternalProject_Get_property(${ex}_example BINARY_DIR)
    add_test(NAME ${ex}_example COMMAND ctest WORKING_DIRECTORY ${BINARY_DIR})
endforeach()
