config BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS
	bool
	# ARM needs BLX, so v5t+
	default y if (BR2_arm || BR2_armeb) && !BR2_ARM_CPU_ARMV4
	default y if BR2_i386 || BR2_mips || BR2_mipsel || \
		BR2_sparc || BR2_x86_64
	depends on BR2_USE_MMU # libgail -> pango -> libglib2

# disabled on powerpc due to bug https://bugs.webkit.org/show_bug.cgi?id=113638

config BR2_PACKAGE_WEBKIT
	bool "webkit"
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_USE_WCHAR # enchant -> libglib2
	depends on BR2_TOOLCHAIN_HAS_THREADS # enchant -> libglib2; icu
	depends on BR2_PACKAGE_LIBGTK2
	depends on BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS
	depends on !BR2_BINFMT_FLAT # icu
	depends on BR2_ARCH_HAS_ATOMICS # cairo
	select BR2_PACKAGE_CAIRO
	select BR2_PACKAGE_CAIRO_PNG
	select BR2_PACKAGE_ENCHANT
	select BR2_PACKAGE_HARFBUZZ
	select BR2_PACKAGE_ICU
	select BR2_PACKAGE_JPEG
	select BR2_PACKAGE_LIBCURL
	select BR2_PACKAGE_LIBGAIL
	select BR2_PACKAGE_LIBSECRET
	select BR2_PACKAGE_LIBSOUP
	select BR2_PACKAGE_LIBXML2
	select BR2_PACKAGE_LIBXSLT
	select BR2_PACKAGE_SQLITE
	select BR2_PACKAGE_WEBP
	select BR2_PACKAGE_XLIB_LIBXT if BR2_PACKAGE_XORG7
	select BR2_PACKAGE_XLIB_LIBXCOMPOSITE if BR2_PACKAGE_HAS_LIBGL
	select BR2_PACKAGE_XLIB_LIBXDAMAGE if BR2_PACKAGE_HAS_LIBGL
	help
	  WebKit is an open source, standards compliant web browser engine.

	  Note that WebKit does not build with a toolchain using the
	  old linuxthreads library.

	  http://webkit.org/

comment "webkit needs libgtk2 and a toolchain w/ C++, wchar, threads"
	depends on BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS
	depends on BR2_ARCH_HAS_ATOMICS # cairo
	depends on !BR2_PACKAGE_LIBGTK2 || !BR2_INSTALL_LIBSTDCPP || \
		!BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS
	depends on BR2_USE_MMU
