file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/output)
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/macro DESTINATION ${CMAKE_CURRENT_BINARY_DIR})

add_custom_target(examples)

add_amdis_executable(NAME boundary.2d             SOURCES boundary.cc             DIM 2 DOW 2)
add_amdis_executable(NAME convection_diffusion.2d SOURCES convection_diffusion.cc DIM 2 DOW 2)
add_amdis_executable(NAME ellipt.2d               SOURCES ellipt.cc               DIM 2 DOW 2)
add_amdis_executable(NAME ellipt.3d               SOURCES ellipt.cc               DIM 3 DOW 3)
add_amdis_executable(NAME heat.2d                 SOURCES heat.cc                 DIM 2 DOW 2)
add_amdis_executable(NAME heat.3d                 SOURCES heat.cc                 DIM 3 DOW 3)
add_amdis_executable(NAME navier_stokes.2d        SOURCES navier_stokes.cc        DIM 2 DOW 2)
add_amdis_executable(NAME neumann                 SOURCES neumann.cc)
add_amdis_executable(NAME periodic.1d             SOURCES periodic_1d.cc          DIM 1 DOW 1)
add_amdis_executable(NAME periodic_ellipt.2d      SOURCES periodic_ellipt.cc      DIM 2 DOW 2)
add_amdis_executable(NAME stokes0.2d              SOURCES stokes0.cc              DIM 2 DOW 2)
add_amdis_executable(NAME stokes1.2d              SOURCES stokes1.cc              DIM 2 DOW 2)
add_amdis_executable(NAME stokes3.2d              SOURCES stokes3.cc              DIM 2 DOW 2)
add_amdis_executable(NAME traversal               SOURCES traversal.cc)
add_amdis_executable(NAME vecellipt.2d            SOURCES vecellipt.cc            DIM 2 DOW 2)
add_amdis_executable(NAME nonlin-poisson.2d       SOURCES nonlin-poisson.cc       DIM 2 DOW 2)

add_dependencies(examples
  boundary.2d
  convection_diffusion.2d
  ellipt.2d
  ellipt.3d
  heat.2d
  heat.3d
  navier_stokes.2d
  neumann
  periodic.1d
  periodic_ellipt.2d
  stokes0.2d
  stokes1.2d
  stokes3.2d
  traversal
  vecellipt.2d
  nonlin-poisson.2d
)

if (ALBERTA_FOUND)
  add_amdis_executable(NAME cahn_hilliard.2d SOURCES cahn_hilliard.cc DIM 2 DOW 2 ALBERTA_GRID)
  add_dependencies(examples cahn_hilliard.2d)
endif ()

if(ALBERTA_FOUND AND (BACKEND STREQUAL "MTL" OR BACKEND STREQUAL "MTL4"))
  add_amdis_executable(NAME periodic_cahn_hilliard.2d SOURCES periodic_cahn_hilliard.cc DIM 2 DOW 2 ALBERTA_GRID)
  add_dependencies(examples periodic_cahn_hilliard.2d)
endif ()

if (dune-foamgrid_FOUND AND ALBERTA_FOUND)
  add_amdis_executable(NAME surface.2d SOURCES surface.cc DIM 2 DOW 3 ALBERTA_GRID)
  add_dependencies(examples surface.2d)
endif ()

if(BACKEND STREQUAL "MTL")
  add_amdis_executable(NAME stokes_mtl SOURCES stokes_mtl.cc DIM 2 DOW 2)
  add_amdis_executable(NAME navier_stokes_mtl SOURCES navier_stokes_mtl.cc DIM 2 DOW 2)
  add_dependencies(examples stokes_mtl navier_stokes_mtl)
endif()
