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

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

# Add executable that is built from the source file(s) 
# The extensions are automatically found. 
add_executable (dcmdict dcmdict.c) 
add_executable (dcmframe dcmframe.c) 
add_executable (dcmlhdr dcmlhdr.c) 
add_executable (dcmmlist dcmmlist.c) 
add_executable (dcmxform dcmxform.c) 

# Link the executable to the libraries. 
target_link_libraries (dcmdict tpcdcm tpcextensions m)
target_link_libraries (dcmframe tpcdcm tpctac tpcfileutil tpcift tpcextensions m)
target_link_libraries (dcmlhdr tpcdcm tpcextensions m)
target_link_libraries (dcmmlist tpcdcm tpctac tpcfileutil tpcift tpcextensions m)
target_link_libraries (dcmxform tpcdcm tpcextensions m)

# Install the executable(s)
install (
  PROGRAMS 
  ${CMAKE_CURRENT_BINARY_DIR}/dcmdict${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/dcmframe${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/dcmlhdr${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/dcmmlist${CMAKE_EXECUTABLE_SUFFIX}
  ${CMAKE_CURRENT_BINARY_DIR}/dcmxform${CMAKE_EXECUTABLE_SUFFIX}
  DESTINATION bin
  COMPONENT applications
)

# Copy test data folder
add_custom_target(dcmutilstests 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 does the usage message work
add_test(dcmdictUsage dcmdict "--help")
add_test(dcmframeUsage dcmframe "--help")
add_test(dcmlhdrUsage dcmlhdr "--help")
add_test(dcmmlistUsage dcmmlist "--help")
add_test(dcmxformUsage dcmxform "--help")
set_tests_properties(
  dcmdictUsage dcmframeUsage dcmlhdrUsage dcmmlistUsage dcmxformUsage 
  PROPERTIES PASS_REGULAR_EXPRESSION "Usage: *"
)

#
# Run test scripts
#
add_test (
  NAME dcmdictTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/dcmdict
  COMMAND bash "./test_dcmdict.sh"
)
add_test (
  NAME dcmframeTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/dcmframe
  COMMAND bash "./test_dcmframe.sh"
)
add_test (
  NAME dcmlhdrTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/dcmlhdr
  COMMAND bash "./test_dcmlhdr.sh"
)
add_test (
  NAME dcmmlistTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/dcmmlist
  COMMAND bash "./test_dcmmlist.sh"
)
add_test (
  NAME dcmxformTests
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/dcmxform
  COMMAND bash "./test_dcmxform.sh"
)


