# Make sure the compiler can find include files from our libraries. 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpcextensions) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpcisotope) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpcbfm) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpcfileutil) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpctac) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpcli) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpcmodels) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpcfunc) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpccm) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpclinopt) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpcrand) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpcnlopt) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpctacmod) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpcfunc) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpcpar) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpccsv) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpcift) 

# Make sure the linker can find the libraries once they are built. 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcextensions) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcisotope) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcbfm) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcfileutil) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpctac) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcli) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcmodels) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcfunc) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpclinopt) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcrand) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcnlopt) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpccm) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpctacmod) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcpar) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpccsv) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcift) 

# Add executable that is built from the source file(s) 
# The extensions are automatically found. 
add_executable (fit_blddr fit_blddr.c) 
add_executable (fit_dexp fit_dexp.c) 
add_executable (fit_wcdf fit_wcdf.c) 
add_executable (fit_xexp fit_xexp.c) 
add_executable (fit_xsur fit_xsur.c) 
add_executable (tacmean tacmean.c) 
add_executable (tacpeak tacpeak.c) 
add_executable (tacslope tacslope.c) 

# Link the executable to the libraries. 
target_link_libraries (fit_blddr tpctacmod tpcfunc tpcmodels tpcrand tpcnlopt tpcfileutil tpctac tpcpar tpccsv tpcift tpcextensions m)
target_link_libraries (fit_dexp tpcbfm tpcrand tpcnlopt tpclinopt tpctac tpcpar tpccsv tpcift tpcextensions m)
target_link_libraries (fit_wcdf tpctacmod tpcfunc tpcmodels tpcrand tpcnlopt tpcfileutil tpctac tpcpar tpccsv tpcift tpcextensions m)
target_link_libraries (fit_xexp tpcli tpccm tpctacmod tpcfunc tpcmodels tpcrand tpcnlopt tpcfileutil tpctac tpcpar tpccsv tpcift tpcextensions m)
target_link_libraries (fit_xsur tpcli tpccm tpctacmod tpcfunc tpcmodels tpcrand tpcnlopt tpcfileutil tpctac tpcpar tpccsv tpcift tpcextensions m)
target_link_libraries (tacmean tpcift tpcpar tpctac tpcextensions m)
target_link_libraries (tacpeak tpctacmod tpcpar tpcfunc tpcmodels tpcift tpctac tpcextensions m)
target_link_libraries (tacslope tpclinopt tpctacmod tpcpar tpcfunc tpcmodels tpcift tpctac tpcextensions m)

# Install the executable(s)
install (
  PROGRAMS
#  ${CMAKE_CURRENT_BINARY_DIR}/fit_blddr${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fit_dexp${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fit_wcdf${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fit_xexp${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fit_xsur${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacmean${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacpeak${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacslope${CMAKE_EXECUTABLE_SUFFIX}
  DESTINATION bin
  COMPONENT applications
)

# Copy test data folder
add_custom_target(tacfitstests 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
#
add_test(fit_blddrUsage fit_blddr "--help")
add_test(fit_dexpUsage fit_dexp "--help")
add_test(fit_wcdfUsage fit_wcdf "--help")
add_test(fit_xexpUsage fit_xexp "--help")
add_test(fit_xsurUsage fit_xsur "--help")
add_test(tacmeanUsage tacmean "--help")
add_test(tacpeakUsage tacpeak "--help")
add_test(tacslopeUsage tacslope "--help")
set_tests_properties(
  fit_dexpUsage fit_wcdfUsage fit_xexpUsage fit_xsurUsage tacmeanUsage tacpeakUsage tacslopeUsage
  PROPERTIES PASS_REGULAR_EXPRESSION "Usage: *"
)

#
# Run test scripts
# 
add_test (
  NAME fit_blddr
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fit_blddr
  COMMAND bash "./test_fit_blddr.sh"
)
set_tests_properties(fit_blddr PROPERTIES LABELS slow)
add_test (
  NAME fit_dexp
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fit_dexp
  COMMAND bash "./test_fit_dexp.sh"
)
add_test (
  NAME fit_wcdf
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fit_wcdf
  COMMAND bash "./test_fit_wcdf.sh"
)
set_tests_properties(fit_wcdf PROPERTIES LABELS slow)
add_test (
  NAME fit_xexp
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fit_xexp
  COMMAND bash "./test_fit_xexp.sh"
)
add_test (
  NAME fit_xsur
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fit_xsur
  COMMAND bash "./test_fit_xsur.sh"
)
add_test (
  NAME tacpeak
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacpeak
  COMMAND bash "./test_tacpeak.sh"
)
add_test (
  NAME tacmean
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacmean
  COMMAND bash "./test_tacmean.sh"
)
add_test (
  NAME tacslope
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacslope
  COMMAND bash "./test_tacslope.sh"
)
