]> git.sesse.net Git - kdenlive/blob - src/CMakeLists.txt
New feature: Archive project (in progress)
[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/tracksconfigdialog_ui.ui
124   widgets/urlval_ui.ui
125   widgets/vectorscope_ui.ui
126   widgets/colorplaneexport_ui.ui
127   widgets/waveform_ui.ui
128   widgets/rgbparade_ui.ui
129   widgets/histogram_ui.ui
130   widgets/geometrywidget_ui.ui
131   widgets/stopmotion_ui.ui
132   widgets/audiospectrum_ui.ui
133   widgets/spectrogram_ui.ui
134   widgets/smconfig_ui.ui
135   widgets/bezierspline_ui.ui
136   widgets/monitoreditwidget_ui.ui
137   widgets/archivewidget_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   simplekeyframes/simpletimelinewidget.cpp
282   simplekeyframes/simplekeyframewidget.cpp
283   noteswidget.cpp
284   archivewidget.cpp
285 )
286
287 add_definitions(${KDE4_DEFINITIONS})
288
289 if(APPLE OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "NetBSD" OR NO_JOGSHUTTLE)
290   add_definitions(-DNO_JOGSHUTTLE)
291 else(APPLE OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "NetBSD" OR NO_JOGSHUTTLE)
292   set(kdenlive_SRCS jogshuttle.cpp jogaction.cpp jogshuttleconfig.cpp ${kdenlive_SRCS})
293 endif(APPLE OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "NetBSD" OR NO_JOGSHUTTLE)
294
295 if(APPLE OR OPENGL_FOUND)
296   add_definitions(-DUSE_OPEN_GL)
297   set(kdenlive_SRCS videoglwidget.cpp ${kdenlive_SRCS})
298 endif(APPLE OR OPENGL_FOUND)
299
300 if(NOT APPLE AND NOT CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
301   set(kdenlive_SRCS
302     ${kdenlive_SRCS}
303     v4l/v4lcapture.cpp
304     v4l/src.c
305     v4l/src_v4l2.c
306     v4l/dec_bayer.c
307     v4l/dec_grey.c
308     v4l/dec_jpeg.c
309     v4l/dec_rgb.c
310     v4l/dec_s561.c
311     v4l/dec_yuv.c
312   )
313 endif(NOT APPLE AND NOT CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
314
315 if(QJSON_FOUND)
316   set(kdenlive_SRCS
317     ${kdenlive_SRCS}
318     onmonitoritems/rotoscoping/bpointitem.cpp
319     onmonitoritems/rotoscoping/nearestpoint.cpp
320     onmonitoritems/rotoscoping/splineitem.cpp
321     rotoscoping/rotowidget.cpp
322   )
323 endif(QJSON_FOUND)
324
325 # Add libdl
326 find_library(DL_LIB NAMES ${CMAKE_DL_LIBS})
327 message(STATUS "using dl library: ${DL_LIB}")
328
329 kde4_add_kcfg_files(kdenlive_SRCS kdenlivesettings.kcfgc)
330 qt4_add_dbus_adaptor(kdenlive_SRCS org.kdenlive.MainWindow.xml mainwindow.h MainWindow)
331 kde4_add_executable(kdenlive ${kdenlive_SRCS} ${kdenlive_UI})
332
333 if(${KDE_VERSION} VERSION_LESS 4.3.80)
334   set(KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF2_LIBS})
335 else(${KDE_VERSION} VERSION_LESS 4.3.80)
336   set(KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF3_LIBS})
337 endif(${KDE_VERSION} VERSION_LESS 4.3.80)
338
339 target_link_libraries(kdenlive
340   ${KDE4_KDEUI_LIBS}
341   ${KDE4_KIO_LIBS}
342   ${KNEWSTUFF_LIBS}
343   ${LIBMLTPLUS_LIBRARY}
344   ${LIBMLT_LIBRARY}
345   ${optional_libs}
346   ${KDE4_KNOTIFYCONFIG_LIBRARY}
347   ${KDE4_KROSSUI_LIBS}
348   ${CMAKE_DL_LIBS}
349   ${CMAKE_THREAD_LIBS_INIT}
350 )
351
352 if(Q_WS_X11)
353   target_link_libraries(kdenlive ${X11_LIBRARIES})
354 endif(Q_WS_X11)
355
356 if(APPLE)
357   find_package(SDL REQUIRED)
358   target_link_libraries(kdenlive ${SDL_LIBRARY})
359   target_link_libraries(kdenlive ${QT_QTOPENGL_LIBRARY})
360   target_link_libraries(kdenlive ${OPENGL_LIBRARIES})
361 else(APPLE)
362   add_definitions(-DHAVE_V4L2)
363   if(OPENGL_FOUND)
364     target_link_libraries(kdenlive ${QT_QTOPENGL_LIBRARY})
365     target_link_libraries(kdenlive ${OPENGL_LIBRARIES})
366   endif(OPENGL_FOUND)
367 endif(APPLE)
368
369 install(TARGETS kdenlive DESTINATION ${BIN_INSTALL_DIR})
370 install(FILES kdenliveui.rc kdenlive.notifyrc DESTINATION ${DATA_INSTALL_DIR}/kdenlive)
371 install(FILES kdenlivesettings.kcfg DESTINATION ${KCFG_INSTALL_DIR})
372 install(FILES kdenlive.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
373 kde4_install_icons(${ICON_INSTALL_DIR})
374 install(FILES kdenlive_titles.knsrc kdenlive_wipes.knsrc kdenlive_renderprofiles.knsrc kdenlive_projectprofiles.knsrc kdenlivetranscodingrc DESTINATION ${CONFIG_INSTALL_DIR})
375 kde4_install_icons(${ICON_INSTALL_DIR})