
# FIXME Delete this block when akonadi-mime is split
# If building the monolithic kdepimlibs, kcfg2dbus.xsl is in akonadi/
if(NOT "${CMAKE_SOURCE_DIR}" STREQUAL "${Akonadi-Mime_SOURCE_DIR}")
  set(KF5Akonadi_DATA_DIR ${Akonadi_SOURCE_DIR}/src/core/)
endif()

# generates a D-Bus interface description from a KConfigXT file
macro(kcfg_generate_dbus_interface _kcfg _name)
  add_custom_command(
    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_name}.xml
    COMMAND ${LIBXSLT_XSLTPROC_EXECUTABLE} --stringparam interfaceName ${_name}
    ${KF5Akonadi_DATA_DIR}/kcfg2dbus.xsl
    ${_kcfg}
    > ${CMAKE_CURRENT_BINARY_DIR}/${_name}.xml
    ${_kcfg}
    )
endmacro()

macro(add_resource_iface _kcfgFile _ifaceName _className)
  kcfg_generate_dbus_interface(${CMAKE_CURRENT_SOURCE_DIR}/${_kcfgFile} ${_ifaceName})
  string(TOLOWER ${_className} _codeFile)
  set_source_files_properties( ${CMAKE_CURRENT_BINARY_DIR}/${_ifaceName}.xml PROPERTIES INCLUDE "metatype.h")
  qt5_add_dbus_interface(akonadimime_SRCS
    ${CMAKE_CURRENT_BINARY_DIR}/${_ifaceName}.xml ${_codeFile} ${_className}
  )
endmacro()

########### next target ###############

set(akonadimime_SRCS
    addressattribute.cpp
    attributeregistrar.cpp
    removeduplicatesjob.cpp
    specialmailcollections.cpp
    specialmailcollectionsrequestjob.cpp
    specialmailcollectionsdiscoveryjob.cpp
    messagefolderattribute.cpp
    messagemodel.cpp
    messageparts.cpp
    messageflags.cpp
    messagestatus.cpp

    commandbase.cpp
    util.cpp
    emptytrashcommand.cpp
    markascommand.cpp
    movecommand.cpp
    movetotrashcommand.cpp
    standardmailactionmanager.cpp
)

ecm_qt_declare_logging_category(akonadimime_SRCS HEADER akonadi_mime_debug.h IDENTIFIER AKONADIMIME_LOG CATEGORY_NAME log_akonadi_mime)

add_resource_iface(imapresource.kcfg
    org.kde.Akonadi.Imap.Settings ImapSettings)

#REACTIVATE
#if (KDE4_BUILD_TESTS)
#    set(akonadimime_SRCS
#        ${akonadimime_SRCS}
#        specialmailcollectionstesting.cpp
#    )
#endif()

kconfig_add_kcfg_files(akonadimime_SRCS
    specialmailcollectionssettings.kcfgc
)

install(FILES
    specialmailcollections.kcfg
    DESTINATION ${KDE_INSTALL_KCFGDIR}
)

add_library(KF5AkonadiMime ${akonadimime_SRCS})

generate_export_header(KF5AkonadiMime BASE_NAME akonadi-mime)

add_library(KF5::AkonadiMime ALIAS KF5AkonadiMime)

# NOTE: The include directories remain 'akonadi/kmime' to be as SC as possible.
target_include_directories(KF5AkonadiMime INTERFACE "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR_KF5}/Akonadi/KMime>")
target_include_directories(KF5AkonadiMime PUBLIC "$<BUILD_INTERFACE:${Akonadi-Mime_SOURCE_DIR}/src;${Akonadi-Mime_BINARY_DIR}/src>")
# TODO: Remove when kdepimlibs is split (and fix the broken includes in eg. mailtransport)
target_include_directories(KF5AkonadiMime INTERFACE "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR_KF5}/akonadi/kmime>")

target_link_libraries(KF5AkonadiMime
PUBLIC
    KF5::AkonadiCore
PRIVATE
    KF5::Mime
    KF5::AkonadiWidgets
    KF5::KIOCore
    KF5::DBusAddons
    KF5::I18n
    KF5::ConfigWidgets
    KF5::XmlGui
)

set_target_properties(KF5AkonadiMime PROPERTIES
    VERSION ${AKONADIMIME_VERSION_STRING}
    SOVERSION ${AKONADIMIME_SOVERSION}
    EXPORT_NAME AkonadiMime
)

install(TARGETS
    KF5AkonadiMime
    EXPORT KF5AkonadiMimeTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}
)


ecm_generate_headers(AkonadiMime_CamelCase_HEADERS
  HEADER_NAMES

  AddressAttribute
  CommandBase
  MessageFlags
  MessageFolderAttribute
  MessageModel
  MessageParts
  MessageStatus
  MarkAsCommand
  MoveCommand
  RemoveDuplicatesJob
  SpecialMailCollections
  SpecialMailCollectionsDiscoveryJob
  SpecialMailCollectionsRequestJob
  StandardMailActionManager
  REQUIRED_HEADERS AkonadiMime_HEADERS
  PREFIX Akonadi/KMime
)

install(FILES
    ${AkonadiMime_CamelCase_HEADERS}
    DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/Akonadi/KMime
    COMPONENT Devel
)

install(FILES
    ${AkonadiMime_HEADERS}
    ${CMAKE_CURRENT_BINARY_DIR}/akonadi-mime_export.h
    DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/akonadi/kmime
    COMPONENT Devel
)

ecm_generate_pri_file(BASE_NAME AkonadiMime
    LIB_NAME KF5AkonadiMime
    DEPS "AkonadiCore" FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR_KF5}/Akonadi/KMime
)

install(FILES
    ${PRI_FILENAME}
    DESTINATION ${ECM_MKSPECS_INSTALL_DIR})

## install the MIME type spec file for KDEPIM specific MIME types
install(FILES x-vnd.kde.contactgroup.xml DESTINATION ${KDE_INSTALL_MIMEDIR})
update_xdg_mimetypes(${KDE_INSTALL_MIMEDIR})

