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

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

# Add executable that is built from the source file(s) 
# The extensions are automatically found. 
add_executable (conv1tcm conv1tcm.c) 
add_executable (convexpf convexpf.c) 
add_executable (convsurg convsurg.c) 
add_executable (fvar4tac fvar4tac.c) 
add_executable (sim_3tcm sim_3tcm.c) 
add_executable (sim_av sim_av.c) 
add_executable (sim_h2o sim_h2o.c) 
add_executable (sim_mbf sim_mbf.c) 
add_executable (sim_pkcp sim_pkcp.c) 
add_executable (sim_rtcm sim_rtcm.c) 
add_executable (sim_wliv sim_wliv.c) 
add_executable (simcmdk simcmdk.c) 
add_executable (simdisp simdisp.c) 
add_executable (simframe simframe.c) 
add_executable (siminput siminput.c) 
add_executable (simttm simttm.c) 
add_executable (svar4tac svar4tac.c) 
add_executable (var4tac var4tac.c) 

# Link the executable to the libraries. 
target_link_libraries (conv1tcm tpctacmod tpcift tpctac tpcli tpccm tpcextensions m)
target_link_libraries (convexpf tpctacmod tpcift tpctac tpcli tpccm tpcextensions m)
target_link_libraries (convsurg tpctacmod tpcift tpctac tpcli tpccm tpcextensions m)
target_link_libraries (fvar4tac tpcift tpctac tpcrand tpcextensions m)
target_link_libraries (sim_3tcm tpcift tpctac tpcmodels tpcpar tpctacmod tpccm tpcextensions m)
target_link_libraries (sim_av tpcift tpctac tpcmodels tpcpar tpctacmod tpccm tpcextensions m)
target_link_libraries (sim_h2o tpcift tpctac tpcmodels tpcpar tpctacmod tpccm tpcfileutil tpcextensions m)
target_link_libraries (sim_mbf tpcift tpctac tpcmodels tpcpar tpccm tpcextensions m)
target_link_libraries (sim_pkcp tpctacmod tpcli tpcift tpctac tpcmodels tpcpar tpccm tpcextensions m)
target_link_libraries (sim_rtcm tpcift tpctac tpcmodels tpcpar tpccm tpcextensions m)
target_link_libraries (sim_wliv tpcift tpctac tpcmodels tpcpar tpctacmod tpccm tpcfileutil tpcextensions m)
target_link_libraries (simcmdk tpcift tpctac tpcmodels tpcpar tpctacmod tpccm tpcextensions m)
target_link_libraries (simdisp tpcift tpctac tpcmodels tpcpar tpctacmod tpccm tpcextensions m)
target_link_libraries (simframe tpcli tpctac tpcift tpccsv tpcisotope tpcextensions m)
target_link_libraries (siminput tpcli tpcpar tpctac tpcift tpccsv tpccm tpcextensions m)
target_link_libraries (simttm tpctacmod tpcift tpctac tpcli tpccm tpcextensions m)
target_link_libraries (svar4tac tpcift tpctac tpcrand tpcextensions m)
target_link_libraries (var4tac tpcift tpctac tpcrand tpcextensions m)

# Install the executable(s)
install (
  PROGRAMS
  ${CMAKE_CURRENT_BINARY_DIR}/conv1tcm${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/convexpf${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/convsurg${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/fvar4tac${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/sim_3tcm${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/sim_av${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/sim_h2o${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/sim_mbf${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/sim_pkcp${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/sim_rtcm${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/sim_wliv${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/simcmdk${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/simdisp${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/simframe${CMAKE_EXECUTABLE_SUFFIX}
#  ${CMAKE_CURRENT_BINARY_DIR}/siminput${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/simttm${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/svar4tac${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/var4tac${CMAKE_EXECUTABLE_SUFFIX}
  DESTINATION bin
  COMPONENT applications
)

# Copy test data folder
add_custom_target(simulationtests 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
#
add_test(conv1tcmUsage fvar4tac "--help")
add_test(convexpfUsage convexpf "--help")
add_test(convsurgUsage convsurg "--help")
add_test(fvar4tacUsage fvar4tac "--help")
add_test(sim_3tcmUsage sim_3tcm "--help")
add_test(sim_avUsage sim_av "--help")
add_test(sim_h2oUsage sim_h2o "--help")
add_test(sim_mbfUsage sim_mbf "--help")
add_test(sim_pkcpUsage sim_pkcp "--help")
add_test(sim_rtcmUsage sim_rtcm "--help")
add_test(sim_wlivUsage sim_wliv "--help")
add_test(simframeUsage simframe "--help")
add_test(simcmdkUsage simcmdk "--help")
add_test(simdispUsage simdisp "--help")
#add_test (siminputUsage siminput "--help")
add_test(simttmUsage simttm "--help")
add_test(svar4tacUsage svar4tac "--help")
add_test(var4tacUsage var4tac "--help")
set_tests_properties(
  conv1tcmUsage convexpfUsage convsurgUsage fvar4tacUsage sim_3tcmUsage sim_avUsage sim_h2oUsage 
  sim_mbfUsage sim_pkcpUsage sim_rtcmUsage sim_wlivUsage simcmdkUsage
  simdispUsage simframeUsage simttmUsage svar4tacUsage var4tacUsage
  PROPERTIES PASS_REGULAR_EXPRESSION "Usage: *"
)

#
# Run test scripts
# 
add_test (
  NAME conv1tcmTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/conv1tcm
  COMMAND bash "./test_conv1tcm.sh"
)
add_test (
  NAME convexpfTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/convexpf
  COMMAND bash "./test_convexpf.sh"
)
add_test (
  NAME convsurgTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/convsurg
  COMMAND bash "./test_convsurg.sh"
)
add_test (
  NAME fvar4tacTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/fvar4tac
  COMMAND bash "./test_fvar4tac.sh"
)
add_test (
  NAME sim_3tcmTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/sim_3tcm
  COMMAND bash "./test_sim_3tcm.sh"
)
add_test (
  NAME sim_avTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/sim_av
  COMMAND bash "./test_sim_av.sh"
)
add_test (
  NAME sim_h2oTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/sim_h2o
  COMMAND bash "./test_sim_h2o.sh"
)
add_test (
  NAME sim_mbfTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/sim_mbf
  COMMAND bash "./test_sim_mbf.sh"
)
add_test (
  NAME sim_pkcpTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/sim_pkcp
  COMMAND bash "./test_sim_pkcp.sh"
)
add_test (
  NAME sim_rtcmTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/sim_rtcm
  COMMAND bash "./test_sim_rtcm.sh"
)
add_test (
  NAME sim_wlivTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/sim_wliv
  COMMAND bash "./test_sim_wliv.sh"
)
add_test (
  NAME simcmdkTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/simcmdk
  COMMAND bash "./test_simcmdk.sh"
)
add_test (
  NAME simframeTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/simframe
  COMMAND bash "./test_simframe.sh"
)
add_test (
  NAME simdispTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/simdisp
  COMMAND bash "./test_simdisp.sh"
)
#add_test (
#  NAME siminputTests
#  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/siminput
#  COMMAND bash "./test_siminput.sh"
#)
add_test (
  NAME simttmTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/simttm
  COMMAND bash "./test_simttm.sh"
)
add_test (
  NAME svar4tacTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/svar4tac
  COMMAND bash "./test_svar4tac.sh"
)
add_test (
  NAME var4tacTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/var4tac
  COMMAND bash "./test_var4tac.sh"
)
