meson: Generate girs
authorThibault Saunier <thibault.saunier@osg.samsung.com>
Thu, 20 Oct 2016 20:17:27 +0000 (17:17 -0300)
committerThibault Saunier <thibault.saunier@osg.samsung.com>
Wed, 9 Nov 2016 21:06:19 +0000 (18:06 -0300)
https://bugzilla.gnome.org/show_bug.cgi?id=773944

13 files changed:
gst-libs/gst/allocators/meson.build
gst-libs/gst/app/meson.build
gst-libs/gst/audio/meson.build
gst-libs/gst/fft/meson.build
gst-libs/gst/pbutils/meson.build
gst-libs/gst/riff/meson.build
gst-libs/gst/rtp/meson.build
gst-libs/gst/rtsp/meson.build
gst-libs/gst/sdp/meson.build
gst-libs/gst/tag/meson.build
gst-libs/gst/video/meson.build
meson.build
meson_options.txt

index 2a66aaee8307c0ce7b13f6e51c9abef948adefc7..53dfd1b9e6c0fb306be43fee679a9bf034877f8a 100644 (file)
@@ -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)
index 4891a79956173b1e837db2a7cb2a3220451736f7..90e838a6158d4214093110d18c7dc14f35f6e377 100644 (file)
@@ -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)
index c68f113ad8f1c942813ad07229cea668fa5f98e4..3dee9db0c5d6b8f8626192a12c830ffa5e981c6d 100644 (file)
@@ -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)
index 9a5fabb106bc71ce7e3c7242daf17cd8d38f0f64..87419df89532f82d40f93f8d3baba4bcf7b9f733 100644 (file)
@@ -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)
index 38383f32b529fb88d44a6b87a5064cd257bac23e..58d4bf2b7d4d9c6d925c9fc2e4bd933c09fa3753 100644 (file)
@@ -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)
index 6017348d77282c9887761123dc14833a6d7b331d..6f383217f5c5aab213d3c661e67f287f1c322342 100644 (file)
@@ -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  )
index c79913a337dd8c19c8fe02444a84223f9534df51..deba842207903c5d145401d51a2522460131ab78 100644 (file)
@@ -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)
index 875f6384e9f37b041b0e192faee30fc5fd1b7d8d..da093f0a6df336dea7b4961dc18f4c88fed6a753 100644 (file)
@@ -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)
index b68cad7814d414b7834080c9e7433c3099d3ab26..8837629cc56d8318243bff7d762d90282163e4d1 100644 (file)
@@ -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)
index 14784c140efb1e1f473ca3eb67182fb17aafd61e..6f92f9125a5f01a08c22311a84ca2e39bad063d9 100644 (file)
@@ -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
index 90e2e3e490c478b164e9ed59070d741d494261db..ae13586841677afc7fa4a01b14e36c6cb60795b6 100644 (file)
@@ -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)
index 5692a3512d00cac3f43ff5e43c09f39fb13caae6..7f2dbc0cf2e7bc1769be902fc4ef983d64da1df7 100644 (file)
@@ -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')
index 033ee6f4e4fc400efee1faf232f6f1d4b1347110..b6137906341307866a22347f9dd9db785ef2fa61 100644 (file)
@@ -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')