]> git.sesse.net Git - kdenlive/blob - src/CMakeLists.txt
rotoscoping: do only enable if qjson is found
[kdenlive] / src / CMakeLists.txt
1 add_subdirectory(beziercurve)
2 add_subdirectory(colorcorrection)
3 add_subdirectory(kiss_fft)
4 add_subdirectory(mimetypes)
5 add_subdirectory(onmonitoritems)
6 add_subdirectory(rotoscoping)
7 add_subdirectory(widgets)
8
9 macro_optional_find_package(Nepomuk)
10 macro_optional_find_package(QJSON)
11 include(FindQImageBlitz)
12
13
14 include_directories(
15   ${KDE4_INCLUDE_DIR}
16   ${KDE4_INCLUDE_DIR}/KDE
17   ${QT_INCLUDES}
18   ${LIBMLT_INCLUDE_DIR}
19   ${LIBMLTPLUS_INCLUDE_DIR}
20   ${QDBUS_INCLUDE_DIRS}
21   ${CMAKE_SOURCE_DIR}
22   ${CMAKE_BINARY_DIR}
23   ${CMAKE_SOURCE_DIR}/src/audioscopes
24   ${CMAKE_SOURCE_DIR}/src/beziercurve
25   ${CMAKE_SOURCE_DIR}/src/colorcorrection
26   ${CMAKE_SOURCE_DIR}/src/kiss_fft
27   ${CMAKE_SOURCE_DIR}/src/onmonitoritems
28   ${CMAKE_SOURCE_DIR}/src/onmonitoritems/rotoscoping
29   ${CMAKE_SOURCE_DIR}/src/widgets
30 )
31
32
33 if(Nepomuk_FOUND)
34   include_directories(NEPOMUK_INCLUDES)
35   set(optional_libs ${NEPOMUK_LIBRARIES})
36   add_definitions(-DNEPOMUK)
37 endif(Nepomuk_FOUND)
38
39 if(QIMAGEBLITZ_FOUND)
40   include_directories(QIMAGEBLITZ_INCLUDES)
41   set(optional_libs ${optional_libs} ${QIMAGEBLITZ_LIBRARIES})
42   add_definitions(-DQIMAGEBLITZ)
43   message(STATUS "Found QImageBlitz: ${QIMAGEBLITZ_LIBRARIES}")
44 else(QIMAGEBLITZ_FOUND)
45   message(STATUS "Install QImageBlitz devel package for improved stopmotion features")
46 endif(QIMAGEBLITZ_FOUND)
47
48 if(QJSON_FOUND)
49   include_directories(QJSON_INCLUDE_DIR)
50   set(optional_libs ${optional_libs} ${QJSON_LIBRARIES})
51   add_definitions(-DQJSON)
52 else(QJSON_FOUND)
53   message(STATUS "Install QJson to use the rotoscoping filter")
54 endif(QJSON_FOUND)
55
56 if(Q_WS_X11)
57   include_directories(${X11_Xlib_INCLUDE_PATH})
58 endif(Q_WS_X11)
59
60 if(APPLE)
61   find_package(OpenGL)
62   set(QT_USE_QTOPENGL TRUE)
63 else(APPLE)
64   macro_optional_find_package(OpenGL)
65 endif(APPLE)
66
67
68 link_libraries(
69   ${LIBMLT_LIBRARY}
70   ${LIBMLTPLUS_LIBRARY}
71   ${optional_libs}
72 )
73
74 kde4_add_ui_files(kdenlive_UI
75   widgets/timeline_ui.ui
76   widgets/recmonitor_ui.ui
77   widgets/colorclip_ui.ui
78   widgets/slideshowclip_ui.ui
79   widgets/configmisc_ui.ui
80   widgets/configenv_ui.ui
81   widgets/configtimeline_ui.ui
82   widgets/configsdl_ui.ui
83   widgets/configcapture_ui.ui
84   widgets/configtranscode_ui.ui
85   widgets/configproject_ui.ui
86   widgets/effectlist_ui.ui
87   widgets/effectstack_ui.ui
88   widgets/profiledialog_ui.ui
89   widgets/projectsettings_ui.ui
90   widgets/keyframewidget_ui.ui
91   widgets/listval_ui.ui
92   widgets/wipeval_ui.ui
93   widgets/boolval_ui.ui
94   widgets/titlewidget_ui.ui
95   widgets/unicodedialog_ui.ui
96   widgets/timelinebuttons_ui.ui
97   widgets/renderwidget_ui.ui
98   widgets/saveprofile_ui.ui
99   widgets/transitionsettings_ui.ui
100   widgets/configjogshuttle_ui.ui
101   widgets/trackheader_ui.ui
102   widgets/clipproperties_ui.ui
103   widgets/markerdialog_ui.ui
104   widgets/keyframedialog_ui.ui
105   widgets/clipdurationdialog_ui.ui
106   widgets/managecaptures_ui.ui
107   widgets/geometryval_ui.ui
108   widgets/wizardstandard_ui.ui
109   widgets/wizardextra_ui.ui
110   widgets/wizardcapture_ui.ui
111   widgets/wizardcheck_ui.ui
112   widgets/wizardmltcheck_ui.ui
113   widgets/spacerdialog_ui.ui
114   widgets/addtrack_ui.ui
115   widgets/dvdwizardvob_ui.ui
116   widgets/dvdwizardmenu_ui.ui
117   widgets/dvdwizardstatus_ui.ui
118   widgets/dvdwizardchapters_ui.ui
119   widgets/missingclips_ui.ui
120   widgets/cliptranscode_ui.ui
121   widgets/templateclip_ui.ui
122   widgets/keyframeeditor_ui.ui
123   widgets/timecodedisplay_ui.ui
124   widgets/tracksconfigdialog_ui.ui
125   widgets/urlval_ui.ui
126   widgets/vectorscope_ui.ui
127   widgets/colorplaneexport_ui.ui
128   widgets/waveform_ui.ui
129   widgets/rgbparade_ui.ui
130   widgets/histogram_ui.ui
131   widgets/geometrywidget_ui.ui
132   widgets/stopmotion_ui.ui
133   widgets/audiospectrum_ui.ui
134   widgets/spectrogram_ui.ui
135   widgets/smconfig_ui.ui
136   widgets/bezierspline_ui.ui
137   widgets/monitoreditwidget_ui.ui
138 )
139
140 set(kdenlive_SRCS
141   ${kdenlive_SRCS}
142   addclipcommand.cpp
143   main.cpp
144   mainwindow.cpp
145   customruler.cpp
146   smallruler.cpp
147   projectlist.cpp
148   projectitem.cpp
149   monitor.cpp
150   gentime.cpp
151   renderer.cpp
152   kdenlivedoc.cpp
153   projectlistview.cpp
154   trackview.cpp
155   docclipbase.cpp
156   timecode.cpp
157   monitormanager.cpp
158   headertrack.cpp
159   customtrackview.cpp
160   clipitem.cpp
161   moveclipcommand.cpp
162   resizeclipcommand.cpp
163   razorclipcommand.cpp
164   addtimelineclipcommand.cpp
165   addmarkercommand.cpp
166   kthumb.cpp
167   clipmanager.cpp
168   effectslist.cpp
169   initeffects.cpp
170   effectslistview.cpp
171   addeffectcommand.cpp
172   editeffectcommand.cpp
173   moveeffectcommand.cpp
174   effectstackview.cpp
175   effectstackedit.cpp
176   parameterplotter.cpp
177   profilesdialog.cpp
178   projectsettings.cpp
179   kdenlivesettingsdialog.cpp
180   complexparameter.cpp
181   titlewidget.cpp
182   unicodedialog.cpp
183   graphicsscenerectmove.cpp
184   effectslistwidget.cpp
185   titledocument.cpp
186   transition.cpp
187   renderwidget.cpp
188   abstractclipitem.cpp
189   transitionsettings.cpp
190   recmonitor.cpp
191   addtransitioncommand.cpp
192   edittransitioncommand.cpp
193   addfoldercommand.cpp
194   editfoldercommand.cpp
195   clipproperties.cpp
196   movetransitioncommand.cpp
197   slideshowclip.cpp
198   markerdialog.cpp
199   guide.cpp
200   editguidecommand.cpp
201   statusbarmessagelabel.cpp
202   editkeyframecommand.cpp
203   clipdurationdialog.cpp
204   managecapturesdialog.cpp
205   changespeedcommand.cpp
206   geometryval.cpp
207   wizard.cpp
208   customtrackscene.cpp
209   abstractgroupitem.cpp
210   keyframehelper.cpp
211   editclipcommand.cpp
212   insertspacecommand.cpp
213   spacerdialog.cpp
214   addtrackcommand.cpp
215   movegroupcommand.cpp
216   dvdwizardvob.cpp
217   dvdwizardmenu.cpp
218   dvdwizard.cpp
219   locktrackcommand.cpp
220   groupclipscommand.cpp
221   splitaudiocommand.cpp
222   changecliptypecommand.cpp
223   documentchecker.cpp
224   dvdwizardchapters.cpp
225   documentvalidator.cpp
226   cliptranscode.cpp
227   keyframeedit.cpp
228   positionedit.cpp
229   trackdialog.cpp
230   subprojectitem.cpp
231   folderprojectitem.cpp
232   addclipcutcommand.cpp
233   editclipcutcommand.cpp
234   KoSliderCombo.cpp
235   kis_cubic_curve.cpp
236   kis_curve_widget.cpp
237   timecodedisplay.cpp
238   tracksconfigdialog.cpp
239   configtrackscommand.cpp
240   abstractscopewidget.cpp
241   audioscopes/abstractaudioscopewidget.cpp
242   audioscopes/audiospectrum.cpp
243   audioscopes/spectrogram.cpp
244   audioscopes/ffttools.cpp
245   rebuildgroupcommand.cpp
246   colorscopes/abstractgfxscopewidget.cpp
247   colorscopes/histogram.cpp
248   colorscopes/rgbparade.cpp
249   colorscopes/vectorscope.cpp
250   colorscopes/waveform.cpp
251   colorplaneexport.cpp
252   colortools.cpp
253   colorcorrection/histogramgenerator.cpp
254   colorcorrection/rgbparadegenerator.cpp
255   colorcorrection/vectorscopegenerator.cpp
256   colorcorrection/waveformgenerator.cpp
257   razorgroupcommand.cpp
258   colorpickerwidget.cpp
259   choosecolorwidget.cpp
260   monitorscene.cpp
261   geometrywidget.cpp
262   doubleparameterwidget.cpp
263   audiosignal.cpp
264   blackmagic/include/DeckLinkAPIDispatch.cpp
265   stopmotion/stopmotion.cpp
266   stopmotion/capturehandler.cpp
267   blackmagic/capture.cpp
268   blackmagic/devices.cpp
269   onmonitoritems/onmonitorrectitem.cpp
270   onmonitoritems/onmonitorcornersitem.cpp
271   cornerswidget.cpp
272   kiss_fft/_kiss_fft_guts.h
273   kiss_fft/kiss_fft.c
274   kiss_fft/tools/kiss_fftr.c
275   beziercurve/beziersplineeditor.cpp
276   beziercurve/beziersplinewidget.cpp
277   beziercurve/bpoint.cpp
278   beziercurve/cubicbezierspline.cpp
279   dragvalue.cpp
280   monitoreditwidget.cpp
281 )
282
283 add_definitions(${KDE4_DEFINITIONS})
284
285 if(APPLE OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "NetBSD" OR NO_JOGSHUTTLE)
286   add_definitions(-DNO_JOGSHUTTLE)
287 else(APPLE OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "NetBSD" OR NO_JOGSHUTTLE)
288   set(kdenlive_SRCS jogshuttle.cpp jogaction.cpp jogshuttleconfig.cpp ${kdenlive_SRCS})
289 endif(APPLE OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "NetBSD" OR NO_JOGSHUTTLE)
290
291 if(APPLE OR OPENGL_FOUND)
292   add_definitions(-DUSE_OPEN_GL)
293   set(kdenlive_SRCS videoglwidget.cpp ${kdenlive_SRCS})
294 endif(APPLE OR OPENGL_FOUND)
295
296 if(NOT APPLE AND NOT CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
297   set(kdenlive_SRCS
298     ${kdenlive_SRCS}
299     v4l/v4lcapture.cpp
300     v4l/src.c
301     v4l/src_v4l2.c
302     v4l/dec_bayer.c
303     v4l/dec_grey.c
304     v4l/dec_jpeg.c
305     v4l/dec_rgb.c
306     v4l/dec_s561.c
307     v4l/dec_yuv.c
308   )
309 endif(NOT APPLE AND NOT CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
310
311 if(QJSON_FOUND)
312   set(kdenlive_SRCS
313     ${kdenlive_SRCS}
314     onmonitoritems/rotoscoping/bpointitem.cpp
315     onmonitoritems/rotoscoping/nearestpoint.cpp
316     onmonitoritems/rotoscoping/splineitem.cpp
317     rotoscoping/rotowidget.cpp
318   )
319 endif(QJSON_FOUND)
320
321 # Add libdl
322 find_library(DL_LIB NAMES ${CMAKE_DL_LIBS})
323 message(STATUS "using dl library: ${DL_LIB}")
324
325 kde4_add_kcfg_files(kdenlive_SRCS kdenlivesettings.kcfgc)
326 qt4_add_dbus_adaptor(kdenlive_SRCS org.kdenlive.MainWindow.xml mainwindow.h MainWindow)
327 kde4_add_executable(kdenlive ${kdenlive_SRCS} ${kdenlive_UI})
328
329 if(${KDE_VERSION} VERSION_LESS 4.3.80)
330   set(KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF2_LIBS})
331 else(${KDE_VERSION} VERSION_LESS 4.3.80)
332   set(KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF3_LIBS})
333 endif(${KDE_VERSION} VERSION_LESS 4.3.80)
334
335 target_link_libraries(kdenlive
336   ${KDE4_KDEUI_LIBS}
337   ${KDE4_KIO_LIBS}
338   ${KNEWSTUFF_LIBS}
339   ${LIBMLTPLUS_LIBRARY}
340   ${LIBMLT_LIBRARY}
341   ${optional_libs}
342   ${KDE4_KNOTIFYCONFIG_LIBRARY}
343   ${KDE4_KROSSUI_LIBS}
344   ${CMAKE_DL_LIBS}
345   ${CMAKE_THREAD_LIBS_INIT}
346 )
347
348 if(Q_WS_X11)
349   target_link_libraries(kdenlive ${X11_LIBRARIES})
350 endif(Q_WS_X11)
351
352 if(APPLE)
353   find_package(SDL REQUIRED)
354   target_link_libraries(kdenlive ${SDL_LIBRARY})
355   target_link_libraries(kdenlive ${QT_QTOPENGL_LIBRARY})
356   target_link_libraries(kdenlive ${OPENGL_LIBRARIES})
357 else(APPLE)
358   add_definitions(-DHAVE_V4L2)
359   if(OPENGL_FOUND)
360     target_link_libraries(kdenlive ${QT_QTOPENGL_LIBRARY})
361     target_link_libraries(kdenlive ${OPENGL_LIBRARIES})
362   endif(OPENGL_FOUND)
363 endif(APPLE)
364
365 install(TARGETS kdenlive DESTINATION ${BIN_INSTALL_DIR})
366 install(FILES kdenliveui.rc kdenlive.notifyrc DESTINATION ${DATA_INSTALL_DIR}/kdenlive)
367 install(FILES kdenlivesettings.kcfg DESTINATION ${KCFG_INSTALL_DIR})
368 install(FILES kdenlive.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
369 kde4_install_icons(${ICON_INSTALL_DIR})
370 install(FILES kdenlive_titles.knsrc kdenlive_wipes.knsrc kdenlive_renderprofiles.knsrc kdenlive_projectprofiles.knsrc kdenlivetranscodingrc DESTINATION ${CONFIG_INSTALL_DIR})
371 kde4_install_icons(${ICON_INSTALL_DIR})