comment "qt needs a toolchain w/ C++, threads"
	depends on BR2_USE_MMU
	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS

menuconfig BR2_PACKAGE_QT
	bool "Qt"
	depends on BR2_USE_MMU # fork
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_TOOLCHAIN_HAS_THREADS
	help
	  Qt is a cross-platform application and UI framework for
	  developers using C++.

	  http://qt-project.org

if BR2_PACKAGE_QT

choice
	prompt "Qt installation"
	help
	  Selects the type of installation: standard or embedded

config BR2_PACKAGE_QT_EMBEDDED
	bool "Qt embedded"
	help
	  The embedded Qt installation targets embedded systems without X.org.
	  Provides backends for framebuffer.
	  If unsure, say Y.

comment "Qt standard (X11) not available (need X.org)"
	depends on !BR2_PACKAGE_XORG7

config BR2_PACKAGE_QT_X11
	bool "Qt standard (X11)"
	depends on BR2_PACKAGE_XORG7
	select BR2_PACKAGE_FONTCONFIG
	select BR2_PACKAGE_XLIB_LIBXI
	select BR2_PACKAGE_XLIB_LIBX11
	select BR2_PACKAGE_XLIB_LIBXRENDER
	select BR2_PACKAGE_XLIB_LIBXCURSOR
	select BR2_PACKAGE_XLIB_LIBXRANDR
	select BR2_PACKAGE_XLIB_LIBXEXT
	select BR2_PACKAGE_XLIB_LIBXV
	select BR2_PACKAGE_QT_SYSTEMFREETYPE
	select BR2_PACKAGE_QT_GUI_MODULE
	help
	  The standard Qt installation provides X.org backend. If you don't want to
	  use X.org, say N.

endchoice

config BR2_PACKAGE_QT_DEBUG
	bool "Compile with debug support"
	help
	  If unsure, say N.

config BR2_PACKAGE_QT_DEMOS
	bool "Compile and install Qt demos (with code)"
	select BR2_PACKAGE_QT_GUI_MODULE
	help
	  If unsure, say N.

config BR2_PACKAGE_QT_TRANSLATION_FILES
	bool "Install translation files"
	help
	  Install binary .qm translation files.
	  Say y if you need these files. They will take about 8 MB
	  on the target root filesystem.

config BR2_PACKAGE_QT_EXAMPLES
	bool "Compile and install Qt examples (with code)"
	select BR2_PACKAGE_QT_GUI_MODULE
	help
	  If unsure, say N.

choice
	prompt "Library type"
	help
	  Selects the library type: Shared or Static

config BR2_PACKAGE_QT_SHARED
	bool "Shared library"
	depends on !BR2_STATIC_LIBS
	help
	  Create and use shared Qt libraries.
	  If you have multiple programs that depend on Qt or intend to use
	  plugins, say Y.

config BR2_PACKAGE_QT_STATIC
	bool "Static Library"
	help
	  Create and use static Qt libraries.
	  If you don't have multiple programs on the target that depends on
	  Qt, then this will save you quite some of storage space.
	  If unsure, say Y.

endchoice

config BR2_PACKAGE_QT_CONFIG_FILE
	string "Config file"
	help
	  Configure options allow to set which modules are being
	  compiled or not in Qt, but Qt also provide a more
	  fine-grained mechanism to configure which features should be
	  enabled or disabled, through a header file. Examples of such
	  header files can be found in src/corelib/global/qconfig-*.h
	  in the Qt sources.

	  This option allows to set the path of such a configuration
	  file, which Buildroot will give to Qt at compile time.

config BR2_PACKAGE_QT_QT3SUPPORT
	bool "Compatibility with Qt3"
	depends on BR2_PACKAGE_QT_GUI_MODULE
	select BR2_PACKAGE_QT_SQL_MODULE
	help
	  Turns on support for older Qt3. This will create an additional
	  library with proxy code and increase the space required on target.
	  If unsure say n.

config BR2_PACKAGE_QT_GUI_MODULE
	bool "Gui Module"
	default y
	select BR2_PACKAGE_QT_NETWORK
	help
	  Turns on support for Gui applications. If your board doesn't have
	  video output, or you don't require Qt GUI, say n.

if BR2_PACKAGE_QT_GUI_MODULE

if BR2_PACKAGE_QT_EMBEDDED

menu "Pixel depths"
comment "Deselecting each option leads to Qt's default (8,16,32)"

config BR2_PACKAGE_QT_PIXEL_DEPTH_1
	bool "1 bpp, black/white"

config BR2_PACKAGE_QT_PIXEL_DEPTH_4
	bool "4 bpp, grayscale"

