diff --git a/meson.build b/meson.build index 481e8671..8a9fae6e 100644 --- a/meson.build +++ b/meson.build @@ -204,32 +204,6 @@ plugins = { }, } -if get_option('examples').allowed() - plugins += { - 'fallbackswitch': { - 'library': 'libgstfallbackswitch', - 'examples': ['gtk-fallbackswitch'], - 'features': ['gtk', 'gio', 'gst-plugin-gtk4'], - }, - 'livesync': { - 'library': 'libgstlivesync', - 'examples': ['gtk-livesync'], - 'features': ['gtk', 'gio', 'gst-plugin-gtk4'], - }, - 'togglerecord': { - 'library': 'libgsttogglerecord', - 'examples': ['gtk-recording'], - 'features': ['gtk', 'gio', 'gst-plugin-gtk4'], - }, - } -else - plugins += { - 'fallbackswitch': { 'library': 'libgstfallbackswitch'}, - 'livesync': { 'library': 'libgstlivesync'}, - 'togglerecord': { 'library': 'libgsttogglerecord'}, - } -endif - # Won't build on platforms where it bundles the sources because of: # https://github.com/qnighy/libwebp-sys2-rs/issues/12 # the fix is: @@ -329,6 +303,36 @@ if get_option('gtk4').allowed() endif endif +examples_opt = get_option('examples') +if examples_opt.allowed() and 'gtk4' in plugins + plugins += { + 'fallbackswitch': { + 'library': 'libgstfallbackswitch', + 'examples_features': { + 'gtk-fallbackswitch': ['gtk', 'gio', 'gst-plugin-gtk4'], + }, + }, + 'livesync': { + 'library': 'libgstlivesync', + 'examples_features': { + 'gtk-livesync': ['gtk', 'gio', 'gst-plugin-gtk4'], + } + }, + 'togglerecord': { + 'library': 'libgsttogglerecord', + 'examples_features': { + 'gtk-recording': ['gtk', 'gio', 'gst-plugin-gtk4'], + } + }, + } +else + plugins += { + 'fallbackswitch': { 'library': 'libgstfallbackswitch'}, + 'livesync': { 'library': 'libgstlivesync'}, + 'togglerecord': { 'library': 'libgsttogglerecord'}, + } +endif + # Process plugins list default_library = get_option('default_library') @@ -438,6 +442,26 @@ foreach plugin_name, details: plugins examples += example endforeach + plugin_examples_features = details.get('examples_features', {}) + foreach example, examples_features: plugin_examples_features + example_deps_found = true + foreach feature: examples_features + if feature.startswith('gst-plugin') and not packages.contains(feature) + msg = f'@plugin_name@ example @example@ required feature @feature@ not found' + if plugin_opt.enabled() and examples_opt.enabled() + error(msg) + endif + message(msg + ', skipping') + example_deps_found = false + break + endif + endforeach + features += examples_features + if example_deps_found + examples += example + endif + endforeach + packages += f'gst-plugin-@plugin_name@' features += plugin_features extra_features = run_command('dependencies.py', meson.current_source_dir(), plugin_name,