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

# 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/libtpcift) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcfileutil) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcli) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcstatist) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpccsv) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcisotope) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpctac) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcpar) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcfunc) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpccm) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcmodels) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpctacmod) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcrand) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpclinopt) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcnlopt) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcbfm) 

# Add executable that is built from the source file(s) 
# The extensions are automatically found. 
add_executable (fit_1tcm fit_1tcm.c) 
add_executable (fitmtrap fitmtrap.c) 
add_executable (fit_wliv fit_wliv.c) 
add_executable (fit_wpul fit_wpul.c) 
add_executable (taccbv taccbv.c) 

# Link the executable to the libraries. 
target_link_libraries (fit_1tcm tpcli tpccm tpctacmod tpcfunc tpcmodels tpcrand tpcnlopt tpclinopt tpcfileutil tpctac tpcpar tpccsv tpcift tpcextensions m)
target_link_libraries (fitmtrap tpcli tpccm tpctacmod tpcfunc tpcmodels tpcrand tpcnlopt tpclinopt tpcfileutil tpctac tpcpar tpccsv tpcift tpcextensions m)
target_link_libraries (fit_wliv tpcli tpccm tpctacmod tpcfunc tpcmodels tpcrand tpcnlopt tpclinopt tpcbfm tpcfileutil tpctac tpcpar tpccsv tpcift tpcextensions m)
target_link_libraries (fit_wpul tpcli tpccm tpctacmod tpcfunc tpcmodels tpcrand tpcnlopt tpclinopt tpcbfm tpcfileutil tpctac tpcpar tpccsv tpcift tpcextensions m)
target_link_libraries (taccbv tpcli tpctacmod tpcfileutil tpctac tpcpar tpccsv tpcift tpcextensions m)

# Install the executable(s)
install (
  PROGRAMS
#  ${CMAKE_CURRENT_BINARY_DIR}/fit_1tcm${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fitmtrap${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fit_wliv${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fit_wpul${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/taccbv${CMAKE_EXECUTABLE_SUFFIX}
  DESTINATION bin
  COMPONENT applications
)

# Copy test data folder
add_custom_target(taccmtests 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(fit_1tcmUsage fit_1tcm "--help")
add_test(fitmtrapUsage fitmtrap "--help")
add_test(fit_wlivUsage fit_wliv "--help")
add_test(fit_wpulUsage fit_wpul "--help")
add_test(taccbvUsage taccbv "--help")
set_tests_properties(
  fit_1tcmUsage fitmtrapUsage fit_wlivUsage fit_wpulUsage taccbvUsage
  PROPERTIES PASS_REGULAR_EXPRESSION "Usage: *"
)


#
# Run test scripts
# 
add_test (
  NAME fit_1tcm
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fit_1tcm
  COMMAND bash "./test_fit_1tcm.sh"
)
add_test (
  NAME fitmtrap
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fitmtrap
  COMMAND bash "./test_fitmtrap.sh"
)
add_test (
  NAME fit_wliv
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fit_wliv
  COMMAND bash "./test_fit_wliv.sh"
)
set_tests_properties(fit_wliv PROPERTIES LABELS slow)
add_test (
  NAME fit_wpul
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fit_wpul
  COMMAND bash "./test_fit_wpul.sh"
)
add_test (
  NAME taccbv
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/taccbv
  COMMAND bash "./test_taccbv.sh"
)
