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