
# 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/libtpcift) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpcfileutil) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpcstatist) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpccsv) 
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/libtpcpar) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpctacmod) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpccm) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpcrand) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpcdcm) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpcecat) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpcnifti) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpcimage) 


# 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/libtpcift) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcfileutil) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcstatist) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpccsv) 
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/libtpcpar) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpctacmod) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpccm) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcrand) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcdcm) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcecat) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcnifti) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcimage) 


# Add executable that is built from the source file(s) 
# The extensions are automatically found. 
add_executable (hist2svg hist2svg.c) 
add_executable (simboxes simboxes.c) 
add_executable (simcirc simcirc.c) 
add_executable (simelli simelli.c) 
add_executable (tac2nii tac2nii.c) 

# Link the executable to the libraries. 
target_link_libraries (hist2svg tpctacmod tpcift tpctac tpcextensions m)
target_link_libraries (simboxes tpcift tpccsv tpcextensions m)
target_link_libraries (simcirc tpcift tpccsv tpcextensions m)
target_link_libraries (simelli tpcimage tpcdcm tpcecat tpcextensions m)
target_link_libraries (tac2nii tpcimage tpcdcm tpcecat tpctac tpcift tpccsv tpcextensions m)

# Install the executable(s)
install (
  PROGRAMS
  ${CMAKE_CURRENT_BINARY_DIR}/hist2svg${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/simboxes${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/simcirc${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/simelli${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tac2nii${CMAKE_EXECUTABLE_SUFFIX}
  DESTINATION bin
  COMPONENT applications
)

# Copy test data folder
add_custom_target(simimgtests 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(hist2svgUsage hist2svg "--help")
add_test(simboxesUsage simboxes "--help")
add_test(simcircUsage simcirc "--help")
add_test(simelliUsage simelli "--help")
add_test(tac2niiUsage tac2nii "--help")
set_tests_properties(
  hist2svgUsage simboxesUsage simcircUsage simelliUsage tac2niiUsage 
  PROPERTIES PASS_REGULAR_EXPRESSION "Usage: *"
)

#
# Run test scripts
# 
add_test (
  NAME hist2svgTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/hist2svg
  COMMAND bash "./test_hist2svg.sh"
)
add_test (
  NAME simboxesTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/simboxes
  COMMAND bash "./test_simboxes.sh"
)
add_test (
  NAME simcircTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/simcirc
  COMMAND bash "./test_simcirc.sh"
)
add_test (
  NAME simelliTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/simelli
  COMMAND bash "./test_simelli.sh"
)
add_test (
  NAME tac2niiTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tac2nii
  COMMAND bash "./test_tac2nii.sh"
)
