CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

SET( PROJECT_NAME ITK_CPP11 ) # change project name here

PROJECT( ${PROJECT_NAME} )
ADD_DEFINITIONS( -DPROJECT_NAME="${PROJECT_NAME}" )

IF(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
  IF(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0)
    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 )
	MESSAGE(STATUS "Compiler ${CMAKE_CXX_COMPILER} version ${CMAKE_CXX_COMPILER_VERSION} supports C++11")
    	SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    elseif(COMPILER_SUPPORTS_CXX0X )
	MESSAGE(STATUS "Compiler ${CMAKE_CXX_COMPILER} version ${CMAKE_CXX_COMPILER_VERSION} supports C++0x")
    	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()
  ELSE(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0)
	MESSAGE(STATUS "Compiler ${CMAKE_CXX_COMPILER} version ${CMAKE_CXX_COMPILER_VERSION} is above 5.0, known support for C++11, C++0x")
    	SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    	SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
  ENDIF(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0)
ENDIF() 

FIND_PACKAGE(ITK REQUIRED)
INCLUDE(${ITK_USE_FILE})

# remove some MSVC flags
IF(MSVC)
	ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS)
ENDIF(MSVC)

# set minimum ITK version here
SET ( ITK_MINIMUM_VERSION_REQUIRED "4.4.0")
SET( ITK_VERSION "${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR}.${ITK_VERSION_PATCH}" )
IF( ${ITK_VERSION} VERSION_LESS ${ITK_MINIMUM_VERSION_REQUIRED})
  MESSAGE(FATAL_ERROR "Minimum ITK version not met. Detected ITK version is ${ITK_VERSION} and required is ${ITK_MINIMUM_VERSION_REQUIRED}")
ENDIF()
MESSAGE( STATUS "Detected ITK Version: ${ITK_VERSION}")

SET( SOURCE_DIRECTORY ${PROJECT_SOURCE_DIR}/src )

INCLUDE_DIRECTORIES( ${SOURCE_DIRECTORY} )

SET( MainSources
  ${SOURCE_DIRECTORY}/cbicaCmdParser.h
  ${SOURCE_DIRECTORY}/cbicaCmdParser.cpp
  ${SOURCE_DIRECTORY}/cbicaUtilities.h
  ${SOURCE_DIRECTORY}/cbicaUtilities.cpp
  ${SOURCE_DIRECTORY}/cbicaITKSafeImageIO.h
  ${SOURCE_DIRECTORY}/cbicaITKImageInfo.h
  ${SOURCE_DIRECTORY}/cbicaITKImageInfo.cpp
)

SET( MainSources ${MainSources} CACHE STRING "All source files" FORCE )

ADD_EXECUTABLE( ${PROJECT_NAME}  
  ${MainSources}
  ${SOURCE_DIRECTORY}/main.cxx 
)
TARGET_LINK_LIBRARIES(
  ${PROJECT_NAME}
  ${ITK_LIBRARIES}
)

set_target_properties(${EXE_NAME} PROPERTIES INSTALL_RPATH_USE_LINK_PATH TRUE)
