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