]> git.sesse.net Git - kdenlive/blob - src/CMakeLists.txt
Compile without QJson, require Solid for network connectivity awareness
[kdenlive] / src / CMakeLists.txt
1 set(QT_USE_QTDBUS 1)
2 set(QT_USE_QTOPENGL 1)
3 set(QT_USE_QTSCRIPT 1)
4 set(QT_USE_QTSVG 1)
5 set(QT_USE_QTXML 1)
6
7 find_package(OpenGL REQUIRED)
8 if(APPLE)
9   find_package(SDL REQUIRED)
10 endif(APPLE)
11 macro_optional_find_package(Nepomuk)
12 macro_optional_find_package(QJSON)
13
14 option(WITH_V4L "Build capture support with Video4Linux" ON)
15 option(WITH_JogShuttle "Build Jog/Shuttle support" ON)
16
17 if(WITH_V4L)
18   # This can be changed to support FreeBSD as soon as we move to a newer V4L2
19   # header.
20   check_include_files(linux/ioctl.h HAVE_LINUX_IOCTL_H)
21   if(HAVE_LINUX_IOCTL_H)
22     set(BUILD_V4L TRUE)
23   endif(HAVE_LINUX_IOCTL_H)
24 endif(WITH_V4L)
25
26 if(WITH_JogShuttle)
27   check_include_files(linux/input.h HAVE_LINUX_INPUT_H)
28   if(HAVE_LINUX_INPUT_H)
29     set(BUILD_JogShuttle TRUE)
30   endif(HAVE_LINUX_INPUT_H)
31 endif(WITH_JogShuttle)
32
33 macro_log_feature(QT_QTOPENGL_FOUND
34   "QtOpenGL"
35   "Qt bindings for the OpenGL library"
36   "http://qt.nokia.com/products/qt"
37   TRUE
38   ${QT_MIN_VERSION}
39   "QtOpenGL library and headers (most likely called libqt4-opengl and libqt4-opengl-dev)"
40 )
41
42 macro_log_feature(QT_QTSCRIPT_FOUND
43   "QtScript"
44   "Qt module providing core scripting facilities"
45   "http://qt.nokia.com/products/qt"
46   TRUE
47   ${QT_MIN_VERSION}
48   "QtScript library (most likely called libqt4-script)"
49 )
50
51 if(APPLE)
52   macro_log_feature(SDL_FOUND
53     "SDL"
54     "Cross-platform multimedia library"
55     "http://www.libsdl.org"
56     TRUE
57   )
58 endif(APPLE)
59
60 macro_log_feature(Nepomuk_FOUND
61   "Nepomuk"
62   "Support for the Nepomuk semantic desktop system"
63   "http://nepomuk.semanticdesktop.org"
64 )
65
66 macro_log_feature(QJSON_FOUND
67   "QJson"
68   "Qt-based library that maps JSON data to QVariant objects"
69   "http://qjson.sourceforge.net"
70   FALSE
71   ""
72   "Required to build the rotoscoping filter and for Freesound.org queries"
73 )
74
75
76 add_subdirectory(audioscopes)
77 add_subdirectory(beziercurve)
78 add_subdirectory(blackmagic)
79 add_subdirectory(colorcorrection)
80 add_subdirectory(colorscopes)
81 add_subdirectory(commands)
82 add_subdirectory(projecttree)
83 add_subdirectory(utils)
84 add_subdirectory(databackup)
85 add_subdirectory(kiss_fft)
86 add_subdirectory(mimetypes)
87 add_subdirectory(onmonitoritems)
88 add_subdirectory(simplekeyframes)
89 add_subdirectory(stopmotion)
90
91 if(QJSON_FOUND)
92   add_subdirectory(onmonitoritems/rotoscoping)
93   add_subdirectory(rotoscoping)
94 endif(QJSON_FOUND)
95
96 if(BUILD_V4L)
97   add_subdirectory(v4l)
98 endif(BUILD_V4L)
99
100 list(APPEND kdenlive_SRCS
101   main.cpp
102   mainwindow.cpp
103
104   KoSliderCombo.cpp
105   abstractclipitem.cpp
106   abstractgroupitem.cpp
107   abstractmonitor.cpp
108   abstractscopewidget.cpp
109   archivewidget.cpp
110   audiosignal.cpp
111   choosecolorwidget.cpp
112   clipdurationdialog.cpp
113   clipitem.cpp
114   clipmanager.cpp
115   clipproperties.cpp
116   cliptranscode.cpp
117   clipstabilize.cpp
118   colorpickerwidget.cpp
119   colorplaneexport.cpp
120   colortools.cpp
121   complexparameter.cpp
122   cornerswidget.cpp
123   customruler.cpp
124   customtrackscene.cpp
125   customtrackview.cpp
126   docclipbase.cpp
127   documentchecker.cpp
128   documentvalidator.cpp
129   doubleparameterwidget.cpp
130   dragvalue.cpp
131   dvdwizard.cpp
132   dvdwizardchapters.cpp
133   dvdwizardmenu.cpp
134   dvdwizardvob.cpp
135   effectslist.cpp
136   effectslistview.cpp
137   effectslistwidget.cpp
138   effectstackedit.cpp
139   effectstackview.cpp
140   encodingprofilesdialog.cpp
141   folderprojectitem.cpp
142   gentime.cpp
143   geometryval.cpp
144   geometrywidget.cpp
145   graphicsscenerectmove.cpp
146   guide.cpp
147   headertrack.cpp
148   initeffects.cpp
149   kdenlivedoc.cpp
150   kdenlivesettingsdialog.cpp
151   keyframeedit.cpp
152   keyframehelper.cpp
153   kis_cubic_curve.cpp
154   kis_curve_widget.cpp
155   kthumb.cpp
156   managecapturesdialog.cpp
157   markerdialog.cpp
158   mltdevicecapture.cpp
159   monitor.cpp
160   monitoreditwidget.cpp
161   monitormanager.cpp
162   monitorscene.cpp
163   noteswidget.cpp
164   parameterplotter.cpp
165   positionedit.cpp
166   profilesdialog.cpp
167   projectitem.cpp
168   projectlist.cpp
169   projectlistview.cpp
170   projectsettings.cpp
171   recmonitor.cpp
172   renderer.cpp
173   renderwidget.cpp
174   slideshowclip.cpp
175   smallruler.cpp
176   spacerdialog.cpp
177   statusbarmessagelabel.cpp
178   subprojectitem.cpp
179   timecode.cpp
180   timecodedisplay.cpp
181   titledocument.cpp
182   titlewidget.cpp
183   trackdialog.cpp
184   tracksconfigdialog.cpp
185   trackview.cpp
186   transition.cpp
187   transitionsettings.cpp
188   unicodedialog.cpp
189   wizard.cpp
190 )
191
192 kde4_add_ui_files(kdenlive_UIS
193   widgets/addtrack_ui.ui
194   widgets/archivewidget_ui.ui
195   widgets/audiospectrum_ui.ui
196   widgets/backupdialog_ui.ui
197   widgets/bezierspline_ui.ui
198   widgets/boolval_ui.ui
199   widgets/clipdurationdialog_ui.ui
200   widgets/clipproperties_ui.ui
201   widgets/cliptranscode_ui.ui
202   widgets/clipstabilize_ui.ui
203   widgets/colorclip_ui.ui
204   widgets/colorplaneexport_ui.ui
205   widgets/configcapture_ui.ui
206   widgets/configenv_ui.ui
207   widgets/configjogshuttle_ui.ui
208   widgets/configmisc_ui.ui
209   widgets/configproject_ui.ui
210   widgets/configsdl_ui.ui
211   widgets/configtimeline_ui.ui
212   widgets/configtranscode_ui.ui
213   widgets/dvdwizardchapters_ui.ui
214   widgets/dvdwizardmenu_ui.ui
215   widgets/dvdwizardstatus_ui.ui
216   widgets/dvdwizardvob_ui.ui
217   widgets/effectlist_ui.ui
218   widgets/effectstack_ui.ui
219   widgets/freesound_ui.ui
220   widgets/geometryval_ui.ui
221   widgets/geometrywidget_ui.ui
222   widgets/histogram_ui.ui
223   widgets/keyframedialog_ui.ui
224   widgets/keyframeeditor_ui.ui
225   widgets/keyframewidget_ui.ui
226   widgets/listval_ui.ui
227   widgets/managecaptures_ui.ui
228   widgets/manageencodingprofile_ui.ui
229   widgets/markerdialog_ui.ui
230   widgets/missingclips_ui.ui
231   widgets/monitoreditwidget_ui.ui
232   widgets/profiledialog_ui.ui
233   widgets/projectsettings_ui.ui
234   widgets/recmonitor_ui.ui
235   widgets/renderwidget_ui.ui
236   widgets/rgbparade_ui.ui
237   widgets/saveprofile_ui.ui
238   widgets/slideshowclip_ui.ui
239   widgets/smconfig_ui.ui
240   widgets/spacerdialog_ui.ui
241   widgets/spectrogram_ui.ui
242   widgets/stopmotion_ui.ui
243   widgets/templateclip_ui.ui
244   widgets/timeline_ui.ui
245   widgets/timelinebuttons_ui.ui
246   widgets/titlewidget_ui.ui
247   widgets/trackheader_ui.ui
248   widgets/tracksconfigdialog_ui.ui
249   widgets/transitionsettings_ui.ui
250   widgets/unicodedialog_ui.ui
251   widgets/urlval_ui.ui
252   widgets/vectorscope_ui.ui
253   widgets/waveform_ui.ui
254   widgets/wipeval_ui.ui
255   widgets/wizardcapture_ui.ui
256   widgets/wizardcheck_ui.ui
257   widgets/wizardextra_ui.ui
258   widgets/wizardmltcheck_ui.ui
259   widgets/wizardstandard_ui.ui
260   widgets/keywordval_ui.ui
261   widgets/fontval_ui.ui
262   widgets/cutjobdialog_ui.ui
263 )
264
265 if(OPENGL_FOUND)
266   list(APPEND kdenlive_SRCS videoglwidget.cpp)
267 endif(OPENGL_FOUND)
268
269 if(BUILD_JogShuttle)
270   list(APPEND kdenlive_SRCS
271     jogaction.cpp
272     jogshuttle.cpp
273     jogshuttleconfig.cpp
274   )
275 endif(BUILD_JogShuttle)
276
277 kde4_add_kcfg_files(kdenlive_SRCS kdenlivesettings.kcfgc)
278 qt4_add_dbus_adaptor(kdenlive_SRCS
279   org.kdenlive.MainWindow.xml
280   mainwindow.h
281   MainWindow
282 )
283 qt4_add_resources(kdenlive_SRCS widgets/resources.qrc)
284 kde4_add_executable(kdenlive
285   ${kdenlive_SRCS}
286   ${kdenlive_UIS}
287 )
288
289 # To compile kiss_fft.
290 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --std=c99")
291
292 # KDE definitions and include directories *must* always come first, Qt follows
293 # (to avoid breaking builds when KDE and/or Qt are installed to different
294 # prefixes).
295 add_definitions(${KDE4_DEFINITIONS})
296
297 include_directories(
298   ${CMAKE_BINARY_DIR}
299   ${KDE4_INCLUDES} # Adds Qt include directories too.
300   ${LIBMLT_INCLUDE_DIR}
301   ${LIBMLTPLUS_INCLUDE_DIR}
302 )
303
304 # Adds Qt definitions and include directories, and sets QT_LIBRARIES according
305 # to the components requested in find_package().
306 include(${QT_USE_FILE})
307
308 if(${KDE_VERSION} VERSION_LESS 4.3.80)
309   set(KDE4_KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF2_LIBS})
310 else(${KDE_VERSION} VERSION_LESS 4.3.80)
311   set(KDE4_KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF3_LIBS})
312 endif(${KDE_VERSION} VERSION_LESS 4.3.80)
313
314 target_link_libraries(kdenlive
315   ${KDE4_KDEUI_LIBS}
316   ${KDE4_KIO_LIBS}
317   ${KDE4_KNEWSTUFF_LIBS}
318   ${KDE4_KNOTIFYCONFIG_LIBRARY}
319   ${KDE4_KROSSUI_LIBS}
320   ${KDE4_SOLID_LIBS}
321   ${QT_LIBRARIES}
322   ${LIBMLT_LIBRARY}
323   ${LIBMLTPLUS_LIBRARY}
324   ${CMAKE_DL_LIBS}
325   ${CMAKE_THREAD_LIBS_INIT}
326 )
327
328 if(Q_WS_X11)
329   include_directories(${X11_Xlib_INCLUDE_PATH})
330   target_link_libraries(kdenlive ${X11_LIBRARIES})
331 endif(Q_WS_X11)
332
333 if(OPENGL_FOUND AND QT_QTOPENGL_FOUND)
334   add_definitions(-DUSE_OPENGL)
335   target_link_libraries(kdenlive ${OPENGL_LIBRARIES})
336 endif(OPENGL_FOUND AND QT_QTOPENGL_FOUND)
337
338 if(SDL_FOUND)
339   target_link_libraries(kdenlive ${SDL_LIBRARY})
340 endif(SDL_FOUND)
341
342 if(Nepomuk_FOUND)
343   add_definitions(-DUSE_NEPOMUK)
344   include_directories(${NEPOMUK_INCLUDES})
345   target_link_libraries(kdenlive ${NEPOMUK_LIBRARIES})
346 endif(Nepomuk_FOUND)
347
348 if(QJSON_FOUND)
349   add_definitions(-DUSE_QJSON)
350   include_directories(${QJSON_INCLUDE_DIR})
351   target_link_libraries(kdenlive ${QJSON_LIBRARIES})
352 endif(QJSON_FOUND)
353
354 if(BUILD_V4L)
355   add_definitions(-DUSE_V4L)
356 endif(BUILD_V4L)
357
358 if(BUILD_JogShuttle)
359   add_definitions(-DUSE_JOGSHUTTLE)
360 endif(BUILD_JogShuttle)
361
362 install(TARGETS kdenlive DESTINATION ${BIN_INSTALL_DIR})
363 install(FILES
364   kdenliveui.rc
365   kdenlive.notifyrc
366   DESTINATION ${DATA_INSTALL_DIR}/kdenlive
367 )
368 install(FILES kdenlivesettings.kcfg DESTINATION ${KCFG_INSTALL_DIR})
369 install(FILES
370   kdenlive_projectprofiles.knsrc
371   kdenlive_renderprofiles.knsrc
372   kdenlive_titles.knsrc
373   kdenlive_wipes.knsrc
374   kdenlivetranscodingrc
375   DESTINATION ${CONFIG_INSTALL_DIR}
376 )
377 kde4_install_icons(${ICON_INSTALL_DIR})
378 install(FILES kdenlive.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})