# 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/libtpcimgio) 
include_directories (${CMAKE_SOURCE_DIR}/v1/libtpcimgp) 
include_directories (${CMAKE_SOURCE_DIR}/v1/libtpcsvg) 
include_directories (${CMAKE_SOURCE_DIR}/v1/libtpcmodext) 
include_directories (${CMAKE_SOURCE_DIR}/v1/libtpcroi) 

# 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/libtpcsvg) 
link_directories (${CMAKE_BINARY_DIR}/v1/libtpcmodext) 
link_directories (${CMAKE_BINARY_DIR}/v1/libtpcroi) 

# Add executable that is built from the source file(s) 
# The extensions are automatically found. 
add_executable (imgbfh2o imgbfh2o.c) 
#add_executable (imgbfh2om imgbfh2om.c) 
add_executable (imgbfbp imgbfbp.c) 
add_executable (imgbfk2 imgbfk2.c) 
add_executable (imgbfk3 imgbfk3.c) 
add_executable (imgflow imgflow.c) 
add_executable (imgflowd imgflowd.c) 
add_executable (imgflowm imgflowm.c) 
add_executable (imglhbdv imglhbdv.c) 
add_executable (imglhdv imglhdv.c) 
add_executable (imglhk1 imglhk1.c) 
add_executable (imglhk2d imglhk2d.c) 
add_executable (imglhk3 imglhk3.c) 
add_executable (imgmtrap imgmtrap.c) 
add_executable (imgmyocc imgmyocc.c) 
add_executable (imgsrtm imgsrtm.c) 
add_executable (imgweigh imgweigh.c) 

# Link the executable to the libraries. 
target_link_libraries (imgbfh2o tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
#target_link_libraries (imgbfh2om tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (imgbfbp tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (imgbfk2 tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (imgbfk3 tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (imgflow tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (imgflowd tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (imgflowm tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (imglhbdv tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (imglhdv tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (imglhk1 tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (imglhk2d tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (imglhk3 tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (imgmtrap tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (imgmyocc tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (imgsrtm tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (imgweigh tpcimgp tpcimgio tpcmisc m)

# Install the executable(s)
INSTALL(
  PROGRAMS
  ${CMAKE_CURRENT_BINARY_DIR}/imgbfbp${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgbfh2o${CMAKE_EXECUTABLE_SUFFIX}
#  ${CMAKE_CURRENT_BINARY_DIR}/imgbfh2om${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgbfk2${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgbfk3${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgflow${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgflowd${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgflowm${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imglhbdv${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imglhdv${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imglhk1${CMAKE_EXECUTABLE_SUFFIX}
#  ${CMAKE_CURRENT_BINARY_DIR}/imglhk2d${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imglhk3${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgmtrap${CMAKE_EXECUTABLE_SUFFIX}
#  ${CMAKE_CURRENT_BINARY_DIR}/imgmyocc${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgsrtm${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgweigh${CMAKE_EXECUTABLE_SUFFIX}
  DESTINATION bin
  COMPONENT applications
)


# Copy test data folder
add_custom_target(imgcmfitstests 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(imgbfbpUsage imgbfbp "--help")
add_test(imgbfh2oUsage imgbfh2o "--help")
#add_test(imgbfh2omUsage imgbfh2om "--help")
add_test(imgbfk2Usage imgbfk2 "--help")
add_test(imgbfk3Usage imgbfk3 "--help")
add_test(imgflowUsage imgflow "--help")
add_test(imgflowdUsage imgflowd "--help")
add_test(imgflowmUsage imgflowm "--help")
add_test(imglhbdvUsage imglhbdv "--help")
add_test(imglhdvUsage imglhdv "--help")
add_test(imglhk1Usage imglhk1 "--help")
add_test(imglhk2dUsage imglhk2d "--help")
add_test(imglhk3Usage imglhk3 "--help")
add_test(imgmtrapUsage imgmtrap "--help")
add_test(imgmyoccUsage imgmyocc "--help")
add_test(imgsrtmUsage imgflow "--help")
add_test(imgweighUsage imgweigh "--help")
set_tests_properties(
  imgbfbpUsage imgbfh2oUsage imgbfk2Usage imgbfk3Usage imgflowUsage imgflowdUsage imgflowmUsage
  imglhbdvUsage imglhdvUsage imglhk1Usage imglhk2dUsage imglhk3Usage imgmtrapUsage imgmyoccUsage
  imgsrtmUsage imgweighUsage
# imgbfh2omUsage
  PROPERTIES PASS_REGULAR_EXPRESSION "Usage: *"
)


#
# Run test scripts
# 
add_test (
  NAME imgbfbpTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgbfbp
  COMMAND bash "./test_imgbfbp.sh"
)
add_test (
  NAME imgbfh2oTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgbfh2o
  COMMAND bash "./test_imgbfh2o.sh"
)
#add_test (
#  NAME imgbfh2omTests
#  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgbfh2om
#  COMMAND bash "./test_imgbfh2om.sh"
#)
add_test (
  NAME imgbfk2Tests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgbfk2
  COMMAND bash "./test_imgbfk2.sh"
)
add_test (
  NAME imgbfk3Tests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgbfk3
  COMMAND bash "./test_imgbfk3.sh"
)
add_test (
  NAME imgflowTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgflow
  COMMAND bash "./test_imgflow.sh"
)
add_test (
  NAME imgflowdTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgflowd
  COMMAND bash "./test_imgflowd.sh"
)
add_test (
  NAME imgflowmTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgflowm
  COMMAND bash "./test_imgflowm.sh"
)
add_test (
  NAME imglhbdvTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imglhbdv
  COMMAND bash "./test_imglhbdv.sh"
)
add_test (
  NAME imglhdvTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imglhdv
  COMMAND bash "./test_imglhdv.sh"
)
add_test (
  NAME imglhk2dTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imglhk2d
  COMMAND bash "./test_imglhk2d.sh"
)
add_test (
  NAME imglhk1Tests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imglhk1
  COMMAND bash "./test_imglhk1.sh"
)
add_test (
  NAME imglhk3Tests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imglhk3
  COMMAND bash "./test_imglhk3.sh"
)
add_test (
  NAME imgmtrapTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgmtrap
  COMMAND bash "./test_imgmtrap.sh"
)
add_test (
  NAME imgsrtmTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgsrtm
  COMMAND bash "./test_imgsrtm.sh"
)
add_test (
  NAME imgweighTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgweigh
  COMMAND bash "./test_imgweigh.sh"
)
