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

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

# Add executable that is built from the source file(s) 
# The extensions are automatically found. 
add_executable (avgttac avgttac.c) 
add_executable (interpol interpol.c) 
add_executable (tac2xml tac2xml.c) 
add_executable (tac4frpl tac4frpl.c) 
add_executable (tacadd tacadd.c) 
add_executable (tacadd0 tacadd0.c) 
add_executable (tacblend tacblend.c) 
add_executable (taccalc taccalc.c) 
add_executable (taccat taccat.c) 
add_executable (taccross taccross.c) 
add_executable (taccut taccut.c) 
add_executable (taccuty taccuty.c) 
add_executable (tacdel tacdel.c) 
add_executable (tacdelna tacdelna.c) 
add_executable (tacformat tacformat.c) 
add_executable (tacframe tacframe.c) 
add_executable (tacinv tacinv.c) 
add_executable (tacjoin tacjoin.c) 
add_executable (taclist taclist.c) 
add_executable (tacln tacln.c) 
add_executable (tacmatch tacmatch.c) 
add_executable (tacmidy tacmidy.c) 
add_executable (tacmsamp tacmsamp.c) 
add_executable (tacmultx tacmultx.c) 
add_executable (tacnames tacnames.c) 
add_executable (tacp2f tacp2f.c) 
add_executable (tacrange tacrange.c) 
add_executable (tacren tacren.c) 
add_executable (tacsetx tacsetx.c) 
add_executable (tacsety tacsety.c) 
add_executable (tacsort tacsort.c) 
add_executable (tacsplit tacsplit.c) 
add_executable (tacstudy tacstudy.c) 
add_executable (tactime tactime.c) 
add_executable (tacunit tacunit.c) 
add_executable (tocr tocr.c) 

# Link the executable to the libraries. 
target_link_libraries (avgttac tpcstatist tpcift tpccsv tpctac tpcextensions m)
target_link_libraries (interpol tpcstatist tpcli tpcift tpctac tpcextensions m)
target_link_libraries (tac2xml tpcift tpctac tpcextensions m)
target_link_libraries (tac4frpl tpcift tpctac tpcextensions m)
target_link_libraries (tacadd tpcift tpctac tpcextensions m)
target_link_libraries (tacadd0 tpcift tpctac tpcextensions m)
target_link_libraries (tacblend tpcift tpctac tpcextensions m)
target_link_libraries (taccalc tpcli tpcift tpctac tpcextensions m)
target_link_libraries (taccat tpcift tpctac tpcextensions m)
target_link_libraries (taccross tpctac tpcli tpcextensions m)
target_link_libraries (taccut tpctac tpcextensions m)
target_link_libraries (taccuty tpctac tpcextensions m)
target_link_libraries (tacdel tpcift tpctac tpcextensions m)
target_link_libraries (tacdelna tpcift tpctac tpcextensions m)
target_link_libraries (tacformat tpcift tpctac tpcextensions m)
target_link_libraries (tacframe tpcift tpctac tpcextensions m)
target_link_libraries (tacinv tpctac tpcift tpcextensions m)
target_link_libraries (tacjoin tpctac tpcift tpcextensions m)
target_link_libraries (taclist tpcift tpctac tpcextensions m)
target_link_libraries (tacln tpctac tpcextensions m)
target_link_libraries (tacmatch tpcift tpctac tpcextensions m)
target_link_libraries (tacmidy tpcli tpcift tpctac tpcextensions m)
target_link_libraries (tacmsamp tpctac tpcextensions m)
target_link_libraries (tacmultx tpctac tpcextensions m)
target_link_libraries (tacnames tpcift tpctac tpcextensions m)
target_link_libraries (tacp2f tpcift tpctac tpcextensions m)
target_link_libraries (tacrange tpctac tpcextensions m)
target_link_libraries (tacren tpcift tpctac tpcextensions m)
target_link_libraries (tacsetx tpctac tpcextensions m)
target_link_libraries (tacsety tpctac tpcextensions m)
target_link_libraries (tacsort tpcift tpctac tpcextensions m)
target_link_libraries (tacsplit tpctac tpcextensions m)
target_link_libraries (tacstudy tpctac tpcift tpcextensions m)
target_link_libraries (tactime tpctac tpcift tpcfileutil tpcisotope tpcextensions m)
target_link_libraries (tacunit tpcift tpctac tpcextensions m)
target_link_libraries (tocr tpctac tpcisotope tpcextensions m)

