diff --git a/gst-libs/gst/allocators/meson.build b/gst-libs/gst/allocators/meson.build index 2a66aaee83..53dfd1b9e6 100644 --- a/gst-libs/gst/allocators/meson.build +++ b/gst-libs/gst/allocators/meson.build @@ -5,8 +5,9 @@ gst_allocators_headers = [ ] 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), - [ 'gstdmabuf.c', 'gstfdmemory.c' ], + gst_allocators_sources, c_args : gst_plugins_base_args, include_directories: [configinc, libsinc], version : libversion, @@ -15,8 +16,24 @@ gstallocators = library('gstallocators-@0@'.format(api_version), dependencies : [gst_dep], 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, include_directories : [libsinc], - dependencies : [gst_dep]) + dependencies : [gst_dep], + sources : allocators_gen_sources) diff --git a/gst-libs/gst/app/meson.build b/gst-libs/gst/app/meson.build index 4891a79956..90e838a615 100644 --- a/gst-libs/gst/app/meson.build +++ b/gst-libs/gst/app/meson.build @@ -13,8 +13,24 @@ gstapp = library('gstapp-@0@'.format(api_version), dependencies : [gst_base_dep], 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, include_directories : [libsinc], - dependencies : [gst_base_dep]) + dependencies : [gst_base_dep], + sources : app_gen_sources) diff --git a/gst-libs/gst/audio/meson.build b/gst-libs/gst/audio/meson.build index c68f113ad8..3dee9db0c5 100644 --- a/gst-libs/gst/audio/meson.build +++ b/gst-libs/gst/audio/meson.build @@ -65,6 +65,7 @@ gstaudio_c = custom_target('gstaudioenum_c', input : audio_mkenum_headers, depends : [gstaudio_h], command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@']) +audio_gen_sources = [gstaudio_h] orcsrc = 'gstaudiopack' if have_orcc @@ -127,6 +128,7 @@ if have_sse41 simd_dependencies += audio_resampler_sse41 endif +gstaudio_deps = [tag_dep, gst_base_dep, orc_dep, libm] gstaudio = library('gstaudio-@0@'.format(api_version), audio_src, gstaudio_h, gstaudio_c, orc_c, orc_h, c_args : gst_plugins_base_args + simd_cargs, @@ -135,12 +137,26 @@ gstaudio = library('gstaudio-@0@'.format(api_version), version : libversion, soversion : soversion, install : true, - dependencies : [tag_dep, gst_base_dep, orc_dep, libm], + dependencies : gstaudio_deps, 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, include_directories : [libsinc], - dependencies : [gst_base_dep, tag_dep], - sources : [gstaudio_h]) + dependencies : gstaudio_deps, + sources : audio_gen_sources) diff --git a/gst-libs/gst/fft/meson.build b/gst-libs/gst/fft/meson.build index 9a5fabb106..87419df895 100644 --- a/gst-libs/gst/fft/meson.build +++ b/gst-libs/gst/fft/meson.build @@ -34,8 +34,24 @@ gstfft = library('gstfft-@0@'.format(api_version), dependencies : [gst_dep, libm], 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, include_directories : [libsinc], - dependencies : [gst_dep]) + dependencies : [gst_dep], + sources: fft_gen_sources) diff --git a/gst-libs/gst/pbutils/meson.build b/gst-libs/gst/pbutils/meson.build index 38383f32b5..58d4bf2b7d 100644 --- a/gst-libs/gst/pbutils/meson.build +++ b/gst-libs/gst/pbutils/meson.build @@ -51,6 +51,7 @@ gstpbutils_c = custom_target('gstpbutilsenum_c', depends : [gstaudio_h, gstvideo_h, gstpbutils_h], command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@']) +gstpbutils_deps = [video_dep, audio_dep, tag_dep] pbutils = library('gstpbutils-@0@'.format(api_version), pbutils_sources, gstpbutils_c, gstpbutils_h, c_args : gst_plugins_base_args, @@ -58,12 +59,27 @@ pbutils = library('gstpbutils-@0@'.format(api_version), version : libversion, soversion : soversion, install : true, - dependencies : [video_dep, audio_dep, tag_dep], + dependencies : gstpbutils_deps, 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, include_directories : [libsinc], - dependencies : [video_dep, audio_dep, tag_dep], - sources : [gstpbutils_h]) + dependencies : gstpbutils_deps, + sources : pbutils_gen_sources) diff --git a/gst-libs/gst/riff/meson.build b/gst-libs/gst/riff/meson.build index 6017348d77..6f383217f5 100644 --- a/gst-libs/gst/riff/meson.build +++ b/gst-libs/gst/riff/meson.build @@ -12,6 +12,7 @@ riff_headers = [ ] install_headers(riff_headers, subdir : 'gstreamer-1.0/gst/riff/') +riff_deps = [audio_dep, tag_dep] gstriff = library('gstriff-@0@'.format(api_version), riff_sources, c_args : gst_plugins_base_args, @@ -19,11 +20,31 @@ gstriff = library('gstriff-@0@'.format(api_version), version : libversion, soversion : soversion, install : true, - dependencies : [audio_dep, tag_dep], + dependencies : riff_deps, 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, include_directories : [libsinc], - dependencies : [audio_dep, tag_dep]) + dependencies : riff_deps, + sources : riff_gen_sources ) diff --git a/gst-libs/gst/rtp/meson.build b/gst-libs/gst/rtp/meson.build index c79913a337..deba842207 100644 --- a/gst-libs/gst/rtp/meson.build +++ b/gst-libs/gst/rtp/meson.build @@ -36,6 +36,7 @@ gstrtp_enum_c = custom_target('gstrtp_enum_c', depends : [gstaudio_h, gstrtp_enum_h], command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@']) +gstrtp_deps = [audio_dep, gst_base_dep] gst_rtp = library('gstrtp-@0@'.format(api_version), rtp_sources, gstrtp_enum_c, gstrtp_enum_h, c_args : gst_plugins_base_args, @@ -43,12 +44,28 @@ gst_rtp = library('gstrtp-@0@'.format(api_version), version : libversion, soversion : soversion, install : true, - dependencies : [audio_dep, gst_base_dep], + dependencies : gstrtp_deps, 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, include_directories : [libsinc], - dependencies : [audio_dep, gst_base_dep], - sources : [gstrtp_enum_h]) + dependencies : gstrtp_deps, + sources : rtp_gen_sources) diff --git a/gst-libs/gst/rtsp/meson.build b/gst-libs/gst/rtsp/meson.build index 875f6384e9..da093f0a6d 100644 --- a/gst-libs/gst/rtsp/meson.build +++ b/gst-libs/gst/rtsp/meson.build @@ -38,6 +38,7 @@ gstrtsp_c = custom_target('gstrtspenum_c', winsock2 = cc.find_library('ws2_32', required : false) +gstrtsp_deps = [gst_dep, gio_dep, libm, winsock2] gst_rtsp = library('gstrtsp-@0@'.format(api_version), rtsp_sources, gstrtsp_h, gstrtsp_c, @@ -46,12 +47,27 @@ gst_rtsp = library('gstrtsp-@0@'.format(api_version), version : libversion, soversion : soversion, install : true, - dependencies : [gst_dep, gio_dep, libm, winsock2], + dependencies : gstrtsp_deps, 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, include_directories : [libsinc], - dependencies : [gst_dep, gio_dep], - sources : [gstrtsp_h]) + dependencies : gstrtsp_deps, + sources : rtsp_gen_sources) diff --git a/gst-libs/gst/sdp/meson.build b/gst-libs/gst/sdp/meson.build index b68cad7814..8837629cc5 100644 --- a/gst-libs/gst/sdp/meson.build +++ b/gst-libs/gst/sdp/meson.build @@ -6,18 +6,36 @@ gst_sdp_headers = [ ] 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), - 'gstsdpmessage.c', 'gstmikey.c', + gst_sdp_sources, c_args : gst_plugins_base_args, include_directories: [configinc, libsinc], version : libversion, soversion : soversion, install : true, - dependencies : [rtp_dep, gst_dep, gio_dep], + dependencies : rtsp_deps, 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, include_directories : [libsinc], - dependencies : [rtp_dep, gst_dep, gio_dep]) + dependencies : rtsp_deps, + sources: sdp_gen_sources) diff --git a/gst-libs/gst/tag/meson.build b/gst-libs/gst/tag/meson.build index 14784c140e..6f92f9125a 100644 --- a/gst-libs/gst/tag/meson.build +++ b/gst-libs/gst/tag/meson.build @@ -22,6 +22,7 @@ tag_headers = [ ] install_headers(tag_headers, subdir : 'gstreamer-1.0/gst/tag/') +tag_deps = [gst_base_dep, libm] gsttag = library('gsttag-@0@'.format(api_version), tag_sources, c_args : gst_plugins_base_args, @@ -29,14 +30,30 @@ gsttag = library('gsttag-@0@'.format(api_version), version : libversion, soversion : soversion, install : true, - dependencies : [gst_base_dep, libm], + dependencies : tag_deps, 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, include_directories : [libsinc], - dependencies : [gst_base_dep]) + dependencies : tag_deps, + sources: tag_gen_sources) # FIXME: iso-codes stuff # little program that reads iso_639.xml and outputs tables for us as fallback diff --git a/gst-libs/gst/video/meson.build b/gst-libs/gst/video/meson.build index 90e2e3e490..ae13586841 100644 --- a/gst-libs/gst/video/meson.build +++ b/gst-libs/gst/video/meson.build @@ -96,6 +96,7 @@ gstvideo_c = custom_target('gstvideoenum_c', input : video_mkenum_headers, depends : [gstvideo_h], command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@']) +video_gen_sources = [gstvideo_h] orcsrc = 'video-orc' if have_orcc @@ -116,6 +117,7 @@ else configuration : configuration_data()) endif +gstvideo_deps = [gst_base_dep, orc_dep, libm] gstvideo = library('gstvideo-@0@'.format(api_version), video_sources, gstvideo_h, gstvideo_c, orc_c, orc_h, c_args : gst_plugins_base_args, @@ -123,12 +125,26 @@ gstvideo = library('gstvideo-@0@'.format(api_version), version : libversion, soversion : soversion, install : true, - dependencies : [gst_base_dep, orc_dep, libm], + dependencies : gstvideo_deps, 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, include_directories : [libsinc], - dependencies : [gst_base_dep], - sources : [gstvideo_h]) + dependencies : gstvideo_deps, + sources : video_gen_sources) diff --git a/meson.build b/meson.build index 5692a3512d..7f2dbc0cf2 100644 --- a/meson.build +++ b/meson.build @@ -195,6 +195,15 @@ if host_machine.system() == 'windows' pic_args = [] 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') subdir('ext') diff --git a/meson_options.txt b/meson_options.txt index 033ee6f4e4..b613790634 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -1,3 +1,6 @@ option('audioresample_format', type : 'combo', choices : ['int', 'float', 'auto'], value : 'auto') option('disable_examples', type : 'boolean', value : false) 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')