#*********************************************************************
#**                Image Component Library (ICL)                    **
#**                                                                 **
#** Copyright (C) 2006-2013 CITEC, University of Bielefeld          **
#**                         Neuroinformatics Group                  **
#** Website: www.iclcv.org and                                      **
#**          http://opensource.cit-ec.de/projects/icl               **
#**                                                                 **
#** File   : ICLQt/CMakeLists.txt                                   **
#** Module : ICLQt                                                  **
#** Authors: Michael Goetting                                       **
#**                                                                 **
#**                                                                 **
#** GNU LESSER GENERAL PUBLIC LICENSE                               **
#** This file may be used under the terms of the GNU Lesser General **
#** Public License version 3.0 as published by the                  **
#**                                                                 **
#** Free Software Foundation and appearing in the file LICENSE.LGPL **
#** included in the packaging of this file.  Please review the      **
#** following information to ensure the license requirements will   **
#** be met: http://www.gnu.org/licenses/lgpl-3.0.txt                **
#**                                                                 **
#** The development of this software was supported by the           **
#** Excellence Cluster EXC 277 Cognitive Interaction Technology.    **
#** The Excellence Cluster EXC 277 is a grant of the Deutsche       **
#** Forschungsgemeinschaft (DFG) in the context of the German       **
#** Excellence Initiative.                                          **
#**                                                                 **
#*********************************************************************

SET(SOURCES src/ICLQt/AbstractPlotWidget.cpp
            src/ICLQt/Application.cpp
	    src/ICLQt/BorderHandle.cpp
	    src/ICLQt/ButtonGroupHandle.cpp
	    src/ICLQt/ButtonHandle.cpp
	    src/ICLQt/CamCfgWidget.cpp
	    src/ICLQt/CheckBoxHandle.cpp
	    src/ICLQt/ChromaClassifierIO.cpp	   
	    src/ICLQt/ChromaGUI.cpp
	    src/ICLQt/ColorLabel.cpp
	    src/ICLQt/ComboHandle.cpp
	    src/ICLQt/CompabilityLabel.cpp
	    src/ICLQt/DataStore.cpp
	    src/ICLQt/DefineRectanglesMouseHandler.cpp
	    src/ICLQt/DefineQuadrangleMouseHandler.cpp
	    src/ICLQt/DoubleSlider.cpp
	    src/ICLQt/Dragger.cpp
	    src/ICLQt/DragRectangleMouseHandler.cpp
	    src/ICLQt/DrawHandle.cpp
	    src/ICLQt/DrawHandle3D.cpp
	    src/ICLQt/DrawWidget.cpp
	    src/ICLQt/DrawWidget3D.cpp
	    src/ICLQt/FloatHandle.cpp
	    src/ICLQt/FSliderHandle.cpp
	    src/ICLQt/GLPaintEngine.cpp
            src/ICLQt/GLImg.cpp
	    src/ICLQt/GLFragmentShader.cpp
	    src/ICLQt/GUI.cpp
	    src/ICLQt/DynamicGUI.cpp
	    src/ICLQt/GUIDefinition.cpp
	    src/ICLQt/GUIWidget.cpp
	    src/ICLQt/HistogrammWidget.cpp
	    src/ICLQt/IconFactory.cpp
	    src/ICLQt/ImageHandle.cpp
	    src/ICLQt/ImgParamWidget.cpp
	    src/ICLQt/IntHandle.cpp
	    src/ICLQt/LabelHandle.cpp
	    src/ICLQt/LowLevelPlotWidget.cpp
	    src/ICLQt/MouseEvent.cpp
	    src/ICLQt/MouseHandler.cpp
	    src/ICLQt/MultiDrawHandle.cpp
	    src/ICLQt/PlotHandle.cpp
	    src/ICLQt/PlotWidget.cpp
	    src/ICLQt/QImageConverter.cpp
	    src/ICLQt/Quick.cpp
	    src/ICLQt/SliderHandle.cpp
	    src/ICLQt/SpinnerHandle.cpp
	    src/ICLQt/StateHandle.cpp
	    src/ICLQt/StringHandle.cpp
	    src/ICLQt/StringSignalButton.cpp
	    src/ICLQt/ThreadedUpdatableSlider.cpp
	    src/ICLQt/ThreadedUpdatableTextView.cpp
	    src/ICLQt/ToggleButton.cpp
            src/ICLQt/Widget.cpp
            src/ICLQt/ICLVideoSurface.cpp
            src/ICLQt/QtVideoGrabber.cpp
            src/ICLQt/QtCameraGrabber.cpp
            src/ICLQt/AdjustGridMouseHandler.cpp)

