# Make sure the compiler can find include files from our libraries. 
include_directories (${CMAKE_SOURCE_DIR}/v1/libtpcmisc) 
include_directories (${CMAKE_SOURCE_DIR}/v1/libtpccurveio) 
include_directories (${CMAKE_SOURCE_DIR}/v1/libtpcmodel) 
include_directories (${CMAKE_SOURCE_DIR}/v1/libtpcsvg) 
include_directories (${CMAKE_SOURCE_DIR}/v1/libtpcimgio) 
include_directories (${CMAKE_SOURCE_DIR}/v1/libtpcimgp) 
include_directories (${CMAKE_SOURCE_DIR}/v1/libtpcmodext) 

# Make sure the linker can find the libraries once they are built. 
link_directories (${CMAKE_BINARY_DIR}/v1/libtpcmisc) 
link_directories (${CMAKE_BINARY_DIR}/v1/libtpccurveio) 
link_directories (${CMAKE_BINARY_DIR}/v1/libtpcmodel) 
link_directories (${CMAKE_BINARY_DIR}/v1/libtpcsvg) 
link_directories (${CMAKE_BINARY_DIR}/v1/libtpcimgio) 
link_directories (${CMAKE_BINARY_DIR}/v1/libtpcimgp) 
link_directories (${CMAKE_BINARY_DIR}/v1/libtpcmodext) 

# Add executable that is built from the source file(s) 
# The extensions are automatically found. 
add_executable (fitk2 fitk2.c) 
add_executable (fitk3 fitk3.c) 
add_executable (fitk4 fitk4.c) 
add_executable (fitk5 fitk5.c) 
add_executable (fitk2di fitk2di.c) 
add_executable (fitk4di fitk4di.c) 
add_executable (fitvb fitvb.c) 
add_executable (fitmbf fitmbf.c) 
add_executable (fit_h2o fit_h2o.c) 
add_executable (fit_frtm fit_frtm.c) 
add_executable (fit_rrtm fit_rrtm.c) 
add_executable (fit_srtm fit_srtm.c) 
add_executable (fit_trtm fit_trtm.c) 

# Link the executable to the libraries. 
target_link_libraries (fitk2 tpcmodext tpcsvg tpcmodel tpccurveio tpcmisc m)
target_link_libraries (fitk3 tpcmodext tpcsvg tpcmodel tpccurveio tpcmisc m)
target_link_libraries (fitk4 tpcmodext tpcsvg tpcmodel tpccurveio tpcmisc m)
target_link_libraries (fitk5 tpcmodext tpcsvg tpcmodel tpccurveio tpcmisc m)
target_link_libraries (fitk2di tpcmodext tpcsvg tpcmodel tpccurveio tpcmisc m)
target_link_libraries (fitk4di tpcmodext tpcsvg tpcmodel tpccurveio tpcmisc m)
target_link_libraries (fitvb tpcmodext tpcsvg tpcmodel tpccurveio tpcmisc m)
target_link_libraries (fitmbf tpcmodext tpcsvg tpcmodel tpccurveio tpcmisc m)
target_link_libraries (fit_h2o tpcmodext tpcsvg tpcmodel tpccurveio tpcmisc m)
target_link_libraries (fit_frtm tpcmodext tpcsvg tpcmodel tpccurveio tpcmisc m)
target_link_libraries (fit_rrtm tpcmodext tpcsvg tpcmodel tpccurveio tpcmisc m)
target_link_libraries (fit_srtm tpcmodext tpcsvg tpcmodel tpccurveio tpcmisc m)
target_link_libraries (fit_trtm tpcmodext tpcsvg tpcmodel tpccurveio tpcmisc m)

# Install the executable(s)
install(
  PROGRAMS
  ${CMAKE_CURRENT_BINARY_DIR}/fitk2${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fitk3${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fitk4${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fitk5${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fitk2di${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fitk4di${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fitvb${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fitmbf${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fit_h2o${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fit_frtm${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fit_rrtm${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fit_srtm${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fit_trtm${CMAKE_EXECUTABLE_SUFFIX}
  DESTINATION bin
  COMPONENT applications
)


# Copy test data folder
add_custom_target(cmfitstests ALL
  COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/test
  COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/test ${CMAKE_CURRENT_BINARY_DIR}/test/
)
# And delete test data folder with clean
set_property(DIRECTORY PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${CMAKE_CURRENT_BINARY_DIR}/test")


#
# Simple tests
#

# Does does the usage message work
add_test(fitk2_Usage fitk2 "--help")
add_test(fitk3_Usage fitk3 "--help")
add_test(fitk4_Usage fitk4 "--help")
add_test(fitk5_Usage fitk5 "--help")
add_test(fitk2di_Usage fitk2di "--help")
add_test(fitk4di_Usage fitk4di "--help")
add_test(fitvb_Usage fitvb "--help")
add_test(fitmbf_Usage fitmbf "--help")
add_test(fit_h2o_Usage fit_h2o "--help")
add_test(fit_frtm_Usage fit_frtm "--help")
add_test(fit_rrtm_Usage fit_rrtm "--help")
add_test(fit_srtm_Usage fit_srtm "--help")
add_test(fit_trtm_Usage fit_trtm "--help")
set_tests_properties(
  fitk2_Usage fitk3_Usage fitk4_Usage fitk5_Usage fitk2di_Usage fitk4di_Usage fitvb_Usage 
  fitmbf_Usage fit_h2o_Usage fit_frtm_Usage fit_rrtm_Usage fit_srtm_Usage fit_trtm_Usage 
  PROPERTIES PASS_REGULAR_EXPRESSION "Usage: *"
)

#
# Run test scripts
# 
add_test (
  NAME fitk2Tests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fitk2
  COMMAND bash "./test_fitk2.sh"
)
add_test (
  NAME fitk3Tests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fitk3
  COMMAND bash "./test_fitk3.sh"
)
add_test (
  NAME fitk4Tests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fitk4
  COMMAND bash "./test_fitk4.sh"
)
add_test (
  NAME fitk5Tests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fitk5
  COMMAND bash "./test_fitk5.sh"
)
set_tests_properties(fitk5Tests PROPERTIES LABELS slow)
add_test (
  NAME fitk2diTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fitk2di
  COMMAND bash "./test_fitk2di.sh"
)
add_test (
  NAME fitk4diTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fitk4di
  COMMAND bash "./test_fitk4di.sh"
)
add_test (
  NAME fitvbTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fitvb
  COMMAND bash "./test_fitvb.sh"
)
add_test (
  NAME fitmbfTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fitmbf
  COMMAND bash "./test_fitmbf.sh"
)
add_test (
  NAME fit_h2oTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fit_h2o
  COMMAND bash "./test_fit_h2o.sh"
)
add_test (
  NAME fit_frtmTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fit_frtm
  COMMAND bash "./test_fit_frtm.sh"
)
add_test (
  NAME fit_rrtmTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fit_rrtm
  COMMAND bash "./test_fit_rrtm.sh"
)
add_test (
  NAME fit_srtmTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fit_srtm
  COMMAND bash "./test_fit_srtm.sh"
)
add_test (
  NAME fit_trtmTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fit_trtm
  COMMAND bash "./test_fit_trtm.sh"
)
