# 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 (flat2img flat2img.c) 
add_executable (fvar4img fvar4img.c) 
add_executable (img2flat img2flat.c) 
add_executable (imgadd imgadd.c) 
add_executable (imgafind imgafind.c) 
add_executable (imgaumc imgaumc.c) 
add_executable (imgbkgrm imgbkgrm.c) 
add_executable (imgbox imgbox.c) 
add_executable (imgcbvp imgcbvp.c) 
add_executable (imgcalc imgcalc.c) 
add_executable (imgcat imgcat.c) 
add_executable (imgcbv imgcbv.c) 
add_executable (imgcutof imgcutof.c) 
add_executable (imgdecay imgdecay.c) 
add_executable (imgdelfr imgdelfr.c) 
add_executable (imgdelpl imgdelpl.c) 
add_executable (imgdysmo imgdysmo.c) 
add_executable (imgfiltg imgfiltg.c) 
add_executable (imgfiltl imgfiltl.c) 
add_executable (imgflip imgflip.c) 
add_executable (imgfrsmo imgfrsmo.c) 
add_executable (imgfsegm imgfsegm.c) 
add_executable (imgftac imgftac.c) 
add_executable (imgidpvc imgidpvc.c) 
add_executable (imginteg imginteg.c) 
add_executable (imginv imginv.c) 
add_executable (imgledif imgledif.c) 
add_executable (imglkup imglkup.c) 
add_executable (imgmask imgmask.c) 
add_executable (imgmove imgmove.c) 
add_executable (imgratio imgratio.c) 
add_executable (imgshrink imgshrink.c) 
add_executable (imgslim imgslim.c) 
add_executable (imgssegm imgssegm.c) 
add_executable (imgswell imgswell.c) 
add_executable (imgthbcv imgthbcv.c) 
add_executable (imgthrs imgthrs.c) 
add_executable (imgzavg imgzavg.c) 

