project(OpenGTL)

cmake_minimum_required(VERSION 2.6)

set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" )

option(OPENGTL_BUILD_TESTS "Build tests" OFF)

set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules )

set(OPENGTL_VERSION "0.9.9")
set(OPENGTL_LIB_VERSION ${OPENGTL_VERSION})
set(OPENGTL_LIB_SOVERSION "0.6")

set(LIB_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/)
set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/)
set(BIN_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/bin/)
set(SHARE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/share/OpenGTL/)
set(GTLIMAGEIO_EXTENSIONS_INSTALL_DIR ${SHARE_INSTALL_DIR}/GTLImageIO/Extensions)

set(OPENGTL_TESTS_DATA "" CACHE FILEPATH "Directory that contains the data of the tests.")

include (TestBigEndian)
test_big_endian(CMAKE_WORDS_BIGENDIAN)
configure_file(config-endian.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-endian.h )

find_package(LLVM REQUIRED)
if( NOT LLVM_VERSION STREQUAL "2.5" )
  message(FATAL_ERROR "LLVM 2.5 is required.")
endif(NOT LLVM_VERSION STREQUAL "2.5" )

if(OPENGTL_BUILD_TESTS)
include(CTest)
include(Dart)
endif(OPENGTL_BUILD_TESTS)

if(CMAKE_SIZEOF_VOID_P EQUAL 4)
  # 32 bits
  message(STATUS "OpenGTL detected that you use a 32 bit processor.")
  set(OPENGTL_TESTS_DATA_RESULTS_DIR results32)
  option(OPENGTL_ENABLE_SIMD "Enable SIMD (SSE/MMX/...) instructions" OFF)
else(CMAKE_SIZEOF_VOID_P EQUAL 4)
  # 32 bits
  message(STATUS "OpenGTL detected that you use a 64 bit processor.")
  set(OPENGTL_TESTS_DATA_RESULTS_DIR results64)
  option(OPENGTL_ENABLE_SIMD "Enable SIMD (SSE/MMX/...) instructions" ON)
  # TODO check that llvm was build with -fPIC
endif(CMAKE_SIZEOF_VOID_P EQUAL 4)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/OpenGTL ${CMAKE_CURRENT_BINARY_DIR}
)

add_subdirectory(OpenGTL)
add_subdirectory(OpenCTL)
add_subdirectory(OpenShiva)
add_subdirectory(Extensions)

