]> git.sesse.net Git - kdenlive/blob - src/CMakeLists.txt
Merge branch 'next' into audioAlign
[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(audioscopes)
82 add_subdirectory(beziercurve)
83 add_subdirectory(colorcorrection)
84 add_subdirectory(colorscopes)
85 add_subdirectory(commands)
86 add_subdirectory(lib)
87 add_subdirectory(projecttree)
88 add_subdirectory(utils)
89 add_subdirectory(databackup)
90 add_subdirectory(kiss_fft)
91 add_subdirectory(lib)
92 add_subdirectory(mimetypes)
93 add_subdirectory(onmonitoritems)
94 add_subdirectory(simplekeyframes)
95 add_subdirectory(stopmotion)
96
97 if(QJSON_FOUND)
98   add_subdirectory(onmonitoritems/rotoscoping)
99   add_subdirectory(rotoscoping)
100 endif(QJSON_FOUND)
101
102 if(BUILD_V4L)
103   add_subdirectory(v4l)
104 endif(BUILD_V4L)
105
106 if(BUILD_BlackMagic)
107   add_subdirectory(blackmagic)
108 endif(BUILD_BlackMagic)
109
110 list(APPEND kdenlive_SRCS
111   main.cpp
112   mainwindow.cpp
113
114   KoSliderCombo.cpp
115   abstractclipitem.cpp
116   abstractgroupitem.cpp
117   abstractmonitor.cpp
118   abstractscopewidget.cpp
119   archivewidget.cpp
120   audiosignal.cpp
121   choosecolorwidget.cpp
122   clipdurationdialog.cpp
123   clipitem.cpp
124   clipmanager.cpp
125   clipproperties.cpp
126   cliptranscode.cpp
127   clipstabilize.cpp
128   colorpickerwidget.cpp
129   colorplaneexport.cpp
130   colortools.cpp
131   complexparameter.cpp
132   cornerswidget.cpp
133   customruler.cpp
134   customtrackscene.cpp
135   customtrackview.cpp
136   docclipbase.cpp
137   documentchecker.cpp
138   documentvalidator.cpp
139   doubleparameterwidget.cpp
140   dragvalue.cpp
141   dvdwizard.cpp
142   dvdwizardchapters.cpp
143   dvdwizardmenu.cpp
144   dvdwizardvob.cpp
145   effectslist.cpp
146   effectslistview.cpp
147   effectslistwidget.cpp
148   effectstackedit.cpp
149   effectstackview.cpp
150   encodingprofilesdialog.cpp
151   folderprojectitem.cpp
152   gentime.cpp
153   geometryval.cpp
154   geometrywidget.cpp
155   graphicsscenerectmove.cpp
156   guide.cpp
157   headertrack.cpp
158   initeffects.cpp
159   kdenlivedoc.cpp
160   kdenlivesettingsdialog.cpp
161   keyframeedit.cpp
162   keyframehelper.cpp
163   kis_cubic_curve.cpp
164   kis_curve_widget.cpp
165   kthumb.cpp
166   managecapturesdialog.cpp
167   markerdialog.cpp
168   mltdevicecapture.cpp
169   monitor.cpp
170   monitoreditwidget.cpp
171   monitormanager.cpp
172   monitorscene.cpp
173   noteswidget.cpp
174   parameterplotter.cpp
175   positionedit.cpp
176   profilesdialog.cpp
177   projectitem.cpp
178   projectlist.cpp
179   projectlistview.cpp
180   projectsettings.cpp
181   recmonitor.cpp
182   renderer.cpp
183   renderwidget.cpp
184   slideshowclip.cpp
185   smallruler.cpp
186   spacerdialog.cpp
187   statusbarmessagelabel.cpp
188   subprojectitem.cpp
189   timecode.cpp
190   timecodedisplay.cpp
191   titledocument.cpp
192   titlewidget.cpp
193   trackdialog.cpp
194   tracksconfigdialog.cpp
195   trackview.cpp
196   transition.cpp
197   transitionsettings.cpp
198   unicodedialog.cpp
199   wizard.cpp
200 )
201
202 kde4_add_ui_files(kdenlive_UIS
203   widgets/addtrack_ui.ui
204   widgets/archivewidget_ui.ui
205   widgets/audiospectrum_ui.ui
206   widgets/backupdialog_ui.ui
207   widgets/bezierspline_ui.ui
208   widgets/boolval_ui.ui
209   widgets/clipdurationdialog_ui.ui
210   widgets/clipproperties_ui.ui
211   widgets/cliptranscode_ui.ui
212   widgets/clipstabilize_ui.ui
213   widgets/colorclip_ui.ui
214   widgets/colorplaneexport_ui.ui
215   widgets/configcapture_ui.ui
216   widgets/configenv_ui.ui
217   widgets/configjogshuttle_ui.ui
218   widgets/configmisc_ui.ui
219   widgets/configproject_ui.ui
220   widgets/configsdl_ui.ui
221   widgets/configtimeline_ui.ui
222   widgets/configtranscode_ui.ui
223   widgets/dvdwizardchapters_ui.ui
224   widgets/dvdwizardmenu_ui.ui
225   widgets/dvdwizardstatus_ui.ui
226   widgets/dvdwizardvob_ui.ui
227   widgets/effectlist_ui.ui
228   widgets/effectstack_ui.ui
229   widgets/freesound_ui.ui
230   widgets/geometryval_ui.ui
231   widgets/geometrywidget_ui.ui
232   widgets/histogram_ui.ui
233   widgets/keyframedialog_ui.ui
234   widgets/keyframeeditor_ui.ui
235   widgets/keyframewidget_ui.ui
236   widgets/listval_ui.ui
237   widgets/managecaptures_ui.ui
238   widgets/manageencodingprofile_ui.ui
239   widgets/markerdialog_ui.ui
240   widgets/missingclips_ui.ui
241   widgets/monitoreditwidget_ui.ui
242   widgets/profiledialog_ui.ui
243   widgets/projectsettings_ui.ui
244   widgets/recmonitor_ui.ui
245   widgets/renderwidget_ui.ui
246   widgets/rgbparade_ui.ui
247   widgets/saveprofile_ui.ui
248   widgets/slideshowclip_ui.ui
249   widgets/smconfig_ui.ui
250   widgets/spacerdialog_ui.ui
251   widgets/spectrogram_ui.ui
252   widgets/stopmotion_ui.ui
253   widgets/templateclip_ui.ui
254   widgets/timeline_ui.ui
255   widgets/timelinebuttons_ui.ui
256   widgets/titlewidget_ui.ui
257   widgets/trackheader_ui.ui
258   widgets/tracksconfigdialog_ui.ui
259   widgets/transitionsettings_ui.ui
260   widgets/unicodedialog_ui.ui
261   widgets/urlval_ui.ui
262   widgets/vectorscope_ui.ui
263   widgets/waveform_ui.ui
264   widgets/wipeval_ui.ui
265   widgets/wizardcapture_ui.ui
266   widgets/wizardcheck_ui.ui
267   widgets/wizardextra_ui.ui
268   widgets/wizardmltcheck_ui.ui
269   widgets/wizardstandard_ui.ui
270   widgets/keywordval_ui.ui
271   widgets/fontval_ui.ui
272   widgets/cutjobdialog_ui.ui
273 )
274
275 if(OPENGL_FOUND)
276   list(APPEND kdenlive_SRCS videoglwidget.cpp)
277 endif(OPENGL_FOUND)
278
279 if(BUILD_JogShuttle)
280   list(APPEND kdenlive_SRCS
281     jogaction.cpp
282     jogshuttle.cpp
283     jogshuttleconfig.cpp
284   )
285 endif(BUILD_JogShuttle)
286
287 kde4_add_kcfg_files(kdenlive_SRCS kdenlivesettings.kcfgc)
288 qt4_add_dbus_adaptor(kdenlive_SRCS
289   org.kdenlive.MainWindow.xml
290   mainwindow.h
291   MainWindow
292 )
293 qt4_add_resources(kdenlive_SRCS widgets/resources.qrc)
294 kde4_add_executable(kdenlive
295   ${kdenlive_SRCS}
296   ${kdenlive_UIS}
297 )
298
299 # To compile kiss_fft.
300 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --std=c99")
301
302 # KDE definitions and include directories *must* always come first, Qt follows
303 # (to avoid breaking builds when KDE and/or Qt are installed to different
304 # prefixes).
305 add_definitions(${KDE4_DEFINITIONS})
306
307 include_directories(
308   ${CMAKE_BINARY_DIR}
309   ${KDE4_INCLUDES} # Adds Qt include directories too.
310   ${LIBMLT_INCLUDE_DIR}
311   ${LIBMLTPLUS_INCLUDE_DIR}
312 )
313
314 # Adds Qt definitions and include directories, and sets QT_LIBRARIES according
315 # to the components requested in find_package().
316 include(${QT_USE_FILE})
317
318 if(${KDE_VERSION} VERSION_LESS 4.3.80)
319   set(KDE4_KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF2_LIBS})
320 else(${KDE_VERSION} VERSION_LESS 4.3.80)
321   set(KDE4_KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF3_LIBS})
322 endif(${KDE_VERSION} VERSION_LESS 4.3.80)
323
324 target_link_libraries(kdenlive
325   ${KDE4_KDEUI_LIBS}
326   ${KDE4_KIO_LIBS}
327   ${KDE4_KNEWSTUFF_LIBS}
328   ${KDE4_KNOTIFYCONFIG_LIBRARY}
329   ${KDE4_KROSSUI_LIBS}
330   ${KDE4_SOLID_LIBS}
331   ${QT_LIBRARIES}
332   ${LIBMLT_LIBRARY}
333   ${LIBMLTPLUS_LIBRARY}
334   ${CMAKE_DL_LIBS}
335   ${CMAKE_THREAD_LIBS_INIT}
336 )
337
338 if(Q_WS_X11)
339   include_directories(${X11_Xlib_INCLUDE_PATH})
340   target_link_libraries(kdenlive ${X11_LIBRARIES})
341 endif(Q_WS_X11)
342
343 if(OPENGL_FOUND AND QT_QTOPENGL_FOUND)
344   add_definitions(-DUSE_OPENGL)
345   target_link_libraries(kdenlive ${OPENGL_LIBRARIES})
346 endif(OPENGL_FOUND AND QT_QTOPENGL_FOUND)
347
348 if(SDL_FOUND)
349   target_link_libraries(kdenlive ${SDL_LIBRARY})
350 endif(SDL_FOUND)
351
352 if(Nepomuk_FOUND)
353   add_definitions(-DUSE_NEPOMUK)
354   include_directories(${NEPOMUK_INCLUDES})
355   target_link_libraries(kdenlive ${NEPOMUK_LIBRARIES})
356 endif(Nepomuk_FOUND)
357
358 if(QJSON_FOUND)
359   add_definitions(-DUSE_QJSON)
360   include_directories(${QJSON_INCLUDE_DIR})
361   target_link_libraries(kdenlive ${QJSON_LIBRARIES})
362 endif(QJSON_FOUND)
363
364 if(BUILD_V4L)
365   add_definitions(-DUSE_V4L)
366 endif(BUILD_V4L)
367
368 if(BUILD_BlackMagic)
369   add_definitions(-DUSE_BLACKMAGIC)
370 endif(BUILD_BlackMagic)
371
372 if(BUILD_JogShuttle)
373   add_definitions(-DUSE_JOGSHUTTLE)
374 endif(BUILD_JogShuttle)
375
376 install(TARGETS kdenlive DESTINATION ${BIN_INSTALL_DIR})
377 install(FILES
378   kdenliveui.rc
379   kdenlive.notifyrc
380   DESTINATION ${DATA_INSTALL_DIR}/kdenlive
381 )
382 install(FILES kdenlivesettings.kcfg DESTINATION ${KCFG_INSTALL_DIR})
383 install(FILES
384   kdenlive_projectprofiles.knsrc
385   kdenlive_renderprofiles.knsrc
386   kdenlive_titles.knsrc
387   kdenlive_wipes.knsrc
388   kdenlivetranscodingrc
389   DESTINATION ${CONFIG_INSTALL_DIR}
390 )
391 kde4_install_icons(${ICON_INSTALL_DIR})
392 install(FILES kdenlive.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})