##=========================================================================
## 
##   Copyright (c) Kitware, Inc.
##   All rights reserved.
##   See Copyright.txt or http://www.kitware.com/VolViewCopyright.htm for details.
## 
##      This software is distributed WITHOUT ANY WARRANTY; without even
##      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
##      PURPOSE.  See the above copyright notice for more information.
## 
##=========================================================================
CMAKE_MINIMUM_REQUIRED(VERSION 2.4)
IF(COMMAND CMAKE_POLICY)
  CMAKE_POLICY(SET CMP0003 NEW)
ENDIF(COMMAND CMAKE_POLICY)

PROJECT(KWCommonPro)

# --------------------------------------------------------------------------
# To use this library in a larger project you will need to SUBDIR into this
# directory so that it gets built and then you will use the following variables
# in your CMakeLists files to get the proper include paths and libraries

SET(KWCommonPro_INCLUDE_PATH 
  "${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_CURRENT_BINARY_DIR}"
  CACHE INTERNAL "include paths for KWCommonPro"
  )

SET(KWCommonPro_LIBRARIES KWCommonPro 
  CACHE INTERNAL "libraries for KWCommonPro")

# You will also need to define a value for the following variables:
# KWCommonPro_INSTALL_BIN_DIR            - binary dir (executables)
# KWCommonPro_INSTALL_LIB_DIR            - library dir (libs)
# KWCommonPro_INSTALL_DATA_DIR           - share dir (say, examples, data, etc)
# KWCommonPro_INSTALL_INCLUDE_DIR        - include dir (headers)
# KWCommonPro_INSTALL_PACKAGE_DIR        - package/export configuration files
# KWCommonPro_KWCommon_INSTALL_PACKAGE_DIR - KWCommon package/export config
# KWCommonPro_CTNLIB_INSTALL_PACKAGE_DIR - CTNLIB package/export config files
# KWCommonPro_GDCM_INSTALL_PACKAGE_DIR   - GDCM package/export config files
# KWCommonPro_INSTALL_NO_DEVELOPMENT     - do not install development files
# KWCommonPro_INSTALL_NO_RUNTIME         - do not install runtime files
# KWCommonPro_INSTALL_NO_DOCUMENTATION   - do not install documentation files
# --------------------------------------------------------------------------

# --------------------------------------------------------------------------
# Version

SET(KWCommonPro_MAJOR_VERSION 1)
SET(KWCommonPro_MINOR_VERSION 0)

# --------------------------------------------------------------------------
# We need various packages

MACRO(KWCommonPro_REQUIRE_PACKAGE PACKAGE_NAME)
  IF(NOT ${PACKAGE_NAME}_SOURCE_DIR)
    FIND_PACKAGE(${PACKAGE_NAME} REQUIRED)
    IF(${PACKAGE_NAME}_FOUND)
      INCLUDE(${${PACKAGE_NAME}_USE_FILE})
    ENDIF(${PACKAGE_NAME}_FOUND)
  ENDIF(NOT ${PACKAGE_NAME}_SOURCE_DIR)
ENDMACRO(KWCommonPro_REQUIRE_PACKAGE PACKAGE_NAME)

# KWCommon (which brings VTK automatically)
# Important: if the dependencies to KWCommon is removed, replace KWCommon with
# VTK in this entire file, and make sure to update CMake/ExportConfiguration
# the same way as well (especially KWCommonPro_KWCommon_INSTALL_PACKAGE_DIR
# which becomes KWCommonPro_VTK_INSTALL_PACKAGE_DIR, and 
# KWCommonPro_KWCommon_DIR which becomes KWCommonPro_VTK_DIR).
# Right now the only dependency to KWCommon is the use of a vtkAbstractMap in
# vtkDICOMCollector => should be replaced with STL!

KWCommonPro_REQUIRE_PACKAGE(KWCommon)

# CTNLIB

SET(default_val 1)
IF(DEFINED KWCommonPro_USE_CTNLIB_DEFAULT)
  SET(default_val ${KWCommonPro_USE_CTNLIB_DEFAULT})
