Commit 5c4f4ac1 authored by Nirbheek Chauhan's avatar Nirbheek Chauhan 🐜 Committed by Tim-Philipp Müller

Add support for Meson as alternative/parallel build system

https://github.com/mesonbuild/meson

With contributions from:

Tim-Philipp Müller <tim@centricular.com>
Jussi Pakkanen <jpakkane@gmail.com> (original port)

Highlights of the features provided are:
* Faster builds on Linux (~40-50% faster)
* The ability to build with MSVC on Windows
* Generate Visual Studio project files
* Generate XCode project files
* Much faster builds on Windows (on-par with Linux)
* Seriously fast configure and building on embedded

... and many more. For more details see:

http://blog.nirbheek.in/2016/05/gstreamer-and-meson-new-hope.html
http://blog.nirbheek.in/2016/07/building-and-developing-gstreamer-using.html

Building with Meson should work on both Linux and Windows, but may
need a few more tweaks on other operating systems.
parent 9cbdaa8c
aclocal.m4
autom4te.cache
config.h*
config.h.in
config.log
config.status
......@@ -69,3 +68,6 @@ Build
/test-driver
*.trs
*.log
/build
/subprojects
This diff is collapsed.
alsa_sources = [
'gstalsa.c',
'gstalsadeviceprobe.c',
'gstalsamidisrc.c',
'gstalsaplugin.c',
'gstalsasink.c',
'gstalsasrc.c',
]
alsa_dep = dependency('alsa', version : '>=0.9.1', required : false)
if alsa_dep.found()
gstalsa = library('gstalsa',
alsa_sources,
c_args : gst_plugins_base_args,
include_directories: [configinc, libsinc],
dependencies : glib_deps + [alsa_dep, audio_dep, tag_dep, gst_dep, gst_base_dep],
install : true,
install_dir : plugins_install_dir,
)
endif
cdparanoia_deps = []
cdparanoia_found = false
# cdparanoia upstream has a pkg-config file only in post-10.2 SVN so far, no release yet
cdparanoia_dep = dependency('cdparanoia-3', version : '>=10.2', required : false)
if cdparanoia_dep.found()
cdparanoia_deps = [cdparanoia_dep]
cdparanoia_found = true
else
cdparanoia_dep = cc.find_library('cdda_paranoia', required : false)
cdinterface_dep = cc.find_library('cdda_interface', required : false)
if cdparanoia_dep.found() and cdinterface_dep.found()
cdparanoia_deps = [cdparanoia_dep, cdinterface_dep]
cdparanoia_found = true
if cc.has_header_symbol('cdda/cdda_interface.h', 'cdda_open')
core_conf.set('CDPARANOIA_HEADERS_IN_DIR', true)
elif cc.has_header_symbol('cdda_interface.h', 'cdda_open')
core_conf.set('CDPARANOIA_HEADERS_IN_DIR', false)
endif
endif
endif
if cdparanoia_found
gstcdparanoia = library('gstcdparanoia',
['gstcdparanoiasrc.c'],
include_directories: [configinc, libsinc],
c_args : gst_plugins_base_args,
dependencies : cdparanoia_deps + glib_deps + [audio_dep, gst_dep, gst_base_dep],
install : true,
install_dir : plugins_install_dir,
)
endif
libvisual_sources = [
'visual.c',
'plugin.c',
]
libvisual_dep = dependency('libvisual-0.4', version : '>= 0.4.0', required : false)
if libvisual_dep.found()
runcmd = run_command('pkg-config', '--variable=pluginsbasedir', 'libvisual-0.4')
if runcmd.returncode() == 0
core_conf.set('LIBVISUAL_PLUGINSBASEDIR', '"@0@"'.format(runcmd.stdout().strip()))
endif
endif
if libvisual_dep.found()
gstlibvisual = library('gstlibvisual',
libvisual_sources,
c_args : gst_plugins_base_args,
include_directories: [configinc, libsinc],
dependencies : glib_deps + [libvisual_dep, audio_dep, video_dep, pbutils_dep, gst_dep, gst_base_dep],
install : true,
install_dir : plugins_install_dir,
)
endif
subdir('alsa')
subdir('cdparanoia')
if cc.get_id() != 'msvc'
# libvisual has MinGW-specific headers which are not compatible with MSVC
# If we want to build this with MSVC, we must build libvisual with it too
subdir('libvisual')
endif
subdir('ogg')
subdir('opus')
subdir('pango')
subdir('theora')
subdir('vorbis')
ogg_sources = [
'dirac_parse.c',
'gstoggaviparse.c',
'gstogg.c',
'gstoggdemux.c',
'gstoggmux.c',
'gstoggparse.c',
'gstoggstream.c',
'gstogmparse.c',
'vorbis_parse.c',
]
ogg_dep = dependency('ogg', version : '>=1.0', required : false)
core_conf.set('HAVE_OGG', ogg_dep.found())
if ogg_dep.found()
gstogg = library('gstogg',
ogg_sources,
c_args : gst_plugins_base_args,
link_args : noseh_link_args,
include_directories: [configinc, libsinc],
dependencies : glib_deps + [ogg_dep, audio_dep, pbutils_dep, tag_dep, riff_dep, gst_dep, gst_base_dep],
install : true,
install_dir : plugins_install_dir,
)
endif
opus_sources = [
'gstopus.c',
'gstopuscommon.c',
'gstopusdec.c',
'gstopusenc.c',
'gstopusheader.c',
]
opus_dep = dependency('opus', version : '>= 0.9.4', required : false)
if opus_dep.found()
gstopus = library('gstopus',
opus_sources,
c_args : gst_plugins_base_args,
link_args : noseh_link_args,
include_directories: [configinc, libsinc],
dependencies : glib_deps + [pbutils_dep, tag_dep, audio_dep, gst_dep, gst_base_dep, opus_dep, libm],
install : true,
install_dir : plugins_install_dir,
)
endif
pango_sources = [
'gstbasetextoverlay.c',
'gstclockoverlay.c',
'gsttextoverlay.c',
'gsttextrender.c',
'gsttimeoverlay.c',
]
pango_dep = dependency('pangocairo', version : '>=1.22.0', required : false)
if pango_dep.found()
gstpango = library('gstpango',
pango_sources,
c_args : gst_plugins_base_args,
link_args : noseh_link_args,
include_directories: [configinc, libsinc],
dependencies : glib_deps + [pango_dep, video_dep, gst_dep, gst_base_dep, libm],
install : true,
install_dir : plugins_install_dir,
)
endif
theora_sources = [
'gsttheora.c',
'gsttheoraparse.c',
]
theoradec_dep = dependency('theoradec', version : '>=1.1', required : false)
theoraenc_dep = dependency('theoraenc', version : '>=1.1', required : false)
core_conf.set('HAVE_THEORA', theoradec_dep.found() and theoraenc_dep.found())
theora_deps = []
if theoradec_dep.found() or theoraenc_dep.found()
if theoradec_dep.found()
theora_sources += [ 'gsttheoradec.c' ]
theora_deps += theoradec_dep
endif
if theoraenc_dep.found()
theora_sources += [ 'gsttheoraenc.c' ]
theora_deps += theoraenc_dep
endif
gsttheora = library('gsttheora',
theora_sources,
c_args : gst_plugins_base_args,
link_args : noseh_link_args,
include_directories: [configinc, libsinc],
dependencies : theora_deps + glib_deps + [video_dep, tag_dep, gst_dep, gst_base_dep],
install : true,
install_dir : plugins_install_dir,
)
endif
vorbis_sources = [
'gstvorbis.c',
'gstvorbisdec.c',
'gstvorbisdeclib.c',
'gstvorbisenc.c',
'gstvorbisparse.c',
'gstvorbistag.c',
'gstvorbiscommon.c',
]
vorbisidec_sources = [
'gstivorbisdec.c',
'gstvorbisdec.c',
'gstvorbisdeclib.c',
'gstvorbiscommon.c',
]
vorbis_dep = dependency('vorbis', version : '>=1.0', required : false)
vorbisenc_dep = dependency('vorbisenc', version : '>=1.0', required : false)
vorbisidec_dep = dependency('vorbisidec', required : false)
if vorbis_dep.found() or vorbisidec_dep.found()
if cc.has_header_symbol('vorbis/codec.h', 'vorbis_synthesis_restart')
core_conf.set('HAVE_VORBIS_SYNTHESIS_RESTART', true)
endif
endif
if vorbis_dep.found()
vorbis_deps = [vorbis_dep]
if vorbisenc_dep.found()
vorbis_deps += vorbisenc_dep
endif
gstvorbis = library('gstvorbis',
vorbis_sources,
c_args : gst_plugins_base_args,
link_args : noseh_link_args,
include_directories: [configinc, libsinc],
dependencies : vorbis_deps + glib_deps + [audio_dep, tag_dep, gst_dep, gst_base_dep],
install : true,
install_dir : plugins_install_dir,
)
endif
if vorbisidec_dep.found()
gstivorbisdec = library('gstivorbisdec',
vorbisidec_sources,
c_args : gst_plugins_base_args,
link_args : noseh_link_args,
include_directories: [configinc, libsinc],
dependencies : glib_deps + [vorbisidec_dep, audio_dep, tag_dep, gst_dep, gst_base_dep],
install : true,
install_dir : plugins_install_dir,
)
endif
gst_allocators_headers = [
'allocators.h',
'gstfdmemory.h',
'gstdmabuf.h',
]
install_headers(gst_allocators_headers, subdir : 'gstreamer-1.0/gst/allocators/')
gstallocators = library('gstallocators-@0@'.format(api_version),
[ 'gstdmabuf.c', 'gstfdmemory.c' ],
c_args : gst_plugins_base_args,
include_directories: [configinc, libsinc],
version : libversion,
soversion : soversion,
install : true,
dependencies : [gst_dep],
vs_module_defs: vs_module_defs_dir + 'libgstallocators.def',
)
# TODO: generate gir
allocators_dep = declare_dependency(link_with: gstallocators,
include_directories : [libsinc],
dependencies : [gst_dep])
app_sources = ['gstappsrc.c', 'gstappsink.c']
app_headers = [ 'app.h', 'gstappsrc.h', 'gstappsink.h' ]
install_headers(app_headers, subdir : 'gstreamer-1.0/gst/app/')
gstapp = library('gstapp-@0@'.format(api_version),
app_sources,
c_args : gst_plugins_base_args,
include_directories: [configinc, libsinc],
version : libversion,
soversion : soversion,
install : true,
dependencies : [gst_base_dep],
vs_module_defs: vs_module_defs_dir + 'libgstapp.def',
)
# TODO: generate gir
app_dep = declare_dependency(link_with: gstapp,
include_directories : [libsinc],
dependencies : [gst_base_dep])
#!/usr/bin/env python3
# This is in its own file rather than inside meson.build
# because a) mixing the two is ugly and b) trying to
# make special characters such as \n go through all
# backends is a fool's errand.
import sys, os, shutil, subprocess
h_array = ['--fhead',
"#ifndef __GST_AUDIO_ENUM_TYPES_H__\n#define __GST_AUDIO_ENUM_TYPES_H__\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n",
'--fprod',
"\n/* enumerations from \"@filename@\" */\n",
'--vhead',
'GType @enum_name@_get_type (void);\n#define GST_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n',
'--ftail',
'G_END_DECLS\n\n#endif /* __GST_AUDIO_ENUM_TYPES_H__ */',
]
c_array = ['--fhead',
"#include \"audio-enumtypes.h\"\n\n#include \"audio.h\" \n#include \"audio-format.h\" \n#include \"audio-channels.h\" \n#include \"audio-info.h\" \n#include \"gstaudioringbuffer.h\"",
'--fprod',
"\n/* enumerations from \"@filename@\" */",
'--vhead',
"GType\n@enum_name@_get_type (void)\n{\n static volatile gsize g_define_type_id__volatile = 0;\n if (g_once_init_enter (&g_define_type_id__volatile)) {\n static const G@Type@Value values[] = {",
'--vprod',
" { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" },",
'--vtail',
" { 0, NULL, NULL }\n };\n GType g_define_type_id = g_@type@_register_static (\"@EnumName@\", values);\n g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);\n }\n return g_define_type_id__volatile;\n}\n",
]
cmd = []
argn = 1
# Find the full command needed to run glib-mkenums
# On UNIX-like, this is just the full path to glib-mkenums
# On Windows, this is the full path to interpreter + full path to glib-mkenums
for arg in sys.argv[1:]:
cmd.append(arg)
argn += 1
if arg.endswith('glib-mkenums'):
break
ofilename = sys.argv[argn]
headers = sys.argv[argn + 1:]
if ofilename.endswith('.h'):
arg_array = h_array
else:
arg_array = c_array
cmd_array = cmd + arg_array + headers
pc = subprocess.Popen(cmd_array, stdout=subprocess.PIPE)
(stdo, _) = pc.communicate()
if pc.returncode != 0:
sys.exit(pc.returncode)
open(ofilename, 'wb').write(stdo)
audio_src= [
'audio.c',
'audio-channel-mixer.c',
'audio-channels.c',
'audio-converter.c',
'audio-format.c',
'audio-info.c',
'audio-quantize.c',
'audio-resampler.c',
'gstaudiobasesink.c',
'gstaudiobasesrc.c',
'gstaudiocdsrc.c',
'gstaudioclock.c',
'gstaudiodecoder.c',
'gstaudioencoder.c',
'gstaudiofilter.c',
'gstaudioiec61937.c',
'gstaudiometa.c',
'gstaudioringbuffer.c',
'gstaudiosink.c',
'gstaudiosrc.c',
'gstaudioutilsprivate.c',
'streamvolume.c',
]
audio_mkenum_headers = [
'audio.h',
'audio-format.h',
'audio-channels.h',
'audio-channel-mixer.h',
'audio-converter.h',
'audio-info.h',
'audio-quantize.h',
'audio-resampler.h',
'gstaudioringbuffer.h',
]
# FIXME: check headers
audio_headers = audio_mkenum_headers + [
'gstaudiobasesink.h',
'gstaudiobasesrc.h',
'gstaudiocdsrc.h',
'gstaudioclock.h',
'gstaudiodecoder.h',
'gstaudioencoder.h',
'gstaudiofilter.h',
'gstaudioiec61937.h',
'gstaudiometa.h',
'gstaudiosink.h',
'gstaudiosrc.h',
'streamvolume.h',
]
install_headers(audio_headers, subdir : 'gstreamer-1.0/gst/audio/')
mkenums = find_program('audio_mkenum.py')
gstaudio_h = custom_target('gstaudioenum_h',
output : 'audio-enumtypes.h',
input : audio_mkenum_headers,
install : true,
install_dir : 'include/gstreamer-1.0/gst/audio/',
command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@'])
gstaudio_c = custom_target('gstaudioenum_c',
output : 'audio-enumtypes.c',
input : audio_mkenum_headers,
depends : [gstaudio_h],
command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@'])
orcsrc = 'gstaudiopack'
if have_orcc
orc_h = custom_target(orcsrc + '.h',
input : orcsrc + '.orc',
output : orcsrc + '.h',
command : orcc_args + ['--header', '-o', '@OUTPUT@', '@INPUT@'])
orc_c = custom_target(orcsrc + '.c',
input : orcsrc + '.orc',
output : orcsrc + '.c',
command : orcc_args + ['--implementation', '-o', '@OUTPUT@', '@INPUT@'])
else
orc_h = configure_file(input : orcsrc + '-dist.h',
output : orcsrc + '.h',
configuration : configuration_data())
orc_c = configure_file(input : orcsrc + '-dist.c',
output : orcsrc + '.c',
configuration : configuration_data())
endif
gstaudio = library('gstaudio-@0@'.format(api_version),
audio_src, gstaudio_h, gstaudio_c, orc_c, orc_h,
c_args: gst_plugins_base_args,
include_directories: [configinc, libsinc],
version : libversion,
soversion : soversion,
install : true,
dependencies : [tag_dep, gst_base_dep, libm],
vs_module_defs: vs_module_defs_dir + 'libgstaudio.def',
)
# TODO: generate gir
audio_dep = declare_dependency(link_with : gstaudio,
include_directories : [libsinc],
dependencies : [gst_base_dep, tag_dep],
sources : [gstaudio_h])
fft_sources = [
'gstfft.c',
'gstffts16.c',
'gstffts32.c',
'gstfftf32.c',
'gstfftf64.c',
'kiss_fft_s16.c',
'kiss_fft_s32.c',
'kiss_fft_f32.c',
'kiss_fft_f64.c',
'kiss_fftr_s16.c',
'kiss_fftr_s32.c',
'kiss_fftr_f32.c',
'kiss_fftr_f64.c'
]
fft_headers = [
'fft.h',
'gstfftf32.h',
'gstfftf64.h',
'gstfft.h',
'gstffts16.h',
'gstffts32.h',
]
install_headers(fft_headers, subdir : 'gstreamer-1.0/gst/fft/')
gstfft = library('gstfft-@0@'.format(api_version),
fft_sources,
c_args : gst_plugins_base_args,
include_directories: [configinc, libsinc],
version : libversion,
soversion : soversion,
install : true,
dependencies : [gst_dep, libm],
vs_module_defs: vs_module_defs_dir + 'libgstfft.def',
)
# TODO: generate gir
fft_dep = declare_dependency(link_with: gstfft,
include_directories : [libsinc],
dependencies : [gst_dep])
subdir('tag')
subdir('fft')
subdir('rtsp')
subdir('video')
subdir('audio')
subdir('rtp')
subdir('sdp')
subdir('pbutils')
subdir('riff')
subdir('app')
subdir('allocators')
pbutils_sources = [
'gstpluginsbaseversion.c',
'pbutils.c',
'codec-utils.c',
'descriptions.c',
'encoding-profile.c',
'encoding-target.c',
'install-plugins.c',
'missing-plugins.c',
'gstaudiovisualizer.c',
'gstdiscoverer.c',
'gstdiscoverer-types.c'
]
pbconf = configuration_data()
pbconf.set('PACKAGE_VERSION_MAJOR', gst_version_major)
pbconf.set('PACKAGE_VERSION_MINOR', gst_version_minor)
pbconf.set('PACKAGE_VERSION_MICRO', gst_version_micro)
pbconf.set('PACKAGE_VERSION_NANO', gst_version_nano)
configure_file(input : 'gstpluginsbaseversion.h.in',
output: 'gstpluginsbaseversion.h',
install_dir : 'include/gstreamer-1.0/gst/pbutils/',
configuration: pbconf)
pbutils_headers = [
'pbutils.h',
'codec-utils.h',
'descriptions.h',
'encoding-profile.h',
'encoding-target.h',
'install-plugins.h',
'missing-plugins.h',
'gstdiscoverer.h',
'gstaudiovisualizer.h',
]
install_headers(pbutils_headers, subdir : 'gstreamer-1.0/gst/pbutils/')
pbutils_mkenum_headers = pbutils_headers
mkenums = find_program('pbutils_mkenum.py')
gstpbutils_h = custom_target('gstpbutilsenum_h',
output : 'pbutils-enumtypes.h',
input : pbutils_mkenum_headers,
install : true,
install_dir : 'include/gstreamer-1.0/gst/pbutils/',
command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@'])
gstpbutils_c = custom_target('gstpbutilsenum_c',
output : 'pbutils-enumtypes.c',
input : pbutils_mkenum_headers,
depends : [gstaudio_h, gstvideo_h, gstpbutils_h],
command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@'])
pbutils = library('gstpbutils-@0@'.format(api_version),
pbutils_sources, gstpbutils_c, gstpbutils_h,
c_args : gst_plugins_base_args,
include_directories: [configinc, libsinc],
version : libversion,
soversion : soversion,
install : true,
dependencies : [video_dep, audio_dep, tag_dep],
vs_module_defs: vs_module_defs_dir + 'libgstpbutils.def',
)
# TODO: generate gir
pbutils_dep = declare_dependency(link_with : pbutils,
include_directories : [libsinc],
dependencies : [video_dep, audio_dep, tag_dep],
sources : [gstpbutils_h])
#!/usr/bin/env python3
# This is in its own file rather than inside meson.build
# because a) mixing the two is ugly and b) trying to
# make special characters such as \n go through all
# backends is a fool's errand.
import sys, os, shutil, subprocess
h_array = ['--fhead',
"#ifndef __PB_UTILS_ENUM_TYPES_H__\n#define __PB_UTILS_ENUM_TYPES_H__\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n",
'--fprod',
"\n/* enumerations from \"@filename@\" */\n",
'--vhead',
"GType @enum_name@_get_type (void);\n#define GST_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n",
'--ftail',
"G_END_DECLS\n\n#endif /* __PB_UTILS_ENUM_TYPES_H__ */"
]
c_array = ['--fhead',
"#include \"pbutils-enumtypes.h\"\n\n#include \"pbutils.h\" \n#include \"codec-utils.h\" \n#include \"descriptions.h\" \n#include \"encoding-profile.h\" \n#include \"encoding-target.h\" \n#include \"install-plugins.h\" \n#include \"missing-plugins.h\" \n#include \"gstdiscoverer.h\" \n#include \"gstaudiovisualizer.h\"",
'--fprod',
"\n/* enumerations from \"@filename@\" */",
'--vhead',
"GType\n@enum_name@_get_type (void)\n{\n static volatile gsize g_define_type_id__volatile = 0;\n if (g_once_init_enter (&g_define_type_id__volatile)) {\n static const G@Type@Value values[] = {",
'--vprod',
" { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" },",
'--vtail',
" { 0, NULL, NULL }\n };\n GType g_define_type_id = g_@type@_register_static (\"@EnumName@\", values);\n g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);\n }\n return g_define_type_id__volatile;\n}\n"
]
cmd = []
argn = 1
# Find the full command needed to run glib-mkenums
# On UNIX-like, this is just the full path to glib-mkenums
# On Windows, this is the full path to interpreter + full path to glib-mkenums
for arg in sys.argv[1:]:
cmd.append(arg)
argn += 1
if arg.endswith('glib-mkenums'):
break
ofilename = sys.argv[argn]
headers = sys.argv[argn + 1:]
if ofilename.endswith('.h'):
arg_array = h_array
else:
arg_array = c_array
cmd_array = cmd + arg_array + headers
pc = subprocess.Popen(cmd_array, stdout=subprocess.PIPE)
(stdo, _) = pc.communicate()
if pc.returncode != 0:
sys.exit(pc.returncode)
open(ofilename, 'wb').write(stdo)
riff_sources = [
'riff.c',
'riff-media.c',
'riff-read.c',
]
riff_headers = [
'riff.h',
'riff-ids.h',
'riff-media.h',
'riff-read.h',
]
install_headers(riff_headers, subdir : 'gstreamer-1.0/gst/riff/')
gstriff = library('gstriff-@0@'.format(api_version),
riff_sources,
c_args : gst_plugins_base_args,
include_directories: [configinc, libsinc],
version : libversion,
soversion : soversion,
install : true,
dependencies : [audio_dep, tag_dep],
vs_module_defs: vs_module_defs_dir + 'libgstriff.def',
)
# TODO: generate gir
riff_dep = declare_dependency(link_with: gstriff,
include_directories : [libsinc],
dependencies : [audio_dep, tag_dep])
rtp_sources = [
'gstrtpbuffer.c',
'gstrtcpbuffer.c',
'gstrtppayloads.c',
'gstrtphdrext.c',
'gstrtpbaseaudiopayload.c',
'gstrtpbasepayload.c',
'gstrtpbasedepayload.c'
]
rtp_headers = [
'gstrtcpbuffer.h',
'gstrtpbaseaudiopayload.h',
'gstrtpbasedepayload.h',
'gstrtpbasepayload.h',
'gstrtpbuffer.h',
'gstrtpdefs.h',
'gstrtphdrext.h',
'gstrtppayloads.h',
'rtp.h',
]
install_headers(rtp_headers, subdir : 'gstreamer-1.0/gst/rtp/')
mkenums = find_program('rtp_mkenum.py')
gstrtp_enum_h = custom_target('gstrtp_enum_h',
output : 'gstrtp-enumtypes.h',
input : rtp_headers,
install : true,
install_dir : 'include/gstreamer-1.0/gst/rtp/',
command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@'])
gstrtp_enum_c = custom_target('gstrtp_enum_c',
output : 'gstrtp-enumtypes.c',
input : rtp_headers,
depends : [gstaudio_h, gstrtp_enum_h],
command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@'])
gst_rtp = library('gstrtp-@0@'.format(api_version),
rtp_sources, gstrtp_enum_c, gstrtp_enum_h,
c_args : gst_plugins_base_args,
include_directories: [configinc, libsinc],
version : libversion,
soversion : soversion,
install : true,
dependencies : [audio_dep, gst_base_dep],
vs_module_defs: vs_module_defs_dir + 'libgstrtp.def',
)
# TODO: generate gir
rtp_dep = declare_dependency(link_with : gst_rtp,
include_directories : [libsinc],
dependencies : [audio_dep, gst_base_dep],
sources : [gstrtp_enum_h])
#!/usr/bin/env python3
# This is in its own file rather than inside meson.build
# because a) mixing the two is ugly and b) trying to
# make special characters such as \n go through all
# backends is a fool's errand.
import sys, os, shutil, subprocess