SET(HEADERS src/ICLQt/AbstractPlotWidget.h
	    src/ICLQt/BorderBox.h
	    src/ICLQt/BorderHandle.h
	    src/ICLQt/BoxHandle.h
	    src/ICLQt/ButtonGroupHandle.h
	    src/ICLQt/ButtonHandle.h
	    src/ICLQt/CamCfgWidget.h
	    src/ICLQt/CheckBoxHandle.h
	    src/ICLQt/ChromaClassifierIO.h
	    src/ICLQt/ColorHandle.h
	    src/ICLQt/ColorLabel.h
	    src/ICLQt/ComboHandle.h
	    src/ICLQt/Common.h
	    src/ICLQt/CompabilityLabel.h
	    src/ICLQt/ContainerGUIComponent.h
	    src/ICLQt/ContainerGUIComponents.h
	    src/ICLQt/ContainerHandle.h
	    src/ICLQt/DataStore.h
	    src/ICLQt/DefineRectanglesMouseHandler.h
	    src/ICLQt/DefineQuadrangleMouseHandler.h
	    src/ICLQt/DispHandle.h
	    src/ICLQt/Dragger.h
	    src/ICLQt/DragRectangleMouseHandler.h
	    src/ICLQt/DrawHandle3D.h
	    src/ICLQt/DrawHandle.h
	    src/ICLQt/DrawWidget3D.h
	    src/ICLQt/DrawWidget.h
	    src/ICLQt/FloatHandle.h
	    src/ICLQt/FPSHandle.h
	    src/ICLQt/FSliderHandle.h
	    src/ICLQt/GLFragmentShader.h
	    src/ICLQt/GLImg.h
	    src/ICLQt/GLPaintEngine.h
	    src/ICLQt/GUIComponent.h
	    src/ICLQt/GUIComponents.h
	    src/ICLQt/GUIComponentWithOutput.h
	    src/ICLQt/GUIDefinition.h
	    src/ICLQt/GUI.h
	    src/ICLQt/DynamicGUI.h
	    src/ICLQt/GUIHandleBase.h
	    src/ICLQt/GUIHandle.h
	    src/ICLQt/GUISyntaxErrorException.h
	    src/ICLQt/HistogrammWidget.h
	    src/ICLQt/IconFactory.h
	    src/ICLQt/ImageHandle.h
	    src/ICLQt/ImageStatistics.h
	    src/ICLQt/IntHandle.h
	    src/ICLQt/LabelHandle.h
	    src/ICLQt/LowLevelPlotWidget.h
	    src/ICLQt/MouseEvent.h
	    src/ICLQt/PaintEngine.h
	    src/ICLQt/PlotHandle.h
	    src/ICLQt/PlotWidget.h
	    src/ICLQt/ProxyLayout.h
	    src/ICLQt/QImageConverter.h
	    src/ICLQt/Qt.h
	    src/ICLQt/Quick.h
	    src/ICLQt/SliderHandle.h
	    src/ICLQt/SliderUpdateEvent.h
	    src/ICLQt/SpinnerHandle.h
	    src/ICLQt/SplitterHandle.h
	    src/ICLQt/StateHandle.h
	    src/ICLQt/StringHandle.h
	    src/ICLQt/TabHandle.h
	    src/ICLQt/ThreadedUpdatableTextView.h
	    src/ICLQt/ThreadedUpdatableWidget.h
	    src/ICLQt/WidgetCaptureMode.h
	    src/ICLQt/GLPaintEngine.h
            src/ICLQt/GLImg.h
	    src/ICLQt/DrawWidget3D.h
	    src/ICLQt/DrawHandle3D.h
	    src/ICLQt/GLFragmentShader.h
            src/ICLQt/Quick.h
            src/ICLQt/ICLVideoSurface.h
            src/ICLQt/QtVideoGrabber.h
            src/ICLQt/QtCameraGrabber.h
            src/ICLQt/AdjustGridMouseHandler.h)

IF(RSB_FOUND)
 LIST(APPEND SOURCES src/ICLQt/RSBRemoteGUI.cpp)
 LIST(APPEND HEADERS src/ICLQt/RSBRemoteGUI.h)
ENDIF()

SET(ICL_MOC_HEADERS src/ICLQt/Widget.h
                    src/ICLQt/MouseHandler.h
                    src/ICLQt/DoubleSlider.h
                    src/ICLQt/ImgParamWidget.h
	            src/ICLQt/StringSignalButton.h
	            src/ICLQt/GUIWidget.h
	            src/ICLQt/ChromaGUI.h
	            src/ICLQt/ThreadedUpdatableSlider.h
	            src/ICLQt/MultiDrawHandle.h
	            src/ICLQt/ToggleButton.h
		    src/ICLQt/Application.h)