ENDIF(DEFINED KWCommonPro_USE_CTNLIB_DEFAULT)
OPTION(KWCommonPro_USE_CTNLIB
  "Build KWCommonPro using CTNLIB DICOM support." ${default_val})
MARK_AS_ADVANCED(KWCommonPro_USE_CTNLIB)
IF(KWCommonPro_USE_CTNLIB)
  KWCommonPro_REQUIRE_PACKAGE(CTNLIB)
ENDIF(KWCommonPro_USE_CTNLIB)

# GDCM

SET(default_val 1)
IF(DEFINED KWCommonPro_USE_GDCM_DEFAULT)
  SET(default_val ${KWCommonPro_USE_GDCM_DEFAULT})
ENDIF(DEFINED KWCommonPro_USE_GDCM_DEFAULT)
OPTION(KWCommonPro_USE_GDCM 
  "Build KWCommonPro using GDCM DICOM support." ${default_val})
MARK_AS_ADVANCED(KWCommonPro_USE_GDCM)
IF(KWCommonPro_USE_GDCM)
  KWCommonPro_REQUIRE_PACKAGE(GDCM)
ENDIF(KWCommonPro_USE_GDCM)

# --------------------------------------------------------------------------
# Output directories

IF(NOT LIBRARY_OUTPUT_PATH)
  SET(LIBRARY_OUTPUT_PATH ${KWCommonPro_BINARY_DIR}/bin CACHE INTERNAL
    "Single output directory for building all libraries.")
ENDIF(NOT LIBRARY_OUTPUT_PATH)
SET(KWCommonPro_LIBRARY_DIRS ${LIBRARY_OUTPUT_PATH})
SET(KWCommonPro_RUNTIME_DIRS ${LIBRARY_OUTPUT_PATH})

IF(NOT EXECUTABLE_OUTPUT_PATH)
  SET(EXECUTABLE_OUTPUT_PATH ${KWCommonPro_BINARY_DIR}/bin CACHE INTERNAL
    "Single output directory for building all executables.")
ENDIF(NOT EXECUTABLE_OUTPUT_PATH)

# --------------------------------------------------------------------------
# Some flags

INCLUDE_REGULAR_EXPRESSION("^(vtk|kw|icons).*$")
SET(CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS}")
IF(CMAKE_COMPILER_2005)
  ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
ENDIF(CMAKE_COMPILER_2005)

SET(BUILD_SHARED_LIBS ${VTK_BUILD_SHARED_LIBS})
SET(KWCommonPro_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})

SET(KWCommonPro_CMAKE_DIR "${KWCommonPro_SOURCE_DIR}/CMake")
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${KWCommonPro_CMAKE_DIR}")

SET(KWCommonPro_CONFIGURATION_TYPES ${CMAKE_CONFIGURATION_TYPES})

MARK_AS_ADVANCED(CMAKE_BACKWARDS_COMPATIBILITY)

# --------------------------------------------------------------------------
# Install directories

IF(NOT KWCommonPro_INSTALL_BIN_DIR)
  SET(KWCommonPro_INSTALL_BIN_DIR "/bin")
ENDIF(NOT KWCommonPro_INSTALL_BIN_DIR)

IF(NOT KWCommonPro_INSTALL_LIB_DIR)
  SET(KWCommonPro_INSTALL_LIB_DIR "/lib/${PROJECT_NAME}")
ENDIF(NOT KWCommonPro_INSTALL_LIB_DIR)

IF(NOT KWCommonPro_INSTALL_DATA_DIR)
  SET(KWCommonPro_INSTALL_DATA_DIR "/share/${PROJECT_NAME}")
ENDIF(NOT KWCommonPro_INSTALL_DATA_DIR)

IF(NOT KWCommonPro_INSTALL_INCLUDE_DIR)
  SET(KWCommonPro_INSTALL_INCLUDE_DIR "/include/${PROJECT_NAME}")
ENDIF(NOT KWCommonPro_INSTALL_INCLUDE_DIR)

