taglist, plugins: fix compiler warnings with GLib >= 2.76
[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],
266 )
267
268 pkg_name = 'gstreamer-1.0'
269 library_def = {'lib': libgst}
270 pkgconfig.generate(libgst,
271   libraries : [glib_dep, gobject_dep] + pkgconfig_libs,
272   variables : pkgconfig_variables,
273   uninstalled_variables: pkgconfig_uninstalled_variables,
274   subdirs : pkgconfig_subdirs,
275   name : pkg_name,
276   description : 'Streaming media framework',
277 )
278
279 if build_gir
280   gst_gir_extra_args = gir_init_section + ['--c-include=gst/gst.h']
281   if meson.is_subproject()
282     # FIXME: There must be a better way to do this
283     # Need to pass the include path to find gst/gst.h and gst/gstenumtypes.h (built)
284     gst_gir_extra_args += ['--cflags-begin',
285       '-I' + meson.current_source_dir() + '/..',
286       '-I' + meson.current_build_dir() + '/..',
287       '-DGST_DISABLE_MINIOBJECT_INLINE_FUNCTIONS',
288       '--cflags-end']
289   endif
290
291   gst_incdirs += [configinc]
292   gir = {
293     'sources' : gst_sources + gst_headers + gst_enums + [gst_version_h],
294     'namespace' : 'Gst',
295     'nsversion' : apiversion,
296     'identifier_prefix' : 'Gst',
297     'symbol_prefix' : 'gst',
298     'export_packages' : pkg_name,
299     'includes' : ['GLib-2.0', 'GObject-2.0', 'GModule-2.0' ],
300     'install' : true,
301     'extra_args' : gst_gir_extra_args,
302   }
303   library_def += {'gir': [gir]}
304   # When building statically the information about the gir is going to be
305   # consumed by `gst-build` to generate gir files linked against
306   # `libgstreamer-full-1.0.so`. We do not build it here as it is currently
307   # broken. Once that is fixed we could build it here, even though we would keep
308   # creating another gir which links against gst-full.
309   if not static_build
310     gst_gir = gnome.generate_gir(libgst, kwargs: gir)
311     gst_gen_sources += gst_gir
312   endif
313 endif
314 gst_libraries += [[pkg_name, library_def]]
315
316 gst_compile_args = []
317 if get_option('default_library') == 'static'
318   gst_compile_args += ['-DGST_STATIC_COMPILATION']
319 endif
320
321 gst_dep = declare_dependency(link_with : libgst,
322   compile_args : gst_compile_args,
323   include_directories : gst_incdirs,
324   dependencies : [glib_dep, gobject_dep, gmodule_dep],
325   # Everything that uses libgst needs this built to compile
326   sources : gst_gen_sources,
327 )
328
329 meson.override_dependency(pkg_name, gst_dep)