Use qtpaths directly
[kdepim.git] / kleopatra / CMakeLists.txt
blob16bbd286337930381e15cfae81a02006a2bc32dd
1 project(kleopatra)
2 kde_enable_exceptions()
4 add_definitions( -DQT_NO_CAST_FROM_ASCII )
5 add_definitions( -DQT_NO_CAST_TO_ASCII )
8 set(kleopatra_version 2.2.0)
9 set(kleopatra_release FALSE)
11 if(NOT kleopatra_release)
12   if(GIT_FOUND)
13     execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --oneline --format=%h ${CMAKE_CURRENT_SOURCE_DIR}
14                     WORKING_DIRECTORY ${kdepim_SOURCE_DIR}/kleopatra
15                     OUTPUT_VARIABLE Kleopatra_WC_REVISION)
16     string(REGEX REPLACE "\n" "" Kleopatra_WC_REVISION "${Kleopatra_WC_REVISION}")
18     execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --oneline --format=%ci ${CMAKE_CURRENT_SOURCE_DIR}
19                     WORKING_DIRECTORY ${kdepim_SOURCE_DIR}/kleopatra
20                     OUTPUT_VARIABLE Kleopatra_WC_LAST_CHANGED_DATE)
21     string(REGEX REPLACE " [-0-9:+ ]*\n" "" Kleopatra_WC_LAST_CHANGED_DATE "${Kleopatra_WC_LAST_CHANGED_DATE}")
23     set(kleopatra_version "${kleopatra_version}-git${Kleopatra_WC_REVISION} (${Kleopatra_WC_LAST_CHANGED_DATE})")
24   endif()
25 endif()
27 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version-kleopatra.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/version-kleopatra.h)
28 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config-kleopatra.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kleopatra.h)
30 include_directories(
31   ${CMAKE_CURRENT_BINARY_DIR}
32   ${CMAKE_CURRENT_BINARY_DIR}/libkleopatraclient/core/
33   ${Boost_INCLUDE_DIR}
34   ${GPGME_INCLUDES}
37 if(USABLE_ASSUAN_FOUND)
38   if(ASSUAN2_FOUND)
39     include_directories(${ASSUAN2_INCLUDES})
40   else()
41     include_directories(${ASSUAN_INCLUDES})
42   endif()
43 endif()
45 add_definitions(-D_ASSUAN_ONLY_GPG_ERRORS)
47 if(CMAKE_COMPILER_IS_GNUCXX)
48   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-missing-braces -Wno-parentheses -Wno-ignored-qualifiers")
49 endif()
51 add_subdirectory(pics)
52 add_subdirectory(conf)
54 if(USABLE_ASSUAN_FOUND)
55   # can't use ecm_optional_add_subdirectory here, since it's split
56   # off into ConfigureChecks.cmake..
57   add_subdirectory(libkleopatraclient)
58 endif()
60 add_subdirectory(kwatchgnupg)
62 if(BUILD_TESTING)
63     add_subdirectory(tests)
64 endif()
66 add_subdirectory(kconf_update)
68 if(WIN32)
69   set(_kleopatra_extra_uiserver_SRCS uiserver/uiserver_win.cpp)
70   set(_kleopatra_extra_SRCS utils/gnupg-registry.c selftest/registrycheck.cpp)
71 else()
72   set(_kleopatra_extra_uiserver_SRCS uiserver/uiserver_unix.cpp)
73   set(_kleopatra_extra_SRCS)
74 endif()
76 if(USABLE_ASSUAN_FOUND)
77   set(_kleopatra_uiserver_SRCS
78     uiserver/sessiondata.cpp
79     uiserver/uiserver.cpp
80     ${_kleopatra_extra_uiserver_SRCS}
81     uiserver/assuanserverconnection.cpp
82     uiserver/echocommand.cpp
83     uiserver/decryptverifycommandemailbase.cpp
84     uiserver/decryptverifycommandfilesbase.cpp
85     uiserver/signcommand.cpp
86     uiserver/signencryptfilescommand.cpp
87     uiserver/prepencryptcommand.cpp
88     uiserver/prepsigncommand.cpp
89     uiserver/encryptcommand.cpp
90     uiserver/selectcertificatecommand.cpp
91     uiserver/importfilescommand.cpp
92     uiserver/createchecksumscommand.cpp
93     uiserver/verifychecksumscommand.cpp
95     libkleopatraclient/core/command.cpp
96     libkleopatraclient/core/libkleopatraclientcore_debug.cpp
97     selftest/uiservercheck.cpp
98   )
99   set_source_files_properties(libkleopatraclient/core/command.cpp PROPERTIES SKIP_AUTOMOC TRUE)
101   qt5_generate_moc(libkleopatraclient/core/command_p.h "${CMAKE_CURRENT_BINARY_DIR}/libkleopatraclient/core/moc_command_p.cpp")
102   qt5_generate_moc(libkleopatraclient/core/command.h "${CMAKE_CURRENT_BINARY_DIR}/libkleopatraclient/core/moc_command.cpp")
104   list(APPEND _kleopatra_uiserver_SRCS
105     "${CMAKE_CURRENT_BINARY_DIR}/libkleopatraclient/core/moc_command_p.cpp"
106     "${CMAKE_CURRENT_BINARY_DIR}/libkleopatraclient/core/moc_command.cpp"
107   )
109   if(ASSUAN2_FOUND)
110     set(_kleopatra_uiserver_extra_libs ${ASSUAN2_LIBRARIES})
111   else()
112     if(WIN32)
113       set(_kleopatra_uiserver_extra_libs ${ASSUAN_VANILLA_LIBRARIES})
114     else()
115       set(_kleopatra_uiserver_extra_libs ${ASSUAN_PTHREAD_LIBRARIES})
116     endif()
117   endif()
119   if(HAVE_GPG_ERR_SOURCE_KLEO)
120     add_definitions(-DGPG_ERR_SOURCE_DEFAULT=GPG_ERR_SOURCE_KLEO)
121   else()
122     add_definitions(-DGPG_ERR_SOURCE_DEFAULT=GPG_ERR_SOURCE_USER_1)
123   endif()
125 else()
126   set(_kleopatra_uiserver_SRCS)
127 endif()
129 ki18n_wrap_ui(_kleopatra_uiserver_SRCS crypto/gui/signingcertificateselectionwidget.ui)
131 set(_kleopatra_SRCS
132   utils/gnupg-helper.cpp
133   utils/filesystemwatcher.cpp
134   utils/filedialog.cpp
135   utils/kdpipeiodevice.cpp
136   utils/kdlogtextwidget.cpp
137   utils/kdsignalblocker.cpp
138   utils/headerview.cpp
139   utils/scrollarea.cpp
140   utils/dragqueen.cpp
141   utils/multivalidator.cpp
142   utils/progressmanager.cpp
143   utils/systemtrayicon.cpp
145   utils/hex.cpp
146   utils/path-helper.cpp
147   utils/input.cpp
148   utils/output.cpp
149   utils/formatting.cpp
150   utils/validation.cpp
151   utils/wsastarter.cpp
152   utils/classify.cpp
153   utils/iodevicelogger.cpp
154   utils/log.cpp
155   utils/action_data.cpp
156   utils/types.cpp
157   utils/archivedefinition.cpp
158   utils/auditlog.cpp
159   utils/clipboardmenu.cpp
161   selftest/selftest.cpp
162   selftest/enginecheck.cpp
163   selftest/gpgconfcheck.cpp
164   selftest/gpgagentcheck.cpp
165   selftest/libkleopatrarccheck.cpp
167   ${_kleopatra_extra_SRCS}
169   models/keycache.cpp
170   models/keylistmodel.cpp
171   models/keylistsortfilterproxymodel.cpp
172   models/subkeylistmodel.cpp
173   models/useridlistmodel.cpp
175   view/keylistcontroller.cpp
176   view/keytreeview.cpp
177   view/searchbar.cpp
178   view/tabwidget.cpp
180   dialogs/certificateselectiondialog.cpp
181   dialogs/expirydialog.cpp
182   dialogs/lookupcertificatesdialog.cpp
183   dialogs/ownertrustdialog.cpp
184   dialogs/selftestdialog.cpp
185   dialogs/certifycertificatedialog.cpp
186   dialogs/exportsecretkeydialog.cpp
187   dialogs/adduseriddialog.cpp
188   dialogs/certificatedetailsdialog.cpp
189   dialogs/exportcertificatesdialog.cpp
190   dialogs/deletecertificatesdialog.cpp
191   dialogs/setinitialpindialog.cpp
193   crypto/controller.cpp
194   crypto/certificateresolver.cpp
195   crypto/sender.cpp
196   crypto/recipient.cpp
197   crypto/task.cpp
198   crypto/taskcollection.cpp
199   crypto/decryptverifytask.cpp
200   crypto/decryptverifyemailcontroller.cpp
201   crypto/decryptverifyfilescontroller.cpp
202   crypto/encryptemailtask.cpp
203   crypto/encryptemailcontroller.cpp
204   crypto/newsignencryptemailcontroller.cpp
205   crypto/signencryptfilestask.cpp
206   crypto/signencryptfilescontroller.cpp
207   crypto/signemailtask.cpp
208   crypto/signemailcontroller.cpp
209   crypto/createchecksumscontroller.cpp
210   crypto/verifychecksumscontroller.cpp
212   crypto/gui/wizard.cpp
213   crypto/gui/wizardpage.cpp
215   crypto/gui/signingcertificateselectionwidget.cpp
216   crypto/gui/signingcertificateselectiondialog.cpp
218   crypto/gui/resultitemwidget.cpp
219   crypto/gui/resultlistwidget.cpp
220   crypto/gui/resultpage.cpp
222   crypto/gui/newresultpage.cpp
223   crypto/gui/newsignencryptfileswizard.cpp
225   crypto/gui/signencryptemailconflictdialog.cpp
227   crypto/gui/decryptverifyoperationwidget.cpp
228   crypto/gui/decryptverifyfileswizard.cpp
230   crypto/gui/objectspage.cpp
231   crypto/gui/resolverecipientspage.cpp
232   crypto/gui/signerresolvepage.cpp
233   crypto/gui/encryptemailwizard.cpp
234   crypto/gui/signemailwizard.cpp
235   crypto/gui/signencryptfileswizard.cpp
236   crypto/gui/signencryptwizard.cpp
238   crypto/gui/verifychecksumsdialog.cpp
240   commands/command.cpp
241   commands/gnupgprocesscommand.cpp
242   commands/detailscommand.cpp
243   commands/exportcertificatecommand.cpp
244   commands/importcertificatescommand.cpp
245   commands/importcertificatefromfilecommand.cpp
246   commands/importcertificatefromclipboardcommand.cpp
247   commands/lookupcertificatescommand.cpp
248   commands/reloadkeyscommand.cpp
249   commands/refreshx509certscommand.cpp
250   commands/refreshopenpgpcertscommand.cpp
251   commands/deletecertificatescommand.cpp
252   commands/decryptverifyfilescommand.cpp
253   commands/signencryptfilescommand.cpp
254   commands/encryptclipboardcommand.cpp
255   commands/signclipboardcommand.cpp
256   commands/decryptverifyclipboardcommand.cpp
257   commands/clearcrlcachecommand.cpp
258   commands/dumpcrlcachecommand.cpp
259   commands/dumpcertificatecommand.cpp
260   commands/importcrlcommand.cpp
261   commands/changeexpirycommand.cpp
262   commands/changeownertrustcommand.cpp
263   commands/changeroottrustcommand.cpp
264   commands/changepassphrasecommand.cpp
265   commands/certifycertificatecommand.cpp
266   commands/selftestcommand.cpp
267   commands/exportsecretkeycommand.cpp
268   commands/exportopenpgpcertstoservercommand.cpp
269   commands/adduseridcommand.cpp
270   commands/newcertificatecommand.cpp
271   commands/setinitialpincommand.cpp
272   commands/learncardkeyscommand.cpp
273   commands/checksumcreatefilescommand.cpp
274   commands/checksumverifyfilescommand.cpp
276   ${_kleopatra_uiserver_files}
278   conf/configuredialog.cpp
280   newcertificatewizard/listwidget.cpp
281   newcertificatewizard/newcertificatewizard.cpp
283   smartcard/readerstatus.cpp
285   aboutdata.cpp
286   systrayicon.cpp
287   kleopatraapplication.cpp
288   main.cpp
291 ecm_qt_declare_logging_category(_kleopatra_SRCS HEADER kleopatra_debug.h IDENTIFIER KLEOPATRA_LOG CATEGORY_NAME log_kleopatra)
293 if(KLEO_MODEL_TEST)
294   add_definitions(-DKLEO_MODEL_TEST)
295   set(_kleopatra_SRCS ${_kleopatra_SRCS} models/modeltest.cpp)
296 endif()
298 ki18n_wrap_ui(_kleopatra_SRCS
299   dialogs/certificationoptionswidget.ui
300   dialogs/expirydialog.ui
301   dialogs/lookupcertificatesdialog.ui
302   dialogs/ownertrustdialog.ui
303   dialogs/selectchecklevelwidget.ui
304   dialogs/selftestdialog.ui
305   dialogs/exportsecretkeydialog.ui
306   dialogs/adduseriddialog.ui
307   dialogs/certificatedetailsdialog.ui
308   dialogs/setinitialpindialog.ui
309   newcertificatewizard/listwidget.ui
310   newcertificatewizard/chooseprotocolpage.ui
311   newcertificatewizard/enterdetailspage.ui
312   newcertificatewizard/overviewpage.ui
313   newcertificatewizard/keycreationpage.ui
314   newcertificatewizard/resultpage.ui
315   newcertificatewizard/advancedsettingsdialog.ui
318 kconfig_add_kcfg_files(_kleopatra_SRCS
319   kcfg/tooltippreferences.kcfgc
320   kcfg/emailoperationspreferences.kcfgc
321   kcfg/fileoperationspreferences.kcfgc
322   kcfg/smimevalidationpreferences.kcfgc
325 if(KDEPIM_ONLY_KLEO)
326   add_definitions(-DKDEPIM_ONLY_KLEO -DKDEPIM_EXPORT=)
327   set(_kleopatra_libkdepim_SRCS
328     ${CMAKE_SOURCE_DIR}/libkdepim/progresswidget/progressmanager.cpp
329     ${CMAKE_SOURCE_DIR}/libkdepim/progresswidget/progressdialog.cpp
330     ${CMAKE_SOURCE_DIR}/libkdepim/progresswidget/ssllabel.cpp
331     ${CMAKE_SOURCE_DIR}/libkdepim/progresswidget/statusbarprogresswidget.cpp
332     ${CMAKE_SOURCE_DIR}/libkdepim/widgets/overlaywidget.cpp
333   )
334   set(_kleopatra_libkdepim_LIBS)
335 else()
336   set(_kleopatra_libkdepim_SRCS)
337   set(_kleopatra_libkdepim_LIBS KF5::Libkdepim)
338 endif()
340 set(_kleopatra_mainwindow_SRCS mainwindow_desktop.cpp)
342 file(GLOB ICONS_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/icons/*-apps-kleopatra.png")
343 ecm_add_app_icon(_kleopatra_mainwindow_SRCS ICONS ${ICONS_SRCS})
345 qt5_add_resources(_kleopatra_SRCS kleopatra.qrc)
347 add_executable(kleopatra_bin ${_kleopatra_SRCS} ${_kleopatra_mainwindow_SRCS} ${_kleopatra_uiserver_SRCS} ${_kleopatra_libkdepim_SRCS})
348 set_target_properties(kleopatra_bin PROPERTIES OUTPUT_NAME kleopatra)
350 target_link_libraries(kleopatra_bin
351   ${_kleopatra_extra_libs}
352   KF5::Libkleo
353   KF5::Mime
354   KF5::KCMUtils
355   KF5::I18n
356   KF5::XmlGui
357   KF5::IconThemes
358   KF5::WindowSystem
359   KF5::DBusAddons
360   Qt5::Network
361   ${_kleopatra_uiserver_extra_libs}
362   ${_kleopatra_libkdepim_LIBS}
365 if(USABLE_ASSUAN_FOUND)
366   target_link_libraries(kleopatra_bin )
367 endif()
369 install(TARGETS kleopatra_bin ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
371 install(
372   PROGRAMS data/org.kde.kleopatra.desktop data/kleopatra_import.desktop
373   DESTINATION ${KDE_INSTALL_APPDIR}
375 install(FILES data/kleopatra.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR})
376 install(
377   FILES data/kleopatra_signencryptfiles.desktop
378         data/kleopatra_signencryptfolders.desktop
379         data/kleopatra_decryptverifyfiles.desktop
380         data/kleopatra_decryptverifyfolders.desktop
381   DESTINATION ${KDE_INSTALL_KSERVICES5DIR}
384 add_subdirectory(icons)