kde-playground/kdepimlibs/akonadi/CMakeLists.txt
2015-09-23 09:35:50 +00:00

450 lines
12 KiB
CMake

project(akonadi-kde)
add_definitions( -DKDE_DEFAULT_DEBUG_AREA=5250 )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${KDE4_ENABLE_EXCEPTIONS}" )
if(CMAKE_COMPILE_GCOV)
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
endif()
if (ENABLE_TESTING)
add_subdirectory( tests )
endif()
add_definitions( ${AKONADI_DEFINITIONS} )
add_definitions( -DQT_NO_CAST_FROM_ASCII )
add_definitions( -DQT_NO_CAST_TO_ASCII )
# Set the resources and agents version
configure_file(kdepimlibs-version.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/kdepimlibs-version.h)
# Detect the QJson version (0.8.0 is BIC)
if (QJSON_VERSION VERSION_GREATER 0.7.1)
set(USE_QJSON_0_8 TRUE)
endif()
configure_file(config-akonadi.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-akonadi.h)
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}
)
add_subdirectory( kabc )
add_subdirectory( kcal )
add_subdirectory( kmime )
add_subdirectory( contact )
add_subdirectory( calendar )
add_subdirectory( notes )
add_subdirectory( socialutils )
add_subdirectory( xml )
include_directories(
${QT_QTDBUS_INCLUDE_DIR}
${Boost_INCLUDE_DIR}
${KDE4_INCLUDE_DIR}
${QJSON_INCLUDE_DIR}
${AKONADI_INCLUDE_DIR}
${CMAKE_CURRENT_BINARY_DIR}/../kmime
${AKONADI_INCLUDE_DIR}/akonadi/private
)
# libakonadi-kde
set( akonadikde_LIB_SRC
entity.cpp # keep it at top to not break enable-final
actionstatemanager.cpp
agentactionmanager.cpp
agentbase.cpp
agentfactory.cpp
agentfilterproxymodel.cpp
agentinstance.cpp
agentinstancecreatejob.cpp
agentinstancemodel.cpp
agentinstancewidget.cpp
agentmanager.cpp
agentsearchinterface.cpp
agenttype.cpp
agenttypemodel.cpp
agenttypewidget.cpp
agenttypedialog.cpp
asyncselectionhandler.cpp
attribute.cpp
attributefactory.cpp
cachepolicy.cpp
changemediator_p.cpp
changerecorder.cpp
changerecorder_p.cpp
changenotificationdependenciesfactory.cpp
collection.cpp
collectionattributessynchronizationjob.cpp
collectioncombobox.cpp
collectioncopyjob.cpp
collectioncreatejob.cpp
collectiondeletejob.cpp
collectionfilterproxymodel.cpp
collectionfetchjob.cpp
collectionfetchscope.cpp
collectionmodel.cpp
collectionmodel_p.cpp
collectionmodifyjob.cpp
collectionmovejob.cpp
collectionpathresolver.cpp
collectionquotaattribute.cpp
collectionrequester.cpp
collectionrightsattribute.cpp
collectionselectjob.cpp
collectionstatistics.cpp
collectionstatisticsjob.cpp
collectionstatisticsmodel.cpp
collectionstatisticsdelegate.cpp
collectionsync.cpp
cachepolicypage.cpp
collectiongeneralpropertiespage.cpp
collectionpropertiesdialog.cpp
collectionpropertiespage.cpp
conflicthandling/conflicthandler.cpp
conflicthandling/conflictresolvedialog.cpp
control.cpp
dbusconnectionpool.cpp
entitycache.cpp
entitydisplayattribute.cpp
entityhiddenattribute.cpp
entitydeletedattribute.cpp
entitymimetypefiltermodel.cpp
entityorderproxymodel.cpp
entityrightsfiltermodel.cpp
entitytreemodel.cpp
entitytreemodel_p.cpp
entitytreeview.cpp
entityannotationsattribute.cpp
erroroverlay.cpp
etmviewstatesaver.cpp
exception.cpp
favoritecollectionsmodel.cpp
firstrun.cpp
gid/gidextractor.cpp
indexpolicyattribute.cpp
item.cpp
itemcreatejob.cpp
itemcopyjob.cpp
itemdeletejob.cpp
itemfetchjob.cpp
itemfetchscope.cpp
itemmodel.cpp
itemmonitor.cpp
itemmovejob.cpp
itemsearchjob.cpp
itemserializer.cpp
itemserializerplugin.cpp
itemmodifyjob.cpp
itemsync.cpp
invalidatecachejob.cpp
job.cpp
kdsignalblocker.cpp
kjobprivatebase.cpp
linkjob.cpp
mimetypechecker.cpp
monitor.cpp
monitor_p.cpp
notificationsource.cpp
partfetcher.cpp
pastehelper.cpp
persistentsearchattribute.cpp
preprocessorbase.cpp
preprocessorbase_p.cpp
protocolhelper.cpp
progressspinnerdelegate.cpp
recursivecollectionfilterproxymodel.cpp
recursiveitemfetchjob.cpp
recursivemover.cpp
resourcebase.cpp
resourcescheduler.cpp
resourceselectjob.cpp
resourcesynchronizationjob.cpp
searchcreatejob.cpp
searchquery.cpp
searchresultjob.cpp
selectionproxymodel.cpp
selftestdialog.cpp
session.cpp
servermanager.cpp
specialcollectionattribute.cpp
specialcollections.cpp
specialcollectionshelperjobs.cpp
specialcollectionsrequestjob.cpp
specialcollectionsdiscoveryjob.cpp
standardactionmanager.cpp
statisticsproxymodel.cpp
subscriptiondialog.cpp
subscriptionjob.cpp
subscriptionmodel.cpp
trashjob.cpp
trashrestorejob.cpp
trashsettings.cpp
trashfilterproxymodel.cpp
transactionjobs.cpp
transactionsequence.cpp
transportresourcebase.cpp
typepluginloader.cpp
attributeentity.cpp
tag.cpp
tagmodel.cpp
tagmodel_p.cpp
tagattribute.cpp
tagcreatejob.cpp
tagmodifyjob.cpp
tagfetchscope.cpp
tagfetchjob.cpp
tagdeletejob.cpp
tageditwidget.cpp
tagmanagementdialog.cpp
tagselectiondialog.cpp
tagwidget.cpp
unlinkjob.cpp
# Temporary until ported to Qt-plugin framework
pluginloader.cpp
resourcesettings.cpp
renamefavoritedialog.cpp
recentcollectionaction.cpp
dragdropmanager.cpp
collectionview.cpp
entitylistview.cpp
entitytreeviewstatesaver.cpp
itemview.cpp
)
if (KDEPIM_MOBILE_UI)
set( akonadikde_LIB_SRC ${akonadikde_LIB_SRC}
collectiondialog_mobile.cpp
)
else()
set( akonadikde_LIB_SRC ${akonadikde_LIB_SRC}
collectiondialog_desktop.cpp
)
endif()
# DBus interfaces and adaptors
set(akonadi_xml ${AKONADI_DBUS_INTERFACES_DIR}/org.freedesktop.Akonadi.NotificationManager.xml)
set_source_files_properties(${akonadi_xml} PROPERTIES INCLUDE "notificationmessagev3_p.h" )
qt4_add_dbus_interface( akonadikde_LIB_SRC ${akonadi_xml} notificationmanagerinterface )
set(akonadi_xml ${AKONADI_DBUS_INTERFACES_DIR}/org.freedesktop.Akonadi.NotificationSource.xml)
set_source_files_properties(${akonadi_xml} PROPERTIES INCLUDE "notificationmessagev3_p.h" )
qt4_add_dbus_interface( akonadikde_LIB_SRC ${akonadi_xml} notificationsourceinterface )
qt4_add_dbus_interfaces( akonadikde_LIB_SRC ${AKONADI_DBUS_INTERFACES_DIR}/org.freedesktop.Akonadi.AgentManager.xml )
qt4_add_dbus_interfaces( akonadikde_LIB_SRC ${AKONADI_DBUS_INTERFACES_DIR}/org.freedesktop.Akonadi.Tracer.xml )
qt4_add_dbus_interfaces( akonadikde_LIB_SRC ${AKONADI_DBUS_INTERFACES_DIR}/org.freedesktop.Akonadi.Agent.Control.xml )
qt4_add_dbus_adaptor( akonadikde_LIB_SRC ${AKONADI_DBUS_INTERFACES_DIR}/org.freedesktop.Akonadi.Resource.xml resourcebase.h Akonadi::ResourceBase resourceadaptor Akonadi__ResourceAdaptor )
qt4_add_dbus_adaptor( akonadikde_LIB_SRC ${AKONADI_DBUS_INTERFACES_DIR}/org.freedesktop.Akonadi.Preprocessor.xml preprocessorbase_p.h Akonadi::PreprocessorBasePrivate preprocessoradaptor Akonadi__PreprocessorAdaptor )
qt4_add_dbus_adaptor( akonadikde_LIB_SRC ${AKONADI_DBUS_INTERFACES_DIR}/org.freedesktop.Akonadi.Agent.Status.xml agentbase.h Akonadi::AgentBase statusadaptor Akonadi__StatusAdaptor )
qt4_add_dbus_adaptor( akonadikde_LIB_SRC ${AKONADI_DBUS_INTERFACES_DIR}/org.freedesktop.Akonadi.Agent.Control.xml agentbase.h Akonadi::AgentBase controladaptor Akonadi__ControlAdaptor)
qt4_add_dbus_adaptor( akonadikde_LIB_SRC interfaces/org.freedesktop.Akonadi.Resource.Transport.xml transportresourcebase_p.h Akonadi::TransportResourceBasePrivate transportadaptor Akonadi__TransportAdaptor )
qt4_add_dbus_adaptor( akonadikde_LIB_SRC interfaces/org.freedesktop.Akonadi.Agent.Search.xml agentsearchinterface_p.h Akonadi::AgentSearchInterfacePrivate searchadaptor Akonadi__SearchAdaptor )
kde4_add_kcfg_files( akonadikde_LIB_SRC resourcebasesettings.kcfgc )
install( FILES resourcebase.kcfg DESTINATION ${KCFG_INSTALL_DIR} )
add_definitions(
-DAKONADI_DEPRECATED=
)
# This one won't be needed when CMake 2.8.13 is depended on.
add_definitions(
-DAKONADI_DEPRECATED_EXPORT=AKONADI_EXPORT
)
add_library( akonadi-kde ${LIBRARY_TYPE} ${akonadikde_LIB_SRC} )
if(CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.12)
set_property(TARGET akonadi-kde PROPERTY DEFINE_SYMBOL akonadi_kde)
endif()
generate_export_header(akonadi-kde BASE_NAME akonadi)
if (ENABLE_TESTING)
set(AKONADI_TESTS_EXPORT AKONADI_EXPORT)
endif()
configure_file(akonadiprivate_export.h.in "${CMAKE_CURRENT_BINARY_DIR}/akonadiprivate_export.h")
if (ENABLE_TESTING)
set(AKONADI_TESTS_EXPORT AKONADI_EXPORT)
endif()
configure_file(akonadiprivate_export.h.in
"${CMAKE_CURRENT_BINARY_DIR}/akonadiprivate_export.h"
)
target_link_libraries( akonadi-kde ${QT_QTNETWORK_LIBRARY} ${QT_QTDBUS_LIBRARY} ${QT_QTSQL_LIBRARY} ${KDE4_KDEUI_LIBS} ${KDE4_KIO_LIBS} ${KDE4_SOLID_LIBS} ${AKONADI_COMMON_LIBRARIES} ${QJSON_LIBRARIES})
set( AKONADI_KDE_DEPS ${KDE4_KDEUI_LIBS} ${QT_QTDBUS_LIBRARY} ${QT_QTCORE_LIBRARY} )
if (KDEPIM_MOBILE_UI)
target_link_libraries( akonadi-kde ${QT_QTDECLARATIVE_LIBRARY} )
endif()
target_link_libraries( akonadi-kde LINK_INTERFACE_LIBRARIES ${AKONADI_KDE_DEPS})
set_target_properties( akonadi-kde PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION} )
install( TARGETS akonadi-kde EXPORT kdepimlibsLibraryTargets ${INSTALL_TARGETS_DEFAULT_ARGS} )
########### install files ###############
install( FILES
${CMAKE_CURRENT_BINARY_DIR}/akonadi_export.h
agentactionmanager.h
agentbase.h
agentfactory.h
agentfilterproxymodel.h
agentinstance.h
agentinstancecreatejob.h
agentinstancemodel.h
agentinstancewidget.h
agentmanager.h
agentsearchinterface.h
agenttype.h
agenttypemodel.h
agenttypewidget.h
agenttypedialog.h
attribute.h
attributefactory.h
attributeentity.h
cachepolicy.h
cachepolicypage.h
changerecorder.h
collection.h
collectionattributessynchronizationjob.h
collectioncombobox.h
collectioncopyjob.h
collectioncreatejob.h
collectiondeletejob.h
collectiondialog.h
collectionfilterproxymodel.h
collectionfetchjob.h
collectionfetchscope.h
collectionmodel.h
collectionmodifyjob.h
collectionmovejob.h
collectionpropertiesdialog.h
collectionpropertiespage.h
collectionpathresolver_p.h
collectionquotaattribute.h
collectionrequester.h
collectionstatisticsdelegate.h
collectionstatisticsmodel.h
collectionstatistics.h
collectionstatisticsjob.h
collectionutils_p.h
collectionview.h
conflicthandling/abstractdifferencesreporter.h
conflicthandling/differencesalgorithminterface.h
control.h
dbusconnectionpool.h
entity.h
entitydisplayattribute.h
entityhiddenattribute.h
entitydeletedattribute.h
entitylistview.h
entitymimetypefiltermodel.h
entityrightsfiltermodel.h
entityorderproxymodel.h
entitytreemodel.h
entitytreeview.h
entitytreeviewstatesaver.h
etmviewstatesaver.h
entityannotationsattribute.h
exception.h
favoritecollectionsmodel.h
gid/gidextractorinterface.h
indexpolicyattribute.h
item.h
itemcreatejob.h
itemcopyjob.h
itemdeletejob.h
itemfetchjob.h
itemfetchscope.h
itemmodel.h
itemmodifyjob.h
itemmonitor.h
itemmovejob.h
itempayloadinternals_p.h
itemsearchjob.h
itemserializerplugin.h
itemsync.h
itemview.h
job.h
linkjob.h
mimetypechecker.h
monitor.h
partfetcher.h
persistentsearchattribute.h
preprocessorbase.h
qtest_akonadi.h
resourcebase.h
resourcesynchronizationjob.h
recursivecollectionfilterproxymodel.h
recursiveitemfetchjob.h
searchcreatejob.h
searchquery.h
selectionproxymodel.h
session.h
servermanager.h
specialcollections.h
specialcollectionsrequestjob.h
specialcollectionsdiscoveryjob.h
standardactionmanager.h
statisticsproxymodel.h
tagattribute.h
tag.h
tagmodel.h
tagmodifyjob.h
tagcreatejob.h
tagfetchjob.h
tagfetchscope.h
tagdeletejob.h
tagwidget.h
tagmanagementdialog.h
tagselectiondialog.h
trashjob.h
trashrestorejob.h
trashsettings.h
trashfilterproxymodel.h
transactionjobs.h
transactionsequence.h
transportresourcebase.h
unlinkjob.h
resourcesettings.h
${CMAKE_CURRENT_BINARY_DIR}/resourcebasesettings.h
DESTINATION ${INCLUDE_INSTALL_DIR}/akonadi COMPONENT Devel
)
install( FILES
collectionpathresolver_p.h
DESTINATION ${INCLUDE_INSTALL_DIR}/akonadi/private COMPONENT Devel
)
install( FILES
kcfg2dbus.xsl
DESTINATION ${DATA_INSTALL_DIR}/akonadi-kde
)
if (KDEPIM_MOBILE_UI)
install( FILES
CollectionDialogMobile.qml
DESTINATION ${DATA_INSTALL_DIR}/akonadi-kde/qml
)
endif()
set(module_install_dir ${DATA_INSTALL_DIR}/cmake/modules )
install( FILES
AkonadiMacros.cmake
DESTINATION ${module_install_dir}
)
if(QT_QTDESIGNER_FOUND)
message(STATUS "Building Akonadi widgets")
kde4_add_widget_files(${CMAKE_CURRENT_SOURCE_DIR}/designer/akonadi.widgets)
kde4_add_plugin(akonadiwidgets $<TARGET_OBJECTS:akonadi_autowidgets>)
target_link_libraries(akonadiwidgets ${KDE4_KIO_LIBS} akonadi-kde)
install(TARGETS akonadiwidgets DESTINATION ${PLUGIN_INSTALL_DIR}/plugins/designer)
endif()