]> git.sesse.net Git - kdenlive/blob - src/CMakeLists.txt
Freesound.org integration (in progress)
[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(utils)
83 add_subdirectory(databackup)
84 add_subdirectory(kiss_fft)
85 add_subdirectory(mimetypes)
86 add_subdirectory(onmonitoritems)
87 add_subdirectory(simplekeyframes)
88 add_subdirectory(stopmotion)
89
90 if(QJSON_FOUND)
91   add_subdirectory(onmonitoritems/rotoscoping)
92   add_subdirectory(rotoscoping)
93 endif(QJSON_FOUND)
94
95 if(BUILD_V4L)
96   add_subdirectory(v4l)
97 endif(BUILD_V4L)
98
99 list(APPEND kdenlive_SRCS
100   main.cpp
101   mainwindow.cpp
102
103   KoSliderCombo.cpp
104   abstractclipitem.cpp
105   abstractgroupitem.cpp
106   abstractmonitor.cpp
107   abstractscopewidget.cpp
108   archivewidget.cpp
109   audiosignal.cpp
110   choosecolorwidget.cpp
111   clipdurationdialog.cpp
112   clipitem.cpp
113   clipmanager.cpp
114   clipproperties.cpp
115   cliptranscode.cpp
116   clipstabilize.cpp
117   colorpickerwidget.cpp
118   colorplaneexport.cpp
119   colortools.cpp
120   complexparameter.cpp
121   cornerswidget.cpp
122   customruler.cpp
123   customtrackscene.cpp
124   customtrackview.cpp
125   docclipbase.cpp
126   documentchecker.cpp
127   documentvalidator.cpp
128   doubleparameterwidget.cpp
129   dragvalue.cpp
130   dvdwizard.cpp
131   dvdwizardchapters.cpp
132   dvdwizardmenu.cpp
133   dvdwizardvob.cpp
134   effectslist.cpp
135   effectslistview.cpp
136   effectslistwidget.cpp
137   effectstackedit.cpp
138   effectstackview.cpp
139   encodingprofilesdialog.cpp
140   folderprojectitem.cpp
141   gentime.cpp
142   geometryval.cpp
143   geometrywidget.cpp
144   graphicsscenerectmove.cpp
145   guide.cpp
146   headertrack.cpp
147   initeffects.cpp
148   kdenlivedoc.cpp
149   kdenlivesettingsdialog.cpp
150   keyframeedit.cpp
151   keyframehelper.cpp
152   kis_cubic_curve.cpp
153   kis_curve_widget.cpp
154   kthumb.cpp
155   managecapturesdialog.cpp
156   markerdialog.cpp
157   mltdevicecapture.cpp
158   monitor.cpp
159   monitoreditwidget.cpp
160   monitormanager.cpp
161   monitorscene.cpp
162   noteswidget.cpp
163   parameterplotter.cpp
164   positionedit.cpp
165   profilesdialog.cpp
166   projectitem.cpp
167   projectlist.cpp
168   projectlistview.cpp
169   projectsettings.cpp
170   recmonitor.cpp
171   renderer.cpp
172   renderwidget.cpp
173   slideshowclip.cpp
174   smallruler.cpp
175   spacerdialog.cpp
176   statusbarmessagelabel.cpp
177   subprojectitem.cpp
178   timecode.cpp
179   timecodedisplay.cpp
180   titledocument.cpp
181   titlewidget.cpp
182   trackdialog.cpp
183   tracksconfigdialog.cpp
184   trackview.cpp
185   transition.cpp
186   transitionsettings.cpp
187   unicodedialog.cpp
188   wizard.cpp
189 )
190
191 kde4_add_ui_files(kdenlive_UIS
192   widgets/addtrack_ui.ui
193   widgets/archivewidget_ui.ui
194   widgets/audiospectrum_ui.ui
195   widgets/backupdialog_ui.ui
196   widgets/bezierspline_ui.ui
197   widgets/boolval_ui.ui
198   widgets/clipdurationdialog_ui.ui
199   widgets/clipproperties_ui.ui
200   widgets/cliptranscode_ui.ui
201   widgets/clipstabilize_ui.ui
202   widgets/colorclip_ui.ui
203   widgets/colorplaneexport_ui.ui
204   widgets/configcapture_ui.ui
205   widgets/configenv_ui.ui
206   widgets/configjogshuttle_ui.ui
207   widgets/configmisc_ui.ui
208   widgets/configproject_ui.ui
209   widgets/configsdl_ui.ui
210   widgets/configtimeline_ui.ui
211   widgets/configtranscode_ui.ui
212   widgets/dvdwizardchapters_ui.ui
213   widgets/dvdwizardmenu_ui.ui
214   widgets/dvdwizardstatus_ui.ui
215   widgets/dvdwizardvob_ui.ui
216   widgets/effectlist_ui.ui
217   widgets/effectstack_ui.ui
218   widgets/freesound_ui.ui
219   widgets/geometryval_ui.ui
220   widgets/geometrywidget_ui.ui
221   widgets/histogram_ui.ui
222   widgets/keyframedialog_ui.ui
223   widgets/keyframeeditor_ui.ui
224   widgets/keyframewidget_ui.ui
225   widgets/listval_ui.ui
226   widgets/managecaptures_ui.ui
227   widgets/manageencodingprofile_ui.ui
228   widgets/markerdialog_ui.ui
229   widgets/missingclips_ui.ui
230   widgets/monitoreditwidget_ui.ui
231   widgets/profiledialog_ui.ui
232   widgets/projectsettings_ui.ui
233   widgets/recmonitor_ui.ui
234   widgets/renderwidget_ui.ui
235   widgets/rgbparade_ui.ui
236   widgets/saveprofile_ui.ui
237   widgets/slideshowclip_ui.ui
238   widgets/smconfig_ui.ui
239   widgets/spacerdialog_ui.ui
240   widgets/spectrogram_ui.ui
241   widgets/stopmotion_ui.ui
242   widgets/templateclip_ui.ui
243   widgets/timeline_ui.ui
244   widgets/timelinebuttons_ui.ui
245   widgets/titlewidget_ui.ui
246   widgets/trackheader_ui.ui
247   widgets/tracksconfigdialog_ui.ui
248   widgets/transitionsettings_ui.ui
249   widgets/unicodedialog_ui.ui
250   widgets/urlval_ui.ui
251   widgets/vectorscope_ui.ui
252   widgets/waveform_ui.ui
253   widgets/wipeval_ui.ui
254   widgets/wizardcapture_ui.ui
255   widgets/wizardcheck_ui.ui
256   widgets/wizardextra_ui.ui
257   widgets/wizardmltcheck_ui.ui
258   widgets/wizardstandard_ui.ui
259   widgets/keywordval_ui.ui
260   widgets/fontval_ui.ui
261   widgets/cutjobdialog_ui.ui
262 )
263
264 if(OPENGL_FOUND)
265   list(APPEND kdenlive_SRCS videoglwidget.cpp)
266 endif(OPENGL_FOUND)
267
268 if(BUILD_JogShuttle)
269   list(APPEND kdenlive_SRCS
270     jogaction.cpp
271     jogshuttle.cpp
272     jogshuttleconfig.cpp
273   )
274 endif(BUILD_JogShuttle)
275
276 kde4_add_kcfg_files(kdenlive_SRCS kdenlivesettings.kcfgc)
277 qt4_add_dbus_adaptor(kdenlive_SRCS
278   org.kdenlive.MainWindow.xml
279   mainwindow.h
280   MainWindow
281 )
282 qt4_add_resources(kdenlive_SRCS widgets/resources.qrc)
283 kde4_add_executable(kdenlive
284   ${kdenlive_SRCS}
285   ${kdenlive_UIS}
286 )
287
288 # To compile kiss_fft.
289 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --std=c99")
290
291 # KDE definitions and include directories *must* always come first, Qt follows
292 # (to avoid breaking builds when KDE and/or Qt are installed to different
293 # prefixes).
294 add_definitions(${KDE4_DEFINITIONS})
295
296 include_directories(
297   ${CMAKE_BINARY_DIR}
298   ${KDE4_INCLUDES} # Adds Qt include directories too.
299   ${LIBMLT_INCLUDE_DIR}
300   ${LIBMLTPLUS_INCLUDE_DIR}
301 )
302
303 # Adds Qt definitions and include directories, and sets QT_LIBRARIES according
304 # to the components requested in find_package().
305 include(${QT_USE_FILE})
306
307 if(${KDE_VERSION} VERSION_LESS 4.3.80)
308   set(KDE4_KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF2_LIBS})
309 else(${KDE_VERSION} VERSION_LESS 4.3.80)
310   set(KDE4_KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF3_LIBS})
311 endif(${KDE_VERSION} VERSION_LESS 4.3.80)
312
313 target_link_libraries(kdenlive
314   ${KDE4_KDEUI_LIBS}
315   ${KDE4_KIO_LIBS}
316   ${KDE4_KNEWSTUFF_LIBS}
317   ${KDE4_KNOTIFYCONFIG_LIBRARY}
318   ${KDE4_KROSSUI_LIBS}
319   ${QT_LIBRARIES}
320   ${LIBMLT_LIBRARY}
321   ${LIBMLTPLUS_LIBRARY}
322   ${CMAKE_DL_LIBS}
323   ${CMAKE_THREAD_LIBS_INIT}
324 )
325
326 if(Q_WS_X11)
327   include_directories(${X11_Xlib_INCLUDE_PATH})
328   target_link_libraries(kdenlive ${X11_LIBRARIES})
329 endif(Q_WS_X11)
330
331 if(OPENGL_FOUND AND QT_QTOPENGL_FOUND)
332   add_definitions(-DUSE_OPENGL)
333   target_link_libraries(kdenlive ${OPENGL_LIBRARIES})
334 endif(OPENGL_FOUND AND QT_QTOPENGL_FOUND)
335
336 if(SDL_FOUND)
337   target_link_libraries(kdenlive ${SDL_LIBRARY})
338 endif(SDL_FOUND)
339
340 if(Nepomuk_FOUND)
341   add_definitions(-DUSE_NEPOMUK)
342   include_directories(${NEPOMUK_INCLUDES})
343   target_link_libraries(kdenlive ${NEPOMUK_LIBRARIES})
344 endif(Nepomuk_FOUND)
345
346 if(QJSON_FOUND)
347   add_definitions(-DUSE_QJSON)
348   include_directories(${QJSON_INCLUDE_DIR})
349   target_link_libraries(kdenlive ${QJSON_LIBRARIES})
350 endif(QJSON_FOUND)
351
352 if(BUILD_V4L)
353   add_definitions(-DUSE_V4L)
354 endif(BUILD_V4L)
355
356 if(BUILD_JogShuttle)
357   add_definitions(-DUSE_JOGSHUTTLE)
358 endif(BUILD_JogShuttle)
359
360 install(TARGETS kdenlive DESTINATION ${BIN_INSTALL_DIR})
361 install(FILES
362   kdenliveui.rc
363   kdenlive.notifyrc
364   DESTINATION ${DATA_INSTALL_DIR}/kdenlive
365 )
366 install(FILES kdenlivesettings.kcfg DESTINATION ${KCFG_INSTALL_DIR})
367 install(FILES
368   kdenlive_projectprofiles.knsrc
369   kdenlive_renderprofiles.knsrc
370   kdenlive_titles.knsrc
371   kdenlive_wipes.knsrc
372   kdenlivetranscodingrc
373   DESTINATION ${CONFIG_INSTALL_DIR}
374 )
375 kde4_install_icons(${ICON_INSTALL_DIR})
376 install(FILES kdenlive.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})