]> git.sesse.net Git - kdenlive/blob - src/CMakeLists.txt
ProjectList cleaningh
[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   abstractmonitor.cpp
115   archivewidget.cpp
116   choosecolorwidget.cpp
117   clipdurationdialog.cpp
118   clipitem.cpp
119   clipmanager.cpp
120   clipproperties.cpp
121   cliptranscode.cpp
122   clipstabilize.cpp
123   colorpickerwidget.cpp
124   colorplaneexport.cpp
125   colortools.cpp
126   complexparameter.cpp
127   cornerswidget.cpp
128   customruler.cpp
129   customtrackscene.cpp
130   customtrackview.cpp
131   definitions.cpp
132   docclipbase.cpp
133   documentchecker.cpp
134   documentvalidator.cpp
135   doubleparameterwidget.cpp
136   dragvalue.cpp
137   dvdwizard.cpp
138   dvdwizardchapters.cpp
139   dvdwizardmenu.cpp
140   dvdwizardvob.cpp
141   effectslist.cpp
142   effectslistview.cpp
143   effectslistwidget.cpp
144   effectstackedit.cpp
145   encodingprofilesdialog.cpp
146   folderprojectitem.cpp
147   gentime.cpp
148   geometryval.cpp
149   geometrywidget.cpp
150   graphicsscenerectmove.cpp
151   guide.cpp
152   headertrack.cpp
153   initeffects.cpp
154   kdenlivedoc.cpp
155   kdenlivesettingsdialog.cpp
156   keyframeedit.cpp
157   keyframehelper.cpp
158   kis_cubic_curve.cpp
159   kis_curve_widget.cpp
160   kthumb.cpp
161   managecapturesdialog.cpp
162   markerdialog.cpp
163   mltdevicecapture.cpp
164   monitor.cpp
165   monitoreditwidget.cpp
166   monitormanager.cpp
167   monitorscene.cpp
168   noteswidget.cpp
169   parameterplotter.cpp
170   positionedit.cpp
171   profilesdialog.cpp
172   projectitem.cpp
173   projectlist.cpp
174   projectlistview.cpp
175   projectsettings.cpp
176   recmonitor.cpp
177   renderer.cpp
178   renderwidget.cpp
179   slideshowclip.cpp
180   smallruler.cpp
181   spacerdialog.cpp
182   statusbarmessagelabel.cpp
183   subprojectitem.cpp
184   timecode.cpp
185   timecodedisplay.cpp
186   titledocument.cpp
187   titlewidget.cpp
188   trackdialog.cpp
189   tracksconfigdialog.cpp
190   trackview.cpp
191   transition.cpp
192   transitionsettings.cpp
193   unicodedialog.cpp
194   wizard.cpp
195 )
196
197 kde4_add_ui_files(kdenlive_UIS
198   ui/addtrack_ui.ui
199   ui/archivewidget_ui.ui
200   ui/audiospectrum_ui.ui
201   ui/backupdialog_ui.ui
202   ui/bezierspline_ui.ui
203   ui/boolval_ui.ui
204   ui/clipdurationdialog_ui.ui
205   ui/clipproperties_ui.ui
206   ui/cliptranscode_ui.ui
207   ui/collapsiblewidget_ui.ui
208   ui/clipstabilize_ui.ui
209   ui/colorclip_ui.ui
210   ui/colorplaneexport_ui.ui
211   ui/configcapture_ui.ui
212   ui/configenv_ui.ui
213   ui/configjogshuttle_ui.ui
214   ui/configmisc_ui.ui
215   ui/configproject_ui.ui
216   ui/configsdl_ui.ui
217   ui/configtimeline_ui.ui
218   ui/configtranscode_ui.ui
219   ui/dvdwizardchapters_ui.ui
220   ui/dvdwizardmenu_ui.ui
221   ui/dvdwizardstatus_ui.ui
222   ui/dvdwizardvob_ui.ui
223   ui/effectlist_ui.ui
224   ui/effectstack_ui.ui
225   ui/effectstack2_ui.ui
226   ui/freesound_ui.ui
227   ui/geometryval_ui.ui
228   ui/geometrywidget_ui.ui
229   ui/histogram_ui.ui
230   ui/keyframedialog_ui.ui
231   ui/keyframeeditor_ui.ui
232   ui/keyframewidget_ui.ui
233   ui/listval_ui.ui
234   ui/managecaptures_ui.ui
235   ui/manageencodingprofile_ui.ui
236   ui/markerdialog_ui.ui
237   ui/missingclips_ui.ui
238   ui/monitoreditwidget_ui.ui
239   ui/profiledialog_ui.ui
240   ui/projectsettings_ui.ui
241   ui/recmonitor_ui.ui
242   ui/renderwidget_ui.ui
243   ui/rgbparade_ui.ui
244   ui/saveprofile_ui.ui
245   ui/slideshowclip_ui.ui
246   ui/smconfig_ui.ui
247   ui/spacerdialog_ui.ui
248   ui/spectrogram_ui.ui
249   ui/stopmotion_ui.ui
250   ui/templateclip_ui.ui
251   ui/timeline_ui.ui
252   ui/timelinebuttons_ui.ui
253   ui/titlewidget_ui.ui
254   ui/trackheader_ui.ui
255   ui/tracksconfigdialog_ui.ui
256   ui/transitionsettings_ui.ui
257   ui/unicodewidget_ui.ui
258   ui/urlval_ui.ui
259   ui/vectorscope_ui.ui
260   ui/waveform_ui.ui
261   ui/wipeval_ui.ui
262   ui/wizardcapture_ui.ui
263   ui/wizardcheck_ui.ui
264   ui/wizardextra_ui.ui
265   ui/wizardmltcheck_ui.ui
266   ui/wizardstandard_ui.ui
267   ui/keywordval_ui.ui
268   ui/fontval_ui.ui
269   ui/cutjobdialog_ui.ui
270   ui/scenecutdialog_ui.ui
271   ui/importkeyframesdialog_ui.ui
272 )
273
274 if(OPENGL_FOUND)
275   list(APPEND kdenlive_SRCS videoglwidget.cpp)
276 endif(OPENGL_FOUND)
277
278 if(BUILD_JogShuttle)
279   list(APPEND kdenlive_SRCS
280     jogaction.cpp
281     jogshuttle.cpp
282     jogshuttleconfig.cpp
283   )
284 endif(BUILD_JogShuttle)
285
286 kde4_add_kcfg_files(kdenlive_SRCS kdenlivesettings.kcfgc)
287 qt4_add_dbus_adaptor(kdenlive_SRCS
288   org.kdenlive.MainWindow.xml
289   mainwindow.h
290   MainWindow
291 )
292 qt4_add_resources(kdenlive_SRCS ui/resources.qrc)
293 kde4_add_executable(kdenlive
294   ${kdenlive_SRCS}
295   ${kdenlive_UIS}
296 )
297
298 # To compile kiss_fft.
299 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --std=c99")
300
301 # KDE definitions and include directories *must* always come first, Qt follows
302 # (to avoid breaking builds when KDE and/or Qt are installed to different
303 # prefixes).
304 add_definitions(${KDE4_DEFINITIONS})
305
306 include_directories(
307   ${CMAKE_BINARY_DIR}
308   ${KDE4_INCLUDES} # Adds Qt include directories too.
309   ${LIBMLT_INCLUDE_DIR}
310   ${LIBMLTPLUS_INCLUDE_DIR}
311 )
312
313
314 # Adds Qt definitions and include directories, and sets QT_LIBRARIES according
315 # to the components requested in find_package().
316 include(${QT_USE_FILE})
317
318 if(${KDE_VERSION} VERSION_LESS 4.3.80)
319   set(KDE4_KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF2_LIBS})
320 else(${KDE_VERSION} VERSION_LESS 4.3.80)
321   set(KDE4_KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF3_LIBS})
322 endif(${KDE_VERSION} VERSION_LESS 4.3.80)
323
324 target_link_libraries(kdenlive
325   ${KDE4_KDEUI_LIBS}
326   ${KDE4_KIO_LIBS}
327   ${KDE4_KNEWSTUFF_LIBS}
328   ${KDE4_KNOTIFYCONFIG_LIBRARY}
329   ${KDE4_KROSSUI_LIBS}
330   ${KDE4_SOLID_LIBS}
331   ${QT_LIBRARIES}
332   ${LIBMLT_LIBRARY}
333   ${LIBMLTPLUS_LIBRARY}
334   ${CMAKE_DL_LIBS}
335   ${CMAKE_THREAD_LIBS_INIT}
336 )
337
338 if(Q_WS_X11)
339   include_directories(${X11_Xlib_INCLUDE_PATH})
340   target_link_libraries(kdenlive ${X11_LIBRARIES})
341 endif(Q_WS_X11)
342
343 if(OPENGL_FOUND AND QT_QTOPENGL_FOUND)
344   add_definitions(-DUSE_OPENGL)
345   target_link_libraries(kdenlive ${OPENGL_LIBRARIES})
346 endif(OPENGL_FOUND AND QT_QTOPENGL_FOUND)
347
348 if(SDL_FOUND)
349   target_link_libraries(kdenlive ${SDL_LIBRARY})
350 endif(SDL_FOUND)
351
352 if(NepomukCore_FOUND)
353     add_definitions(-DUSE_NEPOMUKCORE)
354     include_directories(${NEPOMUK_CORE_INCLUDE_DIR})
355     target_link_libraries(kdenlive ${NEPOMUK_CORE_LIBRARY})
356 else(NepomukWidgets_FOUND)
357   if(Nepomuk_FOUND)
358     add_definitions(-DUSE_NEPOMUK)
359     include_directories(${NEPOMUK_INCLUDES})
360     target_link_libraries(kdenlive ${NEPOMUK_LIBRARIES})
361   endif(Nepomuk_FOUND)
362 endif()
363
364 if(QJSON_FOUND)
365   add_definitions(-DUSE_QJSON)
366   include_directories(${QJSON_INCLUDE_DIR})
367   target_link_libraries(kdenlive ${QJSON_LIBRARIES})
368 endif(QJSON_FOUND)
369
370 if(BUILD_V4L)
371   include_directories(${LIBV4L2_INCLUDE_DIR})
372   target_link_libraries(kdenlive ${LIBV4L2_LIBRARY})  
373   add_definitions(-DUSE_V4L)
374 endif(BUILD_V4L)
375
376 if(BUILD_JogShuttle)
377   add_definitions(-DUSE_JOGSHUTTLE)
378 endif(BUILD_JogShuttle)
379
380 install(TARGETS kdenlive DESTINATION ${BIN_INSTALL_DIR})
381 install(FILES
382   kdenliveui.rc
383   kdenlive.notifyrc
384   DESTINATION ${DATA_INSTALL_DIR}/kdenlive
385 )
386 install(FILES kdenlivesettings.kcfg DESTINATION ${KCFG_INSTALL_DIR})
387 install(FILES
388   kdenlive_projectprofiles.knsrc
389   kdenlive_renderprofiles.knsrc
390   kdenlive_titles.knsrc
391   kdenlive_wipes.knsrc
392   kdenlivetranscodingrc
393   DESTINATION ${CONFIG_INSTALL_DIR}
394 )
395 add_subdirectory(icons)
396 install(FILES kdenlive.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})