Make it possible to use a distinct selection model in the foldertreewidget.
[kdepim.git] / kleopatra / CMakeLists.txt
blobf7e34c0c4c3a614a490815f7abe5a7bf798a632b
1 project(kleopatra)
3 include(MacroOptionalAddSubdirectory)
5 set( kleopatra_version 2.1.0 )
6 set( kleopatra_release FALSE )
8 if (NOT kleopatra_release)
9 if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.svn")
10   if ( NOT KdeSubversion_FOUND )
11     find_package( KdeSubversion )
12   endif ( NOT KdeSubversion_FOUND )
13   if ( KdeSubversion_FOUND )
14     KdeSubversion_WC_INFO( ${PROJECT_SOURCE_DIR} Kleopatra )
15     string( SUBSTRING "${Kleopatra_WC_LAST_CHANGED_DATE}" 0 10 Kleopatra_WC_LAST_CHANGED_DATE )
16     set( kleopatra_version "${kleopatra_version}-svn${Kleopatra_WC_REVISION} (${Kleopatra_WC_LAST_CHANGED_DATE})" )
17   endif ( KdeSubversion_FOUND )
18 endif (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.svn")
19 endif (NOT kleopatra_release)
20 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version-kleopatra.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/version-kleopatra.h )
21 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config-kleopatra.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kleopatra.h )
23 include_directories(
24   ${CMAKE_CURRENT_BINARY_DIR}
25   ${CMAKE_SOURCE_DIR}/libkleo
26   ${CMAKE_SOURCE_DIR}/libkdepim
27   ${Boost_INCLUDE_DIR}
28   ${QGPGME_INCLUDES}
29   ${GPGME_INCLUDES} )
30 if (USABLE_ASSUAN_FOUND)
31   if (ASSUAN2_FOUND)
32     include_directories(${ASSUAN2_INCLUDES})
33   else (ASSUAN2_FOUND)
34     include_directories(${ASSUAN_INCLUDES})
35   endif(ASSUAN2_FOUND)
36 endif(USABLE_ASSUAN_FOUND)
37 add_definitions ( -DQT3_SUPPORT -DQT3_SUPPORT_WARNINGS -D_ASSUAN_ONLY_GPG_ERRORS -DQT_STL )
38 remove_definitions ( -DQT_NO_STL )
40 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${KDE4_ENABLE_EXCEPTIONS}")
41 if (GCC_IS_NEWER_THAN_4_3)
42   if (CMAKE_COMPILER_IS_GNUCXX)
43     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-missing-braces -Wno-parentheses -Wno-ignored-qualifiers" )
44   endif (CMAKE_COMPILER_IS_GNUCXX)
45 endif (GCC_IS_NEWER_THAN_4_3)
47 add_subdirectory( pics )
48 add_subdirectory( conf )
49 if ( USABLE_ASSUAN_FOUND AND BUILD_libkleopatraclient )
50   # can't use macro_optional_add_subdirectory here, since it's split
51   # off into ConfigureChecks.cmake..
52   add_subdirectory( libkleopatraclient )
53 endif ( USABLE_ASSUAN_FOUND AND BUILD_libkleopatraclient )
54 add_subdirectory( kgpgconf )
55 add_subdirectory( kwatchgnupg )
56 add_subdirectory( tests )
58 if ( WIN32 )
59   set( _kleopatra_extra_uiserver_SRCS
60     uiserver/uiserver_win.cpp
61     )
62   set( _kleopatra_extra_SRCS
63     utils/gnupg-registry.c
64     selftest/registrycheck.cpp
65     )
66 else ( WIN32 )
67   set( _kleopatra_extra_uiserver_SRCS
68     uiserver/uiserver_unix.cpp
69     )
70   set( _kleopatra_extra_SRCS
71     )
72 endif ( WIN32 )
75 if ( USABLE_ASSUAN_FOUND )
76   add_definitions ( -DKLEOPATRACLIENT_NAMESPACE=KleopatraClientCopy -DKLEOPATRACLIENTCORE_EXPORT= )
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     selftest/uiservercheck.cpp
97     )
99   if ( ASSUAN2_FOUND )
100     set( _kleopatra_uiserver_extra_libs ${ASSUAN2_LIBRARIES} )
101   else ( ASSUAN2_FOUND )
102     if ( WIN32 )
103       set( _kleopatra_uiserver_extra_libs ${ASSUAN_VANILLA_LIBRARIES} )
104     else ( WIN32 )
105       set( _kleopatra_uiserver_extra_libs ${ASSUAN_PTHREAD_LIBRARIES} )
106     endif( WIN32 )
107   endif ( ASSUAN2_FOUND )
109   if ( HAVE_GPG_ERR_SOURCE_KLEO )
110     add_definitions( -DGPG_ERR_SOURCE_DEFAULT=GPG_ERR_SOURCE_KLEO )
111   else( HAVE_GPG_ERR_SOURCE_KLEO )
112     add_definitions( -DGPG_ERR_SOURCE_DEFAULT=GPG_ERR_SOURCE_USER_1 )
113   endif( HAVE_GPG_ERR_SOURCE_KLEO )
115 else ( USABLE_ASSUAN_FOUND )
116   set(_kleopatra_uiserver_SRCS)
117 endif ( USABLE_ASSUAN_FOUND )
119 kde4_add_ui_files( _kleopatra_uiserver_SRCS 
120                    crypto/gui/signingcertificateselectionwidget.ui)
123 set( _kleopatra_SRCS
124   utils/gnupg-helper.cpp
125   utils/filesystemwatcher.cpp
126   utils/filedialog.cpp
127   utils/kdpipeiodevice.cpp
128   utils/kdlogtextwidget.cpp
129   utils/kdsignalblocker.cpp
130   utils/headerview.cpp
131   utils/scrollarea.cpp
132   utils/dragqueen.cpp
133   utils/multivalidator.cpp
134   utils/progressmanager.cpp
135   utils/systemtrayicon.cpp
137   utils/hex.cpp
138   utils/path-helper.cpp
139   utils/input.cpp
140   utils/output.cpp
141   utils/formatting.cpp
142   utils/validation.cpp
143   utils/wsastarter.cpp
144   utils/classify.cpp
145   utils/iodevicelogger.cpp
146   utils/log.cpp
147   utils/action_data.cpp
148   utils/types.cpp
149   utils/archivedefinition.cpp
150   utils/auditlog.cpp
152   selftest/selftest.cpp
153   selftest/enginecheck.cpp
154   selftest/gpgconfcheck.cpp
155   selftest/gpgagentcheck.cpp
156   selftest/libkleopatrarccheck.cpp
158   smartcard/readerstatus.cpp
160   ${_kleopatra_extra_SRCS}
162   models/keycache.cpp
163   models/keylistmodel.cpp
164   models/keylistsortfilterproxymodel.cpp
165   models/subkeylistmodel.cpp
166   models/useridlistmodel.cpp
168   view/keylistcontroller.cpp
169   view/keytreeview.cpp
170   view/searchbar.cpp
171   view/tabwidget.cpp
173   dialogs/certificateselectiondialog.cpp
174   dialogs/expirydialog.cpp
175   dialogs/lookupcertificatesdialog.cpp
176   dialogs/ownertrustdialog.cpp
177   dialogs/selftestdialog.cpp
178   dialogs/certifycertificatedialog.cpp
179   dialogs/exportsecretkeydialog.cpp
180   dialogs/adduseriddialog.cpp
181   dialogs/certificatedetailsdialog.cpp
182   dialogs/exportcertificatesdialog.cpp
183   dialogs/deletecertificatesdialog.cpp
184   dialogs/setinitialpindialog.cpp
186   crypto/controller.cpp
187   crypto/certificateresolver.cpp
188   crypto/sender.cpp
189   crypto/recipient.cpp
190   crypto/task.cpp
191   crypto/taskcollection.cpp
192   crypto/decryptverifytask.cpp
193   crypto/decryptverifyemailcontroller.cpp
194   crypto/decryptverifyfilescontroller.cpp
195   crypto/encryptemailtask.cpp
196   crypto/encryptemailcontroller.cpp
197   crypto/newsignencryptemailcontroller.cpp
198   crypto/signencryptfilestask.cpp
199   crypto/signencryptfilescontroller.cpp
200   crypto/signemailtask.cpp
201   crypto/signemailcontroller.cpp
202   crypto/createchecksumscontroller.cpp
203   crypto/verifychecksumscontroller.cpp
205   crypto/gui/wizard.cpp
206   crypto/gui/wizardpage.cpp
208   crypto/gui/signingcertificateselectionwidget.cpp
209   crypto/gui/signingcertificateselectiondialog.cpp
211   crypto/gui/resultitemwidget.cpp
212   crypto/gui/resultlistwidget.cpp
213   crypto/gui/resultpage.cpp
215   crypto/gui/newresultpage.cpp
216   crypto/gui/newsignencryptfileswizard.cpp
218   crypto/gui/signencryptemailconflictdialog.cpp
220   crypto/gui/decryptverifyoperationwidget.cpp
221   crypto/gui/decryptverifyfileswizard.cpp
223   crypto/gui/objectspage.cpp
224   crypto/gui/resolverecipientspage.cpp
225   crypto/gui/signerresolvepage.cpp
226   crypto/gui/encryptemailwizard.cpp
227   crypto/gui/signemailwizard.cpp
228   crypto/gui/signencryptfileswizard.cpp
229   crypto/gui/signencryptwizard.cpp
231   crypto/gui/verifychecksumsdialog.cpp
233   commands/command.cpp
234   commands/gnupgprocesscommand.cpp
235   commands/detailscommand.cpp
236   commands/exportcertificatecommand.cpp
237   commands/importcertificatescommand.cpp
238   commands/importcertificatefromfilecommand.cpp
239   commands/importcertificatefromclipboardcommand.cpp
240   commands/lookupcertificatescommand.cpp
241   commands/reloadkeyscommand.cpp
242   commands/refreshx509certscommand.cpp
243   commands/refreshopenpgpcertscommand.cpp
244   commands/deletecertificatescommand.cpp
245   commands/decryptverifyfilescommand.cpp
246   commands/signencryptfilescommand.cpp
247   commands/encryptclipboardcommand.cpp
248   commands/signclipboardcommand.cpp
249   commands/decryptverifyclipboardcommand.cpp
250   commands/clearcrlcachecommand.cpp
251   commands/dumpcrlcachecommand.cpp
252   commands/dumpcertificatecommand.cpp
253   commands/importcrlcommand.cpp
254   commands/changeexpirycommand.cpp
255   commands/changeownertrustcommand.cpp
256   commands/changeroottrustcommand.cpp
257   commands/changepassphrasecommand.cpp
258   commands/certifycertificatecommand.cpp
259   commands/selftestcommand.cpp
260   commands/exportsecretkeycommand.cpp
261   commands/exportopenpgpcertstoservercommand.cpp
262   commands/adduseridcommand.cpp
263   commands/newcertificatecommand.cpp
264   commands/setinitialpincommand.cpp
265   commands/learncardkeyscommand.cpp
266   
267   ${_kleopatra_uiserver_files}
269   conf/configuredialog.cpp
271   newcertificatewizard/listwidget.cpp
272   newcertificatewizard/newcertificatewizard.cpp
274   aboutdata.cpp
275   systrayicon.cpp
276   kleopatraapplication.cpp
277   main.cpp )
279 if ( KLEO_MODEL_TEST )
280  add_definitions( -DKLEO_MODEL_TEST )
281  set( _kleopatra_SRCS ${_kleopatra_SRCS} models/modeltest.cpp )
282 endif ( KLEO_MODEL_TEST )
284 kde4_add_ui_files( _kleopatra_SRCS
285   dialogs/certificationoptionswidget.ui
286   dialogs/expirydialog.ui
287   dialogs/lookupcertificatesdialog.ui
288   dialogs/ownertrustdialog.ui
289   dialogs/selectchecklevelwidget.ui
290   dialogs/selftestdialog.ui
291   dialogs/exportsecretkeydialog.ui
292   dialogs/adduseriddialog.ui
293   dialogs/certificatedetailsdialog.ui
294   dialogs/setinitialpindialog.ui
295   newcertificatewizard/listwidget.ui
296   newcertificatewizard/chooseprotocolpage.ui
297   newcertificatewizard/enterdetailspage.ui
298   newcertificatewizard/overviewpage.ui
299   newcertificatewizard/keycreationpage.ui
300   newcertificatewizard/resultpage.ui
301   newcertificatewizard/advancedsettingsdialog.ui
302   )
303 kde4_add_kcfg_files( _kleopatra_SRCS
304   kcfg/tooltippreferences.kcfgc
305   kcfg/emailoperationspreferences.kcfgc
306   kcfg/smimevalidationpreferences.kcfgc
307   )
310 if (KDEPIM_ONLY_KLEO)
311   add_definitions( -DKDEPIM_ONLY_KLEO -DKDEPIM_EXPORT= )
312   set( _kleopatra_libkdepim_SRCS
313     ../libkdepim/progressmanager.cpp
314     ../libkdepim/progressdialog.cpp
315     ../libkdepim/overlaywidget.cpp
316     ../libkdepim/ssllabel.cpp
317     ../libkdepim/statusbarprogresswidget.cpp
318     )
319   set( _kleopatra_libkdepim_LIBS )
320 else(KDEPIM_ONLY_KLEO)
321   set( _kleopatra_libkdepim_SRCS )
322   set( _kleopatra_libkdepim_LIBS kdepim )
323 endif(KDEPIM_ONLY_KLEO)
325 set( _kleopatra_mainwindow_SRCS
326      mainwindow.cpp 
329 add_definitions ( -DKDE_DEFAULT_DEBUG_AREA=5151 )
332 kde4_add_app_icon(_kleopatra_mainwindow_SRCS "ox*-app-kleopatra.png")
333 kde4_add_executable(kleopatra_bin ${_kleopatra_SRCS} ${_kleopatra_mainwindow_SRCS} ${_kleopatra_uiserver_SRCS} ${_kleopatra_libkdepim_SRCS} )
334 set_target_properties(kleopatra_bin  PROPERTIES OUTPUT_NAME kleopatra)
336 set( _kleopatra_extra_libs ${QT_QT3SUPPORT_LIBRARY} )
338 target_link_libraries(kleopatra_bin ${_kleopatra_extra_libs} kleo ${QGPGME_LIBRARIES} ${KDE4_KDEUI_LIBS} ${KDE4_KMIME_LIBRARY} ${KDE4_KCMUTILS_LIBS} ${_kleopatra_uiserver_extra_libs} ${_kleopatra_libkdepim_LIBS})
339 if ( USABLE_ASSUAN_FOUND )
340   target_link_libraries(kleopatra_bin ${QT_QTNETWORK_LIBRARY}) 
341 ENDIF ( USABLE_ASSUAN_FOUND )
343 install(TARGETS kleopatra_bin ${INSTALL_TARGETS_DEFAULT_ARGS})
346 ########### install files ###############
348 install( FILES kleopatra.desktop
349                kleopatra_import.desktop
350          DESTINATION ${XDG_APPS_INSTALL_DIR} )
352 install( FILES kleopatra_signencryptfiles.desktop
353                kleopatra_signencryptfolders.desktop
354                kleopatra_decryptverifyfiles.desktop
355                kleopatra_decryptverifyfolders.desktop
356          DESTINATION ${SERVICES_INSTALL_DIR} )
358 install( FILES kleopatra.rc DESTINATION ${DATA_INSTALL_DIR}/kleopatra )
360 kde4_install_icons( ${ICON_INSTALL_DIR} )