# 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/libtpcmodext) 

# Add executable that is built from the source file(s) 
# The extensions are automatically found. 
add_executable (addtimes addtimes.c) 
add_executable (dft2res dft2res.c) 
add_executable (dftavg dftavg.c) 
add_executable (dftcat dftcat.c) 
#add_executable (dftcbv dftcbv.c) 
add_executable (dftdblf dftdblf.c) 
add_executable (dftinteg dftinteg.c) 
add_executable (dftmax dftmax.c) 
add_executable (dftratio dftratio.c) 
add_executable (dftscale dftscale.c) 
add_executable (tac2svg tac2svg.c) 
#add_executable (tactime tactime.c) 

# Link the executable to the libraries. 
target_link_libraries (addtimes tpccurveio tpcmisc m)
target_link_libraries (dft2res tpccurveio tpcmisc m)
target_link_libraries (dftavg tpccurveio tpcmisc m)
target_link_libraries (dftcat tpccurveio tpcmisc m)
#target_link_libraries (dftcbv tpcmodext tpcmodel tpccurveio tpcmisc m)
target_link_libraries (dftdblf tpcmodext tpcmodel tpccurveio tpcmisc m)
target_link_libraries (dftinteg tpcmodext tpcmodel tpccurveio tpcmisc m)
target_link_libraries (dftmax tpcmodext tpcmodel tpccurveio tpcmisc m)
target_link_libraries (dftratio tpcmodext tpcmodel tpccurveio tpcmisc m)
target_link_libraries (dftscale tpcmodext tpcmodel tpccurveio tpcmisc m)
target_link_libraries (tac2svg tpcsvg tpcmodel tpccurveio tpcmisc m)
#target_link_libraries (tactime tpcmodel tpccurveio tpcmisc m)

# Install the executable(s)
install(
  PROGRAMS
  ${CMAKE_CURRENT_BINARY_DIR}/addtimes${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/dft2res${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/dftavg${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/dftcat${CMAKE_EXECUTABLE_SUFFIX}
#  ${CMAKE_CURRENT_BINARY_DIR}/dftcbv${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/dftdblf${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/dftinteg${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/dftmax${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/dftratio${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/dftscale${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tac2svg${CMAKE_EXECUTABLE_SUFFIX}
#  ${CMAKE_CURRENT_BINARY_DIR}/tactime${CMAKE_EXECUTABLE_SUFFIX}
  DESTINATION bin
  COMPONENT applications
)

# Copy test data folder
add_custom_target(tactoolstests 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(addtimes_Usage addtimes "--help")
add_test(dft2res_Usage dft2res "--help")
add_test(dftavg_Usage dftavg "--help")
add_test(dftcat_Usage dftcat "--help")
#add_test(dftcbv_Usage dftcbv "--help")
add_test(dftdblf_Usage dftdblf "--help")
add_test(dftinteg_Usage dftinteg "--help")
add_test(dftmax_Usage dftmax "--help")
add_test(dftratio_Usage dftratio "--help")
add_test(dftscale_Usage dftscale "--help")
add_test(tac2svg_Usage tac2svg "--help")
#add_test(tactime_Usage tactime "--help")
set_tests_properties(
  addtimes_Usage dft2res_Usage dftavg_Usage dftcat_Usage dftdblf_Usage dftinteg_Usage
  dftmax_Usage dftratio_Usage dftscale_Usage tac2svg_Usage
  PROPERTIES PASS_REGULAR_EXPRESSION "Usage: *"
)

#
# Run test scripts
# 
add_test (
  NAME addtimesTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/addtimes
  COMMAND bash "./test_addtimes.sh"
)
add_test (
  NAME dft2resTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/dft2res
  COMMAND bash "./test_dft2res.sh"
)
add_test (
  NAME dftavgTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/dftavg
  COMMAND bash "./test_dftavg.sh"
)
add_test (
  NAME dftcatTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/dftcat
  COMMAND bash "./test_dftcat.sh"
)
#add_test (
#  NAME dftcbvTests
#  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/dftcbv
#  COMMAND bash "./test_dftcbv.sh"
#)
add_test (
  NAME dftdblfTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/dftdblf
  COMMAND bash "./test_dftdblf.sh"
)
add_test (
  NAME dftintegTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/dftinteg
  COMMAND bash "./test_dftinteg.sh"
)
add_test (
  NAME dftmaxTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/dftmax
  COMMAND bash "./test_dftmax.sh"
)
add_test (
  NAME dftratioTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/dftratio
  COMMAND bash "./test_dftratio.sh"
)
add_test (
  NAME dftscaleTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/dftscale
  COMMAND bash "./test_dftscale.sh"
)
add_test (
  NAME tac2svgTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tac2svg
  COMMAND bash "./test_tac2svg.sh"
)
