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