# Link the executable to the libraries. 
target_link_libraries (flat2img tpcimgp tpcimgio tpcmisc m)
target_link_libraries (fvar4img tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (img2flat tpcimgio tpcmisc m)
target_link_libraries (imgadd tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imgafind tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imgaumc tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imgbkgrm tpcmodext tpccurveio tpcimgp tpcimgio tpcmodel tpcmisc m)
target_link_libraries (imgbox tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imgcalc tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imgcat tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imgcbv tpcmodext tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imgcbvp tpcmodext tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imgcutof tpcmodext tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imgdecay tpcimgio tpcmisc m)
target_link_libraries (imgdelfr tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imgdelpl tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imgdysmo tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (imgfiltg tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (imgfiltl tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (imgflip tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imgfrsmo tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (imgfsegm tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (imgftac tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (imgidpvc tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imginteg tpcmodext tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imginv tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imgledif tpcmodext tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imglkup tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (imgmask tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imgmove tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imgratio tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (imgshrink tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imgslim tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imgssegm tpcmodext tpcimgp tpcimgio tpcmodel tpccurveio tpcmisc m)
target_link_libraries (imgswell tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imgthbcv tpcmodext tpcmodel tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imgthrs tpcmodext tpcimgp tpcimgio tpcmisc m)
target_link_libraries (imgzavg tpcimgp tpcimgio tpcmisc m)

# Install the executable(s)
INSTALL(
  PROGRAMS
  ${CMAKE_CURRENT_BINARY_DIR}/flat2img${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fvar4img${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/img2flat${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgadd${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgafind${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgaumc${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgbkgrm${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgbox${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgcalc${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgcat${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgcbv${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgcbvp${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgcutof${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgdecay${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgdelfr${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgdelpl${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgdysmo${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgfiltg${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgfiltl${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgflip${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgfrsmo${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgfsegm${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgftac${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgidpvc${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imginteg${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imginv${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgledif${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imglkup${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgmask${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgmove${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgratio${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgshrink${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgslim${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgswell${CMAKE_EXECUTABLE_SUFFIX}
# imgssegm is not installed
# imgthbcv is not installed
  ${CMAKE_CURRENT_BINARY_DIR}/imgthrs${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/imgzavg${CMAKE_EXECUTABLE_SUFFIX}
  DESTINATION bin
  COMPONENT applications
)


# Copy test data folder
add_custom_target(imgtoolstests 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(flat2imgUsage flat2img "--help")
add_test(fvar4imgUsage fvar4img "--help")
add_test(img2flatUsage img2flat "--help")
add_test(imgaddUsage imgadd "--help")
add_test(imgafindUsage imgafind "--help")
add_test(imgaumcUsage imgaumc "--help")
add_test(imgbkgrmUsage imgbkgrm "--help")
add_test(imgboxUsage imgbox "--help")
add_test(imgcalcUsage imgcalc "--help")
add_test(imgcatUsage imgcat "--help")
add_test(imgcbvUsage imgcbv "--help")
add_test(imgcbvpUsage imgcbvp "--help")
add_test(imgcutofUsage imgcutof "--help")
add_test(imgdecayUsage imgdecay "--help")
add_test(imgdelfrUsage imgdelfr "--help")
add_test(imgdelplUsage imgdelpl "--help")
add_test(imgdysmoUsage imgdysmo "--help")
add_test(imgfiltgUsage imgfiltg "--help")
add_test(imgfiltlUsage imgfiltl "--help")
add_test(imgflipUsage imgflip "--help")
add_test(imgfrsmoUsage imgfrsmo "--help")
add_test(imgfsegmUsage imgfsegm "--help")
add_test(imgftacUsage imgftac "--help")
add_test(imgidpvcUsage imgidpvc "--help")
add_test(imgintegUsage imginteg "--help")
add_test(imginvUsage imginv "--help")
add_test(imgledifUsage imgledif "--help")
add_test(imglkupUsage imglkup "--help")
add_test(imgmaskUsage imgmask "--help")
add_test(imgmoveUsage imgmove "--help")
add_test(imgratioUsage imgratio "--help")
add_test(imgshrinkUsage imgshrink "--help")
add_test(imgslimUsage imgslim "--help")
add_test(imgswellUsage imgswell "--help")
add_test(imgthrsUsage imgthrs "--help")
add_test(imgzavgUsage imgzavg "--help")
set_tests_properties(
  flat2imgUsage fvar4imgUsage img2flatUsage imgaddUsage imgafindUsage imgaumcUsage 
  imgbkgrmUsage imgboxUsage imgcalcUsage imgcatUsage imgcbvUsage imgcbvpUsage 
  imgcutofUsage imgdecayUsage imgdelfrUsage
  imgdelplUsage imgdysmoUsage imgfiltgUsage imgfiltlUsage imgflipUsage imgfrsmoUsage 
  imgfsegmUsage imgftacUsage imgidpvcUsage imgintegUsage imginvUsage 
  imgledifUsage imglkupUsage imgmaskUsage imgmoveUsage
  imgratioUsage imgshrinkUsage imgslimUsage imgswellUsage imgthrsUsage imgzavgUsage
  PROPERTIES PASS_REGULAR_EXPRESSION "Usage: *"
)


#
# Run test scripts
# 
add_test (
  NAME flat2imgTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/flat2img
  COMMAND bash "./test_flat2img.sh"
)
add_test (
  NAME fvar4imgTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fvar4img
  COMMAND bash "./test_fvar4img.sh"
)
add_test (
  NAME img2flatTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/img2flat
  COMMAND bash "./test_img2flat.sh"
)
add_test (
  NAME imgaddTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgadd
  COMMAND bash "./test_imgadd.sh"
)
add_test (
  NAME imgafindTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgafind
  COMMAND bash "./test_imgafind.sh"
)
add_test (
  NAME imgaumcTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgaumc
  COMMAND bash "./test_imgaumc.sh"
)
add_test (
  NAME imgbkgrmTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgbkgrm
  COMMAND bash "./test_imgbkgrm.sh"
)
add_test (
  NAME imgboxTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgbox
  COMMAND bash "./test_imgbox.sh"
)
add_test (
  NAME imgcalcTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgcalc
  COMMAND bash "./test_imgcalc.sh"
)
add_test (
  NAME imgcatTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgcat
  COMMAND bash "./test_imgcat.sh"
)
add_test (
  NAME imgcbvTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgcbv
  COMMAND bash "./test_imgcbv.sh"
)
add_test (
  NAME imgcbvpTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgcbvp
  COMMAND bash "./test_imgcbvp.sh"
)
add_test (
  NAME imgcutofTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgcutof
  COMMAND bash "./test_imgcutof.sh"
)
add_test (
  NAME imgdecayTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgdecay
  COMMAND bash "./test_imgdecay.sh"
)
add_test (
  NAME imgdelfrTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgdelfr
  COMMAND bash "./test_imgdelfr.sh"
)
add_test (
  NAME imgdelplTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgdelpl
  COMMAND bash "./test_imgdelpl.sh"
)
add_test (
  NAME imgdysmoTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgdysmo
  COMMAND bash "./test_imgdysmo.sh"
)
add_test (
  NAME imgfiltgTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgfiltg
  COMMAND bash "./test_imgfiltg.sh"
)
set_tests_properties(imgfiltgTests PROPERTIES LABELS slow)
add_test (
  NAME imgfiltlTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgfiltl
  COMMAND bash "./test_imgfiltl.sh"
)
add_test (
  NAME imgflipTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgflip
  COMMAND bash "./test_imgflip.sh"
)
add_test (
  NAME imgfrsmoTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgfrsmo
  COMMAND bash "./test_imgfrsmo.sh"
)
add_test (
  NAME imgfsegmTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgfsegm
  COMMAND bash "./test_imgfsegm.sh"
)
add_test (
  NAME imgftacTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgftac
  COMMAND bash "./test_imgftac.sh"
)
add_test (
  NAME imgidpvcTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgidpvc
  COMMAND bash "./test_imgidpvc.sh"
)
add_test (
  NAME imgintegTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imginteg
  COMMAND bash "./test_imginteg.sh"
)
add_test (
  NAME imginvTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imginv
  COMMAND bash "./test_imginv.sh"
)
add_test (
  NAME imgledifTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgledif
  COMMAND bash "./test_imgledif.sh"
)
add_test (
  NAME imglkupTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imglkup
  COMMAND bash "./test_imglkup.sh"
)
add_test (
  NAME imgmaskTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgmask
  COMMAND bash "./test_imgmask.sh"
)
add_test (
  NAME imgmoveTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgmove
  COMMAND bash "./test_imgmove.sh"
)
add_test (
  NAME imgratioTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgratio
  COMMAND bash "./test_imgratio.sh"
)
add_test (
  NAME imgshrinkTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgshrink
  COMMAND bash "./test_imgshrink.sh"
)
add_test (
  NAME imgslimTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgslim
  COMMAND bash "./test_imgslim.sh"
)
add_test (
  NAME imgswellTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgswell
  COMMAND bash "./test_imgswell.sh"
)
add_test (
  NAME imgthrsTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgthrs
  COMMAND bash "./test_imgthrs.sh"
)
add_test (
  NAME imgzavgTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/imgzavg
  COMMAND bash "./test_imgzavg.sh"
)
