]> git.sesse.net Git - kdenlive/blob - src/CMakeLists.txt
* Get rid of custom video4linux header, use system header
[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
18
19 if(WITH_V4L)
20   # This can be changed to support FreeBSD as soon as we move to a newer V4L2
21   # header.
22   find_package(LibV4L2)
23   macro_log_feature(LIBV4L2_FOUND "libv4l" "Collection of video4linux support libraries" "http://hansdegoede.livejournal.com, http://linuxtv.org/hg/~hgoede/libv4l/" FALSE "" "Required for better webcam support")
24   if(LIBV4L2_FOUND)
25     set(BUILD_V4L TRUE)
26   endif(LIBV4L2_FOUND)
27 endif(WITH_V4L)
28
29 if(WITH_JogShuttle)
30   check_include_files(linux/input.h HAVE_LINUX_INPUT_H)
31   if(HAVE_LINUX_INPUT_H)
32     set(BUILD_JogShuttle TRUE)
33   endif(HAVE_LINUX_INPUT_H)
34 endif(WITH_JogShuttle)
35
36 macro_log_feature(QT_QTOPENGL_FOUND
37   "QtOpenGL"
38   "Qt bindings for the OpenGL library"
39   "http://qt.nokia.com/products/qt"
40   TRUE
41   ${QT_MIN_VERSION}
42   "QtOpenGL library and headers (most likely called libqt4-opengl and libqt4-opengl-dev)"
43 )
44
45 macro_log_feature(QT_QTSCRIPT_FOUND
46   "QtScript"
47   "Qt module providing core scripting facilities"
48   "http://qt.nokia.com/products/qt"
49   TRUE
50   ${QT_MIN_VERSION}
51   "QtScript library (most likely called libqt4-script)"
52 )
53
54 if(APPLE)
55   macro_log_feature(SDL_FOUND
56     "SDL"
57     "Cross-platform multimedia library"
58     "http://www.libsdl.org"
59     TRUE
60   )
61 endif(APPLE)
62
63 macro_log_feature(Nepomuk_FOUND
64   "Nepomuk"
65   "Support for the Nepomuk semantic desktop system"
66   "http://nepomuk.semanticdesktop.org"
67 )
68
69 macro_log_feature(QJSON_FOUND
70   "QJson"
71   "Qt-based library that maps JSON data to QVariant objects"
72   "http://qjson.sourceforge.net"
73   FALSE
74   ""
75   "Required to build the rotoscoping filter and for Freesound.org queries"
76 )
77
78
79 add_subdirectory(beziercurve)
80 add_subdirectory(colorcorrection)
81 add_subdirectory(commands)
82 add_subdirectory(lib)
83 add_subdirectory(projecttree)
84 add_subdirectory(utils)
85 add_subdirectory(databackup)
86 add_subdirectory(effectstack)
87 add_subdirectory(mimetypes)
88 add_subdirectory(onmonitoritems)
89 add_subdirectory(scopes)
90 add_subdirectory(simplekeyframes)
91 add_subdirectory(stopmotion)
92
93 if(QJSON_FOUND)
94   add_subdirectory(onmonitoritems/rotoscoping)
95   add_subdirectory(rotoscoping)
96 endif(QJSON_FOUND)
97
98 if(BUILD_V4L)
99   add_subdirectory(v4l)
100 endif(BUILD_V4L)
101
102 list(APPEND kdenlive_SRCS
103   main.cpp
104   mainwindow.cpp
105
106   KoSliderCombo.cpp
107   abstractclipitem.cpp
108   abstractgroupitem.cpp
109   abstractmonitor.cpp
110   archivewidget.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   definitions.cpp
127   docclipbase.cpp
128   documentchecker.cpp
129   documentvalidator.cpp
130   doubleparameterwidget.cpp
131   dragvalue.cpp
132   dvdwizard.cpp
133   dvdwizardchapters.cpp
134   dvdwizardmenu.cpp
135   dvdwizardvob.cpp
136   effectslist.cpp
137   effectslistview.cpp
138   effectslistwidget.cpp
139   effectstackedit.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/collapsiblewidget_ui.ui
203   widgets/clipstabilize_ui.ui
204   widgets/colorclip_ui.ui
205   widgets/colorplaneexport_ui.ui
206   widgets/configcapture_ui.ui
207   widgets/configenv_ui.ui
208   widgets/configjogshuttle_ui.ui
209   widgets/configmisc_ui.ui
210   widgets/configproject_ui.ui
211   widgets/configsdl_ui.ui
212   widgets/configtimeline_ui.ui
213   widgets/configtranscode_ui.ui
214   widgets/dvdwizardchapters_ui.ui
215   widgets/dvdwizardmenu_ui.ui
216   widgets/dvdwizardstatus_ui.ui
217   widgets/dvdwizardvob_ui.ui
218   widgets/effectlist_ui.ui
219   widgets/effectstack_ui.ui
220   widgets/effectstack2_ui.ui
221   widgets/freesound_ui.ui
222   widgets/geometryval_ui.ui
223   widgets/geometrywidget_ui.ui
224   widgets/histogram_ui.ui
225   widgets/keyframedialog_ui.ui
226   widgets/keyframeeditor_ui.ui
227   widgets/keyframewidget_ui.ui
228   widgets/listval_ui.ui
229   widgets/managecaptures_ui.ui
230   widgets/manageencodingprofile_ui.ui
231   widgets/markerdialog_ui.ui
232   widgets/missingclips_ui.ui
233   widgets/monitoreditwidget_ui.ui
234   widgets/profiledialog_ui.ui
235   widgets/projectsettings_ui.ui
236   widgets/recmonitor_ui.ui
237   widgets/renderwidget_ui.ui
238   widgets/rgbparade_ui.ui
239   widgets/saveprofile_ui.ui
240   widgets/slideshowclip_ui.ui
241   widgets/smconfig_ui.ui
242   widgets/spacerdialog_ui.ui
243   widgets/spectrogram_ui.ui
244   widgets/stopmotion_ui.ui
245   widgets/templateclip_ui.ui
246   widgets/timeline_ui.ui
247   widgets/timelinebuttons_ui.ui
248   widgets/titlewidget_ui.ui
249   widgets/trackheader_ui.ui
250   widgets/tracksconfigdialog_ui.ui
251   widgets/transitionsettings_ui.ui
252   widgets/unicodedialog_ui.ui
253   widgets/urlval_ui.ui
254   widgets/vectorscope_ui.ui
255   widgets/waveform_ui.ui
256   widgets/wipeval_ui.ui
257   widgets/wizardcapture_ui.ui
258   widgets/wizardcheck_ui.ui
259   widgets/wizardextra_ui.ui
260   widgets/wizardmltcheck_ui.ui
261   widgets/wizardstandard_ui.ui
262   widgets/keywordval_ui.ui
263   widgets/fontval_ui.ui
264   widgets/cutjobdialog_ui.ui
265 )
266
267 if(OPENGL_FOUND)
268   list(APPEND kdenlive_SRCS videoglwidget.cpp)
269 endif(OPENGL_FOUND)
270
271 if(BUILD_JogShuttle)
272   list(APPEND kdenlive_SRCS
273     jogaction.cpp
274     jogshuttle.cpp
275     jogshuttleconfig.cpp
276   )
277 endif(BUILD_JogShuttle)
278
279 kde4_add_kcfg_files(kdenlive_SRCS kdenlivesettings.kcfgc)
280 qt4_add_dbus_adaptor(kdenlive_SRCS
281   org.kdenlive.MainWindow.xml
282   mainwindow.h
283   MainWindow
284 )
285 qt4_add_resources(kdenlive_SRCS widgets/resources.qrc)
286 kde4_add_executable(kdenlive
287   ${kdenlive_SRCS}
288   ${kdenlive_UIS}
289 )
290
291 # To compile kiss_fft.
292 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --std=c99")
293
294 # KDE definitions and include directories *must* always come first, Qt follows
295 # (to avoid breaking builds when KDE and/or Qt are installed to different
296 # prefixes).
297 add_definitions(${KDE4_DEFINITIONS})
298
299 include_directories(
300   ${CMAKE_BINARY_DIR}
301   ${KDE4_INCLUDES} # Adds Qt include directories too.
302   ${LIBMLT_INCLUDE_DIR}
303   ${LIBMLTPLUS_INCLUDE_DIR}
304 )
305
306
307 # Adds Qt definitions and include directories, and sets QT_LIBRARIES according
308 # to the components requested in find_package().
309 include(${QT_USE_FILE})
310
311 if(${KDE_VERSION} VERSION_LESS 4.3.80)
312   set(KDE4_KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF2_LIBS})
313 else(${KDE_VERSION} VERSION_LESS 4.3.80)
314   set(KDE4_KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF3_LIBS})
315 endif(${KDE_VERSION} VERSION_LESS 4.3.80)
316
317 target_link_libraries(kdenlive
318   ${KDE4_KDEUI_LIBS}
319   ${KDE4_KIO_LIBS}
320   ${KDE4_KNEWSTUFF_LIBS}
321   ${KDE4_KNOTIFYCONFIG_LIBRARY}
322   ${KDE4_KROSSUI_LIBS}
323   ${KDE4_SOLID_LIBS}
324   ${QT_LIBRARIES}
325   ${LIBMLT_LIBRARY}
326   ${LIBMLTPLUS_LIBRARY}
327   ${CMAKE_DL_LIBS}
328   ${CMAKE_THREAD_LIBS_INIT}
329 )
330
331 if(Q_WS_X11)
332   include_directories(${X11_Xlib_INCLUDE_PATH})
333   target_link_libraries(kdenlive ${X11_LIBRARIES})
334 endif(Q_WS_X11)
335
336 if(OPENGL_FOUND AND QT_QTOPENGL_FOUND)
337   add_definitions(-DUSE_OPENGL)
338   target_link_libraries(kdenlive ${OPENGL_LIBRARIES})
339 endif(OPENGL_FOUND AND QT_QTOPENGL_FOUND)
340
341 if(SDL_FOUND)
342   target_link_libraries(kdenlive ${SDL_LIBRARY})
343 endif(SDL_FOUND)
344
345 if(Nepomuk_FOUND)
346   add_definitions(-DUSE_NEPOMUK)
347   include_directories(${NEPOMUK_INCLUDES})
348   target_link_libraries(kdenlive ${NEPOMUK_LIBRARIES})
349 endif(Nepomuk_FOUND)
350
351 if(QJSON_FOUND)
352   add_definitions(-DUSE_QJSON)
353   include_directories(${QJSON_INCLUDE_DIR})
354   target_link_libraries(kdenlive ${QJSON_LIBRARIES})
355 endif(QJSON_FOUND)
356
357 if(BUILD_V4L)
358   include_directories(${LIBV4L2_INCLUDE_DIR})
359   target_link_libraries(kdenlive ${LIBV4L2_LIBRARY})  
360   add_definitions(-DUSE_V4L)
361 endif(BUILD_V4L)
362
363 if(BUILD_JogShuttle)
364   add_definitions(-DUSE_JOGSHUTTLE)
365 endif(BUILD_JogShuttle)
366
367 install(TARGETS kdenlive DESTINATION ${BIN_INSTALL_DIR})
368 install(FILES
369   kdenliveui.rc
370   kdenlive.notifyrc
371   DESTINATION ${DATA_INSTALL_DIR}/kdenlive
372 )
373 install(FILES kdenlivesettings.kcfg DESTINATION ${KCFG_INSTALL_DIR})
374 install(FILES
375   kdenlive_projectprofiles.knsrc
376   kdenlive_renderprofiles.knsrc
377   kdenlive_titles.knsrc
378   kdenlive_wipes.knsrc
379   kdenlivetranscodingrc
380   DESTINATION ${CONFIG_INSTALL_DIR}
381 )
382 kde4_install_icons(${ICON_INSTALL_DIR})
383 install(FILES kdenlive.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})