rtsp-server: fix memory leak
[platform/upstream/gstreamer.git] / subprojects / gstreamer / gst / meson.build
1 gst_sources = files(
2   'gst.c',
3   'gstobject.c',
4   'gstallocator.c',
5   'gstbin.c',
6   'gstbuffer.c',
7   'gstbufferlist.c',
8   'gstbufferpool.c',
9   'gstbus.c',
10   'gstcaps.c',
11   'gstcapsfeatures.c',
12   'gstchildproxy.c',
13   'gstclock.c',
14   'gstcontext.c',
15   'gstcontrolbinding.c',
16   'gstcontrolsource.c',
17   'gstdatetime.c',
18   'gstdebugutils.c',
19   'gstdevice.c',
20   'gstdeviceprovider.c',
21   'gstdeviceproviderfactory.c',
22   'gstdynamictypefactory.c',
23   'gstelement.c',
24   'gstelementfactory.c',
25   'gsterror.c',
26   'gstevent.c',
27   'gstformat.c',
28   'gstghostpad.c',
29   'gstdevicemonitor.c',
30   'gstinfo.c',
31   'gstiterator.c',
32   'gstatomicqueue.c',
33   'gstmessage.c',
34   'gstmeta.c',
35   'gstmemory.c',
36   'gstminiobject.c',
37   'gstpad.c',
38   'gstpadtemplate.c',
39   'gstparamspecs.c',
40   'gstpipeline.c',
41   'gstplugin.c',
42   'gstpluginfeature.c',
43   'gstpluginloader.c',
44   'gstpoll.c',
45   'gstpreset.c',
46   'gstprotection.c',
47   'gstquark.c',
48   'gstquery.c',
49   'gstregistry.c',
50   'gstregistrychunks.c',
51   'gstpromise.c',
52   'gstsample.c',
53   'gstsegment.c',
54   'gststreamcollection.c',
55   'gststreams.c',
56   'gststructure.c',
57   'gstsystemclock.c',
58   'gsttaglist.c',
59   'gsttagsetter.c',
60   'gsttask.c',
61   'gsttaskpool.c',
62   'gsttoc.c',
63   'gsttocsetter.c',
64   'gsttracer.c',
65   'gsttracerfactory.c',
66   'gsttracerrecord.c',
67   'gsttracerutils.c',
68   'gsttypefind.c',
69   'gsttypefindfactory.c',
70   'gsturi.c',
71   'gstutils.c',
72   'gstvalue.c',
73   'gstparse.c',
74 )
75
76 gst_headers = files(
77   'gst.h',
78   'glib-compat.h',
79   'gstobject.h',
80   'gstallocator.h',
81   'gstbin.h',
82   'gstbuffer.h',
83   'gstbufferlist.h',
84   'gstbufferpool.h',
85   'gstbus.h',
86   'gstcaps.h',
87   'gstcapsfeatures.h',
88   'gstchildproxy.h',
89   'gstclock.h',
90   'gstcompat.h',
91   'gstcontext.h',
92   'gstcontrolbinding.h',
93   'gstcontrolsource.h',
94   'gstdatetime.h',
95   'gstdebugutils.h',
96   'gstelement.h',
97   'gstelementmetadata.h',
98   'gstdevice.h',
99   'gstdeviceprovider.h',
100   'gstdeviceproviderfactory.h',
101   'gstdynamictypefactory.h',
102   'gstelementfactory.h',
103   'gsterror.h',
104   'gstevent.h',
105   'gstformat.h',
106   'gstghostpad.h',
107   'gstdevicemonitor.h',
108   'gstinfo.h',
109   'gstiterator.h',
110   'gstatomicqueue.h',
111   'gstmacros.h',
112   'gstmessage.h',
113   'gstmeta.h',
114   'gstmemory.h',
115   'gstminiobject.h',
116   'gstpad.h',
117   'gstpadtemplate.h',
118   'gstparamspecs.h',
119   'gstpipeline.h',
120   'gstplugin.h',
121   'gstpluginfeature.h',
122   'gstpoll.h',
123   'gstpreset.h',
124   'gstprotection.h',
125   'gstquery.h',
126   'gstpromise.h',
127   'gstsample.h',
128   'gstsegment.h',
129   'gststreamcollection.h',
130   'gststreams.h',
131   'gststructure.h',
132   'gstsystemclock.h',
133   'gsttaglist.h',
134   'gsttagsetter.h',
135   'gsttask.h',
136   'gsttaskpool.h',
137   'gsttoc.h',
138   'gsttocsetter.h',
139   'gsttracer.h',
140   'gsttracerfactory.h',
141   'gsttracerrecord.h',
142   'gsttypefind.h',
143   'gsttypefindfactory.h',
144   'gsturi.h',
145   'gstutils.h',
146   'gstvalue.h',
147   'gstregistry.h',
148   'gstparse.h',
149   'math-compat.h',
150 )
151 if host_system == 'darwin'
152   gst_headers += 'gstmacos.h'
153   gst_sources += 'gstmacos.m'
154 endif
155
156 install_headers(gst_headers, subdir : 'gstreamer-1.0/gst')
157
158 extra_deps = []
159 if host_system == 'android'
160   gst_sources += 'gstandroid.c'
161   extra_deps += cc.find_library('log')
162 endif
163
164 if host_system == 'darwin'
165   extra_deps += dependency('appleframeworks', modules : ['Cocoa'])
166 endif
167
168 gst_registry = get_option('registry')
169 if gst_registry
170   gst_registry_sources = files('gstregistrybinary.c')
171 else
172   gst_registry_sources = []
173 endif
174
175 # Make copy so configure_file consumes the copy and we can
176 # still add to the original cdata later.
177 gst_cdata = cdata
178
179 if gst_debug
180   gst_cdata.set('GST_DISABLE_GST_DEBUG_DEFINE', '#undef GST_DISABLE_GST_DEBUG')
181 else
182   gst_cdata.set('GST_DISABLE_GST_DEBUG_DEFINE', '#define GST_DISABLE_GST_DEBUG 1')
183 endif
184
185 if gst_registry
186   gst_cdata.set('GST_DISABLE_REGISTRY_DEFINE', '#undef GST_DISABLE_REGISTRY')
187 else
188   gst_cdata.set('GST_DISABLE_REGISTRY_DEFINE', '#define GST_DISABLE_REGISTRY 1')
189 endif
190
191 gst_parse = get_option('gst_parse')
192 if gst_parse
193   gst_cdata.set('GST_DISABLE_PARSE_DEFINE', '#undef GST_DISABLE_PARSE')
194 else
195   gst_cdata.set('GST_DISABLE_PARSE_DEFINE', '#define GST_DISABLE_PARSE 1')
196 endif
197
198 gst_cdata.set10('GST_DISABLE_CAST_CHECKS_DEFINE', cast_checks.disabled())
199 gst_cdata.set10('GST_DISABLE_GLIB_ASSERTS_DEFINE', glib_asserts.disabled())
200 gst_cdata.set10('GST_DISABLE_GLIB_CHECKS_DEFINE', glib_checks.disabled())
201
202 # FIXME: add --disable-plugin option?
203 gst_cdata.set('GST_DISABLE_PLUGIN_DEFINE', '#undef GST_DISABLE_PLUGIN')
204
205 configure_file(input : 'gstconfig.h.in',
206   output : 'gstconfig.h',
207   install_dir : join_paths(get_option('includedir'), 'gstreamer-1.0/gst'),
208   configuration : gst_cdata)
209
210 version_cdata = configuration_data()
211 version_cdata.set('GST_VERSION_MAJOR', gst_version_major)
212 version_cdata.set('GST_VERSION_MINOR', gst_version_minor)
213 version_cdata.set('GST_VERSION_MICRO', gst_version_micro)
214 version_cdata.set('GST_VERSION_NANO', gst_version_nano)
215
216 gst_version_h = configure_file(input : 'gstversion.h.in',
217   output : 'gstversion.h',
218   install_dir : join_paths(get_option('includedir'), 'gstreamer-1.0/gst'),
219   configuration : version_cdata)
220
221 gst_enums = gnome.mkenums_simple('gstenumtypes',
222   sources : gst_headers,
223   header_prefix : '#include <gst/gstconfig.h>',
224   body_prefix : '#include "gst/gst_private.h"\n#include <gst/gst.h>',
225   decorator : 'GST_API',
226   install_header : true,
227   install_dir : join_paths(get_option('includedir'), 'gstreamer-1.0/gst'))
228
229 gstenum_h = gst_enums[1]
230 gstenum_c = gst_enums[0]
231
232 gst_parse_sources = []
233 if gst_parse
234   subdir('parse')
235 endif
236
237 subdir('printf')
238
239 libgst_c_args = gst_c_args + [
240   '-D_GNU_SOURCE',
241   '-DG_LOG_DOMAIN="GStreamer"',
242   '-DGST_DISABLE_DEPRECATED',
243 ]
244
245 tracer_hooks = get_option('tracer_hooks')
246 if not tracer_hooks
247   libgst_c_args += ['-DGST_DISABLE_GST_TRACER_HOOKS']
248 endif
249
250 # Make sure that subproject building gir files work
251 gst_incdirs = [configinc]
252 gst_gen_sources = [gstenum_h]
253 libgst = library('gstreamer-1.0', gst_sources,
254   gstenum_h, gstenum_c, gst_parse_sources, gst_registry_sources,
255   version : libversion,
256   soversion : soversion,
257   darwin_versions : osxversion,
258   c_args : libgst_c_args + ['-DBUILDING_GST'],
259   include_directories : [configinc,
260     # HACK, change include paths in .y and .l in final version.
261     include_directories('parse')],
262   link_with : printf_lib,
263   install : true,
264   dependencies : [gobject_dep, gmodule_dep, glib_dep, mathlib, dl_dep,
265                   backtrace_deps, platform_deps, extra_deps, dlog_dep],
266 )
267
268
269 gstreamer_extra_args = ['-DTIZEN_FEATURE_DISABLE_DEPRECATED_DECLARATION']
270 if get_option('tv-profile')
271   gstreamer_extra_args += ['-DTIZEN_PROFILE_TV']
272 endif
273
274 pkg_name = 'gstreamer-1.0'
275 library_def = {'lib': libgst}
276 pkgconfig.generate(libgst,
277   libraries : [glib_dep, gobject_dep] + pkgconfig_libs,
278   variables : pkgconfig_variables,
279   uninstalled_variables: pkgconfig_uninstalled_variables,
280   subdirs : pkgconfig_subdirs,
281   extra_cflags : gstreamer_extra_args,
282   name : pkg_name,
283   description : 'Streaming media framework',
284 )
285
286 if build_gir
287   gst_gir_extra_args = gir_init_section + ['--c-include=gst/gst.h']
288   if meson.is_subproject()
289     # FIXME: There must be a better way to do this
290     # Need to pass the include path to find gst/gst.h and gst/gstenumtypes.h (built)
291     gst_gir_extra_args += ['--cflags-begin',
292       '-I' + meson.current_source_dir() + '/..',
293       '-I' + meson.current_build_dir() + '/..',
294       '-DGST_DISABLE_MINIOBJECT_INLINE_FUNCTIONS',
295       '--cflags-end']
296   endif
297
298   gst_incdirs += [configinc]
299   gir = {
300     'sources' : gst_sources + gst_headers + gst_enums + [gst_version_h],
301     'namespace' : 'Gst',
302     'nsversion' : apiversion,
303     'identifier_prefix' : 'Gst',
304     'symbol_prefix' : 'gst',
305     'export_packages' : pkg_name,
306     'includes' : ['GLib-2.0', 'GObject-2.0', 'GModule-2.0' ],
307     'install' : true,
308     'extra_args' : gst_gir_extra_args,
309   }
310   library_def += {'gir': [gir]}
311   # When building statically the information about the gir is going to be
312   # consumed by `gst-build` to generate gir files linked against
313   # `libgstreamer-full-1.0.so`. We do not build it here as it is currently
314   # broken. Once that is fixed we could build it here, even though we would keep
315   # creating another gir which links against gst-full.
316   if not static_build
317     gst_gir = gnome.generate_gir(libgst, kwargs: gir)
318     gst_gen_sources += gst_gir
319   endif
320 endif
321 gst_libraries += [[pkg_name, library_def]]
322
323 gst_compile_args = []
324 if get_option('default_library') == 'static'
325   gst_compile_args += ['-DGST_STATIC_COMPILATION']
326 endif
327
328 gst_dep = declare_dependency(link_with : libgst,
329   compile_args : gst_compile_args,
330   include_directories : gst_incdirs,
331   dependencies : [glib_dep, gobject_dep, gmodule_dep],
332   # Everything that uses libgst needs this built to compile
333   sources : gst_gen_sources,
334 )
335
336 meson.override_dependency(pkg_name, gst_dep)