libs: fix 'inconsistent DLL linkage' warnings on Windows
[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 gst_registry = get_option('registry')
154 if gst_registry
155   gst_registry_sources = ['gstregistrybinary.c']
156 else
157   gst_registry_sources = []
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 gst_debug
165   gst_cdata.set('GST_DISABLE_GST_DEBUG_DEFINE', '#undef GST_DISABLE_GST_DEBUG')
166 else
167   gst_cdata.set('GST_DISABLE_GST_DEBUG_DEFINE', '#define GST_DISABLE_GST_DEBUG 1')
168 endif
169
170 if gst_registry
171   gst_cdata.set('GST_DISABLE_REGISTRY_DEFINE', '#undef GST_DISABLE_REGISTRY')
172 else
173   gst_cdata.set('GST_DISABLE_REGISTRY_DEFINE', '#define GST_DISABLE_REGISTRY 1')
174 endif
175
176 gst_parse = get_option('gst_parse')
177 if gst_parse
178   gst_cdata.set('GST_DISABLE_PARSE_DEFINE', '#undef GST_DISABLE_PARSE')
179 else
180   gst_cdata.set('GST_DISABLE_PARSE_DEFINE', '#define GST_DISABLE_PARSE 1')
181 endif
182
183 # FIXME: add --disable-plugin option?
184 gst_cdata.set('GST_DISABLE_PLUGIN_DEFINE', '#undef GST_DISABLE_PLUGIN')
185
186 configure_file(input : 'gstconfig.h.in',
187   output : 'gstconfig.h',
188   install_dir : join_paths(get_option('includedir'), 'gstreamer-1.0/gst'),
189   configuration : gst_cdata)
190
191 version_cdata = configuration_data()
192 version_cdata.set('GST_VERSION_MAJOR', gst_version_major)
193 version_cdata.set('GST_VERSION_MINOR', gst_version_minor)
194 version_cdata.set('GST_VERSION_MICRO', gst_version_micro)
195 version_cdata.set('GST_VERSION_NANO', gst_version_nano)
196
197 gst_version_h = configure_file(input : 'gstversion.h.in',
198   output : 'gstversion.h',
199   install_dir : join_paths(get_option('includedir'), 'gstreamer-1.0/gst'),
200   configuration : version_cdata)
201
202 gst_enums = gnome.mkenums_simple('gstenumtypes',
203   sources : gst_headers,
204   header_prefix : '#include <gst/gstconfig.h>',
205   body_prefix : '#include "gst/gst_private.h"\n#include <gst/gst.h>',
206   decorator : 'GST_API',
207   install_header : true,
208   install_dir : join_paths(get_option('includedir'), 'gstreamer-1.0/gst'))
209
210 gstenum_h = gst_enums[1]
211 gstenum_c = gst_enums[0]
212
213 gst_parse_sources = []
214 if gst_parse
215   subdir('parse')
216 endif
217
218 subdir('printf')
219
220 libgst_c_args = gst_c_args + [
221   '-D_GNU_SOURCE',
222   '-DG_LOG_DOMAIN=g_log_domain_gstreamer',
223   '-DGST_DISABLE_DEPRECATED',
224 ]
225
226 tracer_hooks = get_option('tracer_hooks')
227 if not tracer_hooks
228   libgst_c_args += ['-DGST_DISABLE_GST_TRACER_HOOKS']
229 endif
230
231 # Make sure that subproject building gir files work
232 gst_incdirs = [configinc]
233 gst_gen_sources = [gstenum_h]
234 libgst = library('gstreamer-1.0', gst_sources,
235   gstenum_h, gstenum_c, gst_parse_sources, gst_registry_sources,
236   version : libversion,
237   soversion : soversion,
238   darwin_versions : osxversion,
239   c_args : libgst_c_args + ['-DBUILDING_GST'],
240   include_directories : [configinc,
241     # HACK, change include paths in .y and .l in final version.
242     include_directories('parse')],
243   link_with : printf_lib,
244   install : true,
245   dependencies : [gobject_dep, gmodule_dep, glib_dep, mathlib, dl_dep] + backtrace_deps
246                    + platform_deps,
247 )
248
249 if build_gir
250   gst_gir_extra_args = gir_init_section + [ '--c-include=gst/gst.h' ]
251   if meson.is_subproject()
252     # FIXME: There must be a better way to do this
253     # Need to pass the include path to find gst/gst.h and gst/gstenumtypes.h (built)
254     gst_gir_extra_args += ['--cflags-begin',
255       '-I' + meson.current_source_dir() + '/..',
256       '-I' + meson.current_build_dir() + '/..',
257       '--cflags-end']
258   endif
259
260   gst_incdirs += [configinc]
261   gst_gen_sources += [gnome.generate_gir(libgst,
262     sources : gst_sources + gst_headers + gst_enums + [gst_version_h],
263     namespace : 'Gst',
264     nsversion : apiversion,
265     identifier_prefix : 'Gst',
266     symbol_prefix : 'gst',
267     export_packages : 'gstreamer-1.0',
268     includes : ['GLib-2.0', 'GObject-2.0', 'GModule-2.0' ],
269     install : true,
270     extra_args : gst_gir_extra_args,
271   )]
272 endif
273
274 gst_dep = declare_dependency(link_with : libgst,
275   include_directories : gst_incdirs,
276   dependencies : [glib_dep, gobject_dep, gmodule_dep],
277   # Everything that uses libgst needs this built to compile
278   sources : gst_gen_sources,
279 )