config BR2_PACKAGE_QT_PIXEL_DEPTH_8
	bool "8 bpp, paletted"
	default y

config BR2_PACKAGE_QT_PIXEL_DEPTH_12
	bool "12 bpp, rgb 4-4-4"

config BR2_PACKAGE_QT_PIXEL_DEPTH_15
	bool "15 bpp, rgb 5-5-5"

config BR2_PACKAGE_QT_PIXEL_DEPTH_16
	bool "16 bpp, rgb 5-6-5"
	default y

config BR2_PACKAGE_QT_PIXEL_DEPTH_18
	bool "18 bpp, rgb 6-6-6"

config BR2_PACKAGE_QT_PIXEL_DEPTH_24
	bool "24 bpp, rgb 8-8-8"

config BR2_PACKAGE_QT_PIXEL_DEPTH_32
	bool "32 bpp, argb 8-8-8-8 and rgb 8-8-8"
	default y

endmenu

menu "Fonts"

config BR2_PACKAGE_QT_FONT_TRUETYPE
	bool "dejavu/vera"
	default y
	depends on BR2_PACKAGE_QT_QTFREETYPE || BR2_PACKAGE_QT_SYSTEMFREETYPE

comment "dejavu/vera fonts need freetype support"
	depends on !BR2_PACKAGE_QT_QTFREETYPE && !BR2_PACKAGE_QT_SYSTEMFREETYPE

config BR2_PACKAGE_QT_FONT_MICRO
	bool "micro"
	default y

config BR2_PACKAGE_QT_FONT_FIXED
	bool "fixed"
	default y

config BR2_PACKAGE_QT_FONT_HELVETICA
	bool "helvetica"
	default y

config BR2_PACKAGE_QT_FONT_JAPANESE
	bool "japanese"

config BR2_PACKAGE_QT_FONT_UNIFONT
	bool "unicode"

endmenu

endif # BR2_PACKAGE_QT_EMBEDDED

choice
	prompt "freetype2 support"
	default BR2_PACKAGE_QT_NOFREETYPE
	help
	  Select freetype2 support.

config BR2_PACKAGE_QT_NOFREETYPE
	bool "no freetype2 support"
	depends on BR2_PACKAGE_QT_EMBEDDED
	help
	  Do not compile in Freetype2 support.

comment "Qt freetype2 needs Qt embedded"
	depends on BR2_PACKAGE_QT_X11

config BR2_PACKAGE_QT_QTFREETYPE
	bool "Qt freetype2"
	depends on BR2_PACKAGE_QT_EMBEDDED
	help
	  Use the libfreetype bundled with Qt.

config BR2_PACKAGE_QT_SYSTEMFREETYPE
	bool "System freetype2"
	select BR2_PACKAGE_FREETYPE
	help
	  Use shared libfreetype from the target system.
	  See http://www.freetype.org/
endchoice

config BR2_PACKAGE_QT_GIF
	bool "Enable GIF support"
	help
	  This compiles and installs the plugin for GIF reading support.

config BR2_PACKAGE_QT_LIBMNG
	bool "Enable libmng support"
	help
	  This compiles and installs the plugin for MNG support.

choice
	prompt "JPEG support"
	default BR2_PACKAGE_QT_NOJPEG
	help
	  Select libjpeg support.

config BR2_PACKAGE_QT_NOJPEG
	bool "No jpeg support"
	help
	  Disable JPEG support

config BR2_PACKAGE_QT_SYSTEMJPEG
	bool "System libjpeg"
	select BR2_PACKAGE_JPEG
	help
	  Link against system libjpeg

config BR2_PACKAGE_QT_QTJPEG
	bool "Use Qt bundled libjpeg"
	help
	  Link against libjpeg provided with Qt
endchoice

choice
	prompt "PNG support"
	default BR2_PACKAGE_QT_NOPNG
	help
	  Select which library to use if PNG support should be enabled.

config BR2_PACKAGE_QT_NOPNG
	bool "No PNG support"

config BR2_PACKAGE_QT_SYSTEMPNG
	bool "System libpng"
	select BR2_PACKAGE_LIBPNG

config BR2_PACKAGE_QT_QTPNG
	bool "Use Qt bundled libpng"
endchoice

choice
	prompt "TIFF support"
	default BR2_PACKAGE_QT_NOTIFF
	help
	  Select which library to use if TIFF support should be enabled.

config BR2_PACKAGE_QT_NOTIFF
	bool "No TIFF support"

config BR2_PACKAGE_QT_SYSTEMTIFF
	bool "System libtiff"
	select BR2_PACKAGE_TIFF

config BR2_PACKAGE_QT_QTTIFF
	bool "Use Qt bundled libtiff"