IF(NOT KWCommonPro_INSTALL_PACKAGE_DIR)
  SET(KWCommonPro_INSTALL_PACKAGE_DIR ${KWCommonPro_INSTALL_LIB_DIR}
    CACHE INTERNAL "")
ENDIF(NOT KWCommonPro_INSTALL_PACKAGE_DIR)

IF(NOT KWCommonPro_KWCommon_INSTALL_PACKAGE_DIR)
  SET(KWCommonPro_KWCommon_INSTALL_PACKAGE_DIR ${KWCommon_INSTALL_PACKAGE_DIR})
ENDIF(NOT KWCommonPro_KWCommon_INSTALL_PACKAGE_DIR)

IF(NOT KWCommonPro_CTNLIB_INSTALL_PACKAGE_DIR)
  SET(KWCommonPro_CTNLIB_INSTALL_PACKAGE_DIR ${CTNLIB_INSTALL_PACKAGE_DIR})
ENDIF(NOT KWCommonPro_CTNLIB_INSTALL_PACKAGE_DIR)

IF(NOT KWCommonPro_GDCM_INSTALL_PACKAGE_DIR)
  SET(KWCommonPro_GDCM_INSTALL_PACKAGE_DIR ${GDCM_INSTALL_PACKAGE_DIR})
ENDIF(NOT KWCommonPro_GDCM_INSTALL_PACKAGE_DIR)

IF(NOT KWCommonPro_INSTALL_NO_DEVELOPMENT)
  SET(KWCommonPro_INSTALL_NO_DEVELOPMENT 0)
ENDIF(NOT KWCommonPro_INSTALL_NO_DEVELOPMENT)

IF(NOT KWCommonPro_INSTALL_NO_RUNTIME)
  SET(KWCommonPro_INSTALL_NO_RUNTIME 0)
ENDIF(NOT KWCommonPro_INSTALL_NO_RUNTIME)

IF(NOT KWCommonPro_INSTALL_NO_DOCUMENTATION)
  SET(KWCommonPro_INSTALL_NO_DOCUMENTATION 0)
ENDIF(NOT KWCommonPro_INSTALL_NO_DOCUMENTATION)

SET(KWCommonPro_INSTALL_NO_LIBRARIES)
IF(KWCommonPro_BUILD_SHARED_LIBS)
  IF(KWCommonPro_INSTALL_NO_RUNTIME AND KWCommonPro_INSTALL_NO_DEVELOPMENT)
    SET(KWCommonPro_INSTALL_NO_LIBRARIES 1)
  ENDIF(KWCommonPro_INSTALL_NO_RUNTIME AND KWCommonPro_INSTALL_NO_DEVELOPMENT)
ELSE(KWCommonPro_BUILD_SHARED_LIBS)
  IF(KWCommonPro_INSTALL_NO_DEVELOPMENT)
    SET(KWCommonPro_INSTALL_NO_LIBRARIES 1)
  ENDIF(KWCommonPro_INSTALL_NO_DEVELOPMENT)
ENDIF(KWCommonPro_BUILD_SHARED_LIBS)

# --------------------------------------------------------------------------
# Sources

SET(KWCommonPro_SRCS
  vtkAnalyzeReader.cxx
  vtkCellLabelAnnotation.cxx
  vtkContourSegmentationFilter.cxx
  vtkContourStatistics.cxx
  vtkPlanarPolyDataToImageStencil.cxx
  vtkContourToImageStencil.cxx
  vtkDICOMCollector.cxx
  vtkDICOMCollectorOptions.cxx
  vtkDICOMReader.cxx
  vtkGESignaReader3D.cxx
  vtkGPXReader.cxx
  vtkGenericMathUtilities.cxx
  vtkImageStencilDataFlip.cxx
  vtkKWColorImageConversionFilter.cxx
  vtkKWExtractImageIsosurfaceCells.cxx
  vtkKWImageMapToWindowLevelColors.cxx
  vtkKWOrientationFilter.cxx
  vtkLSMReader.cxx
  vtkOpenGLSmoothPolyDataMapper.cxx
  vtkPICReader.cxx
  vtkSTKReader.cxx
  vtkScalarsPassThroughFilter.cxx
  vtkStencilProjectionImageFilter.cxx
  )

