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