# 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 (tacfcont tacfcont.c) 
add_executable (tacformat tacformat.c) 
add_executable (tacfr2x tacfr2x.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 (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 (tacfcont tpcift tpctac tpcextensions m)
target_link_libraries (tacformat tpcift tpctac tpcextensions m)
target_link_libraries (tacfr2x 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 (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}/tacfcont${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacformat${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/tacfr2x${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}/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(tacfcontUsage tacfcont "--help")
add_test(tacformatUsage tacformat "--help")
add_test(tacfr2xUsage tacfr2x "--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(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 tacfcontUsage tacformatUsage 
  tacfr2xUsage tacframeUsage tacinvUsage tacjoinUsage taclistUsage 
  taclnUsage tacmatchUsage tacmsampUsage tacmultxUsage tacnamesUsage 
  tacp2fUsage tacrangeUsage tacrenUsage tacsetxUsage tacsetyUsage 
  tacsortUsage tacsplitUsage tacstudyUsage 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 tacfcontTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacfcont
  COMMAND bash "./test_tacfcont.sh"
)
add_test (
  NAME tacformatTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacformat
  COMMAND bash "./test_tacformat.sh"
)
add_test (
  NAME tacfr2xTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/tacfr2x
  COMMAND bash "./test_tacfr2x.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 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"
)