endchoice

config BR2_PACKAGE_QT_ACCESSIBILITY
	bool "Enable accessibility support"
	help
	  This enables and compiles the accessibility support.

endif # BR2_PACKAGE_QT_GUI_MODULE

choice
	prompt "zlib support"
	default BR2_PACKAGE_QT_QTZLIB
	help
	  Select zlib support.

config BR2_PACKAGE_QT_QTZLIB
	bool "Qt zlib"
	help
	  Use the zlib bundled with Qt.

config BR2_PACKAGE_QT_SYSTEMZLIB
	bool "System zlib"
	select BR2_PACKAGE_ZLIB
	help
	  Use the shared zlib from the system.
endchoice

source "package/qt/Config.sql.in"
if BR2_PACKAGE_QT_GUI_MODULE
if BR2_PACKAGE_QT_EMBEDDED
source "package/qt/Config.gfx.in"
source "package/qt/Config.mouse.in"
source "package/qt/Config.keyboard.in"
endif

config BR2_PACKAGE_QT_PHONON
	bool "Phonon Module"
	default y
	depends on BR2_PACKAGE_GSTREAMER
	select BR2_PACKAGE_GST_PLUGINS_BASE
	help
	  Build the Phonon module. Support for different audio/video
	  formats can be configured at the GStreamer package.
	  If unsure, say n.

comment "Phonon module needs gstreamer"
	depends on !BR2_PACKAGE_GSTREAMER

config BR2_PACKAGE_QT_PHONON_BACKEND
	bool "Phonon Module Backend"
	depends on BR2_PACKAGE_QT_PHONON
	help
	  Build the platform Phonon plugin.
	  If unsure, say n.

config BR2_PACKAGE_QT_OPENGL
	bool "OpenGL support"
	default y
	depends on (BR2_PACKAGE_HAS_LIBGL && BR2_PACKAGE_QT_X11) || \
		   (BR2_PACKAGE_HAS_LIBEGL && BR2_PACKAGE_HAS_LIBGLES)
	help
	  This option enables OpenGL support.

if BR2_PACKAGE_QT_OPENGL

choice
	prompt "OpenGL API"
	help
	  Select OpenGL API.

comment "Desktop OpenGL not available (needs Qt standard (X11))"
	depends on !BR2_PACKAGE_QT_X11

config BR2_PACKAGE_QT_OPENGL_GL_DESKTOP
	bool "Desktop OpenGL"
	depends on BR2_PACKAGE_HAS_LIBGL
	depends on BR2_PACKAGE_QT_X11
	help
	  Use desktop OpenGL.

config BR2_PACKAGE_QT_OPENGL_ES
	bool "OpenGL ES v2.x support"
	depends on BR2_PACKAGE_HAS_LIBGLES
	depends on BR2_PACKAGE_HAS_LIBEGL
	help
	  Enable the OpenGL ES v2.x support.

endchoice

endif # BR2_PACKAGE_QT_OPENGL

endif

config BR2_PACKAGE_QT_DBUS
	bool "DBus Module"
	depends on BR2_TOOLCHAIN_HAS_THREADS # dbus
	depends on BR2_USE_MMU # dbus
	select BR2_PACKAGE_DBUS
	help
	  Build the Qt DBus module.

comment "DBus Module needs a toolchain w/ threads"
	depends on BR2_USE_MMU
	depends on !BR2_TOOLCHAIN_HAS_THREADS

config BR2_PACKAGE_QT_XML
	bool "XML Module"
	default y
	help
	  Build the XML module.

config BR2_PACKAGE_QT_XMLPATTERNS
	bool "XML Patterns Module"
	depends on BR2_PACKAGE_QT_XML
	help
	  Build QtXmlPatterns module.
	  If unsure, say n

config BR2_PACKAGE_QT_MULTIMEDIA
	bool "Multimedia Module"
	depends on BR2_PACKAGE_QT_GUI_MODULE
	help
	  Build QtMultimedia module.

config BR2_PACKAGE_QT_AUDIO_BACKEND
	bool "QtMultimedia Audio backend"
	depends on BR2_PACKAGE_QT_MULTIMEDIA
	depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib
	select BR2_PACKAGE_ALSA_LIB
	help
	  Build the ALSA audio backend into QtMultimedia

config BR2_PACKAGE_QT_SVG
	bool "SVG Module"
	depends on BR2_PACKAGE_QT_GUI_MODULE
	help
	  Build the SVG module.
	  If unsure, say n

config BR2_PACKAGE_QT_NETWORK
	bool "Network Module"
	default y
	help
	  Install the Network module.
	  if unsure, say y

