meson: Generate girs

https://bugzilla.gnome.org/show_bug.cgi?id=773944
This commit is contained in:
Thibault Saunier 2016-10-20 17:17:27 -03:00
parent 54f4d3772c
commit 6917cb629e
13 changed files with 235 additions and 37 deletions

View file

@ -5,8 +5,9 @@ gst_allocators_headers = [
] ]
install_headers(gst_allocators_headers, subdir : 'gstreamer-1.0/gst/allocators/') install_headers(gst_allocators_headers, subdir : 'gstreamer-1.0/gst/allocators/')
gst_allocators_sources = [ 'gstdmabuf.c', 'gstfdmemory.c' ]
gstallocators = library('gstallocators-@0@'.format(api_version), gstallocators = library('gstallocators-@0@'.format(api_version),
[ 'gstdmabuf.c', 'gstfdmemory.c' ], gst_allocators_sources,
c_args : gst_plugins_base_args, c_args : gst_plugins_base_args,
include_directories: [configinc, libsinc], include_directories: [configinc, libsinc],
version : libversion, version : libversion,
@ -15,8 +16,24 @@ gstallocators = library('gstallocators-@0@'.format(api_version),
dependencies : [gst_dep], dependencies : [gst_dep],
vs_module_defs: vs_module_defs_dir + 'libgstallocators.def', vs_module_defs: vs_module_defs_dir + 'libgstallocators.def',
) )
# TODO: generate gir
allocators_gen_sources = []
if build_gir
allocators_gen_sources += [gnome.generate_gir(gstallocators,
sources : gst_allocators_sources + gst_allocators_headers,
namespace : 'GstAllocators',
nsversion : api_version,
identifier_prefix : 'Gst',
symbol_prefix : 'gst',
export_packages : 'gstreamer-allocators-1.0',
includes : ['Gst-1.0'],
install : true,
extra_args : gir_init_section,
dependencies : [gst_dep]
)]
endif
allocators_dep = declare_dependency(link_with: gstallocators, allocators_dep = declare_dependency(link_with: gstallocators,
include_directories : [libsinc], include_directories : [libsinc],
dependencies : [gst_dep]) dependencies : [gst_dep],
sources : allocators_gen_sources)

View file

@ -13,8 +13,24 @@ gstapp = library('gstapp-@0@'.format(api_version),
dependencies : [gst_base_dep], dependencies : [gst_base_dep],
vs_module_defs: vs_module_defs_dir + 'libgstapp.def', vs_module_defs: vs_module_defs_dir + 'libgstapp.def',
) )
# TODO: generate gir
app_gen_sources = []
if build_gir
app_gen_sources += [gnome.generate_gir(gstapp,
sources : app_sources + app_headers,
namespace : 'GstApp',
nsversion : api_version,
identifier_prefix : 'Gst',
symbol_prefix : 'gst',
export_packages : 'gstreamer-app-1.0',
includes : ['Gst-1.0', 'GstBase-1.0'],
install : true,
extra_args : gir_init_section,
dependencies : [gst_dep, gst_base_dep]
)]
endif
app_dep = declare_dependency(link_with: gstapp, app_dep = declare_dependency(link_with: gstapp,
include_directories : [libsinc], include_directories : [libsinc],
dependencies : [gst_base_dep]) dependencies : [gst_base_dep],
sources : app_gen_sources)

View file

