]> git.sesse.net Git - kdenlive/blob - src/CMakeLists.txt
Auto-align works!
[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 option(WITH_BlackMagic "Build Blackmagic Decklinkl support" ON)
17
18 if(WITH_V4L)
19   # This can be changed to support FreeBSD as soon as we move to a newer V4L2
20   # header.
21   check_include_files(linux/ioctl.h HAVE_LINUX_IOCTL_H)
22   if(HAVE_LINUX_IOCTL_H)
23     set(BUILD_V4L TRUE)
24   endif(HAVE_LINUX_IOCTL_H)
25 endif(WITH_V4L)
26
27 if(WITH_JogShuttle)
28   check_include_files(linux/input.h HAVE_LINUX_INPUT_H)
29   if(HAVE_LINUX_INPUT_H)
30     set(BUILD_JogShuttle TRUE)
31   endif(HAVE_LINUX_INPUT_H)
32 endif(WITH_JogShuttle)
33
34 if(WITH_BlackMagic)
35     set(BUILD_BlackMagic TRUE)
36 endif(WITH_BlackMagic)
37
38 macro_log_feature(QT_QTOPENGL_FOUND
39   "QtOpenGL"
40   "Qt bindings for the OpenGL library"
41   "http://qt.nokia.com/products/qt"
42   TRUE
43   ${QT_MIN_VERSION}
44   "QtOpenGL library and headers (most likely called libqt4-opengl and libqt4-opengl-dev)"
45 )
46
47 macro_log_feature(QT_QTSCRIPT_FOUND
48   "QtScript"
49   "Qt module providing core scripting facilities"
50   "http://qt.nokia.com/products/qt"
51   TRUE
52   ${QT_MIN_VERSION}
53   "QtScript library (most likely called libqt4-script)"
54 )
55
56 if(APPLE)
57   macro_log_feature(SDL_FOUND
58     "SDL"
59     "Cross-platform multimedia library"
60     "http://www.libsdl.org"
61     TRUE
62   )
63 endif(APPLE)
64
65 macro_log_feature(Nepomuk_FOUND
66   "Nepomuk"
67   "Support for the Nepomuk semantic desktop system"
68   "http://nepomuk.semanticdesktop.org"
69 )
70
71 macro_log_feature(QJSON_FOUND
72   "QJson"
73   "Qt-based library that maps JSON data to QVariant objects"
74   "http://qjson.sourceforge.net"
75   FALSE
76   ""
77   "Required to build the rotoscoping filter and for Freesound.org queries"
78 )
79
80
81 add_subdirectory(audioscopes)
82 add_subdirectory(beziercurve)
83 add_subdirectory(colorcorrection)
84 add_subdirectory(colorscopes)
85 add_subdirectory(commands)
86 add_subdirectory(lib)
87 add_subdirectory(projecttree)
88 add_subdirectory(utils)
89 add_subdirectory(databackup)
90 add_subdirectory(kiss_fft)
91 add_subdirectory(mimetypes)
92 add_subdirectory(onmonitoritems)
93 add_subdirectory(simplekeyframes)
94 add_subdirectory(stopmotion)
95
96 if(QJSON_FOUND)
97   add_subdirectory(onmonitoritems/rotoscoping)
98   add_subdirectory(rotoscoping)
99 endif(QJSON_FOUND)
100
101 if(BUILD_V4L)
102   add_subdirectory(v4l)
103 endif(BUILD_V4L)
104
105 if(BUILD_BlackMagic)
106   add_subdirectory(blackmagic)
107 endif(BUILD_BlackMagic)
108
109 list(APPEND kdenlive_SRCS
110   main.cpp
111   mainwindow.cpp
112
113   KoSliderCombo.cpp
114   abstractclipitem.cpp
115   abstractgroupitem.cpp
116   abstractmonitor.cpp
117   abstractscopewidget.cpp
118   archivewidget.cpp
119   audiosignal.cpp
120   choosecolorwidget.cpp
121   clipdurationdialog.cpp
122   clipitem.cpp
123   clipmanager.cpp
124   clipproperties.cpp
125   cliptranscode.cpp
126   clipstabilize.cpp
127   colorpickerwidget.cpp
128   colorplaneexport.cpp
129   colortools.cpp
130   complexparameter.cpp
131   cornerswidget.cpp
132   customruler.cpp
133   customtrackscene.cpp
134   customtrackview.cpp
135   docclipbase.cpp
136   documentchecker.cpp
137   documentvalidator.cpp
138   doubleparameterwidget.cpp
139   dragvalue.cpp
140   dvdwizard.cpp
141   dvdwizardchapters.cpp
142   dvdwizardmenu.cpp
143   dvdwizardvob.cpp
144   effectslist.cpp
145   effectslistview.cpp
146   effectslistwidget.cpp
147   effectstackedit.cpp
148   effectstackview.cpp
149   encodingprofilesdialog.cpp
150   folderprojectitem.cpp
151   gentime.cpp
152   geometryval.cpp
153   geometrywidget.cpp
154   graphicsscenerectmove.cpp
155   guide.cpp
156   headertrack.cpp
157   initeffects.cpp
158   kdenlivedoc.cpp
159   kdenlivesettingsdialog.cpp
160   keyframeedit.cpp
161   keyframehelper.cpp
162   kis_cubic_curve.cpp
163   kis_curve_widget.cpp
164   kthumb.cpp
165   managecapturesdialog.cpp
166   markerdialog.cpp
167   mltdevicecapture.cpp
168   monitor.cpp
169   monitoreditwidget.cpp
170   monitormanager.cpp
171   monitorscene.cpp
172   noteswidget.cpp
173   parameterplotter.cpp
174   positionedit.cpp
175   profilesdialog.cpp
176   projectitem.cpp
177   projectlist.cpp
178   projectlistview.cpp
179   projectsettings.cpp
180   recmonitor.cpp
181   renderer.cpp
182   renderwidget.cpp
183   slideshowclip.cpp
184   smallruler.cpp
185   spacerdialog.cpp
186   statusbarmessagelabel.cpp
187   subprojectitem.cpp
188   timecode.cpp
189   timecodedisplay.cpp
190   titledocument.cpp
191   titlewidget.cpp
192   trackdialog.cpp
193   tracksconfigdialog.cpp
194   trackview.cpp
195   transition.cpp
196   transitionsettings.cpp
197   unicodedialog.cpp
198   wizard.cpp
199 )
200
201 kde4_add_ui_files(kdenlive_UIS
202   widgets/addtrack_ui.ui
203   widgets/archivewidget_ui.ui
204   widgets/audiospectrum_ui.ui
205   widgets/backupdialog_ui.ui
206   widgets/bezierspline_ui.ui
207   widgets/boolval_ui.ui
208   widgets/clipdurationdialog_ui.ui
209   widgets/clipproperties_ui.ui
210   widgets/cliptranscode_ui.ui
211   widgets/clipstabilize_ui.ui
212   widgets/colorclip_ui.ui
213   widgets/colorplaneexport_ui.ui
214   widgets/configcapture_ui.ui
215   widgets/configenv_ui.ui
216   widgets/configjogshuttle_ui.ui
217   widgets/configmisc_ui.ui
218   widgets/configproject_ui.ui
219   widgets/configsdl_ui.ui
220   widgets/configtimeline_ui.ui
221   widgets/configtranscode_ui.ui
222   widgets/dvdwizardchapters_ui.ui
223   widgets/dvdwizardmenu_ui.ui
224   widgets/dvdwizardstatus_ui.ui
225   widgets/dvdwizardvob_ui.ui
226   widgets/effectlist_ui.ui
227   widgets/effectstack_ui.ui
228   widgets/freesound_ui.ui
229   widgets/geometryval_ui.ui
230   widgets/geometrywidget_ui.ui
231   widgets/histogram_ui.ui
232   widgets/keyframedialog_ui.ui
233   widgets/keyframeeditor_ui.ui
234   widgets/keyframewidget_ui.ui
235   widgets/listval_ui.ui
236   widgets/managecaptures_ui.ui
237   widgets/manageencodingprofile_ui.ui
238   widgets/markerdialog_ui.ui
239   widgets/missingclips_ui.ui
240   widgets/monitoreditwidget_ui.ui
241   widgets/profiledialog_ui.ui
242   widgets/projectsettings_ui.ui
243   widgets/recmonitor_ui.ui
244   widgets/renderwidget_ui.ui
245   widgets/rgbparade_ui.ui
246   widgets/saveprofile_ui.ui
247   widgets/slideshowclip_ui.ui
248   widgets/smconfig_ui.ui
249   widgets/spacerdialog_ui.ui
250   widgets/spectrogram_ui.ui
251   widgets/stopmotion_ui.ui
252   widgets/templateclip_ui.ui
253   widgets/timeline_ui.ui
254   widgets/timelinebuttons_ui.ui
255   widgets/titlewidget_ui.ui
256   widgets/trackheader_ui.ui
257   widgets/tracksconfigdialog_ui.ui
258   widgets/transitionsettings_ui.ui
259   widgets/unicodedialog_ui.ui
260   widgets/urlval_ui.ui
261   widgets/vectorscope_ui.ui
262   widgets/waveform_ui.ui
263   widgets/wipeval_ui.ui
264   widgets/wizardcapture_ui.ui
265   widgets/wizardcheck_ui.ui
266   widgets/wizardextra_ui.ui
267   widgets/wizardmltcheck_ui.ui
268   widgets/wizardstandard_ui.ui
269   widgets/keywordval_ui.ui
270   widgets/fontval_ui.ui
271   widgets/cutjobdialog_ui.ui
272 )
273
274 if(OPENGL_FOUND)
275   list(APPEND kdenlive_SRCS videoglwidget.cpp)
276 endif(OPENGL_FOUND)
277
278 if(BUILD_JogShuttle)
279   list(APPEND kdenlive_SRCS
280     jogaction.cpp
281     jogshuttle.cpp
282     jogshuttleconfig.cpp
283   )
284 endif(BUILD_JogShuttle)
285
286 kde4_add_kcfg_files(kdenlive_SRCS kdenlivesettings.kcfgc)
287 qt4_add_dbus_adaptor(kdenlive_SRCS
288   org.kdenlive.MainWindow.xml
289   mainwindow.h
290   MainWindow
291 )
292 qt4_add_resources(kdenlive_SRCS widgets/resources.qrc)
293 kde4_add_executable(kdenlive
294   ${kdenlive_SRCS}
295   ${kdenlive_UIS}
296 )
297
298 # To compile kiss_fft.
299 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --std=c99")
300
301 # KDE definitions and include directories *must* always come first, Qt follows
302 # (to avoid breaking builds when KDE and/or Qt are installed to different
303 # prefixes).
304 add_definitions(${KDE4_DEFINITIONS})
305
306 include_directories(
307   ${CMAKE_BINARY_DIR}
308   ${KDE4_INCLUDES} # Adds Qt include directories too.
309   ${LIBMLT_INCLUDE_DIR}
310   ${LIBMLTPLUS_INCLUDE_DIR}
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(Nepomuk_FOUND)
352   add_definitions(-DUSE_NEPOMUK)
353   include_directories(${NEPOMUK_INCLUDES})
354   target_link_libraries(kdenlive ${NEPOMUK_LIBRARIES})
355 endif(Nepomuk_FOUND)
356
357 if(QJSON_FOUND)
358   add_definitions(-DUSE_QJSON)
359   include_directories(${QJSON_INCLUDE_DIR})
360   target_link_libraries(kdenlive ${QJSON_LIBRARIES})
361 endif(QJSON_FOUND)
362
363 if(BUILD_V4L)
364   add_definitions(-DUSE_V4L)
365 endif(BUILD_V4L)
366
367 if(BUILD_BlackMagic)
368   add_definitions(-DUSE_BLACKMAGIC)
369 endif(BUILD_BlackMagic)
370
371 if(BUILD_JogShuttle)
372   add_definitions(-DUSE_JOGSHUTTLE)
373 endif(BUILD_JogShuttle)
374
375 install(TARGETS kdenlive DESTINATION ${BIN_INSTALL_DIR})
376 install(FILES
377   kdenliveui.rc
378   kdenlive.notifyrc
379   DESTINATION ${DATA_INSTALL_DIR}/kdenlive
380 )
381 install(FILES kdenlivesettings.kcfg DESTINATION ${KCFG_INSTALL_DIR})
382 install(FILES
383   kdenlive_projectprofiles.knsrc
384   kdenlive_renderprofiles.knsrc
385   kdenlive_titles.knsrc
386   kdenlive_wipes.knsrc
387   kdenlivetranscodingrc
388   DESTINATION ${CONFIG_INSTALL_DIR}
389 )
390 kde4_install_icons(${ICON_INSTALL_DIR})
391 install(FILES kdenlive.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})