diff options
author | Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | 2009-07-25 00:05:35 +0200 |
---|---|---|
committer | Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | 2009-07-25 00:05:35 +0200 |
commit | 20d2c70fbda47a6a2eb571da33a9526a0b8c7a1b (patch) | |
tree | ee60b1f6d86633c8bf07f38b8819df302384c243 /package/qt | |
parent | f917e6b21b262b6fb7ff363f6c7b217bb653d97c (diff) |
qt: rename qtopia4 to qt
A while ago, Trolltech (now part of Nokia) included Qtopia directly
inside Qt. So let's rename the qtopia4 package to simply qt, which
will be more familiar to our users. Of course, the version we compile
is Qt for Embedded Linux.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Diffstat (limited to 'package/qt')
-rw-r--r-- | package/qt/Config.gfx.in | 19 | ||||
-rw-r--r-- | package/qt/Config.in | 343 | ||||
-rw-r--r-- | package/qt/Config.mouse.in | 24 | ||||
-rw-r--r-- | package/qt/Config.sql.in | 42 | ||||
-rw-r--r-- | package/qt/qt-4.5.2-fix-qt-zlib-build.patch | 20 | ||||
-rw-r--r-- | package/qt/qt.mk | 582 |
6 files changed, 1030 insertions, 0 deletions
diff --git a/package/qt/Config.gfx.in b/package/qt/Config.gfx.in new file mode 100644 index 000000000..0e222dd03 --- /dev/null +++ b/package/qt/Config.gfx.in @@ -0,0 +1,19 @@ +menu "Graphics drivers" + +config BR2_PACKAGE_QT_GFX_LINUXFB + bool "Linux Framebuffer" + default y + +config BR2_PACKAGE_QT_GFX_TRANSFORMED + bool "Transformed" + +config BR2_PACKAGE_QT_GFX_QVFB + bool "Qt Virtual Framebuffer" + +config BR2_PACKAGE_QT_GFX_VNC + bool "VNC" + +config BR2_PACKAGE_QT_GFX_MULTISCREEN + bool "multiscreen" + +endmenu diff --git a/package/qt/Config.in b/package/qt/Config.in new file mode 100644 index 000000000..d68c92392 --- /dev/null +++ b/package/qt/Config.in @@ -0,0 +1,343 @@ +config 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 + +comment "qt requires a toolchain with C++ support enabled" + depends on !BR2_INSTALL_LIBSTDCPP + +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_TYPE_COMMERCIAL + bool "Use commercial license" + +config BR2_PACKAGE_QT_LICENSE_APPROVED + bool "Approve free license" + depends on !BR2_PACKAGE_QT_LICENSE_TYPE_COMMERCIAL + 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_COMMERCIAL_USERNAME + string "Qt 4 Commercial License Username" + depends on BR2_PACKAGE_QT_LICENSE_TYPE_COMMERCIAL + help + Commercial users can download their source directly by + providing a username. + +config BR2_PACKAGE_QT_COMMERCIAL_PASSWORD + string "Qt 4 Commercial License Password" + depends on BR2_PACKAGE_QT_LICENSE_TYPE_COMMERCIAL + help + Commercial users can download their source directly by + providing a password. + +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" + default y + help + Turns on support to Gui applications. If your board don'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_ALL + bool "All supported depths" + +if !BR2_PACKAGE_QT_PIXEL_DEPTH_ALL + +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 + +endif +endmenu +endif + +config BR2_PACKAGE_QT_GIF + bool "Enable GIF support" + depends on BR2_PACKAGE_QT_GUI_MODULE + help + This compiles and installs the plugin for GIF reading support. + +config BR2_PACKAGE_QT_LIBMNG + bool "Enable libmng support" + depends on BR2_PACKAGE_QT_GUI_MODULE + help + This compiles and installs the plugin for MNG support. + +choice + prompt "JPEG support" + depends on BR2_PACKAGE_QT_GUI_MODULE + 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" + depends on BR2_PACKAGE_QT_GUI_MODULE + 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" + depends on BR2_PACKAGE_QT_GUI_MODULE + 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 + +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 + +choice + prompt "freetype2 support" + depends on BR2_PACKAGE_QT_GUI_MODULE + 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_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" +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 diff --git a/package/qt/Config.mouse.in b/package/qt/Config.mouse.in new file mode 100644 index 000000000..708597428 --- /dev/null +++ b/package/qt/Config.mouse.in @@ -0,0 +1,24 @@ +menu "Mouse drivers" + +config BR2_PACKAGE_QT_MOUSE_PC + bool "pc" + +config BR2_PACKAGE_QT_MOUSE_BUS + bool "bus" + +config BR2_PACKAGE_QT_MOUSE_LINUXTP + bool "linuxtp" + +config BR2_PACKAGE_QT_MOUSE_YOPY + bool "yopy" + +config BR2_PACKAGE_QT_MOUSE_VR41XX + bool "vr41xx" + +config BR2_PACKAGE_QT_MOUSE_TSLIB + bool "tslib" + +config BR2_PACKAGE_QT_MOUSE_QVFB + bool "qvfb" + +endmenu diff --git a/package/qt/Config.sql.in b/package/qt/Config.sql.in new file mode 100644 index 000000000..2ce8d7964 --- /dev/null +++ b/package/qt/Config.sql.in @@ -0,0 +1,42 @@ +menuconfig BR2_PACKAGE_QT_SQL_MODULE + bool "SQL Module" + help + Compile Qt SQL Module + +if BR2_PACKAGE_QT_SQL_MODULE +config BR2_PACKAGE_QT_MYSQL + bool "MySQL Driver" + help + Build MySQL driver + If unsure, say n. + +config BR2_PACKAGE_QT_IBASE + bool "iBase Driver" + help + Build iBase driver + If unsure, say n. + +config BR2_PACKAGE_QT_ODBC + bool "ODBC Driver" + help + Build ODBC driver + If unsure, say n. + +config BR2_PACKAGE_QT_PSQL + bool "PostgreSQL Driver" + help + Build PostgreSQL driver + If unsure, say n. + +config BR2_PACKAGE_QT_SQLITE + bool "SQLite 3 Driver" + help + Build SQLite driver + If unsure, say n. + +config BR2_PACKAGE_QT_SQLITE2 + bool "SQLite 2 Driver" + help + Build SQLite 2 driver + If unsure, say n. +endif diff --git a/package/qt/qt-4.5.2-fix-qt-zlib-build.patch b/package/qt/qt-4.5.2-fix-qt-zlib-build.patch new file mode 100644 index 000000000..b191cc751 --- /dev/null +++ b/package/qt/qt-4.5.2-fix-qt-zlib-build.patch @@ -0,0 +1,20 @@ +When QT is compiled in qt-zlib mode, compilation of +src/gui/painting/qprintengine_pdf.cpp fails because zlib.h is not +found. The following patch adds the internal QT zlib directory to the +include path to fix this issue. + +--- + src/gui/painting/painting.pri | 3 +++ + 1 file changed, 3 insertions(+) + +Index: qt-embedded-linux-opensource-src-4.5.2/src/gui/painting/painting.pri +=================================================================== +--- qt-embedded-linux-opensource-src-4.5.2.orig/src/gui/painting/painting.pri ++++ qt-embedded-linux-opensource-src-4.5.2/src/gui/painting/painting.pri +@@ -367,3 +367,6 @@ + SOURCES += painting/qwindowsurface_d3d.cpp + } + ++contains(QT_CONFIG, zlib) { ++ INCLUDEPATH += ../3rdparty/zlib ++} diff --git a/package/qt/qt.mk b/package/qt/qt.mk new file mode 100644 index 000000000..e07457e4c --- /dev/null +++ b/package/qt/qt.mk @@ -0,0 +1,582 @@ +###################################################################### +# +# Qt Embedded for Linux 4.5 +# http://www.qtsoftware.com/ +# +# This makefile was originally composed by Thomas Lundquist <thomasez@zelow.no> +# Later heavily modified by buildroot developers +# +# BTW, this uses alot of FPU calls and it's pretty slow if you use +# the kernels FPU emulation so it's better to choose soft float in the +# buildroot config (and uClibc.config of course, if you have your own.) +# +###################################################################### + +# BUG: In "OpenSuSE 10.2", dbus.h is at dbus-1.0/dbus/dbus.h +# instead of at "dbus/dbus.h" +# (cd /usr/include; sudo ln -s dbus-1.0/dbus dbus) +# to fix + +# BUG: There is a workaround below (search for x86x86fix) for +# x86 crosscompiling under linux x86. Please remove it when the workaround +# is no longer necessary. + +QT_VERSION:=4.5.2 +QT_CAT:=$(BZCAT) + +BR2_PACKAGE_QT_COMMERCIAL_USERNAME:=$(strip $(subst ",, $(BR2_PACKAGE_QT_COMMERCIAL_USERNAME))) +#")) +BR2_PACKAGE_QT_COMMERCIAL_PASSWORD:=$(strip $(subst ",, $(BR2_PACKAGE_QT_COMMERCIAL_PASSWORD))) +#")) + +QT_CONFIGURE:=#empty + +# What to download, free or commercial version. +ifneq ($(BR2_PACKAGE_QT_COMMERCIAL_USERNAME),) +QT_SITE:=http://$(BR2_PACKAGE_QT_COMMERCIAL_USERNAME):$(BR2_QT_COMMERCIAL_PASSWORD)@dist.trolltech.com/$(BR2_PACKAGE_QT_COMMERCIAL_USERNAME) +QT_SOURCE:=qt-embedded-linux-commercial-src-$(QT_VERSION).tar.bz2 +QT_TARGET_DIR:=$(BUILD_DIR)/qt-embedded-linux-commercial-src-$(QT_VERSION) +QT_CONFIGURE+= -commercial +else # Good, good, we are free: +QT_SITE=http://get.qtsoftware.com/qt/source +QT_SOURCE:=qt-embedded-linux-opensource-src-$(QT_VERSION).tar.bz2 +QT_TARGET_DIR:=$(BUILD_DIR)/qt-embedded-linux-opensource-src-$(QT_VERSION) +QT_CONFIGURE+= -opensource +ifeq ($(BR2_PACKAGE_QT_LICENSE_APPROVED),y) +QT_CONFIGURE+= -confirm-license +endif +endif + +# If you want extra tweaking you can copy +# $(QT_TARGET_DIR)/src/corelib/global/qconfig-myfile.h +# to the qt packages directory (where this .mk file is) and +# remove the comment. +# QT_QCONFIG_COMMAND:=-qconfig myfile +# +# For the options you can set in this file, look at +# $(QT_TARGET_DIR)/src/corelib/global/qfeatures.txt +# +QT_QCONFIG_FILE:=package/qt/qconfig-myfile.h +QT_QCONFIG_FILE_LOCATION:=/src/corelib/global/ + +ifeq ($(BR2_LARGEFILE),y) +QT_CONFIGURE+= -largefile +else +QT_CONFIGURE+= -no-largefile +endif + +ifeq ($(BR2_PACKAGE_QT_QT3SUPPORT),y) +QT_CONFIGURE+= -qt3support +else +QT_CONFIGURE+= -no-qt3support +endif + + +### Pixel depths +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_ALL),y) +QT_PIXEL_DEPTHS = all +else +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_1),y) +QT_PIXEL_DEPTHS += 1 +endif +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_4),y) +QT_PIXEL_DEPTHS += 4 +endif +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_8),y) +QT_PIXEL_DEPTHS += 8 +endif +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_12),y) +QT_PIXEL_DEPTHS += 12 +endif +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_15),y) +QT_PIXEL_DEPTHS += 15 +endif +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_16),y) +QT_PIXEL_DEPTHS += 16 +endif +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_18),y) +QT_PIXEL_DEPTHS += 18 +endif +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_24),y) +QT_PIXEL_DEPTHS += 24 +endif +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_32),y) +QT_PIXEL_DEPTHS += 32 +endif +endif +ifneq ($(QT_PIXEL_DEPTHS),) +QT_CONFIGURE += -depths $(subst $(space),$(comma),$(strip $(QT_PIXEL_DEPTHS))) +endif + +### Display drivers +ifeq ($(BR2_PACKAGE_QT_GFX_LINUXFB),y) +QT_CONFIGURE += -qt-gfx-linuxfb +else +QT_CONFIGURE += -no-gfx-linuxfb +endif +ifeq ($(BR2_PACKAGE_QT_GFX_TRANSFORMED),y) +QT_CONFIGURE += -qt-gfx-transformed +else +QT_CONFIGURE += -no-gfx-transformed +endif +ifeq ($(BR2_PACKAGE_QT_GFX_QVFB),y) +QT_CONFIGURE += -qt-gfx-qvfb +else +QT_CONFIGURE += -no-gfx-qvfb +endif +ifeq ($(BR2_PACKAGE_QT_GFX_VNC),y) +QT_CONFIGURE += -qt-gfx-vnc +else +QT_CONFIGURE += -no-gfx-vnc +endif +ifeq ($(BR2_PACKAGE_QT_GFX_MULTISCREEN),y) +QT_CONFIGURE += -qt-gfx-multiscreen +else +QT_CONFIGURE += -no-gfx-multiscreen +endif + +### Mouse drivers +ifeq ($(BR2_PACKAGE_QT_MOUSE_PC),y) +QT_CONFIGURE += -qt-mouse-pc +else +QT_CONFIGURE += -no-mouse-pc +endif +ifeq ($(BR2_PACKAGE_QT_MOUSE_BUS),y) +QT_CONFIGURE += -qt-mouse-bus +else +QT_CONFIGURE += -no-mouse-bus +endif +ifeq ($(BR2_PACKAGE_QT_MOUSE_LINUXTP),y) +QT_CONFIGURE += -qt-mouse-linuxtp +else +QT_CONFIGURE += -no-mouse-linuxtp +endif +ifeq ($(BR2_PACKAGE_QT_MOUSE_YOPY),y) +QT_CONFIGURE += -qt-mouse-yopy +else +QT_CONFIGURE += -no-mouse-yopy +endif +ifeq ($(BR2_PACKAGE_QT_MOUSE_VR41XX),y) +QT_CONFIGURE += -qt-mouse-vr41xx +else +QT_CONFIGURE += -no-mouse-vr41xx +endif +ifeq ($(BR2_PACKAGE_QT_MOUSE_TSLIB),y) +QT_CONFIGURE += -qt-mouse-tslib +QT_DEP_LIBS+=tslib +QT_TSLIB_DEB="-D TSLIBMOUSEHANDLER_DEBUG" +QT_TSLIB_DEB:=$(strip $(subst ",, $(QT_TSLIB_DEB))) +#")) +else +QT_CONFIGURE += -no-mouse-tslib +endif +ifeq ($(BR2_PACKAGE_QT_MOUSE_QVFB),y) +QT_CONFIGURE += -qt-mouse-qvfb +else +QT_CONFIGURE += -no-mouse-qvfb +endif + +ifeq ($(BR2_PACKAGE_QT_DEBUG),y) +QT_CONFIGURE+= "-debug $(QT_TSLIB_DEB)" +else +QT_CONFIGURE+= -release +endif + +ifeq ($(BR2_PACKAGE_QT_SHARED),y) +QT_CONFIGURE+= -shared +else +QT_CONFIGURE+= -static +endif + +ifeq ($(BR2_ENDIAN),"LITTLE") +QT_CONFIGURE+= -little-endian +else +QT_CONFIGURE+= -big-endian +endif + +ifeq ($(BR2_PACKAGE_QT_GIF),y) +QT_CONFIGURE+= -qt-gif +else +QT_CONFIGURE+= -no-gif +endif + +ifeq ($(BR2_PACKAGE_QT_LIBMNG),y) +QT_CONFIGURE+= -qt-libmng +else +QT_CONFIGURE+= -no-libmng +endif + +ifeq ($(BR2_PACKAGE_QT_QTZLIB),y) +QT_CONFIGURE+= -qt-zlib +else +ifeq ($(BR2_PACKAGE_QT_SYSTEMZLIB),y) +QT_CONFIGURE+= -system-zlib +QT_DEP_LIBS+=zlib +endif +endif + +ifeq ($(BR2_PACKAGE_QT_QTJPEG),y) +QT_CONFIGURE+= -qt-libjpeg +else +ifeq ($(BR2_PACKAGE_QT_SYSTEMJPEG),y) +QT_CONFIGURE+= -system-libjpeg +QT_DEP_LIBS+=jpeg +else +QT_CONFIGURE+= -no-libjpeg +endif +endif + +ifeq ($(BR2_PACKAGE_QT_QTPNG),y) +QT_CONFIGURE+= -qt-libpng +else +ifeq ($(BR2_PACKAGE_QT_SYSTEMPNG),y) +QT_CONFIGURE+= -system-libpng +QT_DEP_LIBS+=libpng +else +QT_CONFIGURE+= -no-libpng +endif +endif + +ifeq ($(BR2_PACKAGE_QT_QTTIFF),y) +QT_CONFIGURE+= -qt-libtiff +else +ifeq ($(BR2_PACKAGE_QT_SYSTEMTIFF),y) +QT_CONFIGURE+= -system-libtiff +QT_DEP_LIBS+=tiff +else +QT_CONFIGURE+= -no-libtiff +endif +endif + + +ifeq ($(BR2_PACKAGE_QT_QTFREETYPE),y) +QT_CONFIGURE+= -qt-freetype +else +ifeq ($(BR2_PACKAGE_QT_SYSTEMFREETYPE),y) +QT_CONFIGURE+= -system-freetype +QT_CONFIGURE+= -I $(STAGING_DIR)/usr/include/freetype2/ +QT_DEP_LIBS+=freetype +else +QT_CONFIGURE+= -no-freetype +endif +endif + + +ifeq ($(BR2_PACKAGE_QT_OPENSSL),y) +QT_CONFIGURE+= -openssl +QT_DEP_LIBS+=openssl +else +QT_CONFIGURE+= -no-openssl +endif + +# Qt SQL Drivers +ifeq ($(BR2_PACKAGE_QT_SQL_MODULE),y) +ifeq ($(BR2_PACKAGE_QT_IBASE),y) +QT_CONFIGURE+= -qt-sql-ibase +endif +ifeq ($(BR2_PACKAGE_QT_MYSQL),y) +QT_CONFIGURE+= -qt-sql-mysql +endif +ifeq ($(BR2_PACKAGE_QT_ODBC),y) +QT_CONFIGURE+= -qt-sql-odbc +endif +ifeq ($(BR2_PACKAGE_QT_PSQL),y) +QT_CONFIGURE+= -qt-sql-psql +endif +ifeq ($(BR2_PACKAGE_QT_SQLITE),y) +QT_CONFIGURE+= -qt-sql-sqlite +else +QT_CONFIGURE+= -no-sql-sqlite +endif +ifeq ($(BR2_PACKAGE_QT_SQLITE2),y) +QT_CONFIGURE+= -qt-sql-sqlite2 +endif +else +# By default, no SQL driver is turned on by configure. +# but it seams sqlite isn't disabled despite what says +# configure --help +QT_CONFIGURE+= -no-sql-sqlite +endif + +ifeq ($(BR2_PACKAGE_QT_XMLPATTERNS),y) +QT_CONFIGURE+= -xmlpatterns -exceptions +else +QT_CONFIGURE+= -no-xmlpatterns +endif + +ifeq ($(BR2_PACKAGE_QT_PHONON),y) +QT_CONFIGURE+= -phonon +QT_DEP_LIBS+=gstreamer gst-plugins-base +else +QT_CONFIGURE+= -no-phonon +endif + +ifeq ($(BR2_PACKAGE_QT_SVG),y) +QT_CONFIGURE+= -svg +else +QT_CONFIGURE+= -no-svg +endif + +ifeq ($(BR2_PACKAGE_QT_WEBKIT),y) +QT_CONFIGURE+= -webkit +else +QT_CONFIGURE+= -no-webkit +endif + +ifeq ($(BR2_PACKAGE_QT_STL),y) +QT_CONFIGURE+= -stl +else +QT_CONFIGURE+= -no-stl +endif + +QT_CONFIGURE:=$(strip $(subst ",, $(QT_CONFIGURE))) +#")) +BR2_PACKAGE_QT_EMB_PLATFORM:=$(strip $(subst ",, $(BR2_PACKAGE_QT_EMB_PLATFORM))) +#")) + +# x86x86fix +# Workaround Qt Embedded bug when crosscompiling for x86 under x86 with linux +# host. It's unclear if this would happen on other hosts. +ifneq ($(findstring pc-linux,$(BR2_GNU_BUILD_SUFFIX)),) +ifeq ($(BR2_PACKAGE_QT_EMB_PLATFORM),x86) +QT_CONFIGURE+= -platform linux-g++ +QT_CONFIGURE:=$(strip $(subst ",, $(QT_CONFIGURE))) +#")) +endif +endif +# End of workaround. + +# Figure out what libs to install in the target +QT_LIBS=#empty +ifeq ($(BR2_PACKAGE_QT_GUI_MODULE),y) +QT_LIBS+= qt-gui +endif +ifeq ($(BR2_PACKAGE_QT_SQL_MODULE),y) +QT_LIBS+= qt-sql +endif +ifeq ($(BR2_PACKAGE_QT_PHONON),y) +QT_LIBS+= qt-phonon +endif +ifeq ($(BR2_PACKAGE_QT_SVG),y) +QT_LIBS+= qt-svg +endif +ifeq ($(BR2_PACKAGE_QT_NETWORK),y) +QT_LIBS+= qt-network +endif +ifeq ($(BR2_PACKAGE_QT_WEBKIT),y) +QT_LIBS+= qt-webkit +endif +ifeq ($(BR2_PACKAGE_QT_XML),y) +QT_LIBS+= qt-xml +endif +ifeq ($(BR2_PACKAGE_QT_XMLPATTERNS),y) +QT_LIBS+= qt-xmlpatterns +endif +ifeq ($(BR2_PACKAGE_QT_SCRIPT),y) +QT_LIBS+= qt-script +endif +ifeq ($(BR2_PACKAGE_QT_SCRIPTTOOLS),y) +QT_LIBS+= qt-scripttools +endif + +QT_QMAKE_CONF:=$(QT_TARGET_DIR)/mkspecs/qws/linux-$(BR2_PACKAGE_QT_EMB_PLATFORM)-g++/qmake.conf + +QT_QMAKE_AR:=$(TARGET_AR) cqs + +# Variable for other Qt applications to use +QT_QMAKE:=$(STAGING_DIR)/usr/bin/qmake -spec qws/linux-$(BR2_PACKAGE_QT_EMB_PLATFORM)-g++ + +################################################################################ +# QT_QMAKE_SET -- helper macro to set QMAKE_<variable> = <value> in +# QT_QMAKE_CONF. Will remove existing variable declaration if available. +# +# Argument 1 is the variable name (without QMAKE_) +# Argument 2 is the value to set variable to +# +# E.G. use like this: +# $(call QT_QMAKE_SET,variable,value) +################################################################################ +define QT_QMAKE_SET + $(SED) '/QMAKE_$(1)/d' $(QT_QMAKE_CONF) + $(SED) '/include.*qws.conf/aQMAKE_$(1) = $(2)' $(QT_QMAKE_CONF) +endef + +################################################################################ +# QT_INSTALL_PLUGINS -- helper macro to install Qt plugins to target and +# strip them +# +# Argument 1 is the plugin folder +# +# E.G. use like this to install plugins/sqldrivers: +# $(call QT_INSTALL_PLUGINS,sqldrivers) +# ################################################################################ +define QT_INSTALL_PLUGINS + if [ -d $(STAGING_DIR)/usr/plugins/$(1) ]; then \ + mkdir -p $(TARGET_DIR)/usr/plugins; \ + cp -dpfr $(STAGING_DIR)/usr/plugins/$(1) $(TARGET_DIR)/usr/plugins/; \ + $(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/plugins/$(1)/*; \ + fi +endef + +$(DL_DIR)/$(QT_SOURCE): + $(call DOWNLOAD,$(QT_SITE),$(QT_SOURCE)) + +qt-source: $(DL_DIR)/$(QT_SOURCE) + + +$(QT_TARGET_DIR)/.unpacked: $(DL_DIR)/$(QT_SOURCE) + $(QT_CAT) $(DL_DIR)/$(QT_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - + toolchain/patch-kernel.sh $(QT_TARGET_DIR) package/qt/ \ + qt-$(QT_VERSION)-\*.patch \ + qt-$(QT_VERSION)-\*.patch.$(ARCH) + touch $@ + +$(QT_TARGET_DIR)/.configured: $(QT_TARGET_DIR)/.unpacked +ifneq ($(BR2_INET_IPV6),y) + $(SED) 's/^CFG_IPV6=auto/CFG_IPV6=no/' $(QT_TARGET_DIR)/configure + $(SED) 's/^CFG_IPV6IFNAME=auto/CFG_IPV6IFNAME=no/' $(QT_TARGET_DIR)/configure +endif + $(SED) 's/^CFG_XINERAMA=auto/CFG_XINERAMA=no/' $(QT_TARGET_DIR)/configure + # Fix compiler path + $(call QT_QMAKE_SET,CC,$(TARGET_CC)) + $(call QT_QMAKE_SET,CXX,$(TARGET_CXX)) + $(call QT_QMAKE_SET,LINK,$(TARGET_CXX)) + $(call QT_QMAKE_SET,LINK_SHLIB,$(TARGET_CXX)) + $(call QT_QMAKE_SET,AR,$(QT_QMAKE_AR)) + $(call QT_QMAKE_SET,OBJCOPY,$(TARGET_OBJCOPY)) + $(call QT_QMAKE_SET,RANLIB,$(TARGET_RANLIB)) + $(call QT_QMAKE_SET,STRIP,$(TARGET_STRIP)) + $(call QT_QMAKE_SET,CFLAGS,$(TARGET_CFLAGS)) + $(call QT_QMAKE_SET,CXXFLAGS,$(TARGET_CXXFLAGS)) + -[ -f $(QT_QCONFIG_FILE) ] && cp $(QT_QCONFIG_FILE) \ + $(QT_TARGET_DIR)/$(QT_QCONFIG_FILE_LOCATION) +# Qt doesn't use PKG_CONFIG, it searches for pkg-config with 'which'. +# PKG_CONFIG_SYSROOT is only used to avoid a warning from Qt's configure system +# when cross compiling, Qt 4.4.3 is wrong here. +# Don't use TARGET_CONFIGURE_OPTS here, qmake would be compiled for the target +# instead of the host then. + (cd $(QT_TARGET_DIR); rm -rf config.cache; \ + PATH=$(TARGET_PATH) \ + PKG_CONFIG_SYSROOT_DIR="$(STAGING_DIR)" \ + PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig:$(PKG_CONFIG_PATH)" \ + PKG_CONFIG_SYSROOT="$(STAGING_DIR)" \ + ./configure \ + $(if $(VERBOSE),-verbose,-silent) \ + -force-pkg-config \ + -embedded $(BR2_PACKAGE_QT_EMB_PLATFORM) \ + $(QT_QCONFIG_COMMAND) \ + $(QT_CONFIGURE) \ + -no-cups \ + -no-nis \ + -no-accessibility \ + -no-separate-debug-info \ + -prefix /usr \ + -hostprefix $(STAGING_DIR)/usr \ + -fast \ + -no-rpath \ + -nomake examples \ + -nomake demos \ + ) + touch $@ + +$(QT_TARGET_DIR)/.compiled: $(QT_TARGET_DIR)/.configured + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(QT_TARGET_DIR) + touch $@ + +$(STAGING_DIR)/usr/lib/libQtCore.la: $(QT_TARGET_DIR)/.compiled + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(QT_TARGET_DIR) install + +qt-gui: $(STAGING_DIR)/usr/lib/libQtCore.la + mkdir -p $(TARGET_DIR)/usr/lib/fonts + touch $(TARGET_DIR)/usr/lib/fonts/fontdir + cp -dpf $(STAGING_DIR)/usr/lib/fonts/helvetica*.qpf $(TARGET_DIR)/usr/lib/fonts + cp -dpf $(STAGING_DIR)/usr/lib/fonts/fixed*.qpf $(TARGET_DIR)/usr/lib/fonts + cp -dpf $(STAGING_DIR)/usr/lib/fonts/micro*.qpf $(TARGET_DIR)/usr/lib/fonts + # Install image plugins if they are built + $(call QT_INSTALL_PLUGINS,imageformats) +ifeq ($(BR2_PACKAGE_QT_SHARED),y) + cp -dpf $(STAGING_DIR)/usr/lib/libQtGui.so.* $(TARGET_DIR)/usr/lib/ +endif + +qt-sql: $(STAGING_DIR)/usr/lib/libQtCore.la + $(call QT_INSTALL_PLUGINS,sqldrivers) +ifeq ($(BR2_PACKAGE_QT_SHARED),y) + cp -dpf $(STAGING_DIR)/usr/lib/libQtSql.so.* $(TARGET_DIR)/usr/lib/ +endif + +qt-phonon: $(STAGING_DIR)/usr/lib/libQtCore.la + $(call QT_INSTALL_PLUGINS,phonon_backend) +ifeq ($(BR2_PACKAGE_QT_SHARED),y) + cp -dpf $(STAGING_DIR)/usr/lib/libphonon.so.* $(TARGET_DIR)/usr/lib/ +endif + +qt-svg: $(STAGING_DIR)/usr/lib/libQtCore.la + $(call QT_INSTALL_PLUGINS,iconengines) +ifeq ($(BR2_PACKAGE_QT_SHARED),y) + cp -dpf $(STAGING_DIR)/usr/lib/libQtSvg.so.* $(TARGET_DIR)/usr/lib/ +endif + +qt-network: $(STAGING_DIR)/usr/lib/libQtCore.la +ifeq ($(BR2_PACKAGE_QT_SHARED),y) + cp -dpf $(STAGING_DIR)/usr/lib/libQtNetwork.so.* $(TARGET_DIR)/usr/lib/ +endif + +qt-webkit: $(STAGING_DIR)/usr/lib/libQtCore.la +ifeq ($(BR2_PACKAGE_QT_SHARED),y) + cp -dpf $(STAGING_DIR)/usr/lib/libQtWebKit.so.* $(TARGET_DIR)/usr/lib/ +endif + +qt-xml: $(STAGING_DIR)/usr/lib/libQtCore.la +ifeq ($(BR2_PACKAGE_QT_SHARED),y) + cp -dpf $(STAGING_DIR)/usr/lib/libQtXml.so.* $(TARGET_DIR)/usr/lib/ +endif + +qt-xmlpatterns: $(STAGING_DIR)/usr/lib/libQtCore.la +ifeq ($(BR2_PACKAGE_QT_SHARED),y) + cp -dpf $(STAGING_DIR)/usr/lib/libQtXmlPatterns.so.* $(TARGET_DIR)/usr/lib/ +endif + +qt-script: $(STAGING_DIR)/usr/lib/libQtCore.la +ifeq ($(BR2_PACKAGE_QT_SHARED),y) + cp -dpf $(STAGING_DIR)/usr/lib/libQtScript.so.* $(TARGET_DIR)/usr/lib/ +endif + +qt-scripttools: $(STAGING_DIR)/usr/lib/libQtCore.la +ifeq ($(BR2_PACKAGE_QT_SHARED),y) + cp -dpf $(STAGING_DIR)/usr/lib/libQtScriptTools.so.* $(TARGET_DIR)/usr/lib/ +endif + + +$(TARGET_DIR)/usr/lib/libQtCore.so.4: $(STAGING_DIR)/usr/lib/libQtCore.la $(QT_LIBS) + # Strip all installed libs +ifeq ($(BR2_PACKAGE_QT_SHARED),y) + cp -dpf $(STAGING_DIR)/usr/lib/libQtCore.so.* $(TARGET_DIR)/usr/lib/ + -$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/lib/libQt*.so.* +endif + +qt: uclibc $(QT_DEP_LIBS) $(TARGET_DIR)/usr/lib/libQtCore.so.4 + +qt-clean: + -$(MAKE) -C $(QT_TARGET_DIR) clean + -rm -rf $(TARGET_DIR)/usr/lib/fonts +ifeq ($(BR2_PACKAGE_QT_SHARED),y) + -rm $(TARGET_DIR)/usr/lib/libQt*.so.* + -rm $(TARGET_DIR)/usr/lib/libphonon.so.* +endif + +qt-dirclean: + rm -rf $(QT_TARGET_DIR) + +qt-status: + @echo "QT_QMAKE: " $(QT_QMAKE) + @echo "QT_DEP_LIBS: " $(QT_DEP_LIBS) + @echo "FREETYPE_DIR: " $(FREETYPE_DIR) + +############################################################# +# +# Toplevel Makefile options +# +############################################################# +ifeq ($(BR2_PACKAGE_QT),y) +TARGETS+=qt +endif |