config BR2_PACKAGE_LIBGTK3
	bool "libgtk3"
	select BR2_PACKAGE_ATK
	select BR2_PACKAGE_CAIRO
	select BR2_PACKAGE_CAIRO_PS
	select BR2_PACKAGE_CAIRO_PDF
	select BR2_PACKAGE_CAIRO_SVG
	select BR2_PACKAGE_LIBGLIB2
	select BR2_PACKAGE_PANGO
	select BR2_PACKAGE_GDK_PIXBUF
	# atleast 1 backend must be enabled
	select BR2_PACKAGE_LIBGTK3_BROADWAY if \
		!(BR2_PACKAGE_LIBGTK3_X11 || BR2_PACKAGE_LIBGTK3_WAYLAND)
	depends on BR2_USE_WCHAR # glib2
	depends on BR2_TOOLCHAIN_HAS_THREADS # glib2
	depends on BR2_USE_MMU # glib2
	depends on BR2_INSTALL_LIBSTDCPP # pango
	depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz
	help
	  The GTK+ version 3 graphical user interface library

	  http://www.gtk.org/

if BR2_PACKAGE_LIBGTK3

comment "GDK backend"

config BR2_PACKAGE_LIBGTK3_X11
	bool "GDK X11 backend"
	default y
	depends on BR2_PACKAGE_XORG7
	select BR2_PACKAGE_FONTCONFIG
	select BR2_PACKAGE_XLIB_LIBX11
	select BR2_PACKAGE_XLIB_LIBXEXT
	select BR2_PACKAGE_XLIB_LIBXRENDER
	select BR2_PACKAGE_XLIB_LIBXI
	help
	  This enables the X11 backend for GDK.

config BR2_PACKAGE_LIBGTK3_WAYLAND
	bool "GDK Wayland backend"
	default y
	# Needs a libgtk3 bump to match API level
	depends on BROKEN
	depends on BR2_PACKAGE_WAYLAND
	select BR2_PACKAGE_LIBXKBCOMMON
	help
	  This enables the Wayland backend for GDK.

config BR2_PACKAGE_LIBGTK3_BROADWAY
	bool "GDK Broadway backend"
	help
	  This enables the Broadway backend for GDK, which provides support
	  for displaying GTK+ applications in a web browser, using HTML5 and
	  web sockets.

	  For example, to run gtk3-demo on a target which IP address is
	  192.168.0.1 and use it from a web browser, execute the following
	  commands:

	    $ broadwayd -a 192.168.0.1 -p 8080 :2 &
	    $ export GDK_BACKEND=broadway
	    $ export BROADWAY_DISPLAY=:2
	    $ gtk3-demo

	  Then open a web browser at address http://192.168.0.1:8080.
	  Javascript and web sockets should be enabled.

config BR2_PACKAGE_LIBGTK3_DEMO
	bool "Install libgtk3 demo program"
	select BR2_PACKAGE_SHARED_MIME_INFO
	select BR2_PACKAGE_HICOLOR_ICON_THEME
	help
	  The GTK+ source base contains a demo program. This
	  option allows to install this program to the target.

config BR2_PACKAGE_LIBGTK3_TESTS
	bool "Install libgtk3 tests"
	help
	  The GTK+ source base contains tests. This option
	  allows to install them to the target.

endif

comment "libgtk3 needs a toolchain w/ wchar, threads, C++"
	depends on BR2_USE_MMU
	depends on BR2_TOOLCHAIN_HAS_SYNC_4
	depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \
		!BR2_TOOLCHAIN_HAS_THREADS
