Properly handle DBusMenuQt in the build system
[quassel.git] / src / qtui / CMakeLists.txt
1 # Builds the qtui module
2
3 set(SOURCES
4     aboutdlg.cpp
5     awaylogfilter.cpp
6     awaylogview.cpp
7     bufferwidget.cpp
8     channellistdlg.cpp
9     chatitem.cpp
10     chatline.cpp
11     chatlinemodel.cpp
12     chatlinemodelitem.cpp
13     chatmonitorfilter.cpp
14     chatmonitorview.cpp
15     chatscene.cpp
16     chatview.cpp
17     chatviewsearchbar.cpp
18     chatviewsearchcontroller.cpp
19     chatviewsettings.cpp
20     columnhandleitem.cpp
21     coreconfigwizard.cpp
22     coreconnectdlg.cpp
23     coreconnectionstatuswidget.cpp
24     coreinfodlg.cpp
25     debugbufferviewoverlay.cpp
26     debugconsole.cpp
27     debuglogwidget.cpp
28     debugmessagemodelfilter.cpp
29     inputwidget.cpp
30     ircconnectionwizard.cpp
31     legacysystemtray.cpp
32     mainpage.cpp
33     mainwin.cpp
34     markerlineitem.cpp
35     msgprocessorstatuswidget.cpp
36     nicklistwidget.cpp
37     qtui.cpp
38     qtuiapplication.cpp
39     qtuimessageprocessor.cpp
40     qtuisettings.cpp
41     qtuistyle.cpp
42     receivefiledlg.cpp
43     settingsdlg.cpp
44     settingspagedlg.cpp
45     simplenetworkeditor.cpp
46     systemtray.cpp
47     systraynotificationbackend.cpp
48     taskbarnotificationbackend.cpp
49     titlesetter.cpp
50     topicwidget.cpp
51     verticaldock.cpp
52     webpreviewitem.cpp
53 )
54
55 set(FORMS
56     aboutdlg.ui
57     bufferviewwidget.ui
58     bufferwidget.ui
59     channellistdlg.ui
60     chatviewsearchbar.ui
61     coreconfigwizardintropage.ui
62     coreconfigwizardadminuserpage.ui
63     coreconfigwizardstorageselectionpage.ui
64     coreconfigwizardsyncpage.ui
65     coreconnectauthdlg.ui
66     coreconnectionstatuswidget.ui
67     coreinfodlg.ui
68     debugbufferviewoverlay.ui
69     debugconsole.ui
70     debuglogwidget.ui
71     inputwidget.ui
72     msgprocessorstatuswidget.ui
73     nicklistwidget.ui
74     settingsdlg.ui
75     settingspagedlg.ui
76     simplenetworkeditor.ui
77     receivefiledlg.ui
78     topicwidget.ui
79 )
80
81 set(LIBS )
82 set(QT_MODULES )
83
84 if (KDE4_FOUND)
85     add_definitions(-DHAVE_KDE ${KDE4_DEFINITIONS})
86     include_directories(${KDE4_INCLUDES})
87     list(APPEND SOURCES knotificationbackend.cpp)
88     list(APPEND LIBS ${KDE4_KDECORE_LIBS} ${KDE4_KDEUI_LIBRARY} ${KDE4_KNOTIFYCONFIG_LIBRARY})
89 endif()
90
91 if (LIBSNORE_FOUND)
92     add_definitions(-DHAVE_SNORENOTIFY)
93     include_directories(${LIBSNORE_INCLUDE_DIRS})
94     list(APPEND SOURCES snorenotificationbackend.cpp)
95     list(APPEND FORMS   snorentificationconfigwidget.ui)
96     list(APPEND LIBS ${LIBSNORE_LIBRARIES})
97 endif()
98
99 if (PHONON_FOUND OR Phonon4Qt5_FOUND)
100     add_definitions(-DHAVE_PHONON)
101     include_directories(${PHONON_INCLUDES})
102     set(SOURCES ${SOURCES} phononnotificationbackend.cpp)
103     set(FORMS ${FORMS}     phononnotificationconfigwidget.ui)
104     list(APPEND LIBS ${PHONON_LIBS})  # PHONON_LIBRARIES only exists in config mode, it's not set by the legacy FindPhonon.cmake
105 endif()
106
107 if (QT_QTDBUS_FOUND OR Qt5DBus_FOUND)
108     add_definitions(-DHAVE_DBUS)
109     list(APPEND QT_MODULES DBus)
110     if (dbusmenu-qt_FOUND OR dbusmenu-qt5_FOUND)
111         add_definitions(-DHAVE_DBUSMENU)
112         include_directories(${dbusmenu-qt_INCLUDE_DIRS} ${dbusmenu-qt5_INCLUDE_DIRS})
113         if (dbusmenu-qt_FOUND)
114             list(APPEND LIBS dbusmenu-qt)
115         else()
116             list(APPEND LIBS dbusmenu-qt5)
117         endif()
118     endif()
119
120     list(APPEND SOURCES statusnotifieritem.cpp statusnotifieritemdbus.cpp dockmanagernotificationbackend.cpp)
121     qt_add_dbus_interface(SOURCES ../../interfaces/org.kde.StatusNotifierWatcher.xml statusnotifierwatcher)
122     qt_add_dbus_interface(SOURCES ../../interfaces/org.freedesktop.Notifications.xml notificationsclient)
123     qt_add_dbus_adaptor  (SOURCES ../../interfaces/org.kde.StatusNotifierItem.xml statusnotifieritemdbus.h StatusNotifierItemDBus)
124 endif()
125
126 if (QT_QTWEBKIT_FOUND OR Qt5Webkit_FOUND)
127     add_definitions(-DHAVE_WEBKIT)
128     list(APPEND QT_MODULES Webkit XmlPatterns)
129 endif()
130
131 if(HAVE_SSL)
132   set(SOURCES ${SOURCES} sslinfodlg.cpp)
133   set(FORMS ${FORMS} sslinfodlg.ui)
134 endif(HAVE_SSL)
135
136 if (INDICATEQT_FOUND)
137     add_definitions(-DHAVE_INDICATEQT)
138     include_directories(${INDICATEQT_INCLUDE_DIRS})
139     list(APPEND SOURCES indicatornotificationbackend.cpp)
140     list(APPEND FORMS   indicatornotificationconfigwidget.ui)
141     list(APPEND LIBS ${INDICATEQT_LIBRARIES})
142 endif()
143
144 if (WITH_NOTIFICATION_CENTER)
145     add_definitions(-DHAVE_NOTIFICATION_CENTER)
146     list(APPEND SOURCES osxnotificationbackend.mm)
147     list(APPEND LIBS "/System/Library/Frameworks/Foundation.framework")
148 endif()
149
150 foreach(FORM ${FORMS})
151   set(FORMPATH ${FORMPATH} ui/${FORM})
152 endforeach(FORM ${FORMS})
153
154 # handle settingspages
155 include(settingspages/settingspages.cmake)
156 foreach(SP ${SETTINGSPAGES})
157   set(SPSRC ${SPSRC} settingspages/${SP}settingspage.cpp)
158   set(SPFRM ${SPFRM} settingspages/${SP}settingspage.ui)
159 endforeach(SP ${SETTINGSPAGES})
160 foreach(SRC ${SP_SOURCES})
161   set(SPSRC ${SPSRC} settingspages/${SRC})
162 endforeach(SRC ${SP_SOURCES})
163 foreach(FRM ${SP_FORMS})
164   set(SPFRM ${SPFRM} settingspages/${FRM})
165 endforeach(FRM ${SP_FORMS})
166
167 include_directories(${CMAKE_SOURCE_DIR}/src/common
168                     ${CMAKE_SOURCE_DIR}/src/client
169                     ${CMAKE_SOURCE_DIR}/src/qtui
170                     ${CMAKE_SOURCE_DIR}/src/qtui/settingspages
171                     ${CMAKE_SOURCE_DIR}/src/uisupport
172
173 )
174
175 qt_wrap_ui(UI ${FORMPATH} ${SPFRM})
176
177 if (USE_QT5)
178     list(APPEND QT_MODULES Widgets)
179 endif()
180
181
182 add_library(mod_qtui STATIC ${SOURCES} ${SPSRC} ${UI})
183 qt_use_modules(mod_qtui Core Gui Network ${QT_MODULES})
184
185 if (LIBS)
186     target_link_libraries(mod_qtui ${LIBS})
187 endif()
188
189 add_dependencies(mod_qtui mod_common mod_client mod_uisupport)