# 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 (fit2dat fit2dat.c)
add_executable (fit2res fit2res.c)
add_executable (fitedit fitedit.c)
add_executable (dftweigh dftweigh.c)
add_executable (fit_gvar fit_gvar.c)
add_executable (fit_sigm fit_sigm.c)
add_executable (fit_ratf fit_ratf.c)
add_executable (fit_line fit_line.c)
add_executable (fit_exp fit_exp.c)
add_executable (fit_hiad fit_hiad.c)
add_executable (paucinf paucinf.c)

# Link the executable to the libraries.
target_link_libraries (fit2dat tpcmodel tpccurveio tpcmisc m)
target_link_libraries (fit2res tpccurveio tpcmisc m)
target_link_libraries (fitedit tpccurveio tpcmisc m)
target_link_libraries (dftweigh tpcimgio tpccurveio tpcmisc m)
target_link_libraries (fit_gvar tpcmodext tpcsvg tpcmodel tpccurveio tpcmisc m)
target_link_libraries (fit_sigm tpcmodext tpcsvg tpcmodel tpccurveio tpcmisc m)
target_link_libraries (fit_ratf tpcmodext tpcsvg tpcmodel tpccurveio tpcmisc m)
target_link_libraries (fit_line tpcmodext tpcsvg tpcmodel tpccurveio tpcmisc m)
target_link_libraries (fit_exp tpcmodext tpcsvg tpcmodel tpccurveio tpcmisc m)
target_link_libraries (fit_hiad tpcmodext tpcsvg tpcmodel tpccurveio tpcmisc m)
target_link_libraries (paucinf tpcmodext tpcsvg tpcmodel tpccurveio tpcmisc m)

# Install the executable(s)
install(
  PROGRAMS
  ${CMAKE_CURRENT_BINARY_DIR}/fit2dat${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fit2res${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fitedit${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/dftweigh${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fit_gvar${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fit_sigm${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fit_ratf${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fit_line${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fit_exp${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fit_hiad${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/paucinf${CMAKE_EXECUTABLE_SUFFIX}
  DESTINATION bin
  COMPONENT applications
)

# Copy test data folder
add_custom_target(v1tacfitstests 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(fit2dat_Usage fit2dat "--help")
add_test(fit2res_Usage fit2res "--help")
add_test(fitedit_Usage fitedit "--help")
add_test(dftweigh_Usage dftweigh "--help")
add_test(fit_sigm_Usage fit_sigm "--help")
add_test(fit_gvar_Usage fit_gvar "--help")
add_test(fit_ratf_Usage fit_ratf "--help")
add_test(fit_line_Usage fit_line "--help")
add_test(fit_exp_Usage fit_exp "--help")
add_test(fit_hiad_Usage fit_hiad "--help")
add_test(paucinf_Usage paucinf "--help")
set_tests_properties(
  fit2dat_Usage fit2res_Usage fitedit_Usage dftweigh_Usage fit_sigm_Usage fit_gvar_Usage 
  fit_ratf_Usage fit_line_Usage fit_exp_Usage fit_hiad_Usage paucinf_Usage
  PROPERTIES PASS_REGULAR_EXPRESSION "Usage: *"
)

#
# Run test scripts
#
add_test (
  NAME fit2datTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fit2dat
  COMMAND bash "./test_fit2dat.sh"
)
add_test (
  NAME fit2resTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fit2res
  COMMAND bash "./test_fit2res.sh"
)
add_test (
  NAME fiteditTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fitedit
  COMMAND bash "./test_fitedit.sh"
)
add_test (
  NAME dftweighTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/dftweigh
  COMMAND bash "./test_dftweigh.sh"
)
add_test (
  NAME fit_sigmTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fit_sigm
  COMMAND bash "./test_fit_sigm.sh"
)
add_test (
  NAME fit_gvarTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fit_gvar
  COMMAND bash "./test_fit_gvar.sh"
)
add_test (
  NAME fit_ratfTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fit_ratf
  COMMAND bash "./test_fit_ratf.sh"
)
add_test (
  NAME fit_lineTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fit_line
  COMMAND bash "./test_fit_line.sh"
)
add_test (
  NAME fit_expTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fit_exp
  COMMAND bash "./test_fit_exp.sh"
)
add_test (
  NAME fit_hiadTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fit_hiad
  COMMAND bash "./test_fit_hiad.sh"
)
add_test (
  NAME paucinfTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/paucinf
  COMMAND bash "./test_paucinf.sh"
)
