CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

PROJECT(BUILD_ALL)

SET( USE_PATCHED_LIBS        FALSE CACHE BOOL "Use patched libraries")
SET( BUILD_VISUALIZATION_EXT TRUE CACHE BOOL "Build Visualization extention")
SET( BUILD_OPHTALMOLOGY_EXT  FALSE CACHE BOOL "Build Ophtalmology extension")
SET( BUILD_DERMATHOLOGY_EXT  FALSE CACHE BOOL "Build Dermathology extension")
SET( BUILD_VIDEO_EXT         FALSE CACHE BOOL "Build Video extension")
SET( BUILD_FOO_EXT           FALSE CACHE BOOL "Build Foo extension")

SET( USE_CUSTOM_WX           FALSE CACHE BOOL "Build with custom WX library")
SET( USE_CUSTOM_VTK          FALSE CACHE BOOL "Build with custom VTK library")
SET( USE_CUSTOM_ITK          FALSE CACHE BOOL "Build with custom ITK library")
SET( USE_CUSTOM_DCMTK        FALSE CACHE BOOL "Build with custom DCMTK library")

SET( CUSTOM_PACKAGE          FALSE CACHE BOOL "Custom package")

SET( GINKGO_VERSION "2.4.1.1" CACHE STRING "Ginkgo version")

SET( CMAKE_OSX_ARCHITECTURES "i386" CACHE STRING "MacOSX Architectures" FORCE)

IF(NOT CMAKE_BUILD_TYPE)
  SET(CMAKE_BUILD_TYPE Release CACHE STRING
      "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
      FORCE)
ENDIF(NOT CMAKE_BUILD_TYPE)


#############################################################################################

SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/CMake)
INCLUDE(SysDefs)

#############################################################################################

IF(LINUX)
	FIND_PACKAGE(GTK2 REQUIRED)
ENDIF()

IF(USE_PATCHED_LIBS) 
	MESSAGE("Using patched libs")
ENDIF()

IF(NOT USE_CUSTOM_WX)
	MESSAGE("Using system wxWidgets")
	FIND_PACKAGE(wxWidgets 2.8.11 COMPONENTS core base gl net xml aui adv richtext xrc REQUIRED)
ELSE()
	MESSAGE("Using custom wxWidgets")
	SET_CUSTOM_wxWidgets_PACKAGE()
ENDIF()

IF(NOT USE_CUSTOM_VTK)
	MESSAGE("Using system VTK")
	FIND_PACKAGE(VTK 5.6.1 REQUIRED)
ELSE()
	MESSAGE("Using custom VTK")
	SET_CUSTOM_VTK_PACKAGE()
ENDIF()

IF(NOT USE_CUSTOM_ITK)
	MESSAGE("Using system ITK")
	FIND_PACKAGE(ITK REQUIRED)
ELSE()
	MESSAGE("Using custom ITK")
	SET_CUSTOM_ITK_PACKAGE()
ENDIF()

IF(NOT USE_CUSTOM_DCMTK)
	MESSAGE("Using system DCMTK")
	FIND_PACKAGE(DCMTK 3.6.0 EXACT REQUIRED)
ELSE()
	MESSAGE("Using custom DCMTK")
	SET_CUSTOM_DCMTK_PACKAGE()
ENDIF()

#############################################################################################

IF(MACOS)
	SET(GINKGO_PROJECT "Ginkgo CADx" CACHE PARENT_SCOPE "")
ELSEIF(LINUX AND CUSTOM_PACKAGE)
	SET(GINKGO_PROJECT "ginkgo-${ARCH}" CACHE PARENT_SCOPE "")
ELSE()
	SET(GINKGO_PROJECT "ginkgo" CACHE PARENT_SCOPE "")
ENDIF()

SET(GINKGO_PLUGINS "" CACHE PARENT_SCOPE "")

SUBDIRS( cadxcore ginkgo  )

IF (BUILD_OPHTALMOLOGY_EXT OR BUILD_DERMATHOLOGY_EXT OR BUILD_VIDEO_EXT)
	INCLUDE(PrvExtDeps)
ENDIF()

IF(BUILD_FOO_EXT)
	SUBDIRS(fooextension)
ENDIF()

IF(BUILD_OPHTALMOLOGY_EXT)
	SUBDIRS(oftalmologia)
ENDIF()

IF(BUILD_DERMATHOLOGY_EXT)
	SUBDIRS(dermatologia)
ENDIF()

IF(BUILD_VIDEO_EXT)
	SUBDIRS(video)
ENDIF()

IF(BUILD_VISUALIZATION_EXT)
	SUBDIRS(visualizator)
ENDIF()

ADD_CUSTOM_TARGET(${PROJECT_NAME} echo)

MESSAGE("GINKGO_PROJECT = ${GINKGO_PROJECT}")

ADD_DEPENDENCIES(${PROJECT_NAME} "${GINKGO_PROJECT}")

IF(BUILD_FOO_EXT)
	ADD_DEPENDENCIES(${PROJECT_NAME} fooextension)
	LIST(APPEND GINKGO_PLUGINS "fooextension")
ENDIF()

IF(BUILD_VISUALIZATION_EXT)
	ADD_DEPENDENCIES(${PROJECT_NAME} visualizator)
	LIST(APPEND GINKGO_PLUGINS "visualizator")
ENDIF()

IF(BUILD_OPHTALMOLOGY_EXT)
	ADD_DEPENDENCIES(${PROJECT_NAME} oftalmologia)
	LIST(APPEND GINKGO_PLUGINS "oftalmologia")
ENDIF()

IF(BUILD_DERMATHOLOGY_EXT)
	ADD_DEPENDENCIES(${PROJECT_NAME} dermatologia)
	LIST(APPEND GINKGO_PLUGINS "dermatologia")
ENDIF()

IF(BUILD_VIDEO_EXT)
	ADD_DEPENDENCIES(${PROJECT_NAME} video)
	LIST(APPEND GINKGO_PLUGINS "video")
ENDIF()

IF(CUSTOM_PACKAGE)

SET( DEST "${CMAKE_CURRENT_BINARY_DIR}/dist" )
PACKAGE_RULES( "${PROJECT_NAME}" "${ARCH}" "${DEST}" )
ENDIF()

