Use mailfilter to expunge trash
[kdepim.git] / kmail / src / CMakeLists.txt
blob3df422d731393263f00ff26c35e62e47ec851d6f
1 add_definitions(-DTRANSLATION_DOMAIN=\"kmail\")
3 qt5_generate_dbus_interface(kmkernel.h org.kde.kmail.kmail.xml OPTIONS -a)
4 qt5_generate_dbus_interface(editor/kmcomposerwin.h org.kde.kmail.mailcomposer.xml OPTIONS -a)
6 add_custom_target(kmail_xml ALL
7     DEPENDS ${kmail_BINARY_DIR}/src/org.kde.kmail.kmail.xml
8     DEPENDS ${kmail_BINARY_DIR}/src/org.kde.kmail.mailcomposer.xml
9     COMMENT "Helper target for XML stuff. The Kontact plugin, KOrganizer and others depend on it."
10     )
12 include_directories(
13     ${CMAKE_CURRENT_BINARY_DIR}
14     ${GPGME_INCLUDES}
15     ${Boost_INCLUDE_DIR}
16     ${AKONADI_INCLUDE_DIR}
17     )
22 add_subdirectory(about)
23 add_subdirectory(pics)
24 add_subdirectory(icons)
25 add_subdirectory(kcm_kpimidentities)
26 add_subdirectory(kconf_update)
27 add_subdirectory(kontactplugin)
29 ########### kmailprivate ###############
32 set(kmailprivate_attributes_LIB_SRCS
33     attributes/taskattribute.cpp
34     )
36 set(kmailprivate_folderarchive_LIB_SRCS
37     folderarchive/folderarchiveaccountinfo.cpp
38     folderarchive/folderarchiveutil.cpp
39     folderarchive/folderarchivecache.cpp
40     folderarchive/folderarchiveagentcheckcollection.cpp
41     folderarchive/folderarchivemanager.cpp
42     folderarchive/folderarchiveagentjob.cpp
43     )
44 set(kmailprivate_collectionpage_LIB_SRCS
45     collectionpage/collectiontemplatespage.cpp
46     collectionpage/collectionmaintenancepage.cpp
47     collectionpage/collectionviewpage.cpp
48     collectionpage/collectionquotapage.cpp
49     collectionpage/collectionquotawidget.cpp
50     collectionpage/collectionmailinglistpage.cpp
51     collectionpage/collectionshortcutpage.cpp
52     )
53 set(kmailprivate_configuredialog_LIB_SRCS
54     configuredialog/configagentdelegate.cpp
55     configuredialog/configuredialoglistview.cpp
56     configuredialog/configuredialog.cpp
57     configuredialog/configuredialog_p.cpp
58     configuredialog/configuremiscpage.cpp
59     configuredialog/configuresecuritypage.cpp
60     configuredialog/configurecomposerpage.cpp
61     configuredialog/configureappearancepage.cpp
62     configuredialog/configureaccountpage.cpp
63     configuredialog/colorlistbox.cpp
64     configuredialog/configureagentswidget.cpp
65     configuredialog/configureagents/configureagentlistmodel.cpp
66     configuredialog/configureagents/configureagentlistdelegate.cpp
67     configuredialog/configureagents/configureagentlistview.cpp
68     configuredialog/configureagents/configureagentitem.cpp
69     )
71 set(kmailprivate_searchdialog_LIB_SRCS
72     searchdialog/kmsearchmessagemodel.cpp
73     searchdialog/kmsearchfilterproxymodel.cpp
74     searchdialog/searchpatternwarning.cpp
75     searchdialog/kmailsearchpatternedit.cpp
76     searchdialog/searchwindow.cpp
77     searchdialog/searchdescriptionattribute.cpp
78     searchdialog/incompleteindexdialog.cpp
79     )
80 set(kmailprivate_identity_LIB_SRCS
81     identity/identitylistview.cpp
82     identity/identitydialog.cpp
83     identity/xfaceconfigurator.cpp
84     identity/identitypage.cpp
85     identity/newidentitydialog.cpp
86     identity/identityeditvcarddialog.cpp
87     identity/identityaddvcarddialog.cpp
88     identity/identityinvalidfolder.cpp
89     identity/identityfolderrequester.cpp
90     )
91 set(kmailprivate_editor_LIB_SRCS
92     editor/widgets/snippetwidget.cpp
93     editor/kmcomposereditorng.cpp
94     editor/composer.cpp
95     editor/codec/codecaction.cpp
96     editor/codec/codecmanager.cpp
97     editor/kmcomposerwin.cpp
98     editor/attachment/attachmentcontroller.cpp
99     editor/attachment/attachmentview.cpp
100     editor/widgets/cryptostateindicatorwidget.cpp
101     editor/validatesendmailshortcut.cpp
102     editor/kmcomposerglobalaction.cpp
103     )
105 set(kmailprivate_warningwidgets_LIB_SRCS
106     warningwidgets/externaleditorwarning.cpp
107     warningwidgets/attachmentmissingwarning.cpp
108     )
109 set(kmailprivate_editor_potentialphishingemail_SRCS
110     editor/potentialphishingemail/potentialphishingemailwarning.cpp
111     editor/potentialphishingemail/potentialphishingemailjob.cpp
112     editor/potentialphishingemail/potentialphishingdetaildialog.cpp
113     editor/potentialphishingemail/potentialphishingdetailwidget.cpp
114     )
115 set(kmailprivate_dialogs_LIB_SRCS
116     dialog/archivefolderdialog.cpp
117     dialog/addemailtoexistingcontactdialog.cpp
118     dialog/kmknotify.cpp
119     )
120 set(kmailprivate_job_LIB_SRCS
121     job/addressvalidationjob.cpp
122     job/createnewcontactjob.cpp
123     job/addemailtoexistingcontactjob.cpp
124     job/createtaskjob.cpp
125     job/savedraftjob.cpp
126     job/removeduplicatemailjob.cpp
127     job/createfollowupreminderonexistingmessagejob.cpp
128     job/removecollectionjob.cpp
129     job/saveasfilejob.cpp
130     job/markallmessagesasreadinfolderandsubfolderjob.cpp
131     job/removeduplicatemessageinfolderandsubfolderjob.cpp
132     )
134 set(kmailprivate_widgets_LIB_SRCS
135     widgets/collectionpane.cpp
136     widgets/vacationscriptindicatorwidget.cpp
137     widgets/displaymessageformatactionmenu.cpp
138     widgets/statusbarlabeltoggledstate.cpp
139     widgets/kactionmenutransport.cpp
140     widgets/kactionmenuaccount.cpp
141     )
142 set(kmailprivate_tag_LIB_SRCS
143     tag/tagactionmanager.cpp
144     tag/tagselectdialog.cpp
145     )
148 set(kmailprivate_plugininterface_LIB_SRCS
149     plugininterface/kmailplugininterface.cpp
150     )
152 set(kmailprivate_editor_plugininterface_LIB_SRCS
153     editor/plugininterface/kmailplugineditormanagerinterface.cpp
154     editor/plugininterface/kmailplugineditorcheckbeforesendmanagerinterface.cpp
155     )
157 set(kmailprivate_checkindexing_LIB_SRCS
158     search/checkindexingmanager.cpp
159     search/checkindexingjob.cpp
160     )
162 set(kmail_common_SRCS)
163 ecm_qt_declare_logging_category(kmail_common_SRCS HEADER kmail_debug.h IDENTIFIER KMAIL_LOG CATEGORY_NAME log_kmail)
164 set(kmailprivate_LIB_SRCS
165     ${kmail_common_SRCS}
166     kmmainwin.cpp
167     settings/kmailsettings.cpp
168     kmreaderwin.cpp
169     kmsystemtray.cpp
170     undostack.cpp
171     kmkernel.cpp
172     kmcommands.cpp
173     kmreadermainwin.cpp
174     kmstartup.cpp
175     kmmainwidget.cpp
176     aboutdata.cpp
177     mailserviceimpl.cpp
178     secondarywindow.cpp
179     util.cpp
180     messageactions.cpp
181     foldershortcutactionmanager.cpp
182     kmlaunchexternalcomponent.cpp
183     manageshowcollectionproperties.cpp
184     kmmigrateapplication.cpp
185     ${kmailprivate_attributes_LIB_SRCS}
186     ${kmailprivate_tag_LIB_SRCS}
187     ${kmailprivate_job_LIB_SRCS}
188     ${kmailprivate_widgets_LIB_SRCS}
189     ${kmailprivate_dialogs_LIB_SRCS}
190     ${kmailprivate_warningwidgets_LIB_SRCS}
191     ${kmailprivate_folderarchive_LIB_SRCS}
192     ${kmailprivate_collectionpage_LIB_SRCS}
193     ${kmailprivate_configuredialog_LIB_SRCS}
194     ${kmailprivate_searchdialog_LIB_SRCS}
195     ${kmailprivate_identity_LIB_SRCS}
196     ${kmailprivate_editor_LIB_SRCS}
197     ${kmailprivate_editor_potentialphishingemail_SRCS}
198     ${kmailprivate_plugininterface_LIB_SRCS}
199     ${kmailprivate_editor_plugininterface_LIB_SRCS}
200     ${kmailprivate_checkindexing_LIB_SRCS}
201     )
203 qt5_generate_dbus_interface(editor/kmcomposerwin.h org.kde.kmail.mailcomposer.xml OPTIONS -a)
204 qt5_add_dbus_adaptor(kmailprivate_LIB_SRCS
205     ${kmail_BINARY_DIR}/src/org.kde.kmail.mailcomposer.xml editor/kmcomposerwin.h KMComposerWin
206     )
208 qt5_add_dbus_adaptor(kmailprivate_LIB_SRCS
209     ${kmail_BINARY_DIR}/src/org.kde.kmail.kmail.xml kmkernel.h KMKernel
210     )
211 qt5_add_dbus_adaptor(kmailprivate_LIB_SRCS
212     ${MAILTRANSPORT_DBUS_SERVICE} mailserviceimpl.h
213     KMail::MailServiceImpl
214     )
216 qt5_add_dbus_interfaces(kmailprivate_LIB_SRCS
217     ${kmail_BINARY_DIR}/src/org.kde.kmail.kmail.xml
218     )
219 qt5_add_dbus_interfaces(kmailprivate_LIB_SRCS
220     ../agents/archivemailagent/org.freedesktop.Akonadi.ArchiveMailAgent.xml
221     )
222 qt5_add_dbus_interfaces(kmailprivate_LIB_SRCS
223     ../agents/sendlateragent/org.freedesktop.Akonadi.SendLaterAgent.xml
224     )
226 qt5_add_dbus_interfaces(kmailprivate_LIB_SRCS
227     dbusinterface/org.freedesktop.Akonadi.NewMailNotifier.xml
228     )
230 qt5_add_dbus_interfaces(kmailprivate_LIB_SRCS
231     ../agents/followupreminderagent/org.freedesktop.Akonadi.FollowUpReminder.xml
232     )
234 qt5_add_dbus_interfaces(kmailprivate_LIB_SRCS
235     ../agents/mailfilteragent/org.freedesktop.Akonadi.MailFilterAgent.xml
236     )
238 ki18n_wrap_ui(kmailprivate_LIB_SRCS
239     ui/composercryptoconfiguration.ui
240     ui/warningconfiguration.ui
241     ui/smimeconfiguration.ui
242     ui/miscpagemaintab.ui
243     ui/securitypagegeneraltab.ui
244     ui/securitypagemdntab.ui
245     ui/identitypage.ui
246     ui/accountspagereceivingtab.ui
247     ui/searchwindow.ui
248     ui/incompleteindexdialog.ui
249     )
251 # KCFG files. The main kmail.kcfg is configured by CMake and put
252 # in the build directory.
254 if(KDEPIM_ENTERPRISE_BUILD)
255     set(WARN_TOOMANY_RECIPIENTS_DEFAULT true)
256 else()
257     set(WARN_TOOMANY_RECIPIENTS_DEFAULT false)
258 endif()
260 configure_file(settings/kmail.kcfg.cmake ${CMAKE_CURRENT_BINARY_DIR}/kmail.kcfg)
262 kconfig_add_kcfg_files(kmailprivate_LIB_SRCS
263     settings/globalsettings_kmail.kcfgc
264     editor/custommimeheader/custommimeheader.kcfgc
265     )
268 add_library(kmailprivate ${kmailprivate_LIB_SRCS})
269 generate_export_header(kmailprivate BASE_NAME kmail)
270 target_link_libraries(kmailprivate
271     PRIVATE
272     KF5::TextWidgets
273     KF5::I18n
274     KF5::Gravatar
275     KF5::Mime
276     KF5::AkonadiCore
277     KF5::AkonadiMime
278     KF5::MessageCore
279     KF5::MessageList
280     KF5::MessageComposer
281     KF5::PimCommon
282     KF5::MailCommon
283     KF5::TemplateParser
284     KF5::IdentityManagement
285     KF5::WindowSystem
286     KF5::Notifications
287     KF5::GuiAddons
288     KF5::Crash
289     KF5::Bookmarks
290     KF5::KIOFileWidgets
291     KF5::NotifyConfig
292     KF5::MailTransport
293     KF5::KCMUtils
294     KF5::Libkleo
295     KF5::KSieveUi
296     KF5::Libkdepim
297     KF5::KIOCore
298     KF5::Contacts
299     KF5::PimTextEdit
300     KF5::MessageViewer
301     KF5::SendLater
302     KF5::FollowupReminder
303     KF5::IconThemes
304     KF5::XmlGui
305     KF5::Completion
306     KF5::Ldap
307     KF5::AkonadiSearchDebug
308     KF5::AkonadiSearchPIM
309     KF5::WebEngineViewer
310     )
311 target_include_directories(kmailprivate PUBLIC $<TARGET_PROPERTY:KF5::MessageList,INTERFACE_INCLUDE_DIRECTORIES>)
312 target_include_directories(kmailprivate PUBLIC $<TARGET_PROPERTY:KF5::MessageViewer,INTERFACE_INCLUDE_DIRECTORIES>)
313 target_include_directories(kmailprivate PUBLIC $<TARGET_PROPERTY:KF5::MailCommon,INTERFACE_INCLUDE_DIRECTORIES>)
315 set_target_properties(kmailprivate
316     PROPERTIES VERSION ${KDEPIM_LIB_VERSION} SOVERSION ${KDEPIM_LIB_SOVERSION}
317     )
319 ########### kcm_kmail ###############
320 set(kcm_kmail_PART_SRCS kcm_kmail.cpp )
321 add_library(kcm_kmail MODULE ${kcm_kmail_PART_SRCS})
322 target_link_libraries(kcm_kmail  kmailprivate KF5::KCMUtils KF5::Completion KF5::I18n KF5::TextWidgets)
324 ########### kmailpart ###############
326 set(kmailpart_PART_SRCS kmail_part.cpp ${kmail_common_SRCS})
327 qt5_generate_dbus_interface(kmail_part.h org.kde.kmail.kmailpart.xml OPTIONS -a)
328 qt5_add_dbus_adaptor(kmailpart_PART_SRCS
329     ${kmail_BINARY_DIR}/src/org.kde.kmail.kmailpart.xml kmail_part.h KMailPart
330     )
331 qt5_add_dbus_interfaces(kmailpart_PART_SRCS ${kmail_BINARY_DIR}/src/org.kde.kmail.kmailpart.xml)
332 add_library(kmailpart MODULE ${kmailpart_PART_SRCS})
334 target_link_libraries(kmailpart
335     kmailprivate
336     KF5::PimCommon
337     KF5::Libkdepim
338     KF5::KCMUtils
339     KF5::Parts
340     KF5::IconThemes
341     KF5::TemplateParser
342     )
344 ########### KMail executable ###############
346 set(kmail_SRCS main.cpp ${kmail_common_SRCS})
347 file(GLOB ICONS_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/icons/*-apps-kmail.png")
348 ecm_add_app_icon(kmail_SRCS ICONS ${ICONS_SRCS})
349 add_executable(kmail ${kmail_SRCS})
350 target_link_libraries(kmail
351     KF5::KontactInterface
352     kmailprivate
353     KF5::PimCommon
354     KF5::I18n
355     KF5::TemplateParser
356     KF5::Libkdepim
357     KF5::Crash
358     )
360 if(BUILD_TESTING)
361     add_subdirectory(autotests)
362     add_subdirectory(tests)
363     add_subdirectory(folderarchive/autotests/)
364     add_subdirectory(editor/potentialphishingemail/autotests)
365 endif()
366 ########### install files ###############
368 install(TARGETS kmailprivate ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} LIBRARY NAMELINK_SKIP)
370 install(TARGETS kmail ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
372 install(PROGRAMS data/org.kde.kmail.desktop data/kmail_view.desktop DESTINATION ${KDE_INSTALL_APPDIR})
373 install(FILES
374     ${CMAKE_CURRENT_BINARY_DIR}/kmail.kcfg
375     DESTINATION ${KDE_INSTALL_KCFGDIR}
376     )
377 install(FILES data/org.kde.kmail.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR})
378 install(FILES
379     data/kmail_config_misc.desktop
380     data/kmail_config_appearance.desktop
381     data/kmail_config_identity.desktop
382     data/kmail_config_accounts.desktop
383     data/kmail_config_composer.desktop
384     data/kmail_config_security.desktop
385     DESTINATION ${KDE_INSTALL_KSERVICES5DIR}
386     )
387 install(FILES
388     kmcomposerui.rc
389     kmmainwin.rc
390     kmreadermainwin.rc
391     kmail_part.rc
392     DESTINATION ${KDE_INSTALL_KXMLGUI5DIR}/kmail2
393     )
394 install( FILES data/kmail2.notifyrc DESTINATION ${KDE_INSTALL_KNOTIFY5RCDIR} )
395 install(FILES data/dbusmail.desktop DESTINATION ${KDE_INSTALL_KSERVICETYPES5DIR})
396 install(TARGETS
397     kmailpart
398     kcm_kmail
399     DESTINATION ${KDE_INSTALL_PLUGINDIR}
400     )
401 install(FILES
402     ${kmail_BINARY_DIR}/src/org.kde.kmail.kmailpart.xml
403     ${kmail_BINARY_DIR}/src/org.kde.kmail.kmail.xml
404     DESTINATION ${KDE_INSTALL_DBUSINTERFACEDIR}
405     )
407 install( FILES data/kmail_addattachmentservicemenu.desktop DESTINATION
408     ${KDE_INSTALL_KSERVICES5DIR}/ServiceMenus)