]> git.sesse.net Git - kdenlive/blob - src/CMakeLists.txt
jogshuttle: cmake files cleaned up a little bit
[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(OPENGL_FOUND)
262   list(APPEND kdenlive_SRCS widgets/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 ui/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   ${CMAKE_CURRENT_SOURCE_DIR}/lib/external 
299   ${CMAKE_CURRENT_SOURCE_DIR}/lib 
300 )
301
302
303 # Adds Qt definitions and include directories, and sets QT_LIBRARIES according
304 # to the components requested in find_package().
305 include(${QT_USE_FILE})
306
307 if(${KDE_VERSION} VERSION_LESS 4.3.80)
308   set(KDE4_KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF2_LIBS})
309 else(${KDE_VERSION} VERSION_LESS 4.3.80)
310   set(KDE4_KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF3_LIBS})
311 endif(${KDE_VERSION} VERSION_LESS 4.3.80)
312
313 target_link_libraries(kdenlive
314   ${KDE4_KDEUI_LIBS}
315   ${KDE4_KIO_LIBS}
316   ${KDE4_KNEWSTUFF_LIBS}
317   ${KDE4_KNOTIFYCONFIG_LIBRARY}
318   ${KDE4_KROSSUI_LIBS}
319   ${KDE4_SOLID_LIBS}
320   ${QT_LIBRARIES}
321   ${LIBMLT_LIBRARY}
322   ${LIBMLTPLUS_LIBRARY}
323   ${CMAKE_DL_LIBS}
324   ${CMAKE_THREAD_LIBS_INIT}
325   kiss_fft
326 )
327
328 if(Q_WS_X11)
329   include_directories(${X11_Xlib_INCLUDE_PATH})
330   target_link_libraries(kdenlive ${X11_LIBRARIES})
331 endif(Q_WS_X11)
332
333 if(OPENGL_FOUND AND QT_QTOPENGL_FOUND)
334   add_definitions(-DUSE_OPENGL)
335   target_link_libraries(kdenlive ${OPENGL_LIBRARIES})
336 endif(OPENGL_FOUND AND QT_QTOPENGL_FOUND)
337
338 if(SDL_FOUND)
339   target_link_libraries(kdenlive ${SDL_LIBRARY})
340 endif(SDL_FOUND)
341
342 if(NepomukCore_FOUND)
343     add_definitions(-DUSE_NEPOMUKCORE)
344     include_directories(${NEPOMUK_CORE_INCLUDE_DIR})
345     target_link_libraries(kdenlive ${NEPOMUK_CORE_LIBRARY})
346 else(NepomukWidgets_FOUND)
347   if(Nepomuk_FOUND)
348     add_definitions(-DUSE_NEPOMUK)
349     include_directories(${NEPOMUK_INCLUDES})
350     target_link_libraries(kdenlive ${NEPOMUK_LIBRARIES})
351   endif(Nepomuk_FOUND)
352 endif()
353
354 if(QJSON_FOUND)
355   add_definitions(-DUSE_QJSON)
356   include_directories(${QJSON_INCLUDE_DIR})
357   target_link_libraries(kdenlive ${QJSON_LIBRARIES})
358 endif(QJSON_FOUND)
359
360 if(BUILD_V4L)
361   include_directories(${LIBV4L2_INCLUDE_DIR})
362   target_link_libraries(kdenlive ${LIBV4L2_LIBRARY})  
363   add_definitions(-DUSE_V4L)
364 endif(BUILD_V4L)
365
366 if(BUILD_JogShuttle)
367   add_definitions(-DUSE_JOGSHUTTLE)
368   target_link_libraries(kdenlive
369     media_ctrl
370   )
371 endif(BUILD_JogShuttle)
372
373 install(TARGETS kdenlive DESTINATION ${BIN_INSTALL_DIR})
374 install(FILES
375   kdenliveui.rc
376   kdenlive.notifyrc
377   DESTINATION ${DATA_INSTALL_DIR}/kdenlive
378 )
379 install(FILES kdenlivesettings.kcfg DESTINATION ${KCFG_INSTALL_DIR})
380 install(FILES
381   kdenlive_projectprofiles.knsrc
382   kdenlive_renderprofiles.knsrc
383   kdenlive_titles.knsrc
384   kdenlive_wipes.knsrc
385   kdenlivetranscodingrc
386   DESTINATION ${CONFIG_INSTALL_DIR}
387 )
388 add_subdirectory(icons)
389 install(FILES kdenlive.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})