CMAKE_MINIMUM_REQUIRED(VERSION 3.8.0)

INCLUDE(CTest)

  set(PhactoriTestDirectory
    ${CMAKE_CURRENT_BINARY_DIR}/PhactoriTests)
  set(PhactoriUnitTestsDirectory
    ${PhactoriTestDirectory}/UnitTests)
  file(MAKE_DIRECTORY ${PhactoriUnitTestsDirectory})

  set(PARALLEL_RUN_EXECUTABLE ${MPIEXEC_EXECUTABLE})
  if(${CATALYST_TEST_USE_SRUN_NOT_MPIEXEC} MATCHES "srun")
    set(PARALLEL_RUN_EXECUTABLE "srun")
  endif()

  message(STATUS "CATALYST_TEST_USE_SRUN_NOT_MPIEXEC is ${CATALYST_TEST_USE_SRUN_NOT_MPIEXEC}")
  message(STATUS "PARALLEL_RUN_EXECUTABLE is ${PARALLEL_RUN_EXECUTABLE}")

FUNCTION(addCatalystTest TEST_NAME MPI_RANKS_LIST TEST_EXECUTABLE
         EXTRA_TEST_ARGS)
    FOREACH(PROC ${MPI_RANKS_LIST})
        set(localWorkingDir ${CMAKE_CURRENT_BINARY_DIR}/testdirs/${TEST_NAME}_NP_${PROC})
        file(MAKE_DIRECTORY ${localWorkingDir})
        ADD_TEST(NAME ${TEST_NAME}_NP_${PROC}
             COMMAND ${PARALLEL_RUN_EXECUTABLE}
             ${MPIEXEC_NUMPROC_FLAG} ${PROC}
             ${TEST_EXECUTABLE} ${EXTRA_TEST_ARGS}
             WORKING_DIRECTORY ${localWorkingDir}
        )
    ENDFOREACH()
ENDFUNCTION()

ADD_SUBDIRECTORY(fixture)
ADD_SUBDIRECTORY(logging)
ADD_SUBDIRECTORY(parser)
ADD_SUBDIRECTORY(phactori)
ADD_SUBDIRECTORY(pipeline)
ADD_SUBDIRECTORY(version)