IF(VTK_USE_RENDERING)
  SET(KWCommonPro_SRCS ${KWCommonPro_SRCS}
    vtkBezierPatch.cxx
    vtkBoundingBoxAnnotation.cxx
    vtkCardinalSplinePatch.cxx
    vtkIrregularSplineSurfaceWidget.cxx
    vtkKWContourWidget.cxx
    vtkKWDistanceWidget.cxx
    vtkImageActorPointHandleRepresentation3D.cxx
    vtkKWAngleWidget.cxx
    vtkKWBiDimensionalWidget.cxx
    vtkKWCaptionWidget.cxx
    vtkRegularSplineSurfaceWidget.cxx
    vtkSideAnnotation.cxx
    vtkSplineSurface2DWidget.cxx
    vtkSplineSurfaceWidget.cxx
    vtkSubdivisionSplineSurfaceWidget.cxx
    )
  SET_SOURCE_FILES_PROPERTIES(
    vtkBezierPatch.cxx
    vtkBoundingBoxAnnotation.cxx
    vtkCardinalSplinePatch.cxx
    vtkIrregularSplineSurfaceWidget.cxx
    vtkRegularSplineSurfaceWidget.cxx
    vtkSideAnnotation.cxx
    vtkSplineSurface2DWidget.cxx
    vtkSplineSurfaceWidget.cxx
    vtkSubdivisionSplineSurfaceWidget.cxx
    WRAP_EXCLUDE
    ) 
ENDIF(VTK_USE_RENDERING)

IF(KWCommonPro_USE_CTNLIB AND NOT KWCommonPro_USE_GDCM)
  # JPEG12 support has been removed in favor of GDCM's own JPEG12
  #SET(KWCommonPro_SRCS ${KWCommonPro_SRCS} vtkJPEG12Reader.cxx)
ENDIF(KWCommonPro_USE_CTNLIB AND NOT KWCommonPro_USE_GDCM)

SET_SOURCE_FILES_PROPERTIES(
  vtkDICOMCollector.cxx
  vtkDICOMReader.cxx
  PROPERTIES COMPILE_FLAGS -DHAVE_CMAKE_CONFIG_H)

SET(default_val 1)
IF(DEFINED KWCommonPro_USE_XML_RW_DEFAULT)
  SET(default_val ${KWCommonPro_USE_XML_RW_DEFAULT})
ENDIF(DEFINED KWCommonPro_USE_XML_RW_DEFAULT)
OPTION(KWCommonPro_USE_XML_RW
  "Build KWCommonPro XML Readers/Writers." ${default_val})
MARK_AS_ADVANCED(KWCommonPro_USE_XML_RW)

