]> git.sesse.net Git - kdenlive/blob - src/CMakeLists.txt
const'ify/use reference. Remove unused variable
[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   widgets/scenecutdialog_ui.ui
266   widgets/importkeyframesdialog_ui.ui
267 )
268
269 if(OPENGL_FOUND)
270   list(APPEND kdenlive_SRCS videoglwidget.cpp)
271 endif(OPENGL_FOUND)
272
273 if(BUILD_JogShuttle)
274   list(APPEND kdenlive_SRCS
275     jogaction.cpp
276     jogshuttle.cpp
277     jogshuttleconfig.cpp
278   )
279 endif(BUILD_JogShuttle)
280
281 kde4_add_kcfg_files(kdenlive_SRCS kdenlivesettings.kcfgc)
282 qt4_add_dbus_adaptor(kdenlive_SRCS
283   org.kdenlive.MainWindow.xml
284   mainwindow.h
285   MainWindow
286 )
287 qt4_add_resources(kdenlive_SRCS widgets/resources.qrc)
288 kde4_add_executable(kdenlive
289   ${kdenlive_SRCS}
290   ${kdenlive_UIS}
291 )
292
293 # To compile kiss_fft.
294 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --std=c99")
295
296 # KDE definitions and include directories *must* always come first, Qt follows
297 # (to avoid breaking builds when KDE and/or Qt are installed to different
298 # prefixes).
299 add_definitions(${KDE4_DEFINITIONS})
300
301 include_directories(
302   ${CMAKE_BINARY_DIR}
303   ${KDE4_INCLUDES} # Adds Qt include directories too.
304   ${LIBMLT_INCLUDE_DIR}
305   ${LIBMLTPLUS_INCLUDE_DIR}
306 )
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   include_directories(${LIBV4L2_INCLUDE_DIR})
361   target_link_libraries(kdenlive ${LIBV4L2_LIBRARY})  
362   add_definitions(-DUSE_V4L)
363 endif(BUILD_V4L)
364
365 if(BUILD_JogShuttle)
366   add_definitions(-DUSE_JOGSHUTTLE)
367 endif(BUILD_JogShuttle)
368
369 install(TARGETS kdenlive DESTINATION ${BIN_INSTALL_DIR})
370 install(FILES
371   kdenliveui.rc
372   kdenlive.notifyrc
373   DESTINATION ${DATA_INSTALL_DIR}/kdenlive
374 )
375 install(FILES kdenlivesettings.kcfg DESTINATION ${KCFG_INSTALL_DIR})
376 install(FILES
377   kdenlive_projectprofiles.knsrc
378   kdenlive_renderprofiles.knsrc
379   kdenlive_titles.knsrc
380   kdenlive_wipes.knsrc
381   kdenlivetranscodingrc
382   DESTINATION ${CONFIG_INSTALL_DIR}
383 )
384 kde4_install_icons(${ICON_INSTALL_DIR})
385 install(FILES kdenlive.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})