]> git.sesse.net Git - kdenlive/blob - src/CMakeLists.txt
Cleanup data processing framework
[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 )
267
268 if(OPENGL_FOUND)
269   list(APPEND kdenlive_SRCS videoglwidget.cpp)
270 endif(OPENGL_FOUND)
271
272 if(BUILD_JogShuttle)
273   list(APPEND kdenlive_SRCS
274     jogaction.cpp
275     jogshuttle.cpp
276     jogshuttleconfig.cpp
277   )
278 endif(BUILD_JogShuttle)
279
280 kde4_add_kcfg_files(kdenlive_SRCS kdenlivesettings.kcfgc)
281 qt4_add_dbus_adaptor(kdenlive_SRCS
282   org.kdenlive.MainWindow.xml
283   mainwindow.h
284   MainWindow
285 )
286 qt4_add_resources(kdenlive_SRCS widgets/resources.qrc)
287 kde4_add_executable(kdenlive
288   ${kdenlive_SRCS}
289   ${kdenlive_UIS}
290 )
291
292 # To compile kiss_fft.
293 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --std=c99")
294
295 # KDE definitions and include directories *must* always come first, Qt follows
296 # (to avoid breaking builds when KDE and/or Qt are installed to different
297 # prefixes).
298 add_definitions(${KDE4_DEFINITIONS})
299
300 include_directories(
301   ${CMAKE_BINARY_DIR}
302   ${KDE4_INCLUDES} # Adds Qt include directories too.
303   ${LIBMLT_INCLUDE_DIR}
304   ${LIBMLTPLUS_INCLUDE_DIR}
305 )
306
307
308 # Adds Qt definitions and include directories, and sets QT_LIBRARIES according
309 # to the components requested in find_package().
310 include(${QT_USE_FILE})
311
312 if(${KDE_VERSION} VERSION_LESS 4.3.80)
313   set(KDE4_KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF2_LIBS})
314 else(${KDE_VERSION} VERSION_LESS 4.3.80)
315   set(KDE4_KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF3_LIBS})
316 endif(${KDE_VERSION} VERSION_LESS 4.3.80)
317
318 target_link_libraries(kdenlive
319   ${KDE4_KDEUI_LIBS}
320   ${KDE4_KIO_LIBS}
321   ${KDE4_KNEWSTUFF_LIBS}
322   ${KDE4_KNOTIFYCONFIG_LIBRARY}
323   ${KDE4_KROSSUI_LIBS}
324   ${KDE4_SOLID_LIBS}
325   ${QT_LIBRARIES}
326   ${LIBMLT_LIBRARY}
327   ${LIBMLTPLUS_LIBRARY}
328   ${CMAKE_DL_LIBS}
329   ${CMAKE_THREAD_LIBS_INIT}
330 )
331
332 if(Q_WS_X11)
333   include_directories(${X11_Xlib_INCLUDE_PATH})
334   target_link_libraries(kdenlive ${X11_LIBRARIES})
335 endif(Q_WS_X11)
336
337 if(OPENGL_FOUND AND QT_QTOPENGL_FOUND)
338   add_definitions(-DUSE_OPENGL)
339   target_link_libraries(kdenlive ${OPENGL_LIBRARIES})
340 endif(OPENGL_FOUND AND QT_QTOPENGL_FOUND)
341
342 if(SDL_FOUND)
343   target_link_libraries(kdenlive ${SDL_LIBRARY})
344 endif(SDL_FOUND)
345
346 if(Nepomuk_FOUND)
347   add_definitions(-DUSE_NEPOMUK)
348   include_directories(${NEPOMUK_INCLUDES})
349   target_link_libraries(kdenlive ${NEPOMUK_LIBRARIES})
350 endif(Nepomuk_FOUND)
351
352 if(QJSON_FOUND)
353   add_definitions(-DUSE_QJSON)
354   include_directories(${QJSON_INCLUDE_DIR})
355   target_link_libraries(kdenlive ${QJSON_LIBRARIES})
356 endif(QJSON_FOUND)
357
358 if(BUILD_V4L)
359   include_directories(${LIBV4L2_INCLUDE_DIR})
360   target_link_libraries(kdenlive ${LIBV4L2_LIBRARY})  
361   add_definitions(-DUSE_V4L)
362 endif(BUILD_V4L)
363
364 if(BUILD_JogShuttle)
365   add_definitions(-DUSE_JOGSHUTTLE)
366 endif(BUILD_JogShuttle)
367
368 install(TARGETS kdenlive DESTINATION ${BIN_INSTALL_DIR})
369 install(FILES
370   kdenliveui.rc
371   kdenlive.notifyrc
372   DESTINATION ${DATA_INSTALL_DIR}/kdenlive
373 )
374 install(FILES kdenlivesettings.kcfg DESTINATION ${KCFG_INSTALL_DIR})
375 install(FILES
376   kdenlive_projectprofiles.knsrc
377   kdenlive_renderprofiles.knsrc
378   kdenlive_titles.knsrc
379   kdenlive_wipes.knsrc
380   kdenlivetranscodingrc
381   DESTINATION ${CONFIG_INSTALL_DIR}
382 )
383 kde4_install_icons(${ICON_INSTALL_DIR})
384 install(FILES kdenlive.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})