IF(KWCommonPro_USE_XML_RW)
  SET(KWCommonPro_XML_SRCS
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLAbstractWidgetReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLAbstractWidgetWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLActor2DReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLActor2DWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLActorReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLActorWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLAngleRepresentationReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLAngleRepresentationWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLAxisActor2DReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLAxisActor2DWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLBiDimensionalRepresentation2DReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLBiDimensionalRepresentation2DWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLBorderRepresentationReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLBorderRepresentationWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLCameraReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLCameraWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLCaptionActor2DReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLCaptionActor2DWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLCaptionRepresentationReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLCaptionRepresentationWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLCaptionWidgetReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLCaptionWidgetWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLColorTransferFunctionReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLColorTransferFunctionWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLContourRepresentationReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLContourRepresentationWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLCornerAnnotationReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLCornerAnnotationWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLDistanceRepresentationReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLDistanceRepresentationWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLHandleRepresentationReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLHandleRepresentationWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLIOBase.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLInteractorObserverReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLInteractorObserverWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLKWAngleWidgetReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLKWAngleWidgetWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLKWBiDimensionalWidgetReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLKWBiDimensionalWidgetWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLKWCaptionWidgetReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLKWCaptionWidgetWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLKWContourWidgetReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLKWContourWidgetWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLKWDistanceWidgetReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLKWDistanceWidgetWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLKWParser.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLLightReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLLightWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLMedicalImagePropertiesReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLMedicalImagePropertiesWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLObjectReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLObjectWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLPiecewiseFunctionReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLPiecewiseFunctionWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLProp3DReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLProp3DWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLPropReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLPropWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLProperty2DReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLProperty2DWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLPropertyReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLPropertyWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLScalarBarActorReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLScalarBarActorWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLScalarsToColorsReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLScalarsToColorsWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLTextActorReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLTextActorWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLTextPropertyReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLTextPropertyWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLVolumePropertyReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLVolumePropertyWriter.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLWidgetRepresentationReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLWidgetRepresentationWriter.cxx
    )
  IF(VTK_USE_RENDERING)
    SET(KWCommonPro_XML_SRCS ${KWCommonPro_XML_SRCS}
      ${KWCommonPro_SOURCE_DIR}/XML/vtkXML3DWidgetReader.cxx
      ${KWCommonPro_SOURCE_DIR}/XML/vtkXML3DWidgetWriter.cxx
      ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLBoundingBoxAnnotationReader.cxx
      ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLBoundingBoxAnnotationWriter.cxx
      ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLImagePlaneWidgetReader.cxx
      ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLImagePlaneWidgetWriter.cxx
      ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLImplicitPlaneWidgetReader.cxx
      ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLImplicitPlaneWidgetWriter.cxx
      ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLPlaneWidgetReader.cxx
      ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLPlaneWidgetWriter.cxx
      ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLPolyDataSourceWidgetReader.cxx
      ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLPolyDataSourceWidgetWriter.cxx
      ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLScalarBarWidgetReader.cxx
      ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLScalarBarWidgetWriter.cxx
      ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLSideAnnotationReader.cxx
      ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLSideAnnotationWriter.cxx
      )
  ENDIF(VTK_USE_RENDERING)
  SET_SOURCE_FILES_PROPERTIES(
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLIOBase.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLObjectReader.cxx
    ${KWCommonPro_SOURCE_DIR}/XML/vtkXMLObjectWriter.cxx
    ABSTRACT
    )
ENDIF(KWCommonPro_USE_XML_RW)

# --------------------------------------------------------------------------
# Include dirs

INCLUDE_DIRECTORIES(
  ${KWCommonPro_INCLUDE_PATH}
  ${KWCommon_INCLUDE_PATH}
  )

IF(KWCommonPro_USE_GDCM)
  INCLUDE_DIRECTORIES(${GDCM_INCLUDE_PATH})
ENDIF(KWCommonPro_USE_GDCM)

IF(KWCommonPro_USE_CTNLIB)
  INCLUDE_DIRECTORIES(${CTNLIB_INCLUDE_PATH})
ENDIF(KWCommonPro_USE_CTNLIB)

IF(KWCommonPro_USE_CTNLIB AND NOT KWCommonPro_USE_GDCM)
  INCLUDE_DIRECTORIES(
    ${JPEG12_INCLUDE_PATH}
    ${LJPG_INCLUDE_PATH}
    )
ENDIF(KWCommonPro_USE_CTNLIB AND NOT KWCommonPro_USE_GDCM)

# --------------------------------------------------------------------------
# Create the instantiators

SET(VTK_USE_INSTANTIATOR_NEW 1)
VTK_MAKE_INSTANTIATOR3(KWCommonProInstantiator 
                       KWCommonPro_Instantiator_SRCS
                       "${KWCommonPro_SRCS}"
                       VTK_EXPORT
                       ${KWCommonPro_BINARY_DIR} 
                       "")

# --------------------------------------------------------------------------
# Build the library

ADD_LIBRARY(KWCommonPro 
  ${KWCommonPro_SRCS} 
  ${KWCommonPro_XML_SRCS}
  ${KWCommonPro_Instantiator_SRCS}
)

TARGET_LINK_LIBRARIES(KWCommonPro
  vtkHybrid
  ${KWCommon_LIBRARIES}
  )

