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