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