From 4b93d4d132881b6519a2dd8e4513a08e9fb46351 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Dzi=C4=99giel?= Date: Sun, 8 May 2022 18:47:13 +0200 Subject: [PATCH] meson: Cleanup plugin build script --- lib/gst/meson.build | 4 +-- lib/gst/plugin/importers/meson.build | 48 +++++++++++++++++----------- lib/gst/plugin/meson.build | 27 +++++++++------- meson_options.txt | 10 +++--- 4 files changed, 52 insertions(+), 37 deletions(-) diff --git a/lib/gst/meson.build b/lib/gst/meson.build index 7311e7be..d58f4ac2 100644 --- a/lib/gst/meson.build +++ b/lib/gst/meson.build @@ -2,6 +2,4 @@ if get_option('lib') subdir('clapper') endif -if not get_option('gst-plugin').disabled() - subdir('plugin') -endif +subdir('plugin') diff --git a/lib/gst/plugin/importers/meson.build b/lib/gst/plugin/importers/meson.build index baa11cf5..5f190b54 100644 --- a/lib/gst/plugin/importers/meson.build +++ b/lib/gst/plugin/importers/meson.build @@ -1,23 +1,38 @@ gst_clapper_gl_base_importer_dep = dependency('', required: false) -plugin_needs_gl_base = ( +all_importers = [ + 'glimporter', + 'gluploader', + 'rawimporter', +] + +build_glbase = ( not get_option('glimporter').disabled() or not get_option('gluploader').disabled() ) -plugin_gl_support_required = ( +gl_support_required = ( get_option('glimporter').enabled() or get_option('gluploader').enabled() ) -gst_plugin_gl_deps = [gstgl_dep, gstglproto_dep] +# We cannot build any importers without sink that they depend on +if not gst_clapper_sink_dep.found() + foreach imp : all_importers + if get_option(imp).enabled() + error('"@0@" option was enabled, but it requires building gstreamer plugin'.format(imp)) + endif + endforeach +endif + +gst_plugin_gl_base_deps = [gst_clapper_sink_dep, gstgl_dep, gstglproto_dep] have_gtk_gl_windowing = false if gst_gl_have_window_x11 and (gst_gl_have_platform_egl or gst_gl_have_platform_glx) gtk_x11_dep = dependency('gtk4-x11', required: false) if gtk_x11_dep.found() - gst_plugin_gl_deps += gtk_x11_dep + gst_plugin_gl_base_deps += gtk_x11_dep if gst_gl_have_platform_glx - gst_plugin_gl_deps += gstglx11_dep + gst_plugin_gl_base_deps += gstglx11_dep endif have_gtk_gl_windowing = true endif @@ -26,44 +41,40 @@ endif if gst_gl_have_window_wayland and gst_gl_have_platform_egl gtk_wayland_dep = dependency('gtk4-wayland', required: false) if gtk_wayland_dep.found() - gst_plugin_gl_deps += [gtk_wayland_dep, gstglwayland_dep] + gst_plugin_gl_base_deps += [gtk_wayland_dep, gstglwayland_dep] have_gtk_gl_windowing = true endif endif -if plugin_gl_support_required and not have_gtk_gl_windowing +if gl_support_required and not have_gtk_gl_windowing error('GL-based importer was enabled, but support for current GL windowing is missing') endif if gst_gl_have_platform_egl - gst_plugin_gl_deps += gstglegl_dep + gst_plugin_gl_base_deps += gstglegl_dep endif -gst_clapper_gl_base_importer_deps = [ - gst_clapper_sink_dep -] + gst_plugin_gl_deps - -foreach dep : gst_clapper_gl_base_importer_deps +foreach dep : gst_plugin_gl_base_deps if not dep.found() - if plugin_gl_support_required + if gl_support_required error('GL-based importer was enabled, but required dependencies were not found') endif - plugin_needs_gl_base = false + build_glbase = false endif endforeach -if plugin_needs_gl_base +if build_glbase gst_clapper_gl_base_importer_dep = declare_dependency( link_with: library('gstclapperglbaseimporter', 'gstclapperglbaseimporter.c', c_args: gst_clapper_plugin_args, include_directories: configinc, - dependencies: gst_clapper_gl_base_importer_deps, + dependencies: gst_plugin_gl_base_deps, version: libversion, install: true, ), include_directories: configinc, - dependencies: gst_clapper_gl_base_importer_deps, + dependencies: gst_plugin_gl_base_deps, ) endif @@ -105,6 +116,7 @@ endif build_rawimporter = ( not get_option('rawimporter').disabled() and (not build_gluploader or get_option('rawimporter').enabled()) + and gst_clapper_sink_dep.found() ) if build_rawimporter diff --git a/lib/gst/plugin/meson.build b/lib/gst/plugin/meson.build index 9d44eab8..3a1553d6 100644 --- a/lib/gst/plugin/meson.build +++ b/lib/gst/plugin/meson.build @@ -4,6 +4,8 @@ gst_clapper_plugin_args = [ '-DHAVE_CONFIG_H', '-DGST_USE_UNSTABLE_API', ] + +gst_clapper_sink_dep = dependency('', required: false) gtk4_dep = dependency('gtk4', version: '>=4.6.0', required: false) gmodule_dep = dependency('gmodule-2.0', @@ -20,12 +22,13 @@ gst_clapper_plugin_deps = [ gmodule_dep, ] +build_gst_plugin = not get_option('gst-plugin').disabled() foreach dep : gst_clapper_plugin_deps if not dep.found() if get_option('gst-plugin').enabled() error('GStreamer plugin was enabled, but required dependencies were not found') endif - subdir_done() + build_gst_plugin = false endif endforeach @@ -42,17 +45,19 @@ gst_clapper_plugin_sources = [ 'gstclapperimporterloader.c', ] -gst_clapper_sink_dep = declare_dependency( - link_with: library('gstclapper', - gst_clapper_plugin_sources, - c_args: gst_clapper_plugin_args, +if build_gst_plugin + gst_clapper_sink_dep = declare_dependency( + link_with: library('gstclapper', + gst_clapper_plugin_sources, + c_args: gst_clapper_plugin_args, + include_directories: configinc, + dependencies: gst_clapper_plugin_deps, + install: true, + install_dir: gst_plugins_libdir, + ), include_directories: configinc, dependencies: gst_clapper_plugin_deps, - install: true, - install_dir: gst_plugins_libdir, - ), - include_directories: configinc, - dependencies: gst_clapper_plugin_deps, -) + ) +endif subdir('importers') diff --git a/meson_options.txt b/meson_options.txt index 67e9c482..b690abc2 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -14,11 +14,6 @@ option('gst-plugin', description: 'Build GStreamer plugin (includes GTK video sink element)' ) -option('rawimporter', - type: 'feature', - value: 'auto', - description: 'Build RAW system memory importer for clappersink' -) option('glimporter', type: 'feature', value: 'auto', @@ -29,6 +24,11 @@ option('gluploader', value: 'auto', description: 'Build GL uploader for clappersink' ) +option('rawimporter', + type: 'feature', + value: 'auto', + description: 'Build RAW system memory importer for clappersink' +) option('devel-checks', type: 'boolean',