]> git.sesse.net Git - kdenlive/blob - src/CMakeLists.txt
Start implementing a generic clip job framework that can be used
[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(databackup)
83 add_subdirectory(kiss_fft)
84 add_subdirectory(mimetypes)
85 add_subdirectory(onmonitoritems)
86 add_subdirectory(simplekeyframes)
87 add_subdirectory(stopmotion)
88
89 if(QJSON_FOUND)
90   add_subdirectory(onmonitoritems/rotoscoping)
91   add_subdirectory(rotoscoping)
92 endif(QJSON_FOUND)
93
94 if(BUILD_V4L)
95   add_subdirectory(v4l)
96 endif(BUILD_V4L)
97
98 list(APPEND kdenlive_SRCS
99   main.cpp
100   mainwindow.cpp
101
102   KoSliderCombo.cpp
103   abstractclipitem.cpp
104   abstractgroupitem.cpp
105   abstractmonitor.cpp
106   abstractscopewidget.cpp
107   archivewidget.cpp
108   audiosignal.cpp
109   choosecolorwidget.cpp
110   clipdurationdialog.cpp
111   clipitem.cpp
112   clipmanager.cpp
113   clipproperties.cpp
114   cliptranscode.cpp
115   clipstabilize.cpp
116   colorpickerwidget.cpp
117   colorplaneexport.cpp
118   colortools.cpp
119   complexparameter.cpp
120   cornerswidget.cpp
121   customruler.cpp
122   customtrackscene.cpp
123   customtrackview.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/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/geometryval_ui.ui
218   widgets/geometrywidget_ui.ui
219   widgets/histogram_ui.ui
220   widgets/keyframedialog_ui.ui
221   widgets/keyframeeditor_ui.ui
222   widgets/keyframewidget_ui.ui
223   widgets/listval_ui.ui
224   widgets/managecaptures_ui.ui
225   widgets/manageencodingprofile_ui.ui
226   widgets/markerdialog_ui.ui
227   widgets/missingclips_ui.ui
228   widgets/monitoreditwidget_ui.ui
229   widgets/profiledialog_ui.ui
230   widgets/projectsettings_ui.ui
231   widgets/recmonitor_ui.ui
232   widgets/renderwidget_ui.ui
233   widgets/rgbparade_ui.ui
234   widgets/saveprofile_ui.ui
235   widgets/slideshowclip_ui.ui
236   widgets/smconfig_ui.ui
237   widgets/spacerdialog_ui.ui
238   widgets/spectrogram_ui.ui
239   widgets/stopmotion_ui.ui
240   widgets/templateclip_ui.ui
241   widgets/timeline_ui.ui
242   widgets/timelinebuttons_ui.ui
243   widgets/titlewidget_ui.ui
244   widgets/trackheader_ui.ui
245   widgets/tracksconfigdialog_ui.ui
246   widgets/transitionsettings_ui.ui
247   widgets/unicodedialog_ui.ui
248   widgets/urlval_ui.ui
249   widgets/vectorscope_ui.ui
250   widgets/waveform_ui.ui
251   widgets/wipeval_ui.ui
252   widgets/wizardcapture_ui.ui
253   widgets/wizardcheck_ui.ui
254   widgets/wizardextra_ui.ui
255   widgets/wizardmltcheck_ui.ui
256   widgets/wizardstandard_ui.ui
257   widgets/keywordval_ui.ui
258   widgets/fontval_ui.ui
259 )
260
261 if(OPENGL_FOUND)
262   list(APPEND kdenlive_SRCS videoglwidget.cpp)
263 endif(OPENGL_FOUND)
264
265 if(BUILD_JogShuttle)
266   list(APPEND kdenlive_SRCS
267     jogaction.cpp
268     jogshuttle.cpp
269     jogshuttleconfig.cpp
270   )
271 endif(BUILD_JogShuttle)
272
273 kde4_add_kcfg_files(kdenlive_SRCS kdenlivesettings.kcfgc)
274 qt4_add_dbus_adaptor(kdenlive_SRCS
275   org.kdenlive.MainWindow.xml
276   mainwindow.h
277   MainWindow
278 )
279 qt4_add_resources(kdenlive_SRCS widgets/resources.qrc)
280 kde4_add_executable(kdenlive
281   ${kdenlive_SRCS}
282   ${kdenlive_UIS}
283 )
284
285 # To compile kiss_fft.
286 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --std=c99")
287
288 # KDE definitions and include directories *must* always come first, Qt follows
289 # (to avoid breaking builds when KDE and/or Qt are installed to different
290 # prefixes).
291 add_definitions(${KDE4_DEFINITIONS})
292
293 include_directories(
294   ${CMAKE_BINARY_DIR}
295   ${KDE4_INCLUDES} # Adds Qt include directories too.
296   ${LIBMLT_INCLUDE_DIR}
297   ${LIBMLTPLUS_INCLUDE_DIR}
298 )
299
300 # Adds Qt definitions and include directories, and sets QT_LIBRARIES according
301 # to the components requested in find_package().
302 include(${QT_USE_FILE})
303
304 if(${KDE_VERSION} VERSION_LESS 4.3.80)
305   set(KDE4_KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF2_LIBS})
306 else(${KDE_VERSION} VERSION_LESS 4.3.80)
307   set(KDE4_KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF3_LIBS})
308 endif(${KDE_VERSION} VERSION_LESS 4.3.80)
309
310 target_link_libraries(kdenlive
311   ${KDE4_KDEUI_LIBS}
312   ${KDE4_KIO_LIBS}
313   ${KDE4_KNEWSTUFF_LIBS}
314   ${KDE4_KNOTIFYCONFIG_LIBRARY}
315   ${KDE4_KROSSUI_LIBS}
316   ${QT_LIBRARIES}
317   ${LIBMLT_LIBRARY}
318   ${LIBMLTPLUS_LIBRARY}
319   ${CMAKE_DL_LIBS}
320   ${CMAKE_THREAD_LIBS_INIT}
321 )
322
323 if(Q_WS_X11)
324   include_directories(${X11_Xlib_INCLUDE_PATH})
325   target_link_libraries(kdenlive ${X11_LIBRARIES})
326 endif(Q_WS_X11)
327
328 if(OPENGL_FOUND AND QT_QTOPENGL_FOUND)
329   add_definitions(-DUSE_OPENGL)
330   target_link_libraries(kdenlive ${OPENGL_LIBRARIES})
331 endif(OPENGL_FOUND AND QT_QTOPENGL_FOUND)
332
333 if(SDL_FOUND)
334   target_link_libraries(kdenlive ${SDL_LIBRARY})
335 endif(SDL_FOUND)
336
337 if(Nepomuk_FOUND)
338   add_definitions(-DUSE_NEPOMUK)
339   include_directories(${NEPOMUK_INCLUDES})
340   target_link_libraries(kdenlive ${NEPOMUK_LIBRARIES})
341 endif(Nepomuk_FOUND)
342
343 if(QJSON_FOUND)
344   add_definitions(-DUSE_QJSON)
345   include_directories(${QJSON_INCLUDE_DIR})
346   target_link_libraries(kdenlive ${QJSON_LIBRARIES})
347 endif(QJSON_FOUND)
348
349 if(BUILD_V4L)
350   add_definitions(-DUSE_V4L)
351 endif(BUILD_V4L)
352
353 if(BUILD_JogShuttle)
354   add_definitions(-DUSE_JOGSHUTTLE)
355 endif(BUILD_JogShuttle)
356
357 install(TARGETS kdenlive DESTINATION ${BIN_INSTALL_DIR})
358 install(FILES
359   kdenliveui.rc
360   kdenlive.notifyrc
361   DESTINATION ${DATA_INSTALL_DIR}/kdenlive
362 )
363 install(FILES kdenlivesettings.kcfg DESTINATION ${KCFG_INSTALL_DIR})
364 install(FILES
365   kdenlive_projectprofiles.knsrc
366   kdenlive_renderprofiles.knsrc
367   kdenlive_titles.knsrc
368   kdenlive_wipes.knsrc
369   kdenlivetranscodingrc
370   DESTINATION ${CONFIG_INSTALL_DIR}
371 )
372 kde4_install_icons(${ICON_INSTALL_DIR})
373 install(FILES kdenlive.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})