]> git.sesse.net Git - kdenlive/blob - src/CMakeLists.txt
Reorganize and cleanup build structure
[kdenlive] / src / CMakeLists.txt
1 macro_optional_find_package(Nepomuk)
2 macro_optional_find_package(QJSON)
3
4 add_subdirectory(audioscopes)
5 add_subdirectory(beziercurve)
6 add_subdirectory(blackmagic)
7 add_subdirectory(colorcorrection)
8 add_subdirectory(colorscopes)
9 add_subdirectory(commands)
10 add_subdirectory(databackup)
11 add_subdirectory(kiss_fft)
12 add_subdirectory(mimetypes)
13 add_subdirectory(onmonitoritems)
14 add_subdirectory(simplekeyframes)
15 add_subdirectory(stopmotion)
16
17 if(QJSON_FOUND)
18   add_subdirectory(rotoscoping)
19   add_subdirectory(onmonitoritems/rotoscoping)
20   include_directories(QJSON_INCLUDE_DIR)
21   set(optional_libs ${optional_libs} ${QJSON_LIBRARIES})
22   add_definitions(-DQJSON)
23 else(QJSON_FOUND)
24   message(STATUS "Install QJson to use the rotoscoping filter")
25 endif(QJSON_FOUND)
26
27 if(NOT APPLE AND NOT CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" AND NOT CMAKE_SYSTEM_NAME STREQUAL "GNU/kFreeBSD")
28   add_subdirectory(v4l)
29 endif(NOT APPLE AND NOT CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" AND NOT CMAKE_SYSTEM_NAME STREQUAL "GNU/kFreeBSD")
30
31 include_directories(
32   ${KDE4_INCLUDE_DIR}
33   ${KDE4_INCLUDE_DIR}/KDE
34   ${QT_INCLUDES}
35   ${LIBMLT_INCLUDE_DIR}
36   ${LIBMLTPLUS_INCLUDE_DIR}
37   ${QDBUS_INCLUDE_DIRS}
38   ${CMAKE_CURRENT_BINARY_DIR}
39   ${CMAKE_BINARY_DIR}
40 )
41
42 if(Nepomuk_FOUND)
43   include_directories(NEPOMUK_INCLUDES)
44   set(optional_libs ${optional_libs} ${NEPOMUK_LIBRARIES})
45   add_definitions(-DNEPOMUK)
46 endif(Nepomuk_FOUND)
47
48 if(Q_WS_X11)
49   include_directories(${X11_Xlib_INCLUDE_PATH})
50 endif(Q_WS_X11)
51
52 if(APPLE)
53   find_package(OpenGL)
54   set(QT_USE_QTOPENGL TRUE)
55 else(APPLE)
56   macro_optional_find_package(OpenGL)
57 endif(APPLE)
58
59
60 link_libraries(
61   ${LIBMLT_LIBRARY}
62   ${LIBMLTPLUS_LIBRARY}
63   ${optional_libs}
64 )
65
66 kde4_add_ui_files(kdenlive_UI
67   widgets/timeline_ui.ui
68   widgets/recmonitor_ui.ui
69   widgets/colorclip_ui.ui
70   widgets/slideshowclip_ui.ui
71   widgets/configmisc_ui.ui
72   widgets/configenv_ui.ui
73   widgets/configtimeline_ui.ui
74   widgets/configsdl_ui.ui
75   widgets/configcapture_ui.ui
76   widgets/configtranscode_ui.ui
77   widgets/configproject_ui.ui
78   widgets/effectlist_ui.ui
79   widgets/effectstack_ui.ui
80   widgets/profiledialog_ui.ui
81   widgets/projectsettings_ui.ui
82   widgets/keyframewidget_ui.ui
83   widgets/listval_ui.ui
84   widgets/wipeval_ui.ui
85   widgets/boolval_ui.ui
86   widgets/titlewidget_ui.ui
87   widgets/unicodedialog_ui.ui
88   widgets/timelinebuttons_ui.ui
89   widgets/renderwidget_ui.ui
90   widgets/saveprofile_ui.ui
91   widgets/transitionsettings_ui.ui
92   widgets/configjogshuttle_ui.ui
93   widgets/trackheader_ui.ui
94   widgets/clipproperties_ui.ui
95   widgets/markerdialog_ui.ui
96   widgets/keyframedialog_ui.ui
97   widgets/clipdurationdialog_ui.ui
98   widgets/managecaptures_ui.ui
99   widgets/geometryval_ui.ui
100   widgets/wizardstandard_ui.ui
101   widgets/wizardextra_ui.ui
102   widgets/wizardcapture_ui.ui
103   widgets/wizardcheck_ui.ui
104   widgets/wizardmltcheck_ui.ui
105   widgets/spacerdialog_ui.ui
106   widgets/addtrack_ui.ui
107   widgets/dvdwizardvob_ui.ui
108   widgets/dvdwizardmenu_ui.ui
109   widgets/dvdwizardstatus_ui.ui
110   widgets/dvdwizardchapters_ui.ui
111   widgets/missingclips_ui.ui
112   widgets/cliptranscode_ui.ui
113   widgets/templateclip_ui.ui
114   widgets/keyframeeditor_ui.ui
115   widgets/tracksconfigdialog_ui.ui
116   widgets/urlval_ui.ui
117   widgets/vectorscope_ui.ui
118   widgets/colorplaneexport_ui.ui
119   widgets/waveform_ui.ui
120   widgets/rgbparade_ui.ui
121   widgets/histogram_ui.ui
122   widgets/geometrywidget_ui.ui
123   widgets/stopmotion_ui.ui
124   widgets/audiospectrum_ui.ui
125   widgets/spectrogram_ui.ui
126   widgets/smconfig_ui.ui
127   widgets/bezierspline_ui.ui
128   widgets/monitoreditwidget_ui.ui
129   widgets/archivewidget_ui.ui
130   widgets/manageencodingprofile_ui.ui
131   widgets/backupdialog_ui.ui
132 )
133
134 set(kdenlive_SRCS
135   ${kdenlive_SRCS}
136   main.cpp
137   mainwindow.cpp
138   customruler.cpp
139   smallruler.cpp
140   projectlist.cpp
141   projectitem.cpp
142   monitor.cpp
143   gentime.cpp
144   renderer.cpp
145   kdenlivedoc.cpp
146   projectlistview.cpp
147   trackview.cpp
148   docclipbase.cpp
149   timecode.cpp
150   monitormanager.cpp
151   headertrack.cpp
152   customtrackview.cpp
153   clipitem.cpp
154   kthumb.cpp
155   clipmanager.cpp
156   effectslist.cpp
157   initeffects.cpp
158   effectslistview.cpp
159   effectstackview.cpp
160   effectstackedit.cpp
161   parameterplotter.cpp
162   profilesdialog.cpp
163   projectsettings.cpp
164   kdenlivesettingsdialog.cpp
165   complexparameter.cpp
166   titlewidget.cpp
167   unicodedialog.cpp
168   graphicsscenerectmove.cpp
169   effectslistwidget.cpp
170   titledocument.cpp
171   transition.cpp
172   renderwidget.cpp
173   abstractclipitem.cpp
174   transitionsettings.cpp
175   recmonitor.cpp
176   clipproperties.cpp
177   slideshowclip.cpp
178   markerdialog.cpp
179   guide.cpp
180   statusbarmessagelabel.cpp
181   clipdurationdialog.cpp
182   managecapturesdialog.cpp
183   geometryval.cpp
184   wizard.cpp
185   customtrackscene.cpp
186   abstractgroupitem.cpp
187   keyframehelper.cpp
188   spacerdialog.cpp
189   dvdwizardvob.cpp
190   dvdwizardmenu.cpp
191   dvdwizard.cpp
192   documentchecker.cpp
193   dvdwizardchapters.cpp
194   documentvalidator.cpp
195   cliptranscode.cpp
196   keyframeedit.cpp
197   positionedit.cpp
198   trackdialog.cpp
199   subprojectitem.cpp
200   folderprojectitem.cpp
201   KoSliderCombo.cpp
202   kis_cubic_curve.cpp
203   kis_curve_widget.cpp
204   timecodedisplay.cpp
205   tracksconfigdialog.cpp
206   abstractscopewidget.cpp
207   colorplaneexport.cpp
208   colortools.cpp
209   colorpickerwidget.cpp
210   choosecolorwidget.cpp
211   monitorscene.cpp
212   geometrywidget.cpp
213   doubleparameterwidget.cpp
214   audiosignal.cpp
215   cornerswidget.cpp
216   dragvalue.cpp
217   monitoreditwidget.cpp
218   noteswidget.cpp
219   archivewidget.cpp
220   mltdevicecapture.cpp
221   abstractmonitor.cpp
222   encodingprofilesdialog.cpp
223 )
224
225 add_definitions(${KDE4_DEFINITIONS})
226
227 if(CMAKE_SYSTEM_NAME STREQUAL "GNU/kFreeBSD")
228   add_definitions(-DQ_OS_KFREEBSD)
229 endif(CMAKE_SYSTEM_NAME STREQUAL "GNU/kFreeBSD")
230
231 if(APPLE OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "NetBSD" OR CMAKE_SYSTEM_NAME STREQUAL "GNU/kFreeBSD" OR NO_JOGSHUTTLE)
232   add_definitions(-DNO_JOGSHUTTLE)
233 else(APPLE OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "NetBSD" OR CMAKE_SYSTEM_NAME STREQUAL "GNU/kFreeBSD" OR NO_JOGSHUTTLE)
234   set(kdenlive_SRCS jogshuttle.cpp jogaction.cpp jogshuttleconfig.cpp ${kdenlive_SRCS})
235 endif(APPLE OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "NetBSD" OR CMAKE_SYSTEM_NAME STREQUAL "GNU/kFreeBSD" OR NO_JOGSHUTTLE)
236
237 if(APPLE OR OPENGL_FOUND)
238   add_definitions(-DUSE_OPEN_GL)
239   set(kdenlive_SRCS videoglwidget.cpp ${kdenlive_SRCS})
240 endif(APPLE OR OPENGL_FOUND)
241
242 # Add libdl
243 find_library(DL_LIB NAMES ${CMAKE_DL_LIBS})
244 message(STATUS "using dl library: ${DL_LIB}")
245
246 kde4_add_kcfg_files(kdenlive_SRCS kdenlivesettings.kcfgc)
247 qt4_add_dbus_adaptor(kdenlive_SRCS org.kdenlive.MainWindow.xml mainwindow.h MainWindow)
248 qt4_add_resources(kdenlive_SRCS widgets/resources.qrc)
249 kde4_add_executable(kdenlive ${kdenlive_SRCS} ${kdenlive_UI})
250
251 set(KNEWSTUFF_LIBS ${KDE4_KNEWSTUFF3_LIBS})
252
253 target_link_libraries(kdenlive
254   ${KDE4_KDEUI_LIBS}
255   ${KDE4_KIO_LIBS}
256   ${KNEWSTUFF_LIBS}
257   ${LIBMLTPLUS_LIBRARY}
258   ${LIBMLT_LIBRARY}
259   ${optional_libs}
260   ${KDE4_KNOTIFYCONFIG_LIBRARY}
261   ${KDE4_KROSSUI_LIBS}
262   ${CMAKE_DL_LIBS}
263   ${CMAKE_THREAD_LIBS_INIT}
264   ${QT_QTSCRIPT_LIBRARY}
265 )
266
267 if(Q_WS_X11)
268   target_link_libraries(kdenlive ${X11_LIBRARIES})
269 endif(Q_WS_X11)
270
271 if(APPLE)
272   find_package(SDL REQUIRED)
273   target_link_libraries(kdenlive ${SDL_LIBRARY})
274   target_link_libraries(kdenlive ${QT_QTOPENGL_LIBRARY})
275   target_link_libraries(kdenlive ${OPENGL_LIBRARIES})
276 else(APPLE)
277   add_definitions(-DHAVE_V4L2)
278   if(OPENGL_FOUND)
279     target_link_libraries(kdenlive ${QT_QTOPENGL_LIBRARY})
280     target_link_libraries(kdenlive ${OPENGL_LIBRARIES})
281   endif(OPENGL_FOUND)
282 endif(APPLE)
283
284 install(TARGETS kdenlive DESTINATION ${BIN_INSTALL_DIR})
285 install(FILES kdenliveui.rc kdenlive.notifyrc DESTINATION ${DATA_INSTALL_DIR}/kdenlive)
286 install(FILES kdenlivesettings.kcfg DESTINATION ${KCFG_INSTALL_DIR})
287 install(FILES kdenlive.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
288 kde4_install_icons(${ICON_INSTALL_DIR})
289 install(FILES kdenlive_titles.knsrc kdenlive_wipes.knsrc kdenlive_renderprofiles.knsrc kdenlive_projectprofiles.knsrc kdenlivetranscodingrc DESTINATION ${CONFIG_INSTALL_DIR})