gst_sources = [ 'gst.c', 'gstobject.c', 'gstallocator.c', 'gstbin.c', 'gstbuffer.c', 'gstbufferlist.c', 'gstbufferpool.c', 'gstbus.c', 'gstcaps.c', 'gstcapsfeatures.c', 'gstchildproxy.c', 'gstclock.c', 'gstcontext.c', 'gstcontrolbinding.c', 'gstcontrolsource.c', 'gstdatetime.c', 'gstdebugutils.c', 'gstdevice.c', 'gstdeviceprovider.c', 'gstdeviceproviderfactory.c', 'gstdynamictypefactory.c', 'gstelement.c', 'gstelementfactory.c', 'gsterror.c', 'gstevent.c', 'gstformat.c', 'gstghostpad.c', 'gstdevicemonitor.c', 'gstinfo.c', 'gstiterator.c', 'gstatomicqueue.c', 'gstmessage.c', 'gstmeta.c', 'gstmemory.c', 'gstminiobject.c', 'gstpad.c', 'gstpadtemplate.c', 'gstparamspecs.c', 'gstpipeline.c', 'gstplugin.c', 'gstpluginfeature.c', 'gstpluginloader.c', 'gstpoll.c', 'gstpreset.c', 'gstprotection.c', 'gstquark.c', 'gstquery.c', 'gstregistry.c', 'gstregistrychunks.c', 'gstpromise.c', 'gstsample.c', 'gstsegment.c', 'gststreamcollection.c', 'gststreams.c', 'gststructure.c', 'gstsystemclock.c', 'gsttaglist.c', 'gsttagsetter.c', 'gsttask.c', 'gsttaskpool.c', 'gsttoc.c', 'gsttocsetter.c', 'gsttracer.c', 'gsttracerfactory.c', 'gsttracerrecord.c', 'gsttracerutils.c', 'gsttypefind.c', 'gsttypefindfactory.c', 'gsturi.c', 'gstutils.c', 'gstvalue.c', 'gstparse.c', ] gst_headers = [ 'gst.h', 'glib-compat.h', 'gstobject.h', 'gstallocator.h', 'gstbin.h', 'gstbuffer.h', 'gstbufferlist.h', 'gstbufferpool.h', 'gstbus.h', 'gstcaps.h', 'gstcapsfeatures.h', 'gstchildproxy.h', 'gstclock.h', 'gstcompat.h', 'gstcontext.h', 'gstcontrolbinding.h', 'gstcontrolsource.h', 'gstdatetime.h', 'gstdebugutils.h', 'gstelement.h', 'gstelementmetadata.h', 'gstdevice.h', 'gstdeviceprovider.h', 'gstdeviceproviderfactory.h', 'gstdynamictypefactory.h', 'gstelementfactory.h', 'gsterror.h', 'gstevent.h', 'gstformat.h', 'gstghostpad.h', 'gstdevicemonitor.h', 'gstinfo.h', 'gstiterator.h', 'gstatomicqueue.h', 'gstmacros.h', 'gstmessage.h', 'gstmeta.h', 'gstmemory.h', 'gstminiobject.h', 'gstpad.h', 'gstpadtemplate.h', 'gstparamspecs.h', 'gstpipeline.h', 'gstplugin.h', 'gstpluginfeature.h', 'gstpoll.h', 'gstpreset.h', 'gstprotection.h', 'gstquery.h', 'gstpromise.h', 'gstsample.h', 'gstsegment.h', 'gststreamcollection.h', 'gststreams.h', 'gststructure.h', 'gstsystemclock.h', 'gsttaglist.h', 'gsttagsetter.h', 'gsttask.h', 'gsttaskpool.h', 'gsttoc.h', 'gsttocsetter.h', 'gsttracer.h', 'gsttracerfactory.h', 'gsttracerrecord.h', 'gsttypefind.h', 'gsttypefindfactory.h', 'gsturi.h', 'gstutils.h', 'gstvalue.h', 'gstregistry.h', 'gstparse.h', 'math-compat.h', ] install_headers(gst_headers, subdir : 'gstreamer-1.0/gst') disable_registry = get_option('disable_registry') if not disable_registry gst_registry = ['gstregistrybinary.c'] else gst_registry = [] endif # Make copy so configure_file consumes the copy and we can # still add to the original cdata later. gst_cdata = cdata if disable_gst_debug gst_cdata.set('GST_DISABLE_GST_DEBUG_DEFINE', '#define GST_DISABLE_GST_DEBUG 1') else gst_cdata.set('GST_DISABLE_GST_DEBUG_DEFINE', '#undef GST_DISABLE_GST_DEBUG') endif if disable_registry gst_cdata.set('GST_DISABLE_REGISTRY_DEFINE', '#define GST_DISABLE_REGISTRY 1') else gst_cdata.set('GST_DISABLE_REGISTRY_DEFINE', '#undef GST_DISABLE_REGISTRY') endif # FIXME: add --disable-parse option? (but autotools doesn't seem to set this # define properly at all either even though it does expose the option) gst_cdata.set('GST_DISABLE_PARSE_DEFINE', '#undef GST_DISABLE_PARSE') # FIXME: add --disable-plugin option? gst_cdata.set('GST_DISABLE_PLUGIN_DEFINE', '#undef GST_DISABLE_PLUGIN') configure_file(input : 'gstconfig.h.in', output : 'gstconfig.h', install_dir : 'include/gstreamer-1.0/gst', configuration : gst_cdata) version_cdata = configuration_data() version_cdata.set('GST_VERSION_MAJOR', gst_version_major) version_cdata.set('GST_VERSION_MINOR', gst_version_minor) version_cdata.set('GST_VERSION_MICRO', gst_version_micro) version_cdata.set('GST_VERSION_NANO', gst_version_nano) gst_version_h = configure_file(input : 'gstversion.h.in', output : 'gstversion.h', install_dir : 'include/gstreamer-1.0/gst', configuration : version_cdata) gst_enums = gnome.mkenums_simple('gstenumtypes', sources : gst_headers, header_prefix : '#include ', body_prefix : '#include "gst/gst_private.h"\n#include ', decorator : 'GST_API', install_header : true, install_dir : join_paths(get_option('includedir'), 'gstreamer-1.0/gst')) gstenum_h = gst_enums[1] gstenum_c = gst_enums[0] subdir('parse') subdir('printf') libgst_c_args = gst_c_args + [ '-D_GNU_SOURCE', '-DGST_EXPORTS', '-DG_LOG_DOMAIN=g_log_domain_gstreamer', '-DGST_DISABLE_DEPRECATED', ] disable_tracer_hooks = get_option('disable_tracer_hooks') if disable_tracer_hooks libgst_c_args += ['-DGST_DISABLE_GST_TRACER_HOOKS'] endif # Make it possible to build both static and shared versions # at the same time. By default use shared for unit tests etc. # This choice is arbitrary. if libtype != 'shared' libgst_static = static_library('gstreamer-1.0', gst_sources, gstenum_h, gstenum_c, grammar, parser, gst_registry, c_args : [libgst_c_args], include_directories : [configinc, # HACK, change include paths in .y and .l in final version. include_directories('parse')], install : true, link_with : printf_lib, dependencies : [gobject_dep, gmodule_dep, glib_dep, mathlib] + backtrace_deps + platform_deps, ) libgst = libgst_static endif # Make sure that subproject building gir files work gst_incdirs = [configinc] gst_gen_sources = [gstenum_h] if libtype != 'static' libgst_shared = shared_library('gstreamer-1.0', gst_sources, gstenum_h, gstenum_c, grammar, parser, gst_registry, version : libversion, soversion : soversion, c_args : libgst_c_args, include_directories : [configinc, # HACK, change include paths in .y and .l in final version. include_directories('parse')], link_with : printf_lib, install : true, dependencies : [gobject_dep, gmodule_dep, glib_dep, mathlib, dl_dep] + backtrace_deps + platform_deps, ) libgst = libgst_shared if build_gir gst_gir_extra_args = gir_init_section + [ '--c-include=gst/gst.h' ] if meson.is_subproject() # FIXME: There must be a better way to do this # Need to pass the include path to find gst/gst.h and gst/gstenumtypes.h (built) gst_gir_extra_args += ['--cflags-begin', '-I' + meson.current_source_dir() + '/..', '-I' + meson.current_build_dir() + '/..', '--cflags-end'] endif gst_incdirs += [configinc] gst_gen_sources += [gnome.generate_gir(libgst_shared, sources : gst_sources + gst_headers + gst_enums + [gst_version_h], namespace : 'Gst', nsversion : apiversion, identifier_prefix : 'Gst', symbol_prefix : 'gst', export_packages : 'gstreamer-1.0', includes : ['GLib-2.0', 'GObject-2.0', 'GModule-2.0' ], install : true, extra_args : gst_gir_extra_args, )] endif endif gst_dep = declare_dependency(link_with : libgst, include_directories : gst_incdirs, dependencies : [glib_dep, gobject_dep, gmodule_dep], # Everything that uses libgst needs this built to compile sources : gst_gen_sources, )