@ -65,6 +65,7 @@ gstaudio_c = custom_target('gstaudioenum_c',
input : audio_mkenum_headers, input : audio_mkenum_headers,
depends : [gstaudio_h], depends : [gstaudio_h],
command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@']) command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@'])
audio_gen_sources = [gstaudio_h]
orcsrc = 'gstaudiopack' orcsrc = 'gstaudiopack'
if have_orcc if have_orcc
@ -127,6 +128,7 @@ if have_sse41
simd_dependencies += audio_resampler_sse41 simd_dependencies += audio_resampler_sse41
endif endif
gstaudio_deps = [tag_dep, gst_base_dep, orc_dep, libm]
gstaudio = library('gstaudio-@0@'.format(api_version), gstaudio = library('gstaudio-@0@'.format(api_version),
audio_src, gstaudio_h, gstaudio_c, orc_c, orc_h, audio_src, gstaudio_h, gstaudio_c, orc_c, orc_h,
c_args : gst_plugins_base_args + simd_cargs, c_args : gst_plugins_base_args + simd_cargs,
@ -135,12 +137,26 @@ gstaudio = library('gstaudio-@0@'.format(api_version),
version : libversion, version : libversion,
soversion : soversion, soversion : soversion,
install : true, install : true,
dependencies : [tag_dep, gst_base_dep, orc_dep, libm], dependencies : gstaudio_deps,
vs_module_defs: vs_module_defs_dir + 'libgstaudio.def', vs_module_defs: vs_module_defs_dir + 'libgstaudio.def',
) )
# TODO: generate gir
if build_gir
audio_gen_sources += [gnome.generate_gir(gstaudio,
sources : audio_src + audio_headers + [gstaudio_c] + [gstaudio_h],
namespace : 'GstAudio',
nsversion : api_version,
identifier_prefix : 'Gst',
symbol_prefix : 'gst',
export_packages : 'gstreamer-audio-1.0',
includes : ['Gst-1.0', 'GLib-2.0', 'GObject-2.0', 'GModule-2.0' ],
install : true,
extra_args : gir_init_section,
dependencies : gstaudio_deps
)]
endif
audio_dep = declare_dependency(link_with : gstaudio, audio_dep = declare_dependency(link_with : gstaudio,
include_directories : [libsinc], include_directories : [libsinc],
dependencies : [gst_base_dep, tag_dep], dependencies : gstaudio_deps,
sources : [gstaudio_h]) sources : audio_gen_sources)

View file

@ -34,8 +34,24 @@ gstfft = library('gstfft-@0@'.format(api_version),
dependencies : [gst_dep, libm], dependencies : [gst_dep, libm],
vs_module_defs: vs_module_defs_dir + 'libgstfft.def', vs_module_defs: vs_module_defs_dir + 'libgstfft.def',
) )
# TODO: generate gir
fft_gen_sources = []
if build_gir
fft_gen_sources += [gnome.generate_gir(gstfft,
sources : fft_sources + fft_headers,
namespace : 'GstFft',
nsversion : api_version,
identifier_prefix : 'Gst',
symbol_prefix : 'gst',
export_packages : 'gstreamer-fft-1.0',
includes : ['Gst-1.0'],
install : true,
extra_args : gir_init_section,
dependencies : [gst_dep, libm]
)]
endif
fft_dep = declare_dependency(link_with: gstfft, fft_dep = declare_dependency(link_with: gstfft,
include_directories : [libsinc], include_directories : [libsinc],
dependencies : [gst_dep]) dependencies : [gst_dep],
sources: fft_gen_sources)

View file

