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