# ---- Library build instructions ----
IF(WIN32)
INCLUDE_DIRECTORIES(BEFORE src
                           ${ICL_SOURCE_DIR}/3rdparty/zlib
                           ${ICL_SOURCE_DIR}/3rdparty/libpng
                           ${ICL_SOURCE_DIR}/3rdparty/libjpeg
                           ${CMAKE_BINARY_DIR}/src
                           ${ICL_SOURCE_DIR}/ICLUtils/src
                           ${ICL_SOURCE_DIR}/ICLMath/src
                           ${ICL_SOURCE_DIR}/ICLCore/src
                           ${ICL_SOURCE_DIR}/ICLFilter/src
                           ${ICL_SOURCE_DIR}/ICLIO/src)
ELSE()
INCLUDE_DIRECTORIES(BEFORE src
                           ${CMAKE_BINARY_DIR}/src
                           ${ICL_SOURCE_DIR}/ICLUtils/src
                           ${ICL_SOURCE_DIR}/ICLMath/src
                           ${ICL_SOURCE_DIR}/ICLCore/src
                           ${ICL_SOURCE_DIR}/ICLFilter/src
                           ${ICL_SOURCE_DIR}/ICLIO/src)
 ENDIF()

IF(Qt5Widgets_FOUND)
  QT5_WRAP_CPP(MOC_FILES ${ICL_MOC_HEADERS})
ELSE()
  QT4_WRAP_CPP(MOC_FILES ${ICL_MOC_HEADERS})
ENDIF()

ADD_LIBRARY(ICLQt SHARED ${SOURCES} ${HEADERS} ${MOC_FILES})

# ---- 3rd party library handling ----
TARGET_LINK_LIBRARIES(ICLQt ICLCV
                            ${ICLQt_3RDPARTY_LIBRARIES})

SET_TARGET_PROPERTIES(ICLQt
                      PROPERTIES 
		      VERSION ${SO_VERSION})

# ---- Build examples/ demos/ apps ----
IF(BUILD_EXAMPLES)
  ADD_SUBDIRECTORY(examples)
ENDIF()

IF(BUILD_DEMOS)
  ADD_SUBDIRECTORY(demos)
ENDIF()

IF(BUILD_APPS)
  ADD_SUBDIRECTORY(apps)
ENDIF()

# ---- Install specifications ----
INSTALL(TARGETS ICLQt
        RUNTIME DESTINATION bin
        LIBRARY DESTINATION lib
        ARCHIVE DESTINATION lib)

#get_target_property(ICLQt5CoreLibAbs Qt5::Core IMPORTED_LOCATION_RELEASE)
#get_target_property(ICLQt5GuiLibAbs Qt5::Gui IMPORTED_LOCATION_RELEASE)
#get_target_property(ICLQt5WidgetsLibAbs Qt5::Widgets IMPORTED_LOCATION_RELEASE)
#get_target_property(ICLQt5OpenGLLibAbs Qt5::OpenGL IMPORTED_LOCATION_RELEASE)


#MESSAGE(STATUS "libs: ${ICLQt5CoreLibAbs}")
#MESSAGE(STATUS "libs: ${ICLQt5GuiLibAbs}")
#MESSAGE(STATUS "libs: ${ICLQt5OpenGLLibAbs}")
#MESSAGE(STATUS "libs: ${ICLQt5WidgetsLibAbs}")

# temporary test here
#SET(Qt5_LIBRARIES_X "${ICLQt5CoreLibAbs} ${ICLQt5OpenGLLibAbs} ${ICLQtWidgetsLibAbs} ${ICLQt5GuiLibAbs}")
#MESSAGE(STATUS "qt5libs: ${Qt5_LIBRARIES_X}")

#MESSAGE(STATUS "libs: ${ICLQt5CoreLibAbs}")
#MESSAGE(STATUS "libs: ${ICLQt5GuiLibAbs}")
#MESSAGE(STATUS "libs: ${ICLQt5OpenGLLibAbs}")
#MESSAGE(STATUS "libs: ${ICLQt5WidgetsLibAbs}")

INSTALL_FILES_RECURSIVE("include/${INSTALL_PATH_PREFIX}" HEADERS )
INSTALL_FILES_RECURSIVE("include/${INSTALL_PATH_PREFIX}" ICL_MOC_HEADERS )

# ---- PKG-config ----
CREATE_PKGCONFIG(NAME ICLQt
                 LIBRARY_DEPS ${ICLQt_3RDPARTY_LIBRARIES}
                 PKGCONFIG_DEPS ICLCV-${SO_VERSION})