]> git.sesse.net Git - kdenlive/blob - src/CMakeLists.txt
Merge branch 'master' into effectstack
[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(effectstack)
83 add_subdirectory(kiss_fft)
84 add_subdirectory(mimetypes)
85 add_subdirectory(onmonitoritems)
86 add_subdirectory(scopes)
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   archivewidget.cpp
108   choosecolorwidget.cpp
109   clipdurationdialog.cpp
110   clipitem.cpp
111   clipmanager.cpp
112   clipproperties.cpp
113   cliptranscode.cpp
114   clipstabilize.cpp
115   colorpickerwidget.cpp
116   colorplaneexport.cpp
117   colortools.cpp
118   complexparameter.cpp
119   cornerswidget.cpp
120   customruler.cpp
121   customtrackscene.cpp
122   customtrackview.cpp
123   docclipbase.cpp
124   documentchecker.cpp
125   documentvalidator.cpp
126   doubleparameterwidget.cpp
127   dragvalue.cpp
128   dvdwizard.cpp
129   dvdwizardchapters.cpp
130   dvdwizardmenu.cpp
131   dvdwizardvob.cpp
132   effectslist.cpp
133   effectslistview.cpp
134   effectslistwidget.cpp
135   effectstackedit.cpp
136   effectstackview.cpp
137   encodingprofilesdialog.cpp
138   folderprojectitem.cpp
139   gentime.cpp
140   geometryval.cpp
141   geometrywidget.cpp
142   graphicsscenerectmove.cpp
143   guide.cpp
144   headertrack.cpp
145   initeffects.cpp
146   kdenlivedoc.cpp
147   kdenlivesettingsdialog.cpp
148   keyframeedit.cpp
149   keyframehelper.cpp
150   kis_cubic_curve.cpp
151   kis_curve_widget.cpp
152   kthumb.cpp
153   managecapturesdialog.cpp
154   markerdialog.cpp
155   mltdevicecapture.cpp
156   monitor.cpp
157   monitoreditwidget.cpp
158   monitormanager.cpp
159   monitorscene.cpp
160   noteswidget.cpp
161   parameterplotter.cpp
162   positionedit.cpp
163   profilesdialog.cpp
164   projectitem.cpp
165   projectlist.cpp
166   projectlistview.cpp
167   projectsettings.cpp
168   recmonitor.cpp
169   renderer.cpp
170   renderwidget.cpp
171   slideshowclip.cpp
172   smallruler.cpp
173   spacerdialog.cpp
174   statusbarmessagelabel.cpp
175   subprojectitem.cpp
176   timecode.cpp
177   timecodedisplay.cpp
178   titledocument.cpp
179   titlewidget.cpp
180   trackdialog.cpp
181   tracksconfigdialog.cpp
182   trackview.cpp
183   transition.cpp
184   transitionsettings.cpp
185   unicodedialog.cpp
186   wizard.cpp
187 )
188
189 kde4_add_ui_files(kdenlive_UIS
190   widgets/addtrack_ui.ui
191   widgets/archivewidget_ui.ui
192   widgets/audiospectrum_ui.ui
193   widgets/backupdialog_ui.ui
194   widgets/bezierspline_ui.ui
195   widgets/boolval_ui.ui
196   widgets/clipdurationdialog_ui.ui
197   widgets/clipproperties_ui.ui
198   widgets/cliptranscode_ui.ui
199   widgets/collapsiblewidget_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/effectstack2_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   ${KDE4_SOLID_LIBS}
320   ${QT_LIBRARIES}
321   ${LIBMLT_LIBRARY}
322   ${LIBMLTPLUS_LIBRARY}
323   ${CMAKE_DL_LIBS}
324   ${CMAKE_THREAD_LIBS_INIT}
325 )
326
327 if(Q_WS_X11)
328   include_directories(${X11_Xlib_INCLUDE_PATH})
329   target_link_libraries(kdenlive ${X11_LIBRARIES})
330 endif(Q_WS_X11)
331
332 if(OPENGL_FOUND AND QT_QTOPENGL_FOUND)
333   add_definitions(-DUSE_OPENGL)
334   target_link_libraries(kdenlive ${OPENGL_LIBRARIES})
335 endif(OPENGL_FOUND AND QT_QTOPENGL_FOUND)
336
337 if(SDL_FOUND)
338   target_link_libraries(kdenlive ${SDL_LIBRARY})
339 endif(SDL_FOUND)
340
341 if(Nepomuk_FOUND)
342   add_definitions(-DUSE_NEPOMUK)
343   include_directories(${NEPOMUK_INCLUDES})
344   target_link_libraries(kdenlive ${NEPOMUK_LIBRARIES})
345 endif(Nepomuk_FOUND)
346
347 if(QJSON_FOUND)
348   add_definitions(-DUSE_QJSON)
349   include_directories(${QJSON_INCLUDE_DIR})
350   target_link_libraries(kdenlive ${QJSON_LIBRARIES})
351 endif(QJSON_FOUND)
352
353 if(BUILD_V4L)
354   add_definitions(-DUSE_V4L)
355 endif(BUILD_V4L)
356
357 if(BUILD_JogShuttle)
358   add_definitions(-DUSE_JOGSHUTTLE)
359 endif(BUILD_JogShuttle)
360
361 install(TARGETS kdenlive DESTINATION ${BIN_INSTALL_DIR})
362 install(FILES
363   kdenliveui.rc
364   kdenlive.notifyrc
365   DESTINATION ${DATA_INSTALL_DIR}/kdenlive
366 )
367 install(FILES kdenlivesettings.kcfg DESTINATION ${KCFG_INSTALL_DIR})
368 install(FILES
369   kdenlive_projectprofiles.knsrc
370   kdenlive_renderprofiles.knsrc
371   kdenlive_titles.knsrc
372   kdenlive_wipes.knsrc
373   kdenlivetranscodingrc
374   DESTINATION ${CONFIG_INSTALL_DIR}
375 )
376 kde4_install_icons(${ICON_INSTALL_DIR})
377 install(FILES kdenlive.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})