# Install the executable(s)
install (
  PROGRAMS
  ${CMAKE_CURRENT_BINARY_DIR}/avgttac${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/interpol${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tac2xml${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tac4frpl${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacadd${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacadd0${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacblend${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/taccalc${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/taccat${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/taccross${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/taccut${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/taccuty${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacdel${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacdelna${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacformat${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacframe${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacinv${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacjoin${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/taclist${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacln${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacmatch${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacmidy${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacmsamp${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacmultx${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacnames${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacp2f${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacrange${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacren${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacsetx${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacsety${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacsort${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacsplit${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacstudy${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tactime${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacunit${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tocr${CMAKE_EXECUTABLE_SUFFIX}
  DESTINATION bin
  COMPONENT applications
)

# Copy test data folder
add_custom_target(tacutilstests 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(avgttacUsage avgttac "--help")
add_test(interpolUsage interpol "--help")
add_test(tac2xmlUsage tac2xml "--help")
add_test(tac4frplUsage tac4frpl "--help")
add_test(tacaddUsage tacadd "--help")
add_test(tacadd0Usage tacadd0 "--help")
add_test(tacblendUsage tacblend "--help")
add_test(taccalcUsage taccalc "--help")
add_test(taccatUsage taccut "--help")
add_test(taccrossUsage taccross "--help")
add_test(taccutUsage taccut "--help")
add_test(taccutyUsage taccuty "--help")
add_test(tacdelUsage tacdel "--help")
add_test(tacdelnaUsage tacdelna "--help")
add_test(tacformatUsage tacformat "--help")
add_test(tacframeUsage tacframe "--help")
add_test(tacinvUsage tacinv "--help")
add_test(tacjoinUsage tacjoin "--help")
add_test(taclistUsage taclist "--help")
add_test(taclnUsage tacln "--help")
add_test(tacmatchUsage tacmatch "--help")
add_test(tacmidyUsage tacmidy "--help")
add_test(tacmsampUsage tacmsamp "--help")
add_test(tacmultxUsage tacmultx "--help")
add_test(tacnamesUsage tacnames "--help")
add_test(tacp2fUsage tacp2f "--help")
add_test(tacrangeUsage tacrange "--help")
add_test(tacrenUsage tacren "--help")
add_test(tacsetxUsage tacsetx "--help")
add_test(tacsetyUsage tacsety "--help")
add_test(tacsortUsage tacsort "--help")
add_test(tacsplitUsage tacsplit "--help")
add_test(tacstudyUsage tacstudy "--help")
add_test(tactimeUsage tactime "--help")
add_test(tacunitUsage tacunit "--help")
add_test(tocrUsage tocr "--help")
set_tests_properties(
  avgttacUsage interpolUsage tac2xmlUsage tac4frplUsage tacaddUsage tacadd0Usage tacblendUsage
  taccalcUsage taccatUsage taccrossUsage taccutUsage taccutyUsage tacdelUsage tacdelnaUsage
  tacformatUsage tacframeUsage tacinvUsage tacjoinUsage taclistUsage taclnUsage
  tacmatchUsage tacmidyUsage tacmsampUsage tacmultxUsage tacnamesUsage
  tacp2fUsage tacrangeUsage tacrenUsage tacsetxUsage tacsetyUsage tacsortUsage tacsplitUsage
  tacstudyUsage tactimeUsage tacunitUsage tocrUsage
  PROPERTIES PASS_REGULAR_EXPRESSION "Usage: *"
)

#
# Run test scripts
# 
add_test (
  NAME avgttacTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/avgttac
  COMMAND bash "./test_avgttac.sh"
)
add_test (
  NAME interpolTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/interpol
  COMMAND bash "./test_interpol.sh"
)
add_test (
  NAME tac2xmlTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tac2xml
  COMMAND bash "./test_tac2xml.sh"
)
add_test (
  NAME tac4frplTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tac4frpl
  COMMAND bash "./test_tac4frpl.sh"
)
add_test (
  NAME tacaddTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacadd
  COMMAND bash "./test_tacadd.sh"
)
add_test (
  NAME tacadd0Tests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacadd0
  COMMAND bash "./test_tacadd0.sh"
)
add_test (
  NAME tacblendTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacblend
  COMMAND bash "./test_tacblend.sh"
)
add_test (
  NAME taccalcTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/taccalc
  COMMAND bash "./test_taccalc.sh"
)
add_test (
  NAME taccatTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/taccat
  COMMAND bash "./test_taccat.sh"
)
add_test (
  NAME taccrossTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/taccross
  COMMAND bash "./test_taccross.sh"
)
add_test (
  NAME taccutTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/taccut
  COMMAND bash "./test_taccut.sh"
)
add_test (
  NAME taccutyTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/taccuty
  COMMAND bash "./test_taccuty.sh"
)
add_test (
  NAME tacdelTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacdel
  COMMAND bash "./test_tacdel.sh"
)
add_test (
  NAME tacdelnaTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacdelna
  COMMAND bash "./test_tacdelna.sh"
)
add_test (
  NAME tacformatTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacformat
  COMMAND bash "./test_tacformat.sh"
)
add_test (
  NAME tacframeTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacframe
  COMMAND bash "./test_tacframe.sh"
)
add_test (
  NAME tacinvTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacinv
  COMMAND bash "./test_tacinv.sh"
)
add_test (
  NAME tacjoinTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacjoin
  COMMAND bash "./test_tacjoin.sh"
)
add_test (
  NAME taclistTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/taclist
  COMMAND bash "./test_taclist.sh"
)
add_test (
  NAME taclnTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacln
  COMMAND bash "./test_tacln.sh"
)
add_test (
  NAME tacmatchTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacmatch
  COMMAND bash "./test_tacmatch.sh"
)
add_test (
  NAME tacmidyTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacmidy
  COMMAND bash "./test_tacmidy.sh"
)
add_test (
  NAME tacmsampTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacmsamp
  COMMAND bash "./test_tacmsamp.sh"
)
add_test (
  NAME tacmultxTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacmultx
  COMMAND bash "./test_tacmultx.sh"
)
add_test (
  NAME tacnamesTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacnames
  COMMAND bash "./test_tacnames.sh"
)
add_test (
  NAME tacp2fTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacp2f
  COMMAND bash "./test_tacp2f.sh"
)
add_test (
  NAME tacrangeTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacrange
  COMMAND bash "./test_tacrange.sh"
)
add_test (
  NAME tacrenTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacren
  COMMAND bash "./test_tacren.sh"
)
add_test (
  NAME tacsetxTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacsetx
  COMMAND bash "./test_tacsetx.sh"
)
add_test (
  NAME tacsetyTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacsety
  COMMAND bash "./test_tacsety.sh"
)
add_test (
  NAME tacsortTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacsort
  COMMAND bash "./test_tacsort.sh"
)
add_test (
  NAME tacsplitTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacsplit
  COMMAND bash "./test_tacsplit.sh"
)
add_test (
  NAME tacstudyTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacstudy
  COMMAND bash "./test_tacstudy.sh"
)
add_test (
  NAME tactimeTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tactime
  COMMAND bash "./test_tactime.sh"
)
add_test (
  NAME tacunitTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacunit
  COMMAND bash "./test_tacunit.sh"
)
add_test (
  NAME tocrTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tocr
  COMMAND bash "./test_tocr.sh"
)
