cmake_minimum_required (VERSION 2.8.10)
PROJECT (HDFEOS_TESTDRIVERS_POINT)

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

ADD_EXECUTABLE (testpoint ${PROJECT_SOURCE_DIR}/testpoint.c)
TARGET_NAMING (testpoint ${LIB_TYPE})
TARGET_LINK_LIBRARIES (testpoint ${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")

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

  IF (HAVE_F2CFORTRAN_32PTR)
    ADD_EXECUTABLE (testpoint_f90 ${PROJECT_SOURCE_DIR}/testpointf90-32.f)
    TARGET_NAMING (testpoint_f90 ${LIB_TYPE})
    TARGET_FORTRAN_WIN_PROPERTIES (testpoint_f90 "")
    SET_TARGET_PROPERTIES (testpoint_f90 PROPERTIES LINKER_LANGUAGE Fortran)
    TARGET_LINK_LIBRARIES (testpoint_f90 ${HDFEOS_SRC_LIB_TARGET} ${HDFEOS_GCTP_SRC_LIB_TARGET} ${LINK_LIBS})
  ENDIF (HAVE_F2CFORTRAN_32PTR)
ENDIF (HDFEOS_BUILD_FORTRAN AND HAVE_F2CFORTRAN_MACRO)

SET (POINT_REFERENCE_FILES
  fixedBuoy0.txt
  fixedBuoy1.txt
  fixedBuoy1s.txt
  floatBuoy0.txt
  floatBuoy1.txt
  simple.txt
)
FOREACH (out_file ${POINT_REFERENCE_FILES})
  SET (outdest "${PROJECT_BINARY_DIR}/${out_file}")
  #MESSAGE (STATUS " Translating ${out_file}")
  ADD_CUSTOM_COMMAND (
      TARGET     testpoint
      POST_BUILD
      COMMAND    ${XLATE_UTILITY}
      ARGS       ${PROJECT_SOURCE_DIR}/${out_file} ${outdest}
  )
ENDFOREACH (out_file ${POINT_REFERENCE_FILES})

IF (HDFEOS_BUILD_FORTRAN AND HAVE_F2CFORTRAN_MACRO)
  FOREACH (out_file ${POINT_REFERENCE_FILES})
    SET (outdest "${PROJECT_BINARY_DIR}/fortran/${out_file}")
    #MESSAGE (STATUS " Translating ${out_file}")
    ADD_CUSTOM_COMMAND (
        TARGET     testpoint_f77
        POST_BUILD
        COMMAND    ${XLATE_UTILITY}
        ARGS       ${PROJECT_SOURCE_DIR}/${out_file} ${outdest}
    )
  ENDFOREACH (out_file ${POINT_REFERENCE_FILES})
ENDIF (HDFEOS_BUILD_FORTRAN AND HAVE_F2CFORTRAN_MACRO)
  
##############################################################################
##############################################################################
###           T H E   T E S T S                                            ###
##############################################################################
##############################################################################
IF (BUILD_TESTING)

  ADD_TEST (NAME POINT_test_c COMMAND $<TARGET_FILE:testpoint>)

  ADD_TEST (NAME POINT_test_c_verbose COMMAND $<TARGET_FILE:testpoint> -v h)
  SET_TESTS_PROPERTIES (POINT_test_c_verbose PROPERTIES DEPENDS POINT_test_c)

  IF (HDFEOS_BUILD_FORTRAN AND HAVE_F2CFORTRAN_MACRO)
    # Remove any output file left over from previous test run
    ADD_TEST (
        NAME POINT_test_f77-clearall-objects
        COMMAND    ${CMAKE_COMMAND} -E remove
            Pointc_Test.hdf Pointf_Test.hdf testpointf.txt
    )
    SET_TESTS_PROPERTIES (POINT_test_f77-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/fortran")
    SET_TESTS_PROPERTIES (POINT_test_f77-clearall-objects PROPERTIES DEPENDS POINT_test_c_verbose)

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

    IF (HAVE_F2CFORTRAN_32PTR)
      # Remove any output file left over from previous test run
      ADD_TEST (
          NAME POINT_test_f90-clearall-objects
          COMMAND    ${CMAKE_COMMAND} -E remove
              Pointc_Test.hdf Pointf_Test.hdf testpointf.txt
      )
      SET_TESTS_PROPERTIES (POINT_test_f90-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/fortran")
      SET_TESTS_PROPERTIES (POINT_test_f90-clearall-objects PROPERTIES DEPENDS POINT_test_f77)

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

ENDIF (BUILD_TESTING)