@ -51,6 +51,7 @@ gstpbutils_c = custom_target('gstpbutilsenum_c',
depends : [gstaudio_h, gstvideo_h, gstpbutils_h], depends : [gstaudio_h, gstvideo_h, gstpbutils_h],
command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@']) command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@'])
gstpbutils_deps = [video_dep, audio_dep, tag_dep]
pbutils = library('gstpbutils-@0@'.format(api_version), pbutils = library('gstpbutils-@0@'.format(api_version),
pbutils_sources, gstpbutils_c, gstpbutils_h, pbutils_sources, gstpbutils_c, gstpbutils_h,
c_args : gst_plugins_base_args, c_args : gst_plugins_base_args,
@ -58,12 +59,27 @@ pbutils = library('gstpbutils-@0@'.format(api_version),
version : libversion, version : libversion,
soversion : soversion, soversion : soversion,
install : true, install : true,
dependencies : [video_dep, audio_dep, tag_dep], dependencies : gstpbutils_deps,
vs_module_defs: vs_module_defs_dir + 'libgstpbutils.def', vs_module_defs: vs_module_defs_dir + 'libgstpbutils.def',
) )
# TODO: generate gir
pbutils_gen_sources = [gstpbutils_h]
if build_gir
pbutils_gen_sources += [gnome.generate_gir(pbutils,
sources : pbutils_sources + pbutils_headers + [gstpbutils_h],
namespace : 'GstPbutils',
nsversion : api_version,
identifier_prefix : 'Gst',
symbol_prefix : 'gst',
export_packages : 'gstreamer-pbutils-1.0',
includes : ['Gst-1.0', 'GstBase-1.0'],
install : true,
extra_args : gir_init_section,
dependencies : gstpbutils_deps
)]
endif
pbutils_dep = declare_dependency(link_with : pbutils, pbutils_dep = declare_dependency(link_with : pbutils,
include_directories : [libsinc], include_directories : [libsinc],
dependencies : [video_dep, audio_dep, tag_dep], dependencies : gstpbutils_deps,
sources : [gstpbutils_h]) sources : pbutils_gen_sources)

View file

@ -12,6 +12,7 @@ riff_headers = [
] ]
install_headers(riff_headers, subdir : 'gstreamer-1.0/gst/riff/') install_headers(riff_headers, subdir : 'gstreamer-1.0/gst/riff/')
riff_deps = [audio_dep, tag_dep]
gstriff = library('gstriff-@0@'.format(api_version), gstriff = library('gstriff-@0@'.format(api_version),
riff_sources, riff_sources,
c_args : gst_plugins_base_args, c_args : gst_plugins_base_args,
@ -19,11 +20,31 @@ gstriff = library('gstriff-@0@'.format(api_version),
version : libversion, version : libversion,
soversion : soversion, soversion : soversion,
install : true, install : true,
dependencies : [audio_dep, tag_dep], dependencies : riff_deps,
vs_module_defs: vs_module_defs_dir + 'libgstriff.def', vs_module_defs: vs_module_defs_dir + 'libgstriff.def',
) )
# TODO: generate gir
riff_gen_sources = []
# *** GIR DISABLED for this library ***
# This library does not respect the type naming conventions required to be
# usable in binded languages.
# if build_gir
# riff_gen_sources += [gnome.generate_gir(gstriff,
# sources : riff_sources + riff_headers,
# namespace : 'GstRiff',
# nsversion : api_version,
# identifier_prefix : 'Gst',
# symbol_prefix : 'gst',
# export_packages : 'gstreamer-riff-1.0',
# includes : ['Gst-1.0'],
# install : true,
# extra_args : gir_init_section,
# dependencies : riff_deps,
# )]
# endif
riff_dep = declare_dependency(link_with: gstriff, riff_dep = declare_dependency(link_with: gstriff,
include_directories : [libsinc], include_directories : [libsinc],
dependencies : [audio_dep, tag_dep]) dependencies : riff_deps,
sources : riff_gen_sources )

View file

@ -36,6 +36,7 @@ gstrtp_enum_c = custom_target('gstrtp_enum_c',
depends : [gstaudio_h, gstrtp_enum_h], depends : [gstaudio_h, gstrtp_enum_h],
command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@']) command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@'])
gstrtp_deps = [audio_dep, gst_base_dep]
gst_rtp = library('gstrtp-@0@'.format(api_version), gst_rtp = library('gstrtp-@0@'.format(api_version),
rtp_sources, gstrtp_enum_c, gstrtp_enum_h, rtp_sources, gstrtp_enum_c, gstrtp_enum_h,
c_args : gst_plugins_base_args, c_args : gst_plugins_base_args,
@ -43,12 +44,28 @@ gst_rtp = library('gstrtp-@0@'.format(api_version),
version : libversion, version : libversion,
soversion : soversion, soversion : soversion,
install : true, install : true,
dependencies : [audio_dep, gst_base_dep], dependencies : gstrtp_deps,
vs_module_defs: vs_module_defs_dir + 'libgstrtp.def', vs_module_defs: vs_module_defs_dir + 'libgstrtp.def',
) )
# TODO: generate gir
rtp_gen_sources = [gstrtp_enum_h]
if build_gir
rtp_gen_sources += [gnome.generate_gir(gst_rtp,
sources : rtp_sources + rtp_headers + [gstrtp_enum_c] + [gstrtp_enum_h],
namespace : 'GstRtp',
nsversion : api_version,
identifier_prefix : 'Gst',
symbol_prefix : 'gst',
export_packages : 'gstreamer-rtp-1.0',
includes : ['Gst-1.0', 'GstBase-1.0'],
install : true,
extra_args : gir_init_section,
dependencies : gstrtp_deps
)]
endif
rtp_dep = declare_dependency(link_with : gst_rtp, rtp_dep = declare_dependency(link_with : gst_rtp,
include_directories : [libsinc], include_directories : [libsinc],
dependencies : [audio_dep, gst_base_dep], dependencies : gstrtp_deps,
sources : [gstrtp_enum_h]) sources : rtp_gen_sources)

View file

@ -38,6 +38,7 @@ gstrtsp_c = custom_target('gstrtspenum_c',
winsock2 = cc.find_library('ws2_32', required : false) winsock2 = cc.find_library('ws2_32', required : false)
gstrtsp_deps = [gst_dep, gio_dep, libm, winsock2]
gst_rtsp = library('gstrtsp-@0@'.format(api_version), gst_rtsp = library('gstrtsp-@0@'.format(api_version),
rtsp_sources, rtsp_sources,
gstrtsp_h, gstrtsp_c, gstrtsp_h, gstrtsp_c,
@ -46,12 +47,27 @@ gst_rtsp = library('gstrtsp-@0@'.format(api_version),
version : libversion, version : libversion,
soversion : soversion, soversion : soversion,
install : true, install : true,
dependencies : [gst_dep, gio_dep, libm, winsock2], dependencies : gstrtsp_deps,
vs_module_defs: vs_module_defs_dir + 'libgstrtsp.def', vs_module_defs: vs_module_defs_dir + 'libgstrtsp.def',
) )
# TODO: generate gir
rtsp_gen_sources = [gstrtsp_h]
if build_gir
rtsp_gen_sources += [gnome.generate_gir(gst_rtsp,
sources : rtsp_sources + rtsp_headers + [gstrtsp_c] + [gstrtsp_h],
namespace : 'GstRtsp',
nsversion : api_version,
identifier_prefix : 'Gst',
symbol_prefix : 'gst',
export_packages : 'gstreamer-rtsp-1.0',
includes : ['Gst-1.0', 'GstSdp-1.0', 'Gio-2.0'],
install : true,
extra_args : gir_init_section,
dependencies : gstrtsp_deps
)]
endif
rtsp_dep = declare_dependency(link_with : gst_rtsp, rtsp_dep = declare_dependency(link_with : gst_rtsp,
include_directories : [libsinc], include_directories : [libsinc],
dependencies : [gst_dep, gio_dep], dependencies : gstrtsp_deps,
sources : [gstrtsp_h]) sources : rtsp_gen_sources)

View file

@ -6,18 +6,36 @@ gst_sdp_headers = [
] ]
install_headers(gst_sdp_headers, subdir : 'gstreamer-1.0/gst/sdp/') install_headers(gst_sdp_headers, subdir : 'gstreamer-1.0/gst/sdp/')
rtsp_deps = [rtp_dep, gst_dep, gio_dep]
gst_sdp_sources = ['gstsdpmessage.c', 'gstmikey.c']
gstsdp = library('gstsdp-@0@'.format(api_version), gstsdp = library('gstsdp-@0@'.format(api_version),
'gstsdpmessage.c', 'gstmikey.c', gst_sdp_sources,
c_args : gst_plugins_base_args, c_args : gst_plugins_base_args,
include_directories: [configinc, libsinc], include_directories: [configinc, libsinc],
version : libversion, version : libversion,
soversion : soversion, soversion : soversion,
install : true, install : true,
dependencies : [rtp_dep, gst_dep, gio_dep], dependencies : rtsp_deps,
vs_module_defs: vs_module_defs_dir + 'libgstsdp.def', vs_module_defs: vs_module_defs_dir + 'libgstsdp.def',
) )
# TODO: generate gir
sdp_gen_sources = []
if build_gir
sdp_gen_sources += [gnome.generate_gir(gstsdp,
sources : gst_sdp_sources + gst_sdp_headers,
namespace : 'GstSdp',
nsversion : api_version,
identifier_prefix : 'Gst',
symbol_prefix : 'gst',
export_packages : 'gstreamer-sdp-1.0',
includes : ['Gst-1.0'],
install : true,
extra_args : gir_init_section,
dependencies : rtsp_deps
)]
endif
sdp_dep = declare_dependency(link_with: gstsdp, sdp_dep = declare_dependency(link_with: gstsdp,
include_directories : [libsinc], include_directories : [libsinc],
dependencies : [rtp_dep, gst_dep, gio_dep]) dependencies : rtsp_deps,
sources: sdp_gen_sources)

View file

@ -22,6 +22,7 @@ tag_headers = [
] ]
install_headers(tag_headers, subdir : 'gstreamer-1.0/gst/tag/') install_headers(tag_headers, subdir : 'gstreamer-1.0/gst/tag/')
tag_deps = [gst_base_dep, libm]
gsttag = library('gsttag-@0@'.format(api_version), gsttag = library('gsttag-@0@'.format(api_version),
tag_sources, tag_sources,
c_args : gst_plugins_base_args, c_args : gst_plugins_base_args,
@ -29,14 +30,30 @@ gsttag = library('gsttag-@0@'.format(api_version),
version : libversion, version : libversion,
soversion : soversion, soversion : soversion,
install : true, install : true,
dependencies : [gst_base_dep, libm], dependencies : tag_deps,
vs_module_defs: vs_module_defs_dir + 'libgsttag.def', vs_module_defs: vs_module_defs_dir + 'libgsttag.def',
) )
# TODO: generate gir
tag_gen_sources = []
if build_gir
tag_gen_sources += [gnome.generate_gir(gsttag,
sources : tag_sources + tag_headers,
namespace : 'GstTag',
nsversion : api_version,
identifier_prefix : 'Gst',
symbol_prefix : 'gst',
export_packages : 'gstreamer-tag-1.0',
includes : ['Gst-1.0'],
install : true,
extra_args : gir_init_section,
dependencies : tag_deps
)]
endif
tag_dep = declare_dependency(link_with: gsttag, tag_dep = declare_dependency(link_with: gsttag,
include_directories : [libsinc], include_directories : [libsinc],
dependencies : [gst_base_dep]) dependencies : tag_deps,
sources: tag_gen_sources)
# FIXME: iso-codes stuff # FIXME: iso-codes stuff
# little program that reads iso_639.xml and outputs tables for us as fallback # little program that reads iso_639.xml and outputs tables for us as fallback

View file

@ -96,6 +96,7 @@ gstvideo_c = custom_target('gstvideoenum_c',
input : video_mkenum_headers, input : video_mkenum_headers,
depends : [gstvideo_h], depends : [gstvideo_h],
command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@']) command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@'])
video_gen_sources = [gstvideo_h]
orcsrc = 'video-orc' orcsrc = 'video-orc'
if have_orcc if have_orcc
@ -116,6 +117,7 @@ else
configuration : configuration_data()) configuration : configuration_data())
endif endif
gstvideo_deps = [gst_base_dep, orc_dep, libm]
gstvideo = library('gstvideo-@0@'.format(api_version), gstvideo = library('gstvideo-@0@'.format(api_version),
video_sources, gstvideo_h, gstvideo_c, orc_c, orc_h, video_sources, gstvideo_h, gstvideo_c, orc_c, orc_h,
c_args : gst_plugins_base_args, c_args : gst_plugins_base_args,
@ -123,12 +125,26 @@ gstvideo = library('gstvideo-@0@'.format(api_version),
version : libversion, version : libversion,
soversion : soversion, soversion : soversion,
install : true, install : true,
dependencies : [gst_base_dep, orc_dep, libm], dependencies : gstvideo_deps,
vs_module_defs: vs_module_defs_dir + 'libgstvideo.def', vs_module_defs: vs_module_defs_dir + 'libgstvideo.def',
) )
# TODO: generate gir
if build_gir
video_gen_sources += [gnome.generate_gir(gstvideo,
sources : video_sources + video_headers + [gstvideo_c] + [gstvideo_h],
namespace : 'GstVideo',
nsversion : api_version,
identifier_prefix : 'Gst',
symbol_prefix : 'gst',
export_packages : 'gstreamer-video-1.0',
includes : ['Gst-1.0', 'GLib-2.0', 'GObject-2.0', 'GModule-2.0' ],
install : true,
extra_args : gir_init_section,
dependencies : gstvideo_deps
)]
endif
video_dep = declare_dependency(link_with : gstvideo, video_dep = declare_dependency(link_with : gstvideo,
include_directories : [libsinc], include_directories : [libsinc],
dependencies : [gst_base_dep], dependencies : gstvideo_deps,
sources : [gstvideo_h]) sources : video_gen_sources)

View file

@ -195,6 +195,15 @@ if host_machine.system() == 'windows'
pic_args = [] pic_args = []
endif endif
gir = find_program('g-ir-scanner', required : false)
gnome = import('gnome')
build_gir = gir.found() and not meson.is_cross_build() and not get_option('disable_introspection')
gir_init_section = [ '--add-init-section=extern void gst_init(gint*,gchar**);' + \
'g_setenv("GST_REGISTRY_1.0", "@0@", TRUE);'.format(meson.current_build_dir() + '/gir_empty_registry.reg') + \
'g_setenv("GST_PLUGIN_PATH_1_0", "", TRUE);' + \
'g_setenv("GST_PLUGIN_SYSTEM_PATH_1_0", "", TRUE);' + \
'gst_init(NULL,NULL);' ]
subdir('gst-libs') subdir('gst-libs')
subdir('gst') subdir('gst')
subdir('ext') subdir('ext')

View file

@ -1,3 +1,6 @@
option('audioresample_format', type : 'combo', choices : ['int', 'float', 'auto'], value : 'auto') option('audioresample_format', type : 'combo', choices : ['int', 'float', 'auto'], value : 'auto')
option('disable_examples', type : 'boolean', value : false) option('disable_examples', type : 'boolean', value : false)
option('use_orc', type : 'combo', choices : ['yes', 'no', 'auto'], value : 'auto') option('use_orc', type : 'combo', choices : ['yes', 'no', 'auto'], value : 'auto')
option('disable_introspection',
type : 'boolean', value : false,
description : 'Whether to disable the introspection generation')