## The CMake flag is being hard-coded here because I am unsure about which Boost version is
## incompatible with which CMake version. This error was introduced 'cmake-2.8.6-rc2' or later.
IF (${CMAKE_VERSION} VERSION_GREATER "2.8.6" )
  OPTION( Boost_NO_BOOST_CMAKE "Boost_NO_BOOST_CMAKE" ON )
ENDIF()

cmake_minimum_required(VERSION 2.8.12)

SET(PROJECT_NAME ODVBA)

PROJECT( ${PROJECT_NAME} )
SET(PROJECT_VERSION "3.0.0")


#add #defines, for the Project Name and the Project Release
ADD_DEFINITIONS(-DPROJECT_NAME="${PROJECT_NAME}")
ADD_DEFINITIONS(-DPROJECT_VERSION="${PROJECT_VERSION}")

#find the sbiaDefs.cmake file in the system places
find_file(SBIADEFS_file sbiaDefs.cmake)
  
IF (NOT SBIADEFS_file)
  SET(SBIADEFS_file ${PROJECT_SOURCE_DIR}/cmake_modules/sbiaDefs.cmake
  CACHE FILEPATH "location of sbiaDefs.cmake" FORCE)
  MESSAGE (STATUS "Can't find global sbiaDefs.cmake. Using local (project) version.")
ENDIF (NOT SBIADEFS_file)

MARK_AS_ADVANCED ( SBIADEFS_file ) #we don't want to see this in the GUI

IF (EXISTS "${SBIADEFS_file}")
  INCLUDE (${SBIADEFS_file})
ELSE (EXISTS "${SBIADEFS_file}")
  MESSAGE (FATAL_ERROR "Can't Find ANY sbiaDefs.cmake. There should be one in Cmake Directory?")
ENDIF (EXISTS "${SBIADEFS_file}")

set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules/")

SET (BUILD_TEST ON CACHE BOOL "Do you want to build tests")
SET (BUILD_DOC  ON CACHE BOOL "Do you want to build Documentation (Needs Doxygen) ")

############################
### EDIT FROM HERE DOWN ####
############################

#here you can use CMake to find your dependencies
#see the CMakeProjectTemplateExample for an example usage

#You may need to change this based on where stuff is located
#this is where the *.h s are!
SET( ${PROJECT_NAME}_INCLUDES
  ${PROJECT_SOURCE_DIR}/src
)


INCLUDE_DIRECTORIES( ${${PROJECT_NAME}_INCLUDES} )

ADD_DEFINITIONS (-DNDEBUG)

set( ENV{BLA_VENDOR} "ATLAS" )
FIND_PACKAGE( LAPACK REQUIRED )
include_directories(  ${CBLAS_INCLUDES}  ) 
SET( CMAKE_LINKER_FLAGS ${CMAKE_LINKER_FLAGS} ${LAPACK_LINKER_FLAGS} )

ADD_SUBDIRECTORY(ATLAS)
INCLUDE_DIRECTORIES( ${ATLAS_INCLUDES} )

#INCLUDE( ${CMAKE_SOURCE_DIR}/cmake/Superbuild.cmake )

# Enable option for unit tests
IF( BUILD_TEST )
  ENABLE_TESTING()
ENDIF()

FIND_PATH(BOOST_INCLUDE_PATH config.hpp

      # Look in places relative to the system executable search path.
      ${BOOST_DIR_SEARCH}

      # Look in standard UNIX install locations.
      /usr/local/include/boost
      /usr/include/boost

      # Help the user find it if we cannot.
      DOC "The ${BOOST_INCLUDE_PATH_DESCRIPTION}"
  )

# SET (TEST_Boost_LIBS ${Boost_TEST_EXEC_MONITOR_LIBRARY} )
  # ADD_EXECUTABLE(MXAFileReaderWriterTest ${FILEREADERWRITER_TEST_SRCS})
  #  TARGET_LINK_LIBRARIES (MXAFileReaderWriterTest ${TEST_Boost_LIBS} )
  #   ADD_TEST(MXAFileReaderWriterTest
# ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/MXAFileReaderWriterTest)


SET (Boost_FIND_REQUIRED TRUE)
SET (Boost_FIND_QUIETLY TRUE)
set (Boost_USE_MULTITHREADED TRUE)
#set (Boost_USE_STATIC_LIBS TRUE)
SET (Boost_ADDITIONAL_VERSIONS "1.39" "1.39.0")

if ( NOT MXA_BOOST_HEADERS_ONLY)
 set (MXA_BOOST_COMPONENTS program_options 
#unit_test_framework
#test_exec_monitor
)
endif()

FIND_PACKAGE(Boost COMPONENTS  ${MXA_BOOST_COMPONENTS} )
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
#LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})

SET(BOOST_FOUND NOTFOUND)
IF ( BOOST_INCLUDE_PATH )
  # The user may not have installed any libraries.
  SET (BOOST_FOUND "1" )
  GET_FILENAME_COMPONENT(BOOST_LIBRARY_PATH ${BOOST_INCLUDE_PATH} PATH)
  GET_FILENAME_COMPONENT(BOOST_LIBRARY_PATH ${BOOST_LIBRARY_PATH} PATH)
  IF ( EXISTS ${BOOST_LIBRARY_PATH}/lib )
    SET (  BOOST_LIBRARY_PATH ${BOOST_LIBRARY_PATH}/lib CACHE PATH "The path to the Boost library files."  )
  ELSE ( EXISTS ${BOOST_LIBRARY_PATH}/lib )
    GET_FILENAME_COMPONENT(BOOST_LIBRARY_PATH ${BOOST_LIBRARY_PATH} PATH)
    IF ( EXISTS ${BOOST_LIBRARY_PATH}/lib )
      SET ( BOOST_LIBRARY_PATH ${BOOST_LIBRARY_PATH}/lib CACHE PATH "The path to the Boost library files." )
    ELSE ( EXISTS ${BOOST_LIBRARY_PATH}/lib )
      SET (  BOOST_LIBRARY_PATH "" CACHE PATH "The path to the Boost library files."  )
    ENDIF ( EXISTS ${BOOST_LIBRARY_PATH}/lib )
  ENDIF ( EXISTS ${BOOST_LIBRARY_PATH}/lib )
ENDIF ( BOOST_INCLUDE_PATH )


SET(SUFFIX_FOR_PATH
 boost-1_34_1
 boost-1_34_0
 boost-1_33_1
 boost-1_33_0
)

# 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()

#MESSAGE( STATUS "ITK version found: ${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR}.${ITK_VERSION_PATCH}")

## find nifticlib :: to be replaced with ITK at the earliest
FIND_PACKAGE( NiftiCLib REQUIRED )
INCLUDE_DIRECTORIES( ${NiftiCLib_INCLUDE_DIR} )

ADD_SUBDIRECTORY(src)

IF (BUILD_TEST)
  ADD_SUBDIRECTORY(Testing)
ENDIF (BUILD_TEST)

IF (BUILD_DOC)
  ADD_SUBDIRECTORY(docs) # substitute with docs_internal for internal documentation generation, i.e., for the website 'docs_internal' should not be published in tag
ENDIF (BUILD_DOC)
