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