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