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