]> git.sesse.net Git - kdenlive/blob - src/CMakeLists.txt
Merge branch 'master' into audioAlign
[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(lib)
80 add_subdirectory(projecttree)
81 add_subdirectory(utils)
82 add_subdirectory(databackup)
83 add_subdirectory(effectstack)
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   definitions.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/collapsiblewidget_ui.ui
201   widgets/collapsiblegroup_ui.ui
202   widgets/clipstabilize_ui.ui
203   widgets/colorclip_ui.ui
204   widgets/colorplaneexport_ui.ui
205   widgets/configcapture_ui.ui
206   widgets/configenv_ui.ui
207   widgets/configjogshuttle_ui.ui
208   widgets/configmisc_ui.ui
209   widgets/configproject_ui.ui
210   widgets/configsdl_ui.ui
211   widgets/configtimeline_ui.ui
212   widgets/configtranscode_ui.ui
213   widgets/dvdwizardchapters_ui.ui
214   widgets/dvdwizardmenu_ui.ui
215   widgets/dvdwizardstatus_ui.ui
216   widgets/dvdwizardvob_ui.ui
217   widgets/effectlist_ui.ui
218   widgets/effectstack_ui.ui
219   widgets/effectstack2_ui.ui
220   widgets/freesound_ui.ui
221   widgets/geometryval_ui.ui
222   widgets/geometrywidget_ui.ui
223   widgets/histogram_ui.ui
224   widgets/keyframedialog_ui.ui
225   widgets/keyframeeditor_ui.ui
226   widgets/keyframewidget_ui.ui
227   widgets/listval_ui.ui
228   widgets/managecaptures_ui.ui
229   widgets/manageencodingprofile_ui.ui
230   widgets/markerdialog_ui.ui
231   widgets/missingclips_ui.ui
232   widgets/monitoreditwidget_ui.ui
233   widgets/profiledialog_ui.ui
234   widgets/projectsettings_ui.ui
235   widgets/recmonitor_ui.ui
236   widgets/renderwidget_ui.ui
237   widgets/rgbparade_ui.ui
238   widgets/saveprofile_ui.ui
239   widgets/slideshowclip_ui.ui
240   widgets/smconfig_ui.ui
241   widgets/spacerdialog_ui.ui
242   widgets/spectrogram_ui.ui
243   widgets/stopmotion_ui.ui
244   widgets/templateclip_ui.ui
245   widgets/timeline_ui.ui
246   widgets/timelinebuttons_ui.ui
247   widgets/titlewidget_ui.ui
248   widgets/trackheader_ui.ui
249   widgets/tracksconfigdialog_ui.ui
250   widgets/transitionsettings_ui.ui
251   widgets/unicodedialog_ui.ui
252   widgets/urlval_ui.ui
253   widgets/vectorscope_ui.ui
254   widgets/waveform_ui.ui
255   widgets/wipeval_ui.ui
256   widgets/wizardcapture_ui.ui
257   widgets/wizardcheck_ui.ui
258   widgets/wizardextra_ui.ui
259   widgets/wizardmltcheck_ui.ui
260   widgets/wizardstandard_ui.ui
261   widgets/keywordval_ui.ui
262   widgets/fontval_ui.ui
263   widgets/cutjobdialog_ui.ui
264 )
265
266 if(OPENGL_FOUND)
267   list(APPEND kdenlive_SRCS videoglwidget.cpp)
268 endif(OPENGL_FOUND)
269
270 if(BUILD_JogShuttle)
271   list(APPEND kdenlive_SRCS
272     jogaction.cpp
273     jogshuttle.cpp
274     jogshuttleconfig.cpp
275   )
276 endif(BUILD_JogShuttle)
277
278 kde4_add_kcfg_files(kdenlive_SRCS kdenlivesettings.kcfgc)
279 qt4_add_dbus_adaptor(kdenlive_SRCS
280   org.kdenlive.MainWindow.xml
281   mainwindow.h
282   MainWindow
283 )
284 qt4_add_resources(kdenlive_SRCS widgets/resources.qrc)
285 kde4_add_executable(kdenlive
286   ${kdenlive_SRCS}
287   ${kdenlive_UIS}
288 )
289
290 # To compile kiss_fft.
291 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --std=c99")
292
293 # KDE definitions and include directories *must* always come first, Qt follows
294 # (to avoid breaking builds when KDE and/or Qt are installed to different
295 # prefixes).
296 add_definitions(${KDE4_DEFINITIONS})
297
298 include_directories(
299   ${CMAKE_BINARY_DIR}
300   ${KDE4_INCLUDES} # Adds Qt include directories too.
301   ${LIBMLT_INCLUDE_DIR}
302   ${LIBMLTPLUS_INCLUDE_DIR}
303 )
304
305 # Adds Qt definitions and include directories, and sets QT_LIBRARIES according
306 # to the components requested in find_package().
307 include(${QT_USE_FILE})
308
309 if(${KDE_VERSION} VERSION_LESS 4.3.80)
310   set(KDE4_KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF2_LIBS})
311 else(${KDE_VERSION} VERSION_LESS 4.3.80)
312   set(KDE4_KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF3_LIBS})
313 endif(${KDE_VERSION} VERSION_LESS 4.3.80)
314
315 target_link_libraries(kdenlive
316   ${KDE4_KDEUI_LIBS}
317   ${KDE4_KIO_LIBS}
318   ${KDE4_KNEWSTUFF_LIBS}
319   ${KDE4_KNOTIFYCONFIG_LIBRARY}
320   ${KDE4_KROSSUI_LIBS}
321   ${KDE4_SOLID_LIBS}
322   ${QT_LIBRARIES}
323   ${LIBMLT_LIBRARY}
324   ${LIBMLTPLUS_LIBRARY}
325   ${CMAKE_DL_LIBS}
326   ${CMAKE_THREAD_LIBS_INIT}
327 )
328
329 if(Q_WS_X11)
330   include_directories(${X11_Xlib_INCLUDE_PATH})
331   target_link_libraries(kdenlive ${X11_LIBRARIES})
332 endif(Q_WS_X11)
333
334 if(OPENGL_FOUND AND QT_QTOPENGL_FOUND)
335   add_definitions(-DUSE_OPENGL)
336   target_link_libraries(kdenlive ${OPENGL_LIBRARIES})
337 endif(OPENGL_FOUND AND QT_QTOPENGL_FOUND)
338
339 if(SDL_FOUND)
340   target_link_libraries(kdenlive ${SDL_LIBRARY})
341 endif(SDL_FOUND)
342
343 if(Nepomuk_FOUND)
344   add_definitions(-DUSE_NEPOMUK)
345   include_directories(${NEPOMUK_INCLUDES})
346   target_link_libraries(kdenlive ${NEPOMUK_LIBRARIES})
347 endif(Nepomuk_FOUND)
348
349 if(QJSON_FOUND)
350   add_definitions(-DUSE_QJSON)
351   include_directories(${QJSON_INCLUDE_DIR})
352   target_link_libraries(kdenlive ${QJSON_LIBRARIES})
353 endif(QJSON_FOUND)
354
355 if(BUILD_V4L)
356   add_definitions(-DUSE_V4L)
357 endif(BUILD_V4L)
358
359 if(BUILD_JogShuttle)
360   add_definitions(-DUSE_JOGSHUTTLE)
361 endif(BUILD_JogShuttle)
362
363 install(TARGETS kdenlive DESTINATION ${BIN_INSTALL_DIR})
364 install(FILES
365   kdenliveui.rc
366   kdenlive.notifyrc
367   DESTINATION ${DATA_INSTALL_DIR}/kdenlive
368 )
369 install(FILES kdenlivesettings.kcfg DESTINATION ${KCFG_INSTALL_DIR})
370 install(FILES
371   kdenlive_projectprofiles.knsrc
372   kdenlive_renderprofiles.knsrc
373   kdenlive_titles.knsrc
374   kdenlive_wipes.knsrc
375   kdenlivetranscodingrc
376   DESTINATION ${CONFIG_INSTALL_DIR}
377 )
378 kde4_install_icons(${ICON_INSTALL_DIR})
379 install(FILES kdenlive.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})