# 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) 
include_directories (${CMAKE_SOURCE_DIR}/v1/libtpcidi) 

# 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/libtpcimgio) 
link_directories (${CMAKE_BINARY_DIR}/v1/libtpcimgp) 
link_directories (${CMAKE_BINARY_DIR}/v1/libtpcmodext) 
link_directories (${CMAKE_BINARY_DIR}/v1/libtpcidi) 

# Add executable that is built from the source file(s) 
# The extensions are automatically found. 
add_executable (p2t_3c p2t_3c.c) 
add_executable (p2t_v3c p2t_v3c.c) 
add_executable (p2t_di p2t_di.c) 
add_executable (ainterp ainterp.c) 
add_executable (b2t_h2o b2t_h2o.c) 
add_executable (b2t_mo2 b2t_mo2.c) 
add_executable (heartcor heartcor.c) 
add_executable (simiart simiart.c) 
add_executable (simimyoc simimyoc.c) 

# Link the executable to the libraries. 
target_link_libraries (p2t_3c tpcmodel tpccurveio tpcmisc m)
target_link_libraries (p2t_v3c tpcmodel tpccurveio tpcmisc m)
target_link_libraries (p2t_di tpcmodel tpccurveio tpcmisc m)
target_link_libraries (ainterp tpcmodext tpcmodel tpccurveio tpcmisc m)
target_link_libraries (b2t_h2o tpcmodel tpccurveio tpcmisc m)
target_link_libraries (b2t_mo2 tpcmodext tpcmodel tpccurveio tpcmisc m)
target_link_libraries (heartcor tpcidi tpccurveio tpcmisc m)
target_link_libraries (simiart tpcidi tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (simimyoc tpcidi tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)

# Install the executable(s)
INSTALL(
  PROGRAMS
  ${CMAKE_CURRENT_BINARY_DIR}/p2t_3c${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/p2t_v3c${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/p2t_di${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/ainterp${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/b2t_h2o${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/b2t_mo2${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/heartcor${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/simiart${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/simimyoc${CMAKE_EXECUTABLE_SUFFIX}
  DESTINATION bin
  COMPONENT applications
)


# Copy test data folder
add_custom_target(simulationstests 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(p2t_3c_Usage p2t_3c "--help")
add_test(p2t_v3c_Usage p2t_v3c "--help")
add_test(p2t_di_Usage p2t_di "--help")
add_test(ainterp_Usage ainterp "--help")
add_test(b2t_h2o_Usage b2t_h2o "--help")
add_test(b2t_mo2_Usage b2t_mo2 "--help")
add_test(heartcor_Usage heartcor "--help")
add_test(simiart_Usage simiart "--help")
add_test(simimyoc_Usage simimyoc "--help")
set_tests_properties(
  p2t_3c_Usage p2t_v3c_Usage p2t_di_Usage ainterp_Usage b2t_h2o_Usage b2t_mo2_Usage
  heartcor_Usage simiart_Usage simimyoc_Usage
  PROPERTIES PASS_REGULAR_EXPRESSION "Usage: *"
)


#
# Run test scripts
# 
add_test (
  NAME p2t_3cTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/p2t_3c
  COMMAND bash "./test_p2t_3c.sh"
)
add_test (
  NAME p2t_v3cTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/p2t_v3c
  COMMAND bash "./test_p2t_v3c.sh"
)
add_test (
  NAME p2t_diTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/p2t_di
  COMMAND bash "./test_p2t_di.sh"
)
add_test (
  NAME ainterpTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/ainterp
  COMMAND bash "./test_ainterp.sh"
)
add_test (
  NAME b2t_h2oTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/b2t_h2o
  COMMAND bash "./test_b2t_h2o.sh"
)
add_test (
  NAME b2t_mo2Tests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/b2t_mo2
  COMMAND bash "./test_b2t_mo2.sh"
)
add_test (
  NAME heartcorTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/heartcor
  COMMAND bash "./test_heartcor.sh"
)
add_test (
  NAME simiartTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/simiart
  COMMAND bash "./test_simiart.sh"
)
add_test (
  NAME simimyocTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/simimyoc
  COMMAND bash "./test_simimyoc.sh"
)
