Move GstAggregator from -bad to core
[platform/upstream/gstreamer.git] / gst / meson.build
1 gst_sources = [
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 = [
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 install_headers(gst_headers, subdir : 'gstreamer-1.0/gst')
152
153 disable_registry = get_option('disable_registry')
154 if not disable_registry
155   gst_registry = ['gstregistrybinary.c']
156 else
157   gst_registry = []
158 endif
159
160 # Make copy so configure_file consumes the copy and we can
161 # still add to the original cdata later.
162 gst_cdata = cdata
163
164 if disable_gst_debug
165   gst_cdata.set('GST_DISABLE_GST_DEBUG_DEFINE', '#define GST_DISABLE_GST_DEBUG 1')
166 else
167   gst_cdata.set('GST_DISABLE_GST_DEBUG_DEFINE', '#undef GST_DISABLE_GST_DEBUG')
168 endif
169
170 if disable_registry
171   gst_cdata.set('GST_DISABLE_REGISTRY_DEFINE', '#define GST_DISABLE_REGISTRY 1')
172 else
173   gst_cdata.set('GST_DISABLE_REGISTRY_DEFINE', '#undef GST_DISABLE_REGISTRY')
174 endif
175
176 # FIXME: add --disable-parse option? (but autotools doesn't seem to set this
177 # define properly at all either even though it does expose the option)
178 gst_cdata.set('GST_DISABLE_PARSE_DEFINE', '#undef GST_DISABLE_PARSE')
179
180 # FIXME: add --disable-plugin option?
181 gst_cdata.set('GST_DISABLE_PLUGIN_DEFINE', '#undef GST_DISABLE_PLUGIN')
182
183 configure_file(input : 'gstconfig.h.in',
184   output : 'gstconfig.h',
185   install_dir : 'include/gstreamer-1.0/gst',
186   configuration : gst_cdata)
187
188 version_cdata = configuration_data()
189 version_cdata.set('GST_VERSION_MAJOR', gst_version_major)
190 version_cdata.set('GST_VERSION_MINOR', gst_version_minor)
191 version_cdata.set('GST_VERSION_MICRO', gst_version_micro)
192 version_cdata.set('GST_VERSION_NANO', gst_version_nano)
193
194 gst_version_h = configure_file(input : 'gstversion.h.in',
195   output : 'gstversion.h',
196   install_dir : 'include/gstreamer-1.0/gst',
197   configuration : version_cdata)
198
199 gst_enums = gnome.mkenums('gstenumtypes',
200   sources : gst_headers,
201   h_template : 'gstenumtypes.h.template',
202   c_template : 'gstenumtypes.c.template',
203   install_header : true,
204   install_dir : join_paths(get_option('includedir'), 'gstreamer-1.0/gst'))
205
206 gstenum_h = gst_enums[1]
207 gstenum_c = gst_enums[0]
208
209
210 subdir('parse')
211 subdir('printf')
212
213 libgst_c_args = gst_c_args + [
214   '-D_GNU_SOURCE',
215   '-DGST_EXPORTS',
216   '-DG_LOG_DOMAIN=g_log_domain_gstreamer',
217   '-DGST_DISABLE_DEPRECATED',
218 ]
219
220 disable_tracer_hooks = get_option('disable_tracer_hooks')
221 if disable_tracer_hooks
222   libgst_c_args += ['-DGST_DISABLE_GST_TRACER_HOOKS']
223 endif
224
225 # Make it possible to build both static and shared versions
226 # at the same time. By default use shared for unit tests etc.
227 # This choice is arbitrary.
228 if libtype != 'shared'
229   libgst_static = static_library('gstreamer-1.0', gst_sources,
230     gstenum_h, gstenum_c, grammar, parser, gst_registry,
231     c_args : [libgst_c_args],
232     include_directories : [configinc,
233       # HACK, change include paths in .y and .l in final version.
234       include_directories('parse')],
235     install : true,
236     link_with : printf_lib,
237     dependencies : [gobject_dep, gmodule_dep, glib_dep, mathlib] + backtrace_deps  + platform_deps,
238   )
239   libgst = libgst_static
240 endif
241
242 # Make sure that subproject building gir files work
243 gst_incdirs = [configinc]
244 gst_gen_sources = [gstenum_h]
245 if libtype != 'static'
246   libgst_shared = shared_library('gstreamer-1.0', gst_sources,
247     gstenum_h, gstenum_c, grammar, parser, gst_registry,
248     version : libversion,
249     soversion : soversion,
250     c_args : libgst_c_args,
251     include_directories : [configinc,
252       # HACK, change include paths in .y and .l in final version.
253       include_directories('parse')],
254     link_with : printf_lib,
255     install : true,
256     dependencies : [gobject_dep, gmodule_dep, glib_dep, mathlib, dl_dep] + backtrace_deps
257                      + platform_deps,
258   )
259   libgst = libgst_shared
260   if build_gir
261     gst_gir_extra_args = gir_init_section + [ '--c-include=gst/gst.h' ]
262     if meson.is_subproject()
263       # FIXME: There must be a better way to do this
264       # Need to pass the include path to find gst/gst.h and gst/gstenumtypes.h (built)
265       gst_gir_extra_args += ['--cflags-begin',
266           '-I' + meson.current_source_dir() + '/..',
267           '-I' + meson.current_build_dir() + '/..',
268           '--cflags-end']
269     endif
270
271     gst_incdirs += [configinc]
272     gst_gen_sources += [gnome.generate_gir(libgst_shared,
273       sources : gst_sources + gst_headers + gst_enums + [gst_version_h],
274       namespace : 'Gst',
275       nsversion : apiversion,
276       identifier_prefix : 'Gst',
277       symbol_prefix : 'gst',
278       export_packages : 'gstreamer-1.0',
279       includes : ['GLib-2.0', 'GObject-2.0', 'GModule-2.0' ],
280       install : true,
281       extra_args : gst_gir_extra_args,
282     )]
283   endif
284 endif
285
286 gst_dep = declare_dependency(link_with : libgst,
287   include_directories : gst_incdirs,
288   dependencies : [glib_dep, gobject_dep, gmodule_dep],
289   # Everything that uses libgst needs this built to compile
290   sources : gst_gen_sources,
291 )