# Make sure the compiler can find include files from our libraries. 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpcextensions) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpccsv) 
include_directories (${CMAKE_SOURCE_DIR}/v2/libtpcift) 

# 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/libtpccsv) 
link_directories (${CMAKE_BINARY_DIR}/v2/libtpcift) 

# Add executable that is built from the source file(s) 
# The extensions are automatically found. 
add_executable (csv2ift csv2ift.c) 
add_executable (execlong execlong.c) 
add_executable (iftadd iftadd.c) 
add_executable (iftdel iftdel.c) 
add_executable (iftedit iftedit.c) 
add_executable (iftisval iftisval.c) 
add_executable (iftlist iftlist.c) 
add_executable (iftmatch iftmatch.c) 
add_executable (iftren iftren.c) 
add_executable (iftvalc iftvalc.c) 
add_executable (rmcmnts rmcmnts.c) 

# Link the executable to the libraries. 
target_link_libraries (csv2ift tpcift tpccsv tpcextensions m)
target_link_libraries (execlong tpcift tpcextensions m)
target_link_libraries (iftadd tpcift tpcextensions m)
target_link_libraries (iftdel tpcift tpcextensions m)
target_link_libraries (iftedit tpcift tpcextensions m)
target_link_libraries (iftisval tpcift tpcextensions m)
target_link_libraries (iftlist tpcift tpcextensions m)
target_link_libraries (iftmatch tpcift tpcextensions m)
target_link_libraries (iftren tpcift tpcextensions m)
target_link_libraries (iftvalc tpcift tpcextensions m)
target_link_libraries (rmcmnts tpcextensions m)

# Install the executable(s)
install (
  PROGRAMS
  ${CMAKE_CURRENT_BINARY_DIR}/csv2ift${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/execlong${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/iftadd${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/iftdel${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/iftedit${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/iftisval${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/iftlist${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/iftmatch${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/iftren${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/iftvalc${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/rmcmnts${CMAKE_EXECUTABLE_SUFFIX}
  DESTINATION bin
  COMPONENT applications
)

# Copy test data folder
add_custom_target(iftutilstests 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(csv2iftUsage csv2ift "--help")
add_test(execlongUsage execlong "--help")
add_test(iftaddUsage iftadd "--help")
add_test(iftdelUsage iftdel "--help")
add_test(ifteditUsage iftedit "--help")
add_test(iftisvalUsage iftisval "--help")
add_test(iftlistUsage iftlist "--help")
add_test(iftmatchUsage iftmatch "--help")
add_test(iftrenUsage iftren "--help")
add_test(iftvalcUsage iftvalc "--help")
add_test(rmcmntsUsage rmcmnts "--help")
set_tests_properties(
  csv2iftUsage execlongUsage iftaddUsage iftdelUsage ifteditUsage iftisvalUsage iftlistUsage 
  iftmatchUsage iftrenUsage iftvalcUsage rmcmntsUsage 
  PROPERTIES PASS_REGULAR_EXPRESSION "Usage: *"
)

#
# Run test scripts
#
add_test (
  NAME csv2iftTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/csv2ift
  COMMAND bash "./test_csv2ift.sh"
)
add_test (
  NAME execlongTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/execlong
  COMMAND bash "./test_execlong.sh"
)
add_test (
  NAME iftaddTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/iftadd
  COMMAND bash "./test_iftadd.sh"
)
add_test (
  NAME iftdelTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/iftdel
  COMMAND bash "./test_iftdel.sh"
)
add_test (
  NAME ifteditTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/iftedit
  COMMAND bash "./test_iftedit.sh"
)
add_test (
  NAME iftisvalTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/iftisval
  COMMAND bash "./test_iftisval.sh"
)
add_test (
  NAME iftlistTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/iftlist
  COMMAND bash "./test_iftlist.sh"
)
add_test (
  NAME iftmatchTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/iftmatch
  COMMAND bash "./test_iftmatch.sh"
)
add_test (
  NAME iftvalcTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/iftvalc
  COMMAND bash "./test_iftvalc.sh"
)
add_test (
  NAME iftrenTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/iftren
  COMMAND bash "./test_iftren.sh"
)
add_test (
  NAME rmcmntsTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/rmcmnts
  COMMAND bash "./test_rmcmnts.sh"
)
