config BR2_PACKAGE_WPEWEBKIT_ARCH_SUPPORTS
	bool
	# ARM needs BLX, so v5t+, BE completely untested so disabled
	default y if BR2_arm && !BR2_ARM_CPU_ARMV4
	default y if BR2_aarch64 || BR2_aarch64_be
	default y if BR2_i386 || BR2_x86_64
	# Disabled on MIPS big endian due to sigbus
	default y if BR2_mipsel || BR2_mips64el
	# Disabled on PowerPC pending runtime testing
	# RISC-V needs the g/imafd ISA.
	default y if BR2_riscv && BR2_RISCV_ISA_RVI \
		&& BR2_RISCV_ISA_RVM && BR2_RISCV_ISA_RVA \
		&& BR2_RISCV_ISA_RVF && BR2_RISCV_ISA_RVD
	# Disabled on SuperH because of segfault
	depends on BR2_USE_MMU # libglib2
	depends on BR2_TOOLCHAIN_HAS_SYNC_4
	depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt

comment "wpewebkit needs a toolchain w/ C++, wchar, threads, dynamic library, gcc >= 10, host gcc >= 4.9"
	depends on BR2_PACKAGE_WPEWEBKIT_ARCH_SUPPORTS
	depends on !BR2_BINFMT_FLAT
	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR \
		|| !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \
		|| !BR2_TOOLCHAIN_GCC_AT_LEAST_10 \
		|| !BR2_HOST_GCC_AT_LEAST_4_9

comment "wpewebkit needs an OpenGL ES w/ EGL-capable Wayland backend"
	depends on BR2_PACKAGE_WPEWEBKIT_ARCH_SUPPORTS
	depends on !BR2_BINFMT_FLAT
	depends on !BR2_PACKAGE_HAS_LIBGLES || !BR2_PACKAGE_HAS_LIBEGL

config BR2_PACKAGE_WPEWEBKIT
	bool "wpewebkit"
	depends on !BR2_STATIC_LIBS # wayland
	depends on !BR2_BINFMT_FLAT # icu
	depends on BR2_HOST_GCC_AT_LEAST_4_9 # icu, host-ruby
	depends on BR2_INSTALL_LIBSTDCPP # harfbuzz, icu
	depends on BR2_TOOLCHAIN_HAS_THREADS # wayland, icu, libsoup3
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_10
	depends on BR2_USE_WCHAR # icu, libsoup3
	depends on BR2_PACKAGE_HAS_LIBGLES # libepoxy
	depends on BR2_PACKAGE_HAS_LIBEGL # libepoxy
	depends on BR2_PACKAGE_WPEWEBKIT_ARCH_SUPPORTS
	select BR2_PACKAGE_CAIRO
	select BR2_PACKAGE_CAIRO_PNG
	select BR2_PACKAGE_HARFBUZZ
	select BR2_PACKAGE_ICU
	select BR2_PACKAGE_JPEG
	select BR2_PACKAGE_LIBEPOXY
	select BR2_PACKAGE_LIBGCRYPT
	select BR2_PACKAGE_LIBPNG
	select BR2_PACKAGE_LIBSOUP3
	select BR2_PACKAGE_LIBTASN1
	select BR2_PACKAGE_LIBXSLT
	select BR2_PACKAGE_WAYLAND
	select BR2_PACKAGE_WAYLAND_PROTOCOLS
	select BR2_PACKAGE_WEBP
	select BR2_PACKAGE_WEBP_DEMUX
	select BR2_PACKAGE_WPEBACKEND_FDO
	help
	  WPE (Web Platform for Embedded) port of the WebKit engine,
	  to allow embedders to create simple and performant systems
	  based on Web platform technologies.

	  https://wpewebkit.org/

if BR2_PACKAGE_WPEWEBKIT

config BR2_PACKAGE_WPEWEBKIT_SANDBOX
	bool "sandboxing support"
	depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS # libseccomp
	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 # libseccomp
	select BR2_PACKAGE_BUBBLEWRAP # runtime
	select BR2_PACKAGE_XDG_DBUS_PROXY # runtime
	select BR2_PACKAGE_LIBSECCOMP
	help
	  Enable sandboxing of the processes used for network operation,
	  disk asccess, and Web content rendering.

comment "sandboxing supports needs a toolchain w/ headers >= 3.12"
	depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS
	depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12

config BR2_PACKAGE_WPEWEBKIT_MULTIMEDIA
	bool "multimedia support"
	select BR2_PACKAGE_GSTREAMER1
	select BR2_PACKAGE_GST1_PLUGINS_BAD
	select BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DEBUGUTILS
	select BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGTSDEMUX
	select BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SUBENC
	select BR2_PACKAGE_GST1_PLUGINS_BASE
	select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA
	select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP
	select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOCONVERT
	select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORESAMPLE
	select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_PLAYBACK
	select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERTSCALE
	select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VOLUME
	select BR2_PACKAGE_GST1_PLUGINS_GOOD
	select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUDIOFX
	select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUTODETECT
	select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ISOMP4
	select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MATROSKA
	select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP
	select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VPX
	select BR2_PACKAGE_GST1_LIBAV
	help
	  This option pulls in all of the required dependencies
	  to enable multimedia (video/audio) support.

if BR2_PACKAGE_WPEWEBKIT_MULTIMEDIA

config BR2_PACKAGE_WPEWEBKIT_MEDIA_STREAM
	bool "media-stream support"
	select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEORATE
	help
	  This option enables media-stream support.

config BR2_PACKAGE_WPEWEBKIT_USE_GSTREAMER_GL
	bool "use gstreamer-gl"
	default y
	depends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_PLATFORM
	help
	  Use the GStreamer GL elements for handling video content.
	  This is recommended as it improves performance of video
	  playback. In some target configurations incorrect rendering
	  might be produced, and disabling this option may help.

endif

config BR2_PACKAGE_WPEWEBKIT_WEBDRIVER
	bool "WebDriver support"
	help
	  Enable support for WebDriver. This will build and install the
	  WebKitWebDriver program in the target.

endif
