• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1gst_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
76gst_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)
151install_headers(gst_headers, subdir : 'gstreamer-1.0/gst')
152
153gst_registry = get_option('registry')
154if gst_registry
155  gst_registry_sources = files('gstregistrybinary.c')
156else
157  gst_registry_sources = []
158endif
159
160# Make copy so configure_file consumes the copy and we can
161# still add to the original cdata later.
162gst_cdata = cdata
163
164if gst_debug
165  gst_cdata.set('GST_DISABLE_GST_DEBUG_DEFINE', '#undef GST_DISABLE_GST_DEBUG')
166else
167  gst_cdata.set('GST_DISABLE_GST_DEBUG_DEFINE', '#define GST_DISABLE_GST_DEBUG 1')
168endif
169
170if gst_registry
171  gst_cdata.set('GST_DISABLE_REGISTRY_DEFINE', '#undef GST_DISABLE_REGISTRY')
172else
173  gst_cdata.set('GST_DISABLE_REGISTRY_DEFINE', '#define GST_DISABLE_REGISTRY 1')
174endif
175
176gst_parse = get_option('gst_parse')
177if gst_parse
178  gst_cdata.set('GST_DISABLE_PARSE_DEFINE', '#undef GST_DISABLE_PARSE')
179else
180  gst_cdata.set('GST_DISABLE_PARSE_DEFINE', '#define GST_DISABLE_PARSE 1')
181endif
182
183gst_cdata.set10('GST_DISABLE_CAST_CHECKS_DEFINE', cast_checks.disabled())
184gst_cdata.set10('GST_DISABLE_GLIB_ASSERTS_DEFINE', glib_asserts.disabled())
185gst_cdata.set10('GST_DISABLE_GLIB_CHECKS_DEFINE', glib_checks.disabled())
186
187# FIXME: add --disable-plugin option?
188gst_cdata.set('GST_DISABLE_PLUGIN_DEFINE', '#undef GST_DISABLE_PLUGIN')
189
190configure_file(input : 'gstconfig.h.in',
191  output : 'gstconfig.h',
192  install_dir : join_paths(get_option('includedir'), 'gstreamer-1.0/gst'),
193  configuration : gst_cdata)
194
195version_cdata = configuration_data()
196version_cdata.set('GST_VERSION_MAJOR', gst_version_major)
197version_cdata.set('GST_VERSION_MINOR', gst_version_minor)
198version_cdata.set('GST_VERSION_MICRO', gst_version_micro)
199version_cdata.set('GST_VERSION_NANO', gst_version_nano)
200
201gst_version_h = configure_file(input : 'gstversion.h.in',
202  output : 'gstversion.h',
203  install_dir : join_paths(get_option('includedir'), 'gstreamer-1.0/gst'),
204  configuration : version_cdata)
205
206gst_enums = gnome.mkenums_simple('gstenumtypes',
207  sources : gst_headers,
208  header_prefix : '#include <gst/gstconfig.h>',
209  body_prefix : '#include "gst/gst_private.h"\n#include <gst/gst.h>',
210  decorator : 'GST_API',
211  install_header : true,
212  install_dir : join_paths(get_option('includedir'), 'gstreamer-1.0/gst'))
213
214gstenum_h = gst_enums[1]
215gstenum_c = gst_enums[0]
216
217gst_parse_sources = []
218if gst_parse
219  subdir('parse')
220endif
221
222subdir('printf')
223
224libgst_c_args = gst_c_args + [
225  '-D_GNU_SOURCE',
226  '-DG_LOG_DOMAIN="GStreamer"',
227  '-DGST_DISABLE_DEPRECATED',
228]
229
230tracer_hooks = get_option('tracer_hooks')
231if not tracer_hooks
232  libgst_c_args += ['-DGST_DISABLE_GST_TRACER_HOOKS']
233endif
234
235# Make sure that subproject building gir files work
236gst_incdirs = [configinc]
237gst_gen_sources = [gstenum_h]
238libgst = library('gstreamer-1.0', gst_sources,
239  gstenum_h, gstenum_c, gst_parse_sources, gst_registry_sources,
240  version : libversion,
241  soversion : soversion,
242  darwin_versions : osxversion,
243  c_args : libgst_c_args + ['-DBUILDING_GST'],
244  include_directories : [configinc,
245    # HACK, change include paths in .y and .l in final version.
246    include_directories('parse')],
247  link_with : printf_lib,
248  install : true,
249  dependencies : [gobject_dep, gmodule_dep, glib_dep, mathlib, dl_dep] + backtrace_deps
250                   + platform_deps,
251)
252
253pkg_name = 'gstreamer-1.0'
254library_def = {'lib': libgst}
255pkgconfig.generate(libgst,
256  libraries : [glib_dep, gobject_dep] + pkgconfig_libs,
257  variables : pkgconfig_variables,
258  uninstalled_variables: pkgconfig_uninstalled_variables,
259  subdirs : pkgconfig_subdirs,
260  name : pkg_name,
261  description : 'Streaming media framework',
262)
263
264if build_gir
265  gst_gir_extra_args = gir_init_section + ['--c-include=gst/gst.h']
266  if meson.is_subproject()
267    # FIXME: There must be a better way to do this
268    # Need to pass the include path to find gst/gst.h and gst/gstenumtypes.h (built)
269    gst_gir_extra_args += ['--cflags-begin',
270      '-I' + meson.current_source_dir() + '/..',
271      '-I' + meson.current_build_dir() + '/..',
272      '-DGST_DISABLE_MINIOBJECT_INLINE_FUNCTIONS',
273      '--cflags-end']
274  endif
275
276  gst_incdirs += [configinc]
277  gir = {
278    'sources' : gst_sources + gst_headers + gst_enums + [gst_version_h],
279    'namespace' : 'Gst',
280    'nsversion' : apiversion,
281    'identifier_prefix' : 'Gst',
282    'symbol_prefix' : 'gst',
283    'export_packages' : pkg_name,
284    'includes' : ['GLib-2.0', 'GObject-2.0', 'GModule-2.0' ],
285    'install' : true,
286    'extra_args' : gst_gir_extra_args,
287  }
288  library_def += {'gir': [gir]}
289  # When building statically the information about the gir is going to be
290  # consumed by `gst-build` to generate gir files linked against
291  # `libgstreamer-full-1.0.so`. We do not build it here as it is currently
292  # broken. Once that is fixed we could build it here, even though we would keep
293  # creating another gir which links against gst-full.
294  if not static_build
295    gst_gir = gnome.generate_gir(libgst, kwargs: gir)
296    gst_gen_sources += gst_gir
297  endif
298endif
299libraries += [[pkg_name, library_def]]
300
301gst_compile_args = []
302if get_option('default_library') == 'static'
303  gst_compile_args += ['-DGST_STATIC_COMPILATION']
304endif
305
306gst_dep = declare_dependency(link_with : libgst,
307  compile_args : gst_compile_args,
308  include_directories : gst_incdirs,
309  dependencies : [glib_dep, gobject_dep, gmodule_dep],
310  # Everything that uses libgst needs this built to compile
311  sources : gst_gen_sources,
312)
313
314meson.override_dependency(pkg_name, gst_dep)
315