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