]> git.sesse.net Git - kdenlive/blob - src/CMakeLists.txt
931ad70478e47286d48e91598cf0c89c3184581b
[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 if(${KDE_VERSION} VERSION_LESS 4.3.80)
296   set(KDE4_KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF2_LIBS})
297 else(${KDE_VERSION} VERSION_LESS 4.3.80)
298   set(KDE4_KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF3_LIBS})
299 endif(${KDE_VERSION} VERSION_LESS 4.3.80)
300
301 target_link_libraries(kdenlive
302   ${KDE4_KDEUI_LIBS}
303   ${KDE4_KIO_LIBS}
304   ${KDE4_KNEWSTUFF_LIBS}
305   ${KDE4_KNOTIFYCONFIG_LIBRARY}
306   ${KDE4_KROSSUI_LIBS}
307   ${QT_LIBRARIES}
308   ${LIBMLT_LIBRARY}
309   ${LIBMLTPLUS_LIBRARY}
310   ${CMAKE_DL_LIBS}
311   ${CMAKE_THREAD_LIBS_INIT}
312 )
313
314 if(Q_WS_X11)
315   include_directories(${X11_Xlib_INCLUDE_PATH})
316   target_link_libraries(kdenlive ${X11_LIBRARIES})
317 endif(Q_WS_X11)
318
319 if(OPENGL_FOUND AND QT_QTOPENGL_FOUND)
320   add_definitions(-DUSE_OPENGL)
321   target_link_libraries(kdenlive ${OPENGL_LIBRARIES})
322 endif(OPENGL_FOUND AND QT_QTOPENGL_FOUND)
323
324 if(SDL_FOUND)
325   target_link_libraries(kdenlive ${SDL_LIBRARY})
326 endif(SDL_FOUND)
327
328 if(Nepomuk_FOUND)
329   add_definitions(-DUSE_NEPOMUK)
330   include_directories(${NEPOMUK_INCLUDES})
331   target_link_libraries(kdenlive ${NEPOMUK_LIBRARIES})
332 endif(Nepomuk_FOUND)
333
334 if(QJSON_FOUND)
335   add_definitions(-DUSE_QJSON)
336   include_directories(${QJSON_INCLUDE_DIR})
337   target_link_libraries(kdenlive ${QJSON_LIBRARIES})
338 endif(QJSON_FOUND)
339
340 if(BUILD_V4L)
341   add_definitions(-DUSE_V4L)
342 endif(BUILD_V4L)
343
344 if(BUILD_JogShuttle)
345   add_definitions(-DUSE_JOGSHUTTLE)
346 endif(BUILD_JogShuttle)
347
348 install(TARGETS kdenlive DESTINATION ${BIN_INSTALL_DIR})
349 install(FILES
350   kdenliveui.rc
351   kdenlive.notifyrc
352   DESTINATION ${DATA_INSTALL_DIR}/kdenlive
353 )
354 install(FILES kdenlivesettings.kcfg DESTINATION ${KCFG_INSTALL_DIR})
355 install(FILES
356   kdenlive_projectprofiles.knsrc
357   kdenlive_renderprofiles.knsrc
358   kdenlive_titles.knsrc
359   kdenlive_wipes.knsrc
360   kdenlivetranscodingrc
361   DESTINATION ${CONFIG_INSTALL_DIR}
362 )
363 kde4_install_icons(${ICON_INSTALL_DIR})
364 install(FILES kdenlive.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})