15833c6d0c8ad408f8a32ae21f63f3d8a432372f
[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   'gstclock-linreg.c',
15   'gstcontext.c',
16   'gstcontrolbinding.c',
17   'gstcontrolsource.c',
18   'gstdatetime.c',
19   'gstdebugutils.c',
20   'gstdevice.c',
21   'gstdeviceprovider.c',
22   'gstdeviceproviderfactory.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   'gstsample.c',
52   'gstsegment.c',
53   'gststreamcollection.c',
54   'gststreams.c',
55   'gststructure.c',
56   'gstsystemclock.c',
57   'gsttaglist.c',
58   'gsttagsetter.c',
59   'gsttask.c',
60   'gsttaskpool.c',
61   'gsttoc.c',
62   'gsttocsetter.c',
63   'gsttracer.c',
64   'gsttracerfactory.c',
65   'gsttracerrecord.c',
66   'gsttracerutils.c',
67   'gsttypefind.c',
68   'gsttypefindfactory.c',
69   'gsturi.c',
70   'gstutils.c',
71   'gstvalue.c',
72   'gstparse.c',
73 ]
74
75 gst_headers = [
76   'gst.h',
77   'glib-compat.h',
78   'gstobject.h',
79   'gstallocator.h',
80   'gstbin.h',
81   'gstbuffer.h',
82   'gstbufferlist.h',
83   'gstbufferpool.h',
84   'gstbus.h',
85   'gstcaps.h',
86   'gstcapsfeatures.h',
87   'gstchildproxy.h',
88   'gstclock.h',
89   'gstcompat.h',
90   'gstcontext.h',
91   'gstcontrolbinding.h',
92   'gstcontrolsource.h',
93   'gstdatetime.h',
94   'gstdebugutils.h',
95   'gstelement.h',
96   'gstelementmetadata.h',
97   'gstdevice.h',
98   'gstdeviceprovider.h',
99   'gstdeviceproviderfactory.h',
100   'gstdynamictypefactory.h',
101   'gstelementfactory.h',
102   'gsterror.h',
103   'gstevent.h',
104   'gstformat.h',
105   'gstghostpad.h',
106   'gstdevicemonitor.h',
107   'gstinfo.h',
108   'gstiterator.h',
109   'gstatomicqueue.h',
110   'gstmacros.h',
111   'gstmessage.h',
112   'gstmeta.h',
113   'gstmemory.h',
114   'gstminiobject.h',
115   'gstpad.h',
116   'gstpadtemplate.h',
117   'gstparamspecs.h',
118   'gstpipeline.h',
119   'gstplugin.h',
120   'gstpluginfeature.h',
121   'gstpoll.h',
122   'gstpreset.h',
123   'gstprotection.h',
124   'gstquery.h',
125   'gstsample.h',
126   'gstsegment.h',
127   'gststreamcollection.h',
128   'gststreams.h',
129   'gststructure.h',
130   'gstsystemclock.h',
131   'gsttaglist.h',
132   'gsttagsetter.h',
133   'gsttask.h',
134   'gsttaskpool.h',
135   'gsttoc.h',
136   'gsttocsetter.h',
137   'gsttracer.h',
138   'gsttracerfactory.h',
139   'gsttracerrecord.h',
140   'gsttypefind.h',
141   'gsttypefindfactory.h',
142   'gsturi.h',
143   'gstutils.h',
144   'gstvalue.h',
145   'gstregistry.h',
146   'gstparse.h',
147   'math-compat.h',
148 ]
149 install_headers(gst_headers, subdir : 'gstreamer-1.0/gst')
150
151 if not get_option('disable_registry')
152   gst_registry = ['gstregistrybinary.c']
153 else
154   gst_registry = []
155 endif
156
157 configure_file(input : 'gstconfig.h.in',
158   output : 'gstconfig.h',
159   install_dir : 'include/gstreamer-1.0/gst',
160   configuration : cdata)
161 configure_file(input : 'gstversion.h.in',
162   output : 'gstversion.h',
163   install_dir : 'include/gstreamer-1.0/gst',
164   configuration : cdata)
165
166 mkenums = find_program('build_mkenum.py')
167 glib_mkenums = find_program('glib-mkenums')
168
169 gstenum_h = custom_target('gstenum_h',
170   output : 'gstenumtypes.h',
171   input : gst_headers,
172   install : true,
173   install_dir : 'include/gstreamer-1.0/gst',
174   command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@'])
175
176 gstenum_c = custom_target('gstenum_c',
177   output : 'gstenumtypes.c',
178   input : gst_headers,
179   depends : [gstenum_h],
180   command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@'])
181
182 subdir('parse')
183 subdir('printf')
184
185 libgst_c_args = gst_c_args + [
186   '-D_GNU_SOURCE',
187   '-DGST_EXPORTS',
188   '-DG_LOG_DOMAIN=g_log_domain_gstreamer',
189   '-DGST_DISABLE_DEPRECATED',
190 ]
191
192 # Make it possible to build both static and shared versions
193 # at the same time. By default use shared for unit tests etc.
194 # This choice is arbitrary.
195 if libtype != 'shared'
196   libgst_static = static_library('gstreamer-1.0', gst_sources,
197     gstenum_h, gstenum_c, grammar, parser, gst_registry,
198     c_args : [libgst_c_args],
199     include_directories : [configinc,
200       # HACK, change include paths in .y and .l in final version.
201       include_directories('parse')],
202     install : true,
203     link_with : printf_lib,
204     dependencies : [gobject_dep, gmodule_dep, glib_dep, mathlib] + platform_deps,
205   )
206   libgst = libgst_static
207 endif
208
209 # Make sure that subproject building gir files work
210 gst_incdirs = [configinc]
211 gst_gen_sources = [gstenum_h]
212 if libtype != 'static'
213   libgst_shared = shared_library('gstreamer-1.0', gst_sources,
214     gstenum_h, gstenum_c, grammar, parser, gst_registry,
215     version : libversion,
216     soversion : soversion,
217     c_args : libgst_c_args,
218     include_directories : [configinc,
219       # HACK, change include paths in .y and .l in final version.
220       include_directories('parse')],
221     link_with : printf_lib,
222     install : true,
223     dependencies : [gobject_dep, gmodule_dep, glib_dep, mathlib] + platform_deps,
224     vs_module_defs: vs_module_defs_dir + 'libgstreamer.def',
225   )
226   libgst = libgst_shared
227   if build_gir
228     gst_gir_extra_args = gir_init_section + [ '--c-include=gst/gst.h' ]
229     if meson.is_subproject()
230       # FIXME: There must be a better way to do this
231       # Need to pass the include path to find gst/gst.h and gst/gstenumtypes.h (built)
232       gst_gir_extra_args += ['--cflags-begin',
233           '-I' + meson.current_source_dir() + '/..',
234           '-I' + meson.current_build_dir() + '/..',
235           '--cflags-end']
236     endif
237
238     gst_incdirs += [include_directories(meson.current_build_dir() + '/..')]
239     gst_gen_sources += [gnome.generate_gir(libgst_shared,
240       sources : gst_sources + gst_headers,
241       namespace : 'Gst',
242       nsversion : apiversion,
243       identifier_prefix : 'Gst',
244       symbol_prefix : 'gst',
245       export_packages : 'gstreamer-1.0',
246       includes : ['GLib-2.0', 'GObject-2.0', 'GModule-2.0' ],
247       install : true,
248       extra_args : gst_gir_extra_args,
249     )]
250   endif
251 endif
252
253 gst_dep = declare_dependency(link_with : libgst,
254   include_directories : gst_incdirs,
255   dependencies : [glib_dep, gobject_dep, gmodule_dep],
256   # Everything that uses libgst needs this built to compile
257   sources : gst_gen_sources,
258 )