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

# Add executable that is built from the source file(s) 
# The extensions are automatically found. 
add_executable (img2dft img2dft.c) 
add_executable (img2tif img2tif.c) 
add_executable (imgdim imgdim.c) 
add_executable (imgfrdif imgfrdif.c) 
add_executable (imgfrdyn imgfrdyn.c) 
add_executable (imghead imghead.c) 
add_executable (imghist imghist.c) 
add_executable (imgmatch imgmatch.c) 
add_executable (imgmax imgmax.c) 
add_executable (imgmaxp imgmaxp.c) 
add_executable (imgmlist imgmlist.c) 
add_executable (imgpeak imgpeak.c) 
add_executable (imgposv imgposv.c) 
add_executable (imgprofi imgprofi.c) 
add_executable (imgqntls imgqntls.c) 
add_executable (imgslope imgslope.c) 
add_executable (imgunit imgunit.c) 
add_executable (pxl2tac pxl2tac.c) 
add_executable (siflist siflist.c) 

# Link the executable to the libraries. 
target_link_libraries (img2dft tpcidi tpcmodext tpcimgp tpcroi tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (img2tif tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imgdim tpcimgio tpcmisc m)
target_link_libraries (imgfrdif tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imgfrdyn tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imghead tpcmodext tpcimgp tpcimgio tpccurveio tpcmisc m)
target_link_libraries (imghist tpcmodext tpcsvg tpcimgp tpcimgio tpccurveio tpcmisc m)
target_link_libraries (imgmatch tpcimgio tpcmisc m)
target_link_libraries (imgmax tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imgmaxp tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imgmlist tpcimgio tpcmisc m)
target_link_libraries (imgpeak tpcimgp tpcimgio tpccurveio tpcmodel tpcmisc m)
target_link_libraries (imgposv tpcimgio tpcmisc m)
target_link_libraries (imgprofi tpcimgp tpcimgio tpccurveio tpcmisc m)
target_link_libraries (imgqntls tpcimgp tpcimgio tpccurveio tpcmisc m)
target_link_libraries (imgslope tpcimgp tpcimgio tpccurveio tpcmodel tpcmisc m)
target_link_libraries (imgunit tpcimgp tpcimgio tpcmisc m)
target_link_libraries (pxl2tac tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (siflist tpcimgio tpcmisc m)

# Install the executable(s)
INSTALL(
  PROGRAMS
  ${CMAKE_CURRENT_BINARY_DIR}/img2dft${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/img2tif${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgdim${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgfrdif${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgfrdyn${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imghead${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imghist${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgmatch${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgmax${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgmaxp${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgmlist${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgpeak${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgposv${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgprofi${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgqntls${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgslope${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgunit${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/pxl2tac${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/siflist${CMAKE_EXECUTABLE_SUFFIX}
  DESTINATION bin
  COMPONENT applications
)


# Copy test data folder
add_custom_target(imginformtests 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(img2dftUsage img2dft "--help")
add_test(img2tifUsage img2tif "--help")
add_test(imgdimUsage imgdim "--help")
add_test(imgfrdifUsage imgfrdif "--help")
add_test(imgfrdynUsage imgfrdif "--help")
add_test(imgheadUsage imghead "--help")
add_test(imghistUsage imghist "--help")
add_test(imgmatchUsage imgmatch "--help")
add_test(imgmaxUsage imgmax "--help")
add_test(imgmaxpUsage imgmaxp "--help")
add_test(imgmlistUsage imgmlist "--help")
add_test(imgpeakUsage imgpeak "--help")
add_test(imgposvUsage imgposv "--help")
add_test(imgprofiUsage imgprofi "--help")
add_test(imgqntlsUsage imgqntls "--help")
add_test(imgslopeUsage imgslope "--help")
add_test(imgunitUsage imgunit "--help")
add_test(pxl2tacUsage pxl2tac "--help")
add_test(siflistUsage siflist "--help")
set_tests_properties(
  img2dftUsage img2tifUsage imgdimUsage imgfrdifUsage imgfrdynUsage imgheadUsage imghistUsage
  imgmatchUsage imgmaxUsage imgmaxpUsage imgmlistUsage imgpeakUsage imgposvUsage imgprofiUsage
  imgqntlsUsage imgslopeUsage imgunitUsage pxl2tacUsage siflistUsage
  PROPERTIES PASS_REGULAR_EXPRESSION "Usage: *"
)


#
# Run test scripts
# 
add_test (
  NAME img2dftTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/img2dft
  COMMAND bash "./test_img2dft.sh"
)
add_test (
  NAME imgheadTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imghead
  COMMAND bash "./test_imghead.sh"
)
add_test (
  NAME imgdimTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgdim
  COMMAND bash "./test_imgdim.sh"
)
add_test (
  NAME imgfrdifTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgfrdif
  COMMAND bash "./test_imgfrdif.sh"
)
add_test (
  NAME imgfrdynTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgfrdyn
  COMMAND bash "./test_imgfrdyn.sh"
)
add_test (
  NAME imghistTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imghist
  COMMAND bash "./test_imghist.sh"
)
add_test (
  NAME imgmatchTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgmatch
  COMMAND bash "./test_imgmatch.sh"
)
add_test (
  NAME imgmaxTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgmax
  COMMAND bash "./test_imgmax.sh"
)
add_test (
  NAME imgmaxpTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgmaxp
  COMMAND bash "./test_imgmaxp.sh"
)
#add_test (
#  NAME imgmlistTests
#  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgmlist
#  COMMAND bash "./test_imgmlist.sh"
#)
add_test (
  NAME imgpeakTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgpeak
  COMMAND bash "./test_imgpeak.sh"
)
add_test (
  NAME imgposvTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgposv
  COMMAND bash "./test_imgposv.sh"
)
add_test (
  NAME imgprofiTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgprofi
  COMMAND bash "./test_imgprofi.sh"
)
add_test (
  NAME imgqntlsTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgqntls
  COMMAND bash "./test_imgqntls.sh"
)
add_test (
  NAME imgslopeTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgslope
  COMMAND bash "./test_imgslope.sh"
)
add_test (
  NAME imgunitTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgunit
  COMMAND bash "./test_imgunit.sh"
)
add_test (
  NAME pxl2tacTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/pxl2tac
  COMMAND bash "./test_pxl2tac.sh"
)
add_test (
  NAME siflistTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/siflist
  COMMAND bash "./test_siflist.sh"
)
