include(CheckGeneratorSupport)
if(NOT CMAKE_GENERATOR_SUPPORT_FORTRAN)
  message(STATUS "Skipping Tests for the LAMMPS Fortran Module: no Fortran support in build tool")
  return()
endif()

include(CheckLanguage)
check_language(Fortran)
if(NOT CMAKE_Fortran_COMPILER_ID)
  message(STATUS "Skipping Tests for the LAMMPS Fortran Module: cannot identify Fortran compiler")
  return()
endif()

if(CMAKE_Fortran_COMPILER)
  enable_language(C)
  enable_language(Fortran)
  get_filename_component(LAMMPS_FORTRAN_MODULE ${LAMMPS_SOURCE_DIR}/../fortran/lammps.f90 ABSOLUTE)
  if(BUILD_MPI)
    find_package(MPI REQUIRED)
  else()
    add_library(fmpi_stubs STATIC mpi_stubs.f90)
    add_library(MPI::MPI_Fortran ALIAS fmpi_stubs)
  endif()

  add_library(flammps STATIC ${LAMMPS_FORTRAN_MODULE})

  add_executable(test_fortran_create wrap_create.cpp test_fortran_create.f90)
  target_link_libraries(test_fortran_create PRIVATE flammps lammps MPI::MPI_Fortran GTest::GTest GTest::GTestMain)
  add_test(FortranOpen test_fortran_create)

  add_executable(test_fortran_commands wrap_commands.cpp test_fortran_commands.f90)
  target_link_libraries(test_fortran_commands PRIVATE flammps lammps MPI::MPI_Fortran GTest::GTest GTest::GTestMain)
  add_test(FortranCommands test_fortran_commands)
else()
  message(STATUS "Skipping Tests for the LAMMPS Fortran Module: no Fortran compiler")
endif()
