SET(QT_DONT_USE_QTGUI "YES")
INCLUDE(${QT_USE_FILE})

# Daemon integration 
# select implementation of connectors to desktop environment:
SET(INTEGRATION_OVERRIDE "unset"
    CACHE STRING "Decibel daemen integration type override (simplistic or kde4)."
)

# choose a sane default integration dir:
SET(INTEGRATION_TYPE unset)

IF (KDE4_FOUND)
    SET(INTEGRATION_TYPE "kde4")
    INCLUDE_DIRECTORIES(${KDE4_INCLUDE_DIR})
ELSE (KDE4_FOUND)
    SET(INTEGRATION_TYPE "simplistic")
ENDIF (KDE4_FOUND)

# override integration dir if desired:
IF (NOT INTEGRATION_OVERRIDE STREQUAL "unset")
    SET(INTEGRATION_TYPE "${INTEGRATION_OVERRIDE}")
ENDIF (NOT INTEGRATION_OVERRIDE STREQUAL "unset")

# Set integration dir to the required type:
SET(INTEGRATION_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${INTEGRATION_TYPE}")

IF(NOT IS_DIRECTORY "${INTEGRATION_DIR}")
    MESSAGE(FATAL_ERROR "Could not find integration type ${INTEGRATION_TYPE}.")
ENDIF(NOT IS_DIRECTORY "${INTEGRATION_DIR}")

INCLUDE_DIRECTORIES(${QT_QTCORE_INCLUDE_DIR}
                    ${TELEPATHY_QT_INCLUDE_DIR}
                    ${TAPIOCA_QT_INCLUDE_DIR}
                    ${CMAKE_CURRENT_BINARY_DIR}
                    ${CMAKE_CURRENT_SOURCE_DIR}
                    ${INTEGRATION_DIR}
                    ${CMAKE_SOURCE_DIR}/include
)

CONFIGURE_FILE(
    "${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake"
    "${CMAKE_CURRENT_BINARY_DIR}/config.h"
)

SET(SERVICE_FILE "org.kde.Decibel.Daemon.service")

CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/${SERVICE_FILE}.cmake"
               "${CMAKE_CURRENT_BINARY_DIR}/${SERVICE_FILE}"
)

# ######### Decibel Server Library #########

SET(decibel_SRCS
    ../common/types.cpp
    protocolmanager.cpp
    accountconnectorbase.cpp
    accountmanager.cpp
    connectionfacade.cpp
    contactconnectorbase.cpp
    contactmanager.cpp
    componentmanager.cpp
    policyengine.cpp
)

SET(decibel_MOC_HDRS
    protocolmanager.h
    accountconnectorbase.h
    accountmanager.h
    connectionfacade.h
    contactmanager.h
    componentmanager.h
    policyengine.h
    contactconnectorbase.h
)

IF("${INTEGRATION_TYPE}" STREQUAL "kde4")
    SET(decibel_SRCS
        ${decibel_SRCS}
        ${INTEGRATION_DIR}/contactconnector.cpp
        ${INTEGRATION_DIR}/accountconnector.cpp
    )
    SET(decibel_MOC_HDRS
        ${decibel_MOC_HDRS}
        ${INTEGRATION_DIR}/accountconnector.h
        ${INTEGRATION_DIR}/contactconnector.h
    )
    SET(DECIBELSTATIC_LIBS
        ${KDE4_KIO_LIBS}
    )
ELSEIF("${INTEGRATION_TYPE}" STREQUAL "simplistic")
    SET(decibel_SRCS
        ${decibel_SRCS}
        ${INTEGRATION_DIR}/contactconnector.cpp
        ${INTEGRATION_DIR}/accountconnector.cpp
    )
    SET(decibel_MOC_HDRS
        ${decibel_MOC_HDRS}
        ${INTEGRATION_DIR}/accountconnector.h
        ${INTEGRATION_DIR}/contactconnector.h
    )
    SET(DECIBELSTATIC_LIBS "")
ENDIF("${INTEGRATION_TYPE}" STREQUAL "kde4")

SET(decibel_HDRS
    ${decibel_public_HDRS}
)

QT4_ADD_DBUS_ADAPTOR(decibel_SRCS
                     ../../xml/server/protocolmanager.xml
                     protocolmanager.h
                     ProtocolManager
)
QT4_ADD_DBUS_ADAPTOR(decibel_SRCS
                     ../../xml/server/accountmanager.xml
                     accountmanager.h
                     AccountManager
)
QT4_ADD_DBUS_ADAPTOR(decibel_SRCS
                     ../../xml/server/componentmanager.xml
                     componentmanager.h
                     ComponentManager
)
QT4_ADD_DBUS_ADAPTOR(decibel_SRCS
                     ../../xml/server/contactmanager.xml
                     contactmanager.h
                     ContactManager
)
# client interfaces:
QT4_ADD_DBUS_INTERFACE(decibel_SRCS
                       ../../xml/client/channelhandler.xml
                       channelhandler
                       Decibel/Types
)

QT4_WRAP_CPP(decibel_MOC_SRCS ${decibel_MOC_HDRS})

ADD_EXECUTABLE(decibel
               main.cpp
               ${decibel_SRCS}
               ${decibel_HDRS}
               ${decibel_MOC_SRCS}
)
TARGET_LINK_LIBRARIES(decibel
                      ${QT_LIBRARIES}
                      ${TAPIOCA_QT_LIBRARIES}
                      ${DECIBELSTATIC_LIBS}
)

# Install:
INSTALL(TARGETS decibel DESTINATION ${BIN_INSTALL_DIR})

INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${SERVICE_FILE}
        DESTINATION ${DBUS_SERVICES_INSTALL_DIR}
)