IF(KWCommonPro_USE_XML_RW)
  TARGET_LINK_LIBRARIES(KWCommonPro vtkWidgets)
ENDIF(KWCommonPro_USE_XML_RW)

IF(KWCommonPro_USE_GDCM)
  TARGET_LINK_LIBRARIES(KWCommonPro ${GDCM_LIBRARIES})
ENDIF(KWCommonPro_USE_GDCM)

IF(KWCommonPro_USE_CTNLIB)
  TARGET_LINK_LIBRARIES(KWCommonPro ${CTNLIB_LIBRARIES})
  IF(NOT KWCommonPro_USE_GDCM)
    TARGET_LINK_LIBRARIES(KWCommonPro
      ${LJPG_LIBRARIES}
      ${JPEG12_LIBRARIES}
      )
  ENDIF(NOT KWCommonPro_USE_GDCM)
ENDIF(KWCommonPro_USE_CTNLIB)

IF(NOT KWCommonPro_INSTALL_NO_LIBRARIES)
  INSTALL_TARGETS(
    ${KWCommonPro_INSTALL_LIB_DIR}
    RUNTIME_DIRECTORY ${KWCommonPro_INSTALL_BIN_DIR}
    ${KWCommonPro_LIBRARIES})
ENDIF(NOT KWCommonPro_INSTALL_NO_LIBRARIES)

# --------------------------------------------------------------------------
# Testing

INCLUDE(Dart)
MARK_AS_ADVANCED(BUILD_TESTING DART_ROOT TCL_TCLSH)

SET(default_val 1)
IF(DEFINED KWCommonPro_BUILD_TESTING_DEFAULT)
  SET(default_val ${KWCommonPro_BUILD_TESTING_DEFAULT})
ENDIF(DEFINED KWCommonPro_BUILD_TESTING_DEFAULT)
OPTION(KWCommonPro_BUILD_TESTING 
  "Enable testing in KWCommonPro (if BUILD_TESTING is ON as well)." 
  ${default_val})
MARK_AS_ADVANCED(KWCommonPro_BUILD_TESTING)
IF(BUILD_TESTING AND KWCommonPro_BUILD_TESTING)
  #SET(BUILDNAME "${PROJECT_NAME}-${BUILDNAME}")
  ENABLE_TESTING()
  SUBDIRS(Testing)
ENDIF(BUILD_TESTING AND KWCommonPro_BUILD_TESTING)

# --------------------------------------------------------------------------
# Install the headers

IF(NOT KWCommonPro_INSTALL_NO_DEVELOPMENT)
  INSTALL_FILES(${KWCommonPro_INSTALL_INCLUDE_DIR} .h ${KWCommonPro_SRCS})
  IF(KWCommonPro_USE_XML_RW)
    INSTALL_FILES(${KWCommonPro_INSTALL_INCLUDE_DIR}/XML .h ${KWCommonPro_XML_SRCS})
  ENDIF(KWCommonPro_USE_XML_RW)
  INSTALL_FILES(${KWCommonPro_INSTALL_INCLUDE_DIR} FILES 
    ${CMAKE_CURRENT_BINARY_DIR}/vtkKWCommonProConfigure.h)
ENDIF(NOT KWCommonPro_INSTALL_NO_DEVELOPMENT)

# --------------------------------------------------------------------------
# Configure some files. This should be at the end for all variables to
# be set before the contents of the files is replaced.

CONFIGURE_FILE(
  ${CMAKE_CURRENT_SOURCE_DIR}/vtkKWCommonProConfigure.h.in
  ${CMAKE_CURRENT_BINARY_DIR}/vtkKWCommonProConfigure.h)

CONFIGURE_FILE(
  ${CMAKE_CURRENT_SOURCE_DIR}/vtkKWCommonProBuildConfigure.h.in 
  ${CMAKE_CURRENT_BINARY_DIR}/vtkKWCommonProBuildConfigure.h)

# --------------------------------------------------------------------------
# Configure the export configuration

SUBDIRS(CMake/ExportConfiguration)