config BR2_PACKAGE_QT_ARCH_SUPPORTS_WEBKIT
	bool
	# see src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h
	# see http://lists.busybox.net/pipermail/buildroot/2014-November/112605.html
	default y if BR2_arc || BR2_arm || BR2_armeb || BR2_i386 || BR2_microblazeel || \
		BR2_microblazebe || BR2_mips || BR2_mipsel || \
		(BR2_mips64 || BR2_mips64el) && !BR2_MIPS_NABI32 || BR2_powerpc || \
		BR2_powerpc64 || BR2_powerpc64le || BR2_x86_64 || \
		BR2_sh4 || BR2_sh4eb || BR2_sh4a || BR2_sh4aeb
	depends on BR2_TOOLCHAIN_HAS_SYNC_4

config BR2_PACKAGE_QT_WEBKIT
	bool "WebKit Module"
	depends on BR2_PACKAGE_QT_SCRIPT
	depends on BR2_PACKAGE_QT_SHARED
	depends on BR2_PACKAGE_QT_GUI_MODULE
	depends on BR2_PACKAGE_QT_NETWORK
	depends on BR2_PACKAGE_QT_ARCH_SUPPORTS_WEBKIT
	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # needs pthread_getattr_np()
	depends on BR2_PACKAGE_GSTREAMER
	select BR2_PACKAGE_GST_PLUGINS_BASE
	select BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_APP
	help
	  Build the WebKit module.
	  If unsure, say n.

comment "WebKit needs a toolchain w/ dynamic library, NPTL"
	depends on BR2_PACKAGE_QT_ARCH_SUPPORTS_WEBKIT
	depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIB

comment "WebKit needs QtShared/Script/Gui/Network and Gstreamer 0.10"
	depends on BR2_PACKAGE_QT_ARCH_SUPPORTS_WEBKIT
	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL && !BR2_STATIC_LIB
	depends on !BR2_PACKAGE_QT_SCRIPT     || !BR2_PACKAGE_QT_SHARED   \
		|| !BR2_PACKAGE_QT_GUI_MODULE || !BR2_PACKAGE_QT_NETWORK  \
		|| !BR2_PACKAGE_GSTREAMER

config BR2_PACKAGE_QT_STL
	bool "STL support"
	help
	  Compile STL support.
	  If unsure, say n.

config BR2_PACKAGE_QT_OPENSSL
	bool "Enable OpenSSL support"
	depends on BR2_PACKAGE_QT_NETWORK
	select BR2_PACKAGE_OPENSSL
	help
	  Enable support for the OpenSSL encryption library. If you use
	  QSslSocket say y here, otherwise, say no to save space on the
	  target.
	  If unsure, say n.

config BR2_PACKAGE_QT_ARCH_SUPPORTS_SCRIPT
	bool
	# see http://lists.busybox.net/pipermail/buildroot/2014-November/112605.html
	default y if BR2_arc || BR2_arm || BR2_armeb || BR2_aarch64 || BR2_i386 || \
		BR2_microblazeel || BR2_microblazebe || BR2_mips || BR2_mipsel || \
		BR2_mips64 || BR2_mips64el || BR2_nios2 || BR2_powerpc || \
		BR2_powerpc64 || BR2_powerpc64le || BR2_sh4 || BR2_sh4eb || \
		BR2_sh4a || BR2_sh4aeb || BR2_x86_64
	depends on BR2_TOOLCHAIN_HAS_SYNC_4

config BR2_PACKAGE_QT_SCRIPT
	bool "Script Module"
	default y
	depends on BR2_PACKAGE_QT_ARCH_SUPPORTS_SCRIPT
	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # needs pthread_getattr_np()
	help
	  Build the Qt Script module.
	  if unsure, say y.

comment "Script Module needs a toolchain with NPTL"
	depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL
	depends on BR2_PACKAGE_QT_ARCH_SUPPORTS_SCRIPT

config BR2_PACKAGE_QT_SCRIPTTOOLS
	bool "Script Tools Module"
	depends on BR2_PACKAGE_QT_SCRIPT
	depends on BR2_PACKAGE_QT_GUI_MODULE
	help
	  Build the Qt Script Tools module.
	  if unsure, say n.

config BR2_PACKAGE_QT_DECLARATIVE
	bool "Declarative module"
	depends on BR2_PACKAGE_QT_SCRIPT
	depends on BR2_PACKAGE_QT_GUI_MODULE
	depends on BR2_PACKAGE_QT_SQL_MODULE
	help
	  Build the Qt Declarative Module for qml support
	  if unsure, say n.

config BR2_PACKAGE_QT_TEST
	bool "Test Module"
	help
	  Install the Test module.

endif # BR2_PACKAGE_QT
