]> git.sesse.net Git - kdenlive/blob - src/CMakeLists.txt
Rename WIDGETS folder into UI.
[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   ui/addtrack_ui.ui
198   ui/archivewidget_ui.ui
199   ui/audiospectrum_ui.ui
200   ui/backupdialog_ui.ui
201   ui/bezierspline_ui.ui
202   ui/boolval_ui.ui
203   ui/clipdurationdialog_ui.ui
204   ui/clipproperties_ui.ui
205   ui/cliptranscode_ui.ui
206   ui/collapsiblewidget_ui.ui
207   ui/clipstabilize_ui.ui
208   ui/colorclip_ui.ui
209   ui/colorplaneexport_ui.ui
210   ui/configcapture_ui.ui
211   ui/configenv_ui.ui
212   ui/configjogshuttle_ui.ui
213   ui/configmisc_ui.ui
214   ui/configproject_ui.ui
215   ui/configsdl_ui.ui
216   ui/configtimeline_ui.ui
217   ui/configtranscode_ui.ui
218   ui/dvdwizardchapters_ui.ui
219   ui/dvdwizardmenu_ui.ui
220   ui/dvdwizardstatus_ui.ui
221   ui/dvdwizardvob_ui.ui
222   ui/effectlist_ui.ui
223   ui/effectstack_ui.ui
224   ui/effectstack2_ui.ui
225   ui/freesound_ui.ui
226   ui/geometryval_ui.ui
227   ui/geometrywidget_ui.ui
228   ui/histogram_ui.ui
229   ui/keyframedialog_ui.ui
230   ui/keyframeeditor_ui.ui
231   ui/keyframewidget_ui.ui
232   ui/listval_ui.ui
233   ui/managecaptures_ui.ui
234   ui/manageencodingprofile_ui.ui
235   ui/markerdialog_ui.ui
236   ui/missingclips_ui.ui
237   ui/monitoreditwidget_ui.ui
238   ui/profiledialog_ui.ui
239   ui/projectsettings_ui.ui
240   ui/recmonitor_ui.ui
241   ui/renderwidget_ui.ui
242   ui/rgbparade_ui.ui
243   ui/saveprofile_ui.ui
244   ui/slideshowclip_ui.ui
245   ui/smconfig_ui.ui
246   ui/spacerdialog_ui.ui
247   ui/spectrogram_ui.ui
248   ui/stopmotion_ui.ui
249   ui/templateclip_ui.ui
250   ui/timeline_ui.ui
251   ui/timelinebuttons_ui.ui
252   ui/titlewidget_ui.ui
253   ui/trackheader_ui.ui
254   ui/tracksconfigdialog_ui.ui
255   ui/transitionsettings_ui.ui
256   ui/unicodewidget_ui.ui
257   ui/urlval_ui.ui
258   ui/vectorscope_ui.ui
259   ui/waveform_ui.ui
260   ui/wipeval_ui.ui
261   ui/wizardcapture_ui.ui
262   ui/wizardcheck_ui.ui
263   ui/wizardextra_ui.ui
264   ui/wizardmltcheck_ui.ui
265   ui/wizardstandard_ui.ui
266   ui/keywordval_ui.ui
267   ui/fontval_ui.ui
268   ui/cutjobdialog_ui.ui
269   ui/scenecutdialog_ui.ui
270   ui/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 ui/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})