# 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 (mask2pxl mask2pxl.c) 
add_executable (maskcloak maskcloak.c) 
add_executable (maskconj maskconj.c) 
add_executable (maskdila maskdila.c) 
add_executable (maskeros maskeros.c) 
add_executable (maskinv maskinv.c) 
add_executable (masklbl masklbl.c) 
add_executable (masksize masksize.c) 
add_executable (pxl2mask pxl2mask.c) 

# Link the executable to the libraries. 
target_link_libraries (mask2pxl tpcimgp tpcimgio tpcmisc m)
target_link_libraries (maskcloak tpcimgp tpcimgio tpcmisc m)
target_link_libraries (maskconj tpcimgp tpcimgio tpcmisc m)
target_link_libraries (maskdila tpcimgp tpcimgio tpcmisc m)
target_link_libraries (maskeros tpcimgp tpcimgio tpcmisc m)
target_link_libraries (maskinv tpcimgp tpcimgio tpcmisc m)
target_link_libraries (masklbl tpcimgp tpcimgio tpcmisc m)
target_link_libraries (masksize tpcimgp tpcimgio tpcmisc m)
target_link_libraries (pxl2mask tpcimgp tpcimgio tpcmisc m)

# Install the executable(s)
INSTALL(
  PROGRAMS
  ${CMAKE_CURRENT_BINARY_DIR}/mask2pxl${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/maskcloak${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/maskconj${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/maskdila${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/maskeros${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/maskinv${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/masklbl${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/masksize${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/pxl2mask${CMAKE_EXECUTABLE_SUFFIX}
  DESTINATION bin
  COMPONENT applications
)


# Copy test data folder
add_custom_target(masktests 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 the usage message work
add_test(mask2pxlUsage mask2pxl "--help")
add_test(maskcloakUsage maskcloak "--help")
add_test(maskconjUsage maskconj "--help")
add_test(maskdilaUsage maskdila "--help")
add_test(maskerosUsage maskeros "--help")
add_test(maskinvUsage maskinv "--help")
add_test(masklblUsage masklbl "--help")
add_test(masksizeUsage masksize "--help")
add_test(pxl2maskUsage pxl2mask "--help")
set_tests_properties(
  mask2pxlUsage maskcloakUsage maskconjUsage maskdilaUsage maskerosUsage maskinvUsage masklblUsage
  masksizeUsage pxl2maskUsage
  PROPERTIES PASS_REGULAR_EXPRESSION "Usage: *"
)


#
# Run test scripts
# 
add_test (
  NAME mask2pxlTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/mask2pxl
  COMMAND bash "./test_mask2pxl.sh"
)
add_test (
  NAME maskcloakTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/maskcloak
  COMMAND bash "./test_maskcloak.sh"
)
add_test (
  NAME maskconjTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/maskconj
  COMMAND bash "./test_maskconj.sh"
)
add_test (
  NAME maskdilaTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/maskdila
  COMMAND bash "./test_maskdila.sh"
)
add_test (
  NAME maskerosTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/maskeros
  COMMAND bash "./test_maskeros.sh"
)
add_test (
  NAME maskinvTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/maskinv
  COMMAND bash "./test_maskinv.sh"
)
add_test (
  NAME masklblTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/masklbl
  COMMAND bash "./test_masklbl.sh"
)
add_test (
  NAME masksizeTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/masksize
  COMMAND bash "./test_masksize.sh"
)
add_test (
  NAME pxl2maskTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/pxl2mask
  COMMAND bash "./test_pxl2mask.sh"
)
