kumquat-buildroot/package/ivi-homescreen/Config.in
Yann E. MORIN e0ef9213e4 package/ivi-homescreen: fix dependencies for gstreamer plugin
The gstreamer plugin select the EGL backend of gst1-plugins-base, but
forgot to propagate all of its dependencies, notably the _HAS_API
condition, causing unmet dependencies warnings (unfortunately, not
errors), such as;

    $ KCONFIG_SEED=0x597D22A8 make randconfig
    WARNING: unmet direct dependencies detected for BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_EGL
      Depends on [n]: BR2_PACKAGE_GSTREAMER1 [=y] && BR2_PACKAGE_GST1_PLUGINS_BASE [=y] && BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL [=y] && BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API [=n] && BR2_PACKAGE_HAS_LIBEGL [=y]
      Selected by [y]:
      - BR2_PACKAGE_IVI_HOMESCREEN_GSTREAMER_EGL_PLUGIN [=y] && BR2_PACKAGE_IVI_HOMESCREEN [=y] && BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS [=y] && BR2_PACKAGE_HAS_LIBEGL [=y]

We can't select _HAS_API, because it is a symbol that represents a
capability provided by other features of gst1-plugins-base; it's
semantically like a virtual package: we can't select it, we can only
depend on it.

Add this dependency to fix this situation.

This however causes circular (recursive) dependencies errors:

    package/gstreamer1/gst1-plugins-base/Config.in:135:error: recursive dependency detected!
    package/gstreamer1/gst1-plugins-base/Config.in:135:     symbol BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL is selected by BR2_PACKAGE_IVI_HOMESCREEN_GSTREAMER_EGL_PLUGIN
    package/ivi-homescreen/Config.in:221:   symbol BR2_PACKAGE_IVI_HOMESCREEN_GSTREAMER_EGL_PLUGIN depends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API
    package/gstreamer1/gst1-plugins-base/Config.in:149:     symbol BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API is selected by BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_OPENGL
    package/gstreamer1/gst1-plugins-base/Config.in:152:     symbol BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_OPENGL depends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL

Indeed, _HAS_API is only even set when gstreamer1, gst1-plugins-base,
and the gst1-plugins-base's lib-opengl support, are all already enabled.
As such, the dependency on _HAS_API already implies those, and there is
no need to select them.

Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Cc: Adam Duskett <adam.duskett@amarulasolutions.com>
Reviewed-by: Adam Duskett <Adam.Duskett@amarulasolutions.com>
Tested-by: Adam Duskett <Adam.Duskett@amarulasolutions.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2024-02-07 11:41:26 +01:00

270 lines
8.7 KiB
Plaintext

