SET( TEST_EXE_NAME ODVBA_TESTS )

INCLUDE_DIRECTORIES(
  ${CMAKE_CURRENT_BINARY_DIR}
  ${CMAKE_CURRENT_SOURCE_DIR}
  ${PROJECT_SOURCE_DIR}/src
  ${NiftiCLib_INCLUDE_DIR} # to be replaced with ITK
)

# Find ITK and ensure that version is greater than 4.7
#FIND_PACKAGE( ITK REQUIRED )
#INCLUDE( ${ITK_USE_FILE} )

#IF( ${ITK_VERSION_MAJOR} LESS 4 )
#  MESSAGE( FATAL_ERROR "ITK version should be greater than 4.7" )
#ENDIF()

#IF( (${ITK_VERSION_MAJOR} EQUAL 4) AND (${ITK_VERSION_MINOR} LESS 7) )
#  MESSAGE( FATAL_ERROR "ITK version should be greater than 4.7" )
#ENDIF()

# Done for temporary testing
SET( MainSources
  ${PROJECT_SOURCE_DIR}/src/CAlgorithm.h
  ${PROJECT_SOURCE_DIR}/src/CAlgorithm.cpp
  ${PROJECT_SOURCE_DIR}/src/cbicaUtilities.h
  ${PROJECT_SOURCE_DIR}/src/cbicaUtilities.cpp
  
)

FIND_PACKAGE( OpenMP REQUIRED )
SET( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}" )
SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}" )


# need to find CBLAS library explicitly since it isn't intrinsically tied to ATLAS or LAPACK find() modules
FIND_LIBRARY(CBLAS_LIB cblas PATH "/lib" "/usr/lib" "/usr/local/lib" "/usr/lib64" "/usr/lib64/atlas" ENV LD_LIBRARY_PATH 
  DOC "Find the CBLAS library")

ADD_EXECUTABLE( ${TEST_EXE_NAME} odvba_tests.cxx ${MainSources} )

TARGET_LINK_LIBRARIES ( 
  ${TEST_EXE_NAME} 
  ${Boost_LIBRARIES} 
  ${LAPACK_LIBRARIES}
  ${CBLAS_LIB}
#  ${ITK_LIBRARIES}
  ${NiftiCLib_LIBRARIES} # to be replaced with ITK
)

CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/Testing/data/subjects.txt 
  ${PROJECT_SOURCE_DIR}/Testing/data/subjects_real.txt
  @ONLY )
    
IF(CMAKE_COMPILER_IS_GNUCXX)
	INCLUDE( CheckCXXCompilerFlag )
	CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
	CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
	#IF( COMPILER_SUPPORTS_CXX11 )
	#	SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
	#elseif(COMPILER_SUPPORTS_CXX0X )
	#	SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
	#else()
	#	MESSAGE(ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
	#endif()
ENDIF(CMAKE_COMPILER_IS_GNUCXX) 

# Test that usage prints properly
ADD_TEST( NAME Buffer_Test COMMAND ${TEST_EXE_NAME} -u "random text")

# Test that the number of threads are what ODVBA expects
ADD_TEST( NAME Minimum_Threads_Required_Test COMMAND ${TEST_EXE_NAME} -t "1")

# Test that the number of threads are what ODVBA expects
ADD_TEST( NAME Create_Index_Test COMMAND ${TEST_EXE_NAME} -c "${PROJECT_SOURCE_DIR}")

# Test that image I/O is working
ADD_TEST( NAME ImageIO_Test COMMAND ${TEST_EXE_NAME} -n "${PROJECT_SOURCE_DIR}")
