comment "qt requires a toolchain with C++ support enabled"
	depends on !BR2_INSTALL_LIBSTDCPP

menuconfig BR2_PACKAGE_QT
	bool "Qt"
	depends on BR2_INSTALL_LIBSTDCPP
	help
	  Qt for Embedded Linux.

	  http://www.qtsoftware.com/products/platform/qt-for-embedded-linux

if BR2_PACKAGE_QT

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

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

config BR2_PACKAGE_QT_SHARED
	bool "Shared library"
	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_LICENSE_APPROVED
	bool "Approve free license"
	help
	  Select this if you approve one of the available free licenses for the
	  Qt4 library.
	  By doing this you will not be asked while the library is compiled.
	  Please read and understand the license terms before approving this.

	  LGPL v2.1: http://doc.trolltech.com/4.5/lgpl.html
	  GPL  v3.0: http://doc.trolltech.com/4.5/gpl.html

config BR2_PACKAGE_QT_QT3SUPPORT
	bool "Compatibility with Qt3"
	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"
	select BR2_PACKAGE_QT_NETWORK
	default y
	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
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_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

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

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

config BR2_PACKAGE_QT_QTFREETYPE
	bool "Qt freetype2"
	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
	select BR2_PACKAGE_JPEG
	bool "System libjpeg"
	help
	  Link against system libjpeg

config BR2_PACKAGE_QT_QTJPEG
	bool "Use Qt bundled libjpeg"
	help
	  Link against libjpeg proveded 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

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

config BR2_PACKAGE_QT_EMB_PLATFORM
	string "The embedded platform we are making Qt for"
	default "arm"	if BR2_arm
	default "arm"	if BR2_armeb
	default "avr32"	if BR2_avr32
	default "x86"	if BR2_i386
	default "x86_64"	if BR2_x86_64
	default "mips"	if BR2_mips
	default "mips"	if BR2_mipsel
	default "ppc"	if BR2_powerpc
# Not that I really believe these will work..
	default "generic"	if BR2_alpha
	default "generic"	if BR2_chris
	default "generic"	if BR2_m68k
	default "generic"	if BR2_nios2
	default "generic"	if BR2_sh
	default "generic"	if BR2_sh64
	default "generic"	if BR2_sparc
	help
	  The target platform.

source "package/qt/Config.sql.in"
if BR2_PACKAGE_QT_GUI_MODULE
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"
	select 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.

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_SVG
	bool "SVG 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_WEBKIT
	bool "WebKit Module"
	depends on BR2_PACKAGE_QT_NETWORK
	help
	  Build the WebKit module.
	  If unsure, say n.

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_SCRIPT
	bool "Script Module"
	default y
	help
	  Build the Qt Script module.
	  if unsure, say y.

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

endif # BR2_PACKAGE_QT