menuconfig BR2_PACKAGE_IVI_HOMESCREEN
bool "ivi-homescreen"
depends on BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS
depends on BR2_PACKAGE_FLUTTER_ENGINE_ARCH_SUPPORTS
depends on BR2_HOST_GCC_AT_LEAST_5 # flutter-engine
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # flutter-engine
depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # flutter-engine
depends on BR2_TOOLCHAIN_USES_GLIBC # flutter-engine
depends on BR2_INSTALL_LIBSTDCPP # flutter-engine
depends on !BR2_STATIC_LIBS # flutter-engine, wayland
depends on BR2_USE_WCHAR # flutter-engine
depends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES # flutter-engine
select BR2_PACKAGE_HOST_FLUTTER_SDK_BIN
select BR2_PACKAGE_FLUTTER_ENGINE
select BR2_PACKAGE_LIBXKBCOMMON
select BR2_PACKAGE_WAYLAND
select BR2_PACKAGE_WAYLAND_PROTOCOLS
select BR2_PACKAGE_WAYLAND_UTILS
help
Toyota's Flutter Embedder that communicates with Wayland
compositors.
Features:
- Strongly Typed (C++)
- Lightweight
- Platform Channels enabled/disabled via CMake
- OpenGL Texture Framework
- Compositor Sub-surface/Region support
- Vulkan / EGL backend support
https://github.com/toyota-connected/ivi-homescreen
if BR2_PACKAGE_IVI_HOMESCREEN
config BR2_PACKAGE_IVI_HOMESCREEN_IVI_SHELL_CLIENT
bool "ivi-shell client"
comment "Logging"
config BR2_PACKAGE_IVI_HOMESCREEN_DART_VM_LOGGING
bool "Enable Dart VM Logging"
config BR2_PACKAGE_IVI_HOMESCREEN_DLT_LOGGING
bool "DLT logging"
comment "EGL options"
config BR2_PACKAGE_IVI_HOMESCREEN_EGL_TRANSPARENCY
bool "Transparency"
depends on BR2_PACKAGE_HAS_LIBEGL
comment "Transparency support needs an EGL backend"
depends on !BR2_PACKAGE_HAS_LIBEGL
config BR2_PACKAGE_IVI_HOMESCREEN_EGL_ENABLE_3D
bool "3D support"
depends on BR2_PACKAGE_HAS_LIBEGL
help
Build with EGL Stencil, Depth, and Stencil
comment "3D support needs an EGL backend"
depends on !BR2_PACKAGE_HAS_LIBEGL
config BR2_PACKAGE_IVI_HOMESCREEN_EGL_MULTISAMPLE
bool "Multisample support"
depends on BR2_PACKAGE_HAS_LIBEGL
help
Build with EGL Sample set to 4
comment "Multisample support needs an EGL backend"
depends on !BR2_PACKAGE_HAS_LIBEGL
comment "dependency-less plugins"
config BR2_PACKAGE_IVI_HOMESCREEN_ACCESSIBILITY_PLUGIN
bool "Accessibility"
config BR2_PACKAGE_IVI_HOMESCREEN_COMP_REGION_PLUGIN
bool "Compositor Region"
config BR2_PACKAGE_IVI_HOMESCREEN_COMP_SURF_PLUGIN
bool "Compositor Surface"
config BR2_PACKAGE_IVI_HOMESCREEN_DESKTOP_WINDOW_PLUGIN
bool "Desktop Window"
help
Flutter plugin to change window size.
https://pub.dev/packages/desktop_window
config BR2_PACKAGE_IVI_HOMESCREEN_GO_ROUTER_PLUGIN
bool "Go Router"
help
A declarative routing package for Flutter that uses the
Router API to provide a convenient, url-based API for
navigating between different screens. You can define URL
patterns, navigate using a URL, handle deep links, and a
number of other navigation-related scenarios.
https://pub.dev/packages/go_router
config BR2_PACKAGE_IVI_HOMESCREEN_INTEGRATION_TEST_PLUGIN
bool "Flutter Integration Test support"
help
https://docs.flutter.dev/cookbook/testing/integration/introduction
config BR2_PACKAGE_IVI_HOMESCREEN_ISOLATE_PLUGIN
bool "Isolate"
config BR2_PACKAGE_IVI_HOMESCREEN_KEYBOARD_MANAGER_PLUGIN
bool "Keyboard Manager"
select BR2_PACKAGE_IVI_HOMESCREEN_TEXT_INPUT_PLUGIN # runtime
help
This is a wrapper for the raw keyboard listener made to
simplify intercept external keyboard button press.
https://pub.dev/packages/keyboard_manager
config BR2_PACKAGE_IVI_HOMESCREEN_KEY_EVENT_PLUGIN
bool "Key Event"
select BR2_PACKAGE_IVI_HOMESCREEN_TEXT_INPUT_PLUGIN # runtime
help
KeyEvent plugin to support RawKeyEvent.
config BR2_PACKAGE_IVI_HOMESCREEN_LAYER_PLAYGROUND_PLUGIN
bool "Layer Playground"
select BR2_PACKAGE_IVI_HOMESCREEN_PLATFORM_VIEWS_PLUGIN
help
This plugin enables the platform views plugin and also
provides a simple-box-view-type option.
https://github.com/toyota-connected/ivi-homescreen/tree/main/shell/plugins/platform_views
config BR2_PACKAGE_IVI_HOMESCREEN_LOGGING_PLUGIN
bool "Logging"
config BR2_PACKAGE_IVI_HOMESCREEN_MOUSE_CURSOR_PLUGIN
bool "Mouse Cursor"
help
Add mouse cursor support.
config BR2_PACKAGE_IVI_HOMESCREEN_PACKAGE_INFO_PLUGIN
bool "PackageInfo"
help
Prints the ivi-homescreen package information.
config BR2_PACKAGE_IVI_HOMESCREEN_PLATFORM_PLUGIN
bool "Platform"
help
Get information about the platform the Flutter application
is running on.
config BR2_PACKAGE_IVI_HOMESCREEN_PLATFORM_VIEWS_PLUGIN
bool "Platform Views"
help
This plugin supports the AndroidView interface. Meaning you
can take any Platform View Dart code, change the definition
to use AndroidView, and you will have a working interface.
Benefits of using this interface:
- pre-defined interface that is supported in Flutter SDK
- params are easily augmented in Dart to add for given use
case
- pass touch to another process/library without additional
work
For a backing implementation there are a number of approaches:
- Have a PlatformView implementation render to a Texture
- Compositor Region support
(poke a hole for another process)
- Compositor sub-surface and manage Z-order
The above is already supported today using either an OpenGL
texture, or a Compositor Sub-Surface. Using Platform Views
just re-uses an existing interface.
https://github.com/toyota-connected/ivi-homescreen/tree/main/shell/plugins/platform_views
config BR2_PACKAGE_IVI_HOMESCREEN_RESTORATION_PLUGIN
bool "Restoration"
help
Handles the Flutter restoration callback
config BR2_PACKAGE_IVI_HOMESCREEN_TEXT_INPUT_PLUGIN
bool "Text Input"
help
Allow for text input
comment "plugins with external dependencies"
config BR2_PACKAGE_IVI_HOMESCREEN_AUDIO_PLAYERS
bool "Audio Players"
select BR2_PACKAGE_GSTREAMER1
select BR2_PACKAGE_GST1_PLUGINS_BASE
select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA
select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOCONVERT
select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORESAMPLE
select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VOLUME
help
A Flutter plugin to play multiple simultaneously audio files.
Based on audioplayers-v5.2.1
https://pub.dev/packages/audioplayers
config BR2_PACKAGE_IVI_HOMESCREEN_FLUTTER_SECURE_STORAGE_PLUGIN
bool "Flutter Secure Storage"
select BR2_PACKAGE_LIBSECRET
help
Store data in secure storage
https://pub.dev/packages/flutter_secure_storage
config BR2_PACKAGE_IVI_HOMESCREEN_GOOGLE_SIGN_IN_PLUGIN
bool "Google Sign In manager"
select BR2_PACKAGE_LIBCURL
select BR2_PACKAGE_LIBCURL_FORCE_TLS
select BR2_PACKAGE_OPENSSL
help
This static plugin is to support this pub.dev package:
https://pub.dev/packages/google_sign_in
https://github.com/toyota-connected/ivi-homescreen/tree/main/shell/plugins/google_sign_in
config BR2_PACKAGE_IVI_HOMESCREEN_GSTREAMER_EGL_PLUGIN
bool "GStreamer EGL"
depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS
depends on BR2_PACKAGE_HAS_LIBEGL
depends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API # GST1_PLUGINS_BASE_LIB_OPENGL_EGL
select BR2_PACKAGE_FFMPEG
select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_EGL
help
A GStreamer-powered alternative to Flutter's video_player that
support Linux, iOS and Android.
https://pub.dev/packages/flutter_gstreamer_player
comment "GStreamer plugin needs gst1-plugins-base with an EGL backend"
depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS
depends on !BR2_PACKAGE_HAS_LIBEGL \
|| !BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API
config BR2_PACKAGE_IVI_HOMESCREEN_OPENGL_TEXTURE_PLUGIN
bool "OpenGL Texture"
depends on BR2_PACKAGE_HAS_LIBEGL
help
A Flutter OpenGL ES plugin using a Texture() widget.
Many shaders from ShaderToy.com can be copy/pasted
https://pub.dev/packages/flutter_opengl
comment "OpenGL texture plugin needs an EGL backend"
depends on !BR2_PACKAGE_HAS_LIBEGL
endif # BR2_PACKAGE_IVI_HOMESCREEN
comment "ivi-homescreen needs a glibc toolchain w/ wchar, C++, gcc >= 5, dynamic library, host gcc >= 5, NPTL"
depends on BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS
depends on BR2_PACKAGE_FLUTTER_ENGINE_ARCH_SUPPORTS
depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \
|| !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_5 \
|| BR2_STATIC_LIBS || !BR2_USE_WCHAR \
|| !BR2_HOST_GCC_AT_LEAST_5
comment "ivi-homescreen needs a toolchain not affected by GCC bug 64735"
depends on BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS
depends on BR2_PACKAGE_FLUTTER_ENGINE_ARCH_SUPPORTS
depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735
comment "ivi-homescreen needs an OpenGL or OpenGLES backend"
depends on BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS
depends on BR2_PACKAGE_FLUTTER_ENGINE_ARCH_SUPPORTS
depends on !BR2_PACKAGE_HAS_LIBGL && !BR2_PACKAGE_HAS_LIBGLES