cmake_minimum_required (VERSION 2.8.10)
PROJECT (HDFEOS_TESTDRIVERS_GRID)

#-----------------------------------------------------------------------------
# Setup include Directories
#-----------------------------------------------------------------------------
LINK_DIRECTORIES (
    ${HDFEOS_SRC_BINARY_DIR}
    ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
)

ADD_EXECUTABLE (testgrid ${PROJECT_SOURCE_DIR}/testgrid.c)
TARGET_NAMING (testgrid ${LIB_TYPE})
TARGET_LINK_LIBRARIES (testgrid ${HDFEOS_SRC_LIB_TARGET} ${HDFEOS_GCTP_SRC_LIB_TARGET} ${LINK_LIBS})

IF (HDFEOS_BUILD_FORTRAN AND HAVE_F2CFORTRAN_MACRO)
  # make test dir
  FILE (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/fortran")

  IF (HDF5_ENABLE_SZIP_SUPPORT)
    SET (fort_testdriver_src testgrid_szip77)
  ELSE (HDF5_ENABLE_SZIP_SUPPORT)
    SET (fort_testdriver_src testgrid77)
  ENDIF (HDF5_ENABLE_SZIP_SUPPORT)

  ADD_EXECUTABLE (testgrid_f77 ${PROJECT_SOURCE_DIR}/${fort_testdriver_src}.f)
  TARGET_NAMING (testgrid_f77 ${LIB_TYPE})
  TARGET_FORTRAN_WIN_PROPERTIES (testgrid_f77 "")
  SET_TARGET_PROPERTIES (testgrid_f77 PROPERTIES LINKER_LANGUAGE Fortran)
  TARGET_LINK_LIBRARIES (testgrid_f77 ${HDFEOS_SRC_LIB_TARGET} ${HDFEOS_GCTP_SRC_LIB_TARGET} ${LINK_LIBS})

  IF (HAVE_F2CFORTRAN_32PTR)
    ADD_EXECUTABLE (testgrid_f90 ${PROJECT_SOURCE_DIR}/testgridf90-32.f)
    TARGET_NAMING (testgrid_f90 ${LIB_TYPE})
    TARGET_FORTRAN_WIN_PROPERTIES (testgrid_f90 "")
    SET_TARGET_PROPERTIES (testgrid_f90 PROPERTIES LINKER_LANGUAGE Fortran)
    TARGET_LINK_LIBRARIES (testgrid_f90 ${HDFEOS_SRC_LIB_TARGET} ${HDFEOS_GCTP_SRC_LIB_TARGET} ${LINK_LIBS})
  ENDIF (HAVE_F2CFORTRAN_32PTR)
ENDIF (HDFEOS_BUILD_FORTRAN AND HAVE_F2CFORTRAN_MACRO)
  
##############################################################################
##############################################################################
###           T H E   T E S T S                                            ###
##############################################################################
##############################################################################
IF (BUILD_TESTING)

  ADD_TEST (NAME GRID_test_c COMMAND $<TARGET_FILE:testgrid>)

  ADD_TEST (NAME GRID_test_c_verbose COMMAND $<TARGET_FILE:testgrid> -v h)
  SET_TESTS_PROPERTIES (GRID_test_c_verbose PROPERTIES DEPENDS GRID_test_c)

  IF (HDFEOS_BUILD_FORTRAN AND HAVE_F2CFORTRAN_MACRO)
    # Remove any output file left over from previous test run
    ADD_TEST (
        NAME GRID_test_f77-clearall-objects
        COMMAND    ${CMAKE_COMMAND} -E remove
            Grid3.hdf Gridc_Test.hdf Gridf_Test.hdf testgridf.txt
    )
    SET_TESTS_PROPERTIES (GRID_test_f77-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/fortran")
    SET_TESTS_PROPERTIES (GRID_test_f77-clearall-objects PROPERTIES DEPENDS GRID_test_c_verbose)

    ADD_TEST (NAME GRID_test_f77 COMMAND $<TARGET_FILE:testgrid_f77>)
    SET_TESTS_PROPERTIES (GRID_test_f77 PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/fortran")
    SET_TESTS_PROPERTIES (GRID_test_f77 PROPERTIES DEPENDS GRID_test_f77-clearall-objects)

    IF (HAVE_F2CFORTRAN_32PTR)
      # Remove any output file left over from previous test run
      ADD_TEST (
          NAME GRID_test_f90-clearall-objects
          COMMAND    ${CMAKE_COMMAND} -E remove
              Grid3.hdf Gridc_Test.hdf Gridf_Test.hdf testgridf.txt
      )
      SET_TESTS_PROPERTIES (GRID_test_f90-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/fortran")
      SET_TESTS_PROPERTIES (GRID_test_f90-clearall-objects PROPERTIES DEPENDS GRID_test_f77)

      ADD_TEST (NAME GRID_test_f90 COMMAND $<TARGET_FILE:testgrid_f90>)
      SET_TESTS_PROPERTIES (GRID_test_f90 PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/fortran")
      SET_TESTS_PROPERTIES (GRID_test_f90 PROPERTIES DEPENDS GRID_test_f90-clearall-objects)
    ENDIF (HAVE_F2CFORTRAN_32PTR)
  ENDIF (HDFEOS_BUILD_FORTRAN AND HAVE_F2CFORTRAN_MACRO)

ENDIF (BUILD_TESTING)
