]> git.sesse.net Git - kdenlive/blob - src/CMakeLists.txt
Get rid of all blackmagic stuff, we now get infos directly from MLT, no more compile...
[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 and for Freesound.org queries"
73 )
74
75
76 add_subdirectory(beziercurve)
77 add_subdirectory(colorcorrection)
78 add_subdirectory(commands)
79 add_subdirectory(projecttree)
80 add_subdirectory(utils)
81 add_subdirectory(databackup)
82 add_subdirectory(kiss_fft)
83 add_subdirectory(mimetypes)
84 add_subdirectory(onmonitoritems)
85 add_subdirectory(scopes)
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   archivewidget.cpp
107   choosecolorwidget.cpp
108   clipdurationdialog.cpp
109   clipitem.cpp
110   clipmanager.cpp
111   clipproperties.cpp
112   cliptranscode.cpp
113   clipstabilize.cpp
114   colorpickerwidget.cpp
115   colorplaneexport.cpp
116   colortools.cpp
117   complexparameter.cpp
118   cornerswidget.cpp
119   customruler.cpp
120   customtrackscene.cpp
121   customtrackview.cpp
122   docclipbase.cpp
123   documentchecker.cpp
124   documentvalidator.cpp
125   doubleparameterwidget.cpp
126   dragvalue.cpp
127   dvdwizard.cpp
128   dvdwizardchapters.cpp
129   dvdwizardmenu.cpp
130   dvdwizardvob.cpp
131   effectslist.cpp
132   effectslistview.cpp
133   effectslistwidget.cpp
134   effectstackedit.cpp
135   effectstackview.cpp
136   encodingprofilesdialog.cpp
137   folderprojectitem.cpp
138   gentime.cpp
139   geometryval.cpp
140   geometrywidget.cpp
141   graphicsscenerectmove.cpp
142   guide.cpp
143   headertrack.cpp
144   initeffects.cpp
145   kdenlivedoc.cpp
146   kdenlivesettingsdialog.cpp
147   keyframeedit.cpp
148   keyframehelper.cpp
149   kis_cubic_curve.cpp
150   kis_curve_widget.cpp
151   kthumb.cpp
152   managecapturesdialog.cpp
153   markerdialog.cpp
154   mltdevicecapture.cpp
155   monitor.cpp
156   monitoreditwidget.cpp
157   monitormanager.cpp
158   monitorscene.cpp
159   noteswidget.cpp
160   parameterplotter.cpp
161   positionedit.cpp
162   profilesdialog.cpp
163   projectitem.cpp
164   projectlist.cpp
165   projectlistview.cpp
166   projectsettings.cpp
167   recmonitor.cpp
168   renderer.cpp
169   renderwidget.cpp
170   slideshowclip.cpp
171   smallruler.cpp
172   spacerdialog.cpp
173   statusbarmessagelabel.cpp
174   subprojectitem.cpp
175   timecode.cpp
176   timecodedisplay.cpp
177   titledocument.cpp
178   titlewidget.cpp
179   trackdialog.cpp
180   tracksconfigdialog.cpp
181   trackview.cpp
182   transition.cpp
183   transitionsettings.cpp
184   unicodedialog.cpp
185   wizard.cpp
186 )
187
188 kde4_add_ui_files(kdenlive_UIS
189   widgets/addtrack_ui.ui
190   widgets/archivewidget_ui.ui
191   widgets/audiospectrum_ui.ui
192   widgets/backupdialog_ui.ui
193   widgets/bezierspline_ui.ui
194   widgets/boolval_ui.ui
195   widgets/clipdurationdialog_ui.ui
196   widgets/clipproperties_ui.ui
197   widgets/cliptranscode_ui.ui
198   widgets/clipstabilize_ui.ui
199   widgets/colorclip_ui.ui
200   widgets/colorplaneexport_ui.ui
201   widgets/configcapture_ui.ui
202   widgets/configenv_ui.ui
203   widgets/configjogshuttle_ui.ui
204   widgets/configmisc_ui.ui
205   widgets/configproject_ui.ui
206   widgets/configsdl_ui.ui
207   widgets/configtimeline_ui.ui
208   widgets/configtranscode_ui.ui
209   widgets/dvdwizardchapters_ui.ui
210   widgets/dvdwizardmenu_ui.ui
211   widgets/dvdwizardstatus_ui.ui
212   widgets/dvdwizardvob_ui.ui
213   widgets/effectlist_ui.ui
214   widgets/effectstack_ui.ui
215   widgets/freesound_ui.ui
216   widgets/geometryval_ui.ui
217   widgets/geometrywidget_ui.ui
218   widgets/histogram_ui.ui
219   widgets/keyframedialog_ui.ui
220   widgets/keyframeeditor_ui.ui
221   widgets/keyframewidget_ui.ui
222   widgets/listval_ui.ui
223   widgets/managecaptures_ui.ui
224   widgets/manageencodingprofile_ui.ui
225   widgets/markerdialog_ui.ui
226   widgets/missingclips_ui.ui
227   widgets/monitoreditwidget_ui.ui
228   widgets/profiledialog_ui.ui
229   widgets/projectsettings_ui.ui
230   widgets/recmonitor_ui.ui
231   widgets/renderwidget_ui.ui
232   widgets/rgbparade_ui.ui
233   widgets/saveprofile_ui.ui
234   widgets/slideshowclip_ui.ui
235   widgets/smconfig_ui.ui
236   widgets/spacerdialog_ui.ui
237   widgets/spectrogram_ui.ui
238   widgets/stopmotion_ui.ui
239   widgets/templateclip_ui.ui
240   widgets/timeline_ui.ui
241   widgets/timelinebuttons_ui.ui
242   widgets/titlewidget_ui.ui
243   widgets/trackheader_ui.ui
244   widgets/tracksconfigdialog_ui.ui
245   widgets/transitionsettings_ui.ui
246   widgets/unicodedialog_ui.ui
247   widgets/urlval_ui.ui
248   widgets/vectorscope_ui.ui
249   widgets/waveform_ui.ui
250   widgets/wipeval_ui.ui
251   widgets/wizardcapture_ui.ui
252   widgets/wizardcheck_ui.ui
253   widgets/wizardextra_ui.ui
254   widgets/wizardmltcheck_ui.ui
255   widgets/wizardstandard_ui.ui
256   widgets/keywordval_ui.ui
257   widgets/fontval_ui.ui
258   widgets/cutjobdialog_ui.ui
259 )
260
261 if(OPENGL_FOUND)
262   list(APPEND kdenlive_SRCS videoglwidget.cpp)
263 endif(OPENGL_FOUND)
264
265 if(BUILD_JogShuttle)
266   list(APPEND kdenlive_SRCS
267     jogaction.cpp
268     jogshuttle.cpp
269     jogshuttleconfig.cpp
270   )
271 endif(BUILD_JogShuttle)
272
273 kde4_add_kcfg_files(kdenlive_SRCS kdenlivesettings.kcfgc)
274 qt4_add_dbus_adaptor(kdenlive_SRCS
275   org.kdenlive.MainWindow.xml
276   mainwindow.h
277   MainWindow
278 )
279 qt4_add_resources(kdenlive_SRCS widgets/resources.qrc)
280 kde4_add_executable(kdenlive
281   ${kdenlive_SRCS}
282   ${kdenlive_UIS}
283 )
284
285 # To compile kiss_fft.
286 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --std=c99")
287
288 # KDE definitions and include directories *must* always come first, Qt follows
289 # (to avoid breaking builds when KDE and/or Qt are installed to different
290 # prefixes).
291 add_definitions(${KDE4_DEFINITIONS})
292
293 include_directories(
294   ${CMAKE_BINARY_DIR}
295   ${KDE4_INCLUDES} # Adds Qt include directories too.
296   ${LIBMLT_INCLUDE_DIR}
297   ${LIBMLTPLUS_INCLUDE_DIR}
298 )
299
300 # Adds Qt definitions and include directories, and sets QT_LIBRARIES according
301 # to the components requested in find_package().
302 include(${QT_USE_FILE})
303
304 if(${KDE_VERSION} VERSION_LESS 4.3.80)
305   set(KDE4_KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF2_LIBS})
306 else(${KDE_VERSION} VERSION_LESS 4.3.80)
307   set(KDE4_KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF3_LIBS})
308 endif(${KDE_VERSION} VERSION_LESS 4.3.80)
309
310 target_link_libraries(kdenlive
311   ${KDE4_KDEUI_LIBS}
312   ${KDE4_KIO_LIBS}
313   ${KDE4_KNEWSTUFF_LIBS}
314   ${KDE4_KNOTIFYCONFIG_LIBRARY}
315   ${KDE4_KROSSUI_LIBS}
316   ${KDE4_SOLID_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})