#===============================================================================
# Medical Data Segmentation Toolkit (MDSTk)
# Copyright (c) 2007 by PGMed@FIT
#
# Authors: Miroslav Svub, svub@fit.vutbr.cz
#          Michal Spanel, spanel@fit.vutbr.cz
# Section: MDSTk
# Date:    2007/08/25
#
# $Id:$
#
# Description:
# - Configuration file for the CMake build system.

# Build modules
IF( BUILD_MODULES )

  # Add path to MDSTk include directories
  #INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/include/ )

  # Set output path for binaries
  #SET( EXECUTABLE_OUTPUT_PATH ${MDSTk_BINARY_DIR}/bin )


  # Prefix added before name of a module
  SET( MDSTk_MODULE_PREFIX mds CACHE INTERNAL "Module name prefix." )

  # System libraries necessary for building binaries
  IF ( WIN32 )
    SET( MDSTk_SYSTEM_LIBS winmm kernel32 )
  ELSE( WIN32 )
    IF( UNIX )
      SET( MDSTk_SYSTEM_LIBS pthread rt )
    ELSE( UNIX )
      MESSAGE( FATAL_ERROR "Unknown target system!" )
    ENDIF( UNIX )
  ENDIF( WIN32 )

  # MDSTk libraries
  SET( MDSTk_LIBS ImageIO Image Module System Math Base )


  # Macro used for declaring a module
  MACRO( MDSTk_MODULE _MODULE_NAME )
    SET( MDSTk_MODULE_NAME ${MDSTk_MODULE_PREFIX}${_MODULE_NAME} )
    SET( MDSTk_MODULE_SOURCES "" )
    SET( MDSTk_MODULE_ADDITIONAL_LIBS "" )
  ENDMACRO( MDSTk_MODULE )

  # Macro for adding source file to module build
#  MACRO( MDSTk_MODULE_SOURCE _SOURCE )
#    SET( MDSTk_MODULE_SOURCES ${MDSTk_MODULE_SOURCES} ${_SOURCE} )
#  ENDMACRO( MDSTk_MODULE_SOURCE )
  MACRO( MDSTk_MODULE_SOURCE )
    SET( MDSTk_MODULE_SOURCES ${MDSTk_MODULE_SOURCES} ${ARGV} )
  ENDMACRO( MDSTk_MODULE_SOURCE )

  # Macro for adding additional library to module build
#  MACRO( MDSTk_MODULE_ADDITIONAL_LIBRARY _LIBRARY )
#    SET( MDSTk_MODULE_ADDITIONAL_LIBS ${MDSTk_MODULE_ADDITIONAL_LIBS} ${_LIBRARY} )
#  ENDMACRO( MDSTk_MODULE_ADDITIONAL_LIBRARY )
  MACRO( MDSTk_MODULE_ADDITIONAL_LIBRARY )
    SET( MDSTk_MODULE_ADDITIONAL_LIBS ${MDSTk_MODULE_ADDITIONAL_LIBS} ${ARGV} )
  ENDMACRO( MDSTk_MODULE_ADDITIONAL_LIBRARY )

  # Building macro
  MACRO( MDSTk_MODULE_BUILD )
    ADD_EXECUTABLE( ${MDSTk_MODULE_NAME} ${MDSTk_MODULE_SOURCES} )
    TARGET_LINK_LIBRARIES( ${MDSTk_MODULE_NAME}
                           ${MDSTk_LIBS}
                           ${MDSTk_MODULE_ADDITIONAL_LIBS}
                           ${MDSTk_SYSTEM_LIBS} )
  ENDMACRO( MDSTk_MODULE_BUILD )


  # Build all modules
  ADD_SUBDIRECTORY( CreateSHM )
  ADD_SUBDIRECTORY( LoadDicom )
  ADD_SUBDIRECTORY( LoadJPEG )
  ADD_SUBDIRECTORY( LoadPNG )
  ADD_SUBDIRECTORY( MakeVolume )
  ADD_SUBDIRECTORY( RGBImage2Slice )
  ADD_SUBDIRECTORY( RGBImageView )
  ADD_SUBDIRECTORY( SaveJPEG )
  ADD_SUBDIRECTORY( SavePNG )
  ADD_SUBDIRECTORY( SliceCornerDetector )
  ADD_SUBDIRECTORY( SliceCut )
  ADD_SUBDIRECTORY( SliceEdgeDetector )
  ADD_SUBDIRECTORY( SliceFFT )
  ADD_SUBDIRECTORY( SliceFilter )
  ADD_SUBDIRECTORY( SliceHistEqualization )
  ADD_SUBDIRECTORY( SliceHistogram )
  ADD_SUBDIRECTORY( SliceInfo )
  ADD_SUBDIRECTORY( SliceRange )
  ADD_SUBDIRECTORY( SliceSeg )
  ADD_SUBDIRECTORY( SliceSegEM )
  ADD_SUBDIRECTORY( SliceSegFCM )
  ADD_SUBDIRECTORY( SliceSegHT )
  ADD_SUBDIRECTORY( SliceSegRG )
  ADD_SUBDIRECTORY( SliceSubsampling )
  ADD_SUBDIRECTORY( SliceThresholding )
  ADD_SUBDIRECTORY( SliceView )
  ADD_SUBDIRECTORY( VolumeBlending )
  ADD_SUBDIRECTORY( VolumeCut )
  ADD_SUBDIRECTORY( VolumeEdgeDetector )
  ADD_SUBDIRECTORY( VolumeFilter )
  ADD_SUBDIRECTORY( VolumeHistEqualization )
  ADD_SUBDIRECTORY( VolumeHistogram )
  ADD_SUBDIRECTORY( VolumeInfo )
  ADD_SUBDIRECTORY( VolumeLandmarkDetector )
  ADD_SUBDIRECTORY( VolumeRange )
  ADD_SUBDIRECTORY( VolumeSeg )
  ADD_SUBDIRECTORY( VolumeSegHT )
  ADD_SUBDIRECTORY( VolumeSegRG )
  ADD_SUBDIRECTORY( VolumeSplit )
  ADD_SUBDIRECTORY( VolumeThresholding )
  ADD_SUBDIRECTORY( VolumeView )

ENDIF( BUILD_MODULES )
