Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [pull request] Pull request for branch for-2011.05/qt-migration
@ 2011-03-20 14:19 Thomas Petazzoni
  2011-03-20 14:19 ` [Buildroot] [PATCH 1/1] qt: convert to the GENTARGETS infrastructure Thomas Petazzoni
  0 siblings, 1 reply; 6+ messages in thread
From: Thomas Petazzoni @ 2011-03-20 14:19 UTC (permalink / raw)
  To: buildroot

The following changes since commit 0a064b48c9d1044b05aee65272f5af7f28879473:
  Gustavo Zacarias (1):
        gst-ffmpeg: bump to version 0.10.11

are available in the git repository at:

  git://git.busybox.net/~tpetazzoni/git/buildroot for-2011.05/qt-migration

Thomas Petazzoni (1):
      qt: convert to the GENTARGETS infrastructure

 package/qt/Config.in |   35 ++--
 package/qt/qt.mk     |  623 +++++++++++++++++++++++---------------------------
 2 files changed, 302 insertions(+), 356 deletions(-)

Thanks,
-- 
Thomas Petazzoni

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Buildroot] [PATCH 1/1] qt: convert to the GENTARGETS infrastructure
  2011-03-20 14:19 [Buildroot] [pull request] Pull request for branch for-2011.05/qt-migration Thomas Petazzoni
@ 2011-03-20 14:19 ` Thomas Petazzoni
  2011-03-24 20:57   ` Luca Ceresoli
                     ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Thomas Petazzoni @ 2011-03-20 14:19 UTC (permalink / raw)
  To: buildroot

In addition to converting the qt package to the GENTARGETS
infrastructure, this commit also does the following (related) things
in the Qt package:

 * Create a BR2_PACKAGE_QT_CONFIG_FILE option, which can be used to
   pass a custom Qt configuration file, such as the ones found in
   src/corelib/global/qconfig-*.h. This used to be possible, but
   required changing qt.mk directly, which isn't really how we
   configure things in Buildroot.

 * Remove the BR2_PACKAGE_QT_EMB_PLATFORM option, the embedded
   platform name is now computed directly in qt.mk.

 * The QT_CONFIGURE variable, which hosted all ./configure options,
   has been renamed to QT_CONFIGURE_OPTS, for consistency with what we
   do in the AUTOTARGETS infrastructure.

 * The QT_DEP_LIBS variable has been renamed to QT_DEPENDENCIES, so
   that dependencies are properly handled by the GENTARGETS
   infrastructures.

 * The QT_QMAKE_SET macro (used to adjust the path/flags of the
   compiler/linker) has been extended with an additional argument,
   which allows to pass the source directory of Qt.

 * All the installation procedure has been rewritten to fit within the
   GENTARGETS mechanism.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/qt/Config.in |   35 ++--
 package/qt/qt.mk     |  623 +++++++++++++++++++++++---------------------------
 2 files changed, 302 insertions(+), 356 deletions(-)

diff --git a/package/qt/Config.in b/package/qt/Config.in
index 3cc04f4..cc65e14 100644
--- a/package/qt/Config.in
+++ b/package/qt/Config.in
@@ -55,6 +55,19 @@ config BR2_PACKAGE_QT_LICENSE_APPROVED
 	  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_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
@@ -240,26 +253,6 @@ config BR2_PACKAGE_QT_SYSTEMZLIB
 	  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 "powerpc"	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_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"
@@ -286,7 +279,7 @@ config BR2_PACKAGE_QT_PHONON_BACKEND
 	  Build the platform Phonon plugin.
 	  If unsure, say n.
 
-comment "Qt DBbus module not available (need dbus)"
+comment "Qt DBus module not available (need dbus)"
 	depends on !BR2_PACKAGE_DBUS
 
 config BR2_PACKAGE_QT_DBUS
diff --git a/package/qt/qt.mk b/package/qt/qt.mk
index 6974b2f..d72d711 100644
--- a/package/qt/qt.mk
+++ b/package/qt/qt.mk
@@ -12,51 +12,43 @@
 #
 ######################################################################
 
-QT_VERSION:=4.7.2
-QT_SOURCE:=qt-everywhere-opensource-src-$(QT_VERSION).tar.gz
-QT_SITE:=http://get.qt.nokia.com/qt/source
-QT_CAT:=$(ZCAT)
-QT_TARGET_DIR:=$(BUILD_DIR)/qt-everywhere-opensource-src-$(QT_VERSION)
+QT_VERSION = 4.7.2
+QT_SOURCE  = qt-everywhere-opensource-src-$(QT_VERSION).tar.gz
+QT_SITE    = http://get.qt.nokia.com/qt/source
 
-QT_CONFIGURE:=#empty
+QT_INSTALL_STAGING = YES
 
 ifeq ($(BR2_PACKAGE_QT_LICENSE_APPROVED),y)
-QT_CONFIGURE += -opensource -confirm-license
+QT_CONFIGURE_OPTS += -opensource -confirm-license
 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/
+QT_CONFIG_FILE=$(call qstrip,$(BR2_PACKAGE_QT_CONFIG_FILE))
+
+ifneq ($(QT_CONFIG_FILE),)
+QT_CONFIGURE_OPTS += -config buildroot
+endif
 
 ifeq ($(BR2_LARGEFILE),y)
-QT_CONFIGURE+= -largefile
+QT_CONFIGURE_OPTS += -largefile
 else
-QT_CONFIGURE+= -no-largefile
+QT_CONFIGURE_OPTS += -no-largefile
 endif
 
 ifeq ($(BR2_PACKAGE_QT_QT3SUPPORT),y)
-QT_CONFIGURE+= -qt3support
+QT_CONFIGURE_OPTS += -qt3support
 else
-QT_CONFIGURE+= -no-qt3support
+QT_CONFIGURE_OPTS += -no-qt3support
 endif
 
 ifeq ($(BR2_PACKAGE_QT_DEMOS),y)
-QT_CONFIGURE+= -examplesdir $(TARGET_DIR)/usr/share/qt/examples -demosdir $(TARGET_DIR)/usr/share/qt/demos
+QT_CONFIGURE_OPTS += -examplesdir $(TARGET_DIR)/usr/share/qt/examples -demosdir $(TARGET_DIR)/usr/share/qt/demos
 else
-QT_CONFIGURE+= -nomake examples -nomake demos
+QT_CONFIGURE_OPTS += -nomake examples -nomake demos
 endif
 
 # ensure glib is built first if enabled for Qt's glib support
 ifeq ($(BR2_PACKAGE_LIBGLIB2),y)
-QT_DEP_LIBS+=libglib2
+QT_DEPENDENCIES += libglib2
 endif
 
 
@@ -90,168 +82,189 @@ ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_32),y)
 QT_PIXEL_DEPTHS += 32
 endif
 ifneq ($(QT_PIXEL_DEPTHS),)
-QT_CONFIGURE += -depths $(subst $(space),$(comma),$(strip $(QT_PIXEL_DEPTHS)))
+QT_CONFIGURE_OPTS += -depths $(subst $(space),$(comma),$(strip $(QT_PIXEL_DEPTHS)))
 endif
 
 ### Display drivers
 ifeq ($(BR2_PACKAGE_QT_GFX_LINUXFB),y)
-QT_CONFIGURE += -qt-gfx-linuxfb
+QT_CONFIGURE_OPTS += -qt-gfx-linuxfb
 else
-QT_CONFIGURE += -no-gfx-linuxfb
+QT_CONFIGURE_OPTS += -no-gfx-linuxfb
 endif
 ifeq ($(BR2_PACKAGE_QT_GFX_TRANSFORMED),y)
-QT_CONFIGURE += -qt-gfx-transformed
+QT_CONFIGURE_OPTS += -qt-gfx-transformed
 else
-QT_CONFIGURE += -no-gfx-transformed
+QT_CONFIGURE_OPTS += -no-gfx-transformed
 endif
 ifeq ($(BR2_PACKAGE_QT_GFX_QVFB),y)
-QT_CONFIGURE += -qt-gfx-qvfb
+QT_CONFIGURE_OPTS += -qt-gfx-qvfb
 else
-QT_CONFIGURE += -no-gfx-qvfb
+QT_CONFIGURE_OPTS += -no-gfx-qvfb
 endif
 ifeq ($(BR2_PACKAGE_QT_GFX_VNC),y)
-QT_CONFIGURE += -qt-gfx-vnc
+QT_CONFIGURE_OPTS += -qt-gfx-vnc
 else
-QT_CONFIGURE += -no-gfx-vnc
+QT_CONFIGURE_OPTS += -no-gfx-vnc
 endif
 ifeq ($(BR2_PACKAGE_QT_GFX_MULTISCREEN),y)
-QT_CONFIGURE += -qt-gfx-multiscreen
+QT_CONFIGURE_OPTS += -qt-gfx-multiscreen
 else
-QT_CONFIGURE += -no-gfx-multiscreen
+QT_CONFIGURE_OPTS += -no-gfx-multiscreen
 endif
 ifeq ($(BR2_PACKAGE_QT_GFX_DIRECTFB),y)
-QT_CONFIGURE += -qt-gfx-directfb
-QT_DEP_LIBS+=directfb
+QT_CONFIGURE_OPTS += -qt-gfx-directfb
+QT_DEPENDENCIES+=directfb
 else
-QT_CONFIGURE += -no-gfx-directfb
+QT_CONFIGURE_OPTS += -no-gfx-directfb
 endif
 
 
 ### Mouse drivers
 ifeq ($(BR2_PACKAGE_QT_MOUSE_PC),y)
-QT_CONFIGURE += -qt-mouse-pc
+QT_CONFIGURE_OPTS += -qt-mouse-pc
 else
-QT_CONFIGURE += -no-mouse-pc
+QT_CONFIGURE_OPTS += -no-mouse-pc
 endif
 ifeq ($(BR2_PACKAGE_QT_MOUSE_LINUXTP),y)
-QT_CONFIGURE += -qt-mouse-linuxtp
+QT_CONFIGURE_OPTS += -qt-mouse-linuxtp
 else
-QT_CONFIGURE += -no-mouse-linuxtp
+QT_CONFIGURE_OPTS += -no-mouse-linuxtp
 endif
 ifeq ($(BR2_PACKAGE_QT_MOUSE_LINUXINPUT),y)
-QT_CONFIGURE += -qt-mouse-linuxinput
+QT_CONFIGURE_OPTS += -qt-mouse-linuxinput
 else
-QT_CONFIGURE += -no-mouse-linuxinput
+QT_CONFIGURE_OPTS += -no-mouse-linuxinput
 endif
 ifeq ($(BR2_PACKAGE_QT_MOUSE_TSLIB),y)
-QT_CONFIGURE += -qt-mouse-tslib
-QT_DEP_LIBS+=tslib
+QT_CONFIGURE_OPTS += -qt-mouse-tslib
+QT_DEPENDENCIES+=tslib
 else
-QT_CONFIGURE += -no-mouse-tslib
+QT_CONFIGURE_OPTS += -no-mouse-tslib
 endif
 ifeq ($(BR2_PACKAGE_QT_MOUSE_QVFB),y)
-QT_CONFIGURE += -qt-mouse-qvfb
+QT_CONFIGURE_OPTS += -qt-mouse-qvfb
 else
-QT_CONFIGURE += -no-mouse-qvfb
+QT_CONFIGURE_OPTS += -no-mouse-qvfb
 endif
 ifeq ($(BR2_PACKAGE_QT_MOUSE_NO_QWS_CURSOR),y)
-QT_CONFIGURE+= -D QT_NO_QWS_CURSOR
+QT_CONFIGURE_OPTS += -D QT_NO_QWS_CURSOR
 endif
 
 ### Keyboard drivers
 ifeq ($(BR2_PACKAGE_QT_KEYBOARD_TTY),y)
-QT_CONFIGURE += -qt-kbd-tty
+QT_CONFIGURE_OPTS += -qt-kbd-tty
 else
-QT_CONFIGURE += -no-kbd-tty
+QT_CONFIGURE_OPTS += -no-kbd-tty
 endif
 ifeq ($(BR2_PACKAGE_QT_KEYBOARD_LINUXINPUT),y)
-QT_CONFIGURE += -qt-kbd-linuxinput
+QT_CONFIGURE_OPTS += -qt-kbd-linuxinput
 else
-QT_CONFIGURE += -no-kbd-linuxinput
+QT_CONFIGURE_OPTS += -no-kbd-linuxinput
 endif
 ifeq ($(BR2_PACKAGE_QT_KEYBOARD_QVFB),y)
-QT_CONFIGURE += -qt-kbd-qvfb
+QT_CONFIGURE_OPTS += -qt-kbd-qvfb
 else
-QT_CONFIGURE += -no-kbd-qvfb
+QT_CONFIGURE_OPTS += -no-kbd-qvfb
 endif
 
 ifeq ($(BR2_PACKAGE_QT_DEBUG),y)
-QT_CONFIGURE+= -debug
+QT_CONFIGURE_OPTS += -debug
 else
-QT_CONFIGURE+= -release
+QT_CONFIGURE_OPTS += -release
 endif
 
 ifeq ($(BR2_PACKAGE_QT_SHARED),y)
-QT_CONFIGURE+= -shared
+QT_CONFIGURE_OPTS += -shared
 else
-QT_CONFIGURE+= -static
+QT_CONFIGURE_OPTS += -static
 endif
 
 ifeq ($(BR2_ENDIAN),"LITTLE")
-QT_CONFIGURE+= -little-endian
+QT_CONFIGURE_OPTS += -little-endian
 else
-QT_CONFIGURE+= -big-endian
+QT_CONFIGURE_OPTS += -big-endian
 endif
 
+ifeq ($(BR2_arm),y)
+QT_EMB_PLATFORM = arm
+else ifeq ($(BR2_armeb),y)
+QT_EMB_PLATFORM = arm
+else ifeq ($(BR2_avr32),y)
+QT_EMB_PLATFORM = avr32
+else ifeq ($(BR2_x86),y)
+QT_EMB_PLATFORM = x86
+else ifeq ($(BR2_x86_64),y)
+QT_EMB_PLATFORM = x86_64
+else ifeq ($(BR2_mips),y)
+QT_EMB_PLATFORM = mips
+else ifeq ($(BR2_mipsel),y)
+QT_EMB_PLATFORM = mips
+else ifeq ($(BR2_powerpc),y)
+QT_EMB_PLATFORM = powerpc
+else
+QT_EMB_PLATFORM = generic
+endif
+
+QT_CONFIGURE_OPTS += -embedded $(QT_EMB_PLATFORM)
+
 ifneq ($(BR2_PACKAGE_QT_GUI_MODULE),y)
-QT_CONFIGURE+= -no-gui
+QT_CONFIGURE_OPTS += -no-gui
 endif
 
 ifeq ($(BR2_PACKAGE_QT_GIF),y)
-QT_CONFIGURE+= -qt-gif
+QT_CONFIGURE_OPTS += -qt-gif
 else
-QT_CONFIGURE+= -no-gif
+QT_CONFIGURE_OPTS += -no-gif
 endif
 
 ifeq ($(BR2_PACKAGE_QT_LIBMNG),y)
-QT_CONFIGURE+= -qt-libmng
+QT_CONFIGURE_OPTS += -qt-libmng
 else
-QT_CONFIGURE+= -no-libmng
+QT_CONFIGURE_OPTS += -no-libmng
 endif
 
 ifeq ($(BR2_PACKAGE_QT_QTZLIB),y)
-QT_CONFIGURE+= -qt-zlib
+QT_CONFIGURE_OPTS += -qt-zlib
 else
 ifeq ($(BR2_PACKAGE_QT_SYSTEMZLIB),y)
-QT_CONFIGURE+= -system-zlib
-QT_DEP_LIBS+=zlib
+QT_CONFIGURE_OPTS += -system-zlib
+QT_DEPENDENCIES   += zlib
 endif
 endif
 
 ifeq ($(BR2_PACKAGE_QT_QTJPEG),y)
-QT_CONFIGURE+= -qt-libjpeg
+QT_CONFIGURE_OPTS += -qt-libjpeg
 else
 ifeq ($(BR2_PACKAGE_QT_SYSTEMJPEG),y)
-QT_CONFIGURE+= -system-libjpeg
-QT_DEP_LIBS+=jpeg
+QT_CONFIGURE_OPTS += -system-libjpeg
+QT_DEPENDENCIES   += jpeg
 else
-QT_CONFIGURE+= -no-libjpeg
+QT_CONFIGURE_OPTS += -no-libjpeg
 endif
 endif
 
 ifeq ($(BR2_PACKAGE_QT_QTPNG),y)
-QT_CONFIGURE+= -qt-libpng
+QT_CONFIGURE_OPTS += -qt-libpng
 else
 ifeq ($(BR2_PACKAGE_QT_SYSTEMPNG),y)
-QT_CONFIGURE+= -system-libpng
-QT_DEP_LIBS+=libpng
+QT_CONFIGURE_OPTS += -system-libpng
+QT_DEPENDENCIES   += libpng
 else
-QT_CONFIGURE+= -no-libpng
+QT_CONFIGURE_OPTS += -no-libpng
 endif
 endif
 
 ifeq ($(BR2_PACKAGE_QT_QTTIFF),y)
-QT_CONFIGURE+= -qt-libtiff
+QT_CONFIGURE_OPTS += -qt-libtiff
 else
 ifeq ($(BR2_PACKAGE_QT_SYSTEMTIFF),y)
-QT_CONFIGURE+= -system-libtiff
-QT_DEP_LIBS+=tiff
+QT_CONFIGURE_OPTS += -system-libtiff
+QT_DEPENDENCIES   += tiff
 else
-QT_CONFIGURE+= -no-libtiff
+QT_CONFIGURE_OPTS += -no-libtiff
 endif
 endif
 
-
 QT_FONTS = $(addprefix $(STAGING_DIR)/usr/lib/fonts/, $(addsuffix *.qpf, \
 	   $(if $(BR2_PACKAGE_QT_FONT_MICRO),micro) \
 	   $(if $(BR2_PACKAGE_QT_FONT_FIXED),fixed) \
@@ -259,272 +272,206 @@ QT_FONTS = $(addprefix $(STAGING_DIR)/usr/lib/fonts/, $(addsuffix *.qpf, \
 	   $(if $(BR2_PACKAGE_QT_FONT_JAPANESE),japanese) \
 	   $(if $(BR2_PACKAGE_QT_FONT_UNIFONT),unifont)))
 
-
 ifeq ($(BR2_PACKAGE_QT_QTFREETYPE),y)
-QT_CONFIGURE+= -qt-freetype
+QT_CONFIGURE_OPTS += -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
+QT_CONFIGURE_OPTS += -system-freetype
+QT_CONFIGURE_OPTS += -I $(STAGING_DIR)/usr/include/freetype2/
+QT_DEPENDENCIES   += freetype
 else
-QT_CONFIGURE+= -no-freetype
+QT_CONFIGURE_OPTS += -no-freetype
 endif
 endif
 
+ifeq ($(BR2_PACKAGE_QT_DBUS),y)
+QT_DEPENDENCIES   += dbus
+endif
 
 ifeq ($(BR2_PACKAGE_QT_OPENSSL),y)
-QT_CONFIGURE+= -openssl
-QT_DEP_LIBS+=openssl
+QT_CONFIGURE_OPTS += -openssl
+QT_DEPENDENCIES   += openssl
 else
-QT_CONFIGURE+= -no-openssl
+QT_CONFIGURE_OPTS += -no-openssl
 endif
 
 # Qt SQL Drivers
 ifeq ($(BR2_PACKAGE_QT_SQL_MODULE),y)
 ifeq ($(BR2_PACKAGE_QT_IBASE),y)
-QT_CONFIGURE+= -qt-sql-ibase
+QT_CONFIGURE_OPTS += -qt-sql-ibase
 endif
 ifeq ($(BR2_PACKAGE_QT_MYSQL),y)
-QT_CONFIGURE+= -qt-sql-mysql -mysql_config $(STAGING_DIR)/usr/bin/mysql_config
-QT_DEP_LIBS+=mysql_client
+QT_CONFIGURE_OPTS += -qt-sql-mysql -mysql_config $(STAGING_DIR)/usr/bin/mysql_config
+QT_DEPENDENCIES   += mysql_client
 endif
 ifeq ($(BR2_PACKAGE_QT_ODBC),y)
-QT_CONFIGURE+= -qt-sql-odbc
+QT_CONFIGURE_OPTS += -qt-sql-odbc
 endif
 ifeq ($(BR2_PACKAGE_QT_PSQL),y)
-QT_CONFIGURE+= -qt-sql-psql
+QT_CONFIGURE_OPTS += -qt-sql-psql
 endif
 ifeq ($(BR2_PACKAGE_QT_SQLITE_QT),y)
-QT_CONFIGURE+= -qt-sql-sqlite
+QT_CONFIGURE_OPTS += -qt-sql-sqlite
 else
 ifeq ($(BR2_PACKAGE_QT_SQLITE_SYSTEM),y)
-QT_CONFIGURE+= -system-sqlite
-QT_DEP_LIBS+= sqlite
+QT_CONFIGURE_OPTS += -system-sqlite
+QT_DEPENDENCIES   += sqlite
 else
-QT_CONFIGURE+= -no-sql-sqlite
+QT_CONFIGURE_OPTS += -no-sql-sqlite
 endif
 endif
 ifeq ($(BR2_PACKAGE_QT_SQLITE2),y)
-QT_CONFIGURE+= -qt-sql-sqlite2
+QT_CONFIGURE_OPTS += -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
+# but it seems sqlite isn't disabled despite what says
 # configure --help
-QT_CONFIGURE+= -no-sql-sqlite
+QT_CONFIGURE_OPTS += -no-sql-sqlite
 endif
 
 ifeq ($(BR2_PACKAGE_QT_XMLPATTERNS),y)
-QT_CONFIGURE+= -xmlpatterns -exceptions
+QT_CONFIGURE_OPTS += -xmlpatterns -exceptions
 else
-QT_CONFIGURE+= -no-xmlpatterns
+QT_CONFIGURE_OPTS += -no-xmlpatterns
 endif
 
 ifeq ($(BR2_PACKAGE_QT_MULTIMEDIA),y)
-QT_CONFIGURE+= -multimedia
+QT_CONFIGURE_OPTS += -multimedia
 else
-QT_CONFIGURE+= -no-multimedia
+QT_CONFIGURE_OPTS += -no-multimedia
 endif
 
 ifeq ($(BR2_PACKAGE_QT_AUDIO_BACKEND),y)
-QT_CONFIGURE+= -audio-backend
-QT_DEP_LIBS+=alsa-lib
+QT_CONFIGURE_OPTS += -audio-backend
+QT_DEPENDENCIES   += alsa-lib
 else
-QT_CONFIGURE+= -no-audio-backend
+QT_CONFIGURE_OPTS += -no-audio-backend
 endif
 
 ifeq ($(BR2_PACKAGE_QT_PHONON),y)
-QT_CONFIGURE+= -phonon
-QT_DEP_LIBS+=gstreamer gst-plugins-base
+QT_CONFIGURE_OPTS += -phonon
+QT_DEPENDENCIES   += gstreamer gst-plugins-base
 else
-QT_CONFIGURE+= -no-phonon
+QT_CONFIGURE_OPTS += -no-phonon
 endif
 
 ifeq ($(BR2_PACKAGE_QT_PHONON_BACKEND),y)
-QT_CONFIGURE+= -phonon-backend
+QT_CONFIGURE_OPTS += -phonon-backend
 else
-QT_CONFIGURE+= -no-phonon-backend
+QT_CONFIGURE_OPTS += -no-phonon-backend
 endif
 
 ifeq ($(BR2_PACKAGE_QT_SVG),y)
-QT_CONFIGURE+= -svg
+QT_CONFIGURE_OPTS += -svg
 else
-QT_CONFIGURE+= -no-svg
+QT_CONFIGURE_OPTS += -no-svg
 endif
 
 ifeq ($(BR2_PACKAGE_QT_WEBKIT),y)
-QT_CONFIGURE+= -webkit
+QT_CONFIGURE_OPTS += -webkit
 else
-QT_CONFIGURE+= -no-webkit
+QT_CONFIGURE_OPTS += -no-webkit
 endif
 
 ifeq ($(BR2_PACKAGE_QT_SCRIPT),y)
-QT_CONFIGURE+= -script
+QT_CONFIGURE_OPTS += -script
 else
-QT_CONFIGURE+= -no-script
+QT_CONFIGURE_OPTS += -no-script
 endif
 
 ifeq ($(BR2_PACKAGE_QT_SCRIPTTOOLS),y)
-QT_CONFIGURE+= -scripttools
+QT_CONFIGURE_OPTS += -scripttools
 else
-QT_CONFIGURE+= -no-scripttools
+QT_CONFIGURE_OPTS += -no-scripttools
 endif
 
 ifeq ($(BR2_PACKAGE_QT_JAVASCRIPTCORE),y)
-QT_CONFIGURE+= -javascript-jit
+QT_CONFIGURE_OPTS += -javascript-jit
 else
-QT_CONFIGURE+= -no-javascript-jit
+QT_CONFIGURE_OPTS += -no-javascript-jit
 endif
 
 ifeq ($(BR2_PACKAGE_QT_STL),y)
-QT_CONFIGURE+= -stl
+QT_CONFIGURE_OPTS += -stl
 else
-QT_CONFIGURE+= -no-stl
+QT_CONFIGURE_OPTS += -no-stl
 endif
 
 # ccache and precompiled headers don't play well together
 ifeq ($(BR2_CCACHE),y)
-QT_CONFIGURE += -no-pch
+QT_CONFIGURE_OPTS += -no-pch
 endif
 
-BR2_PACKAGE_QT_EMB_PLATFORM:=$(call qstrip,$(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 linux,$(GNU_HOST_NAME)),)
 ifneq ($(findstring x86,$(BR2_PACKAGE_QT_EMB_PLATFORM)),)
-QT_CONFIGURE+= -platform linux-g++
+QT_CONFIGURE_OPTS += -platform linux-g++
 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_MULTIMEDIA),y)
-QT_LIBS+= qt-multimedia
-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_DBUS),y)
-QT_LIBS+= qt-dbus
-QT_DEP_LIBS+= dbus
-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
-ifeq ($(BR2_PACKAGE_QT_QT3SUPPORT),y)
-QT_LIBS+= qt-qt3support
-endif
-
-QT_QMAKE_CONF:=$(QT_TARGET_DIR)/mkspecs/qws/linux-$(BR2_PACKAGE_QT_EMB_PLATFORM)-g++/qmake.conf
-
 # Variable for other Qt applications to use
-QT_QMAKE:=$(HOST_DIR)/usr/bin/qmake -spec qws/linux-$(BR2_PACKAGE_QT_EMB_PLATFORM)-g++
+QT_QMAKE:=$(HOST_DIR)/usr/bin/qmake -spec qws/linux-$(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.
+# the qmake.conf file. Will remove existing variable declaration if
+# available.
 #
 # Argument 1 is the variable name (without QMAKE_)
 # Argument 2 is the value to set variable to
+# Argument 3 is the base source directory of Qt
 #
 # E.G. use like this:
-# $(call QT_QMAKE_SET,variable,value)
+# $(call QT_QMAKE_SET,variable,value,directory)
 ################################################################################
 define QT_QMAKE_SET
-	$(SED) '/QMAKE_$(1)/d' $(QT_QMAKE_CONF)
-	$(SED) '/include.*qws.conf/aQMAKE_$(1) = $(2)' $(QT_QMAKE_CONF)
+	$(SED) '/QMAKE_$(1)/d' $(3)/mkspecs/qws/linux-$(QT_EMB_PLATFORM)-g++/qmake.conf
+	$(SED) '/include.*qws.conf/aQMAKE_$(1) = $(2)' $(3)/mkspecs/qws/linux-$(QT_EMB_PLATFORM)-g++/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
+ifneq ($(BR2_INET_IPV6),y)
+define QT_CONFIGURE_IPV6
+	$(SED) 's/^CFG_IPV6=auto/CFG_IPV6=no/' $(@D)/configure
+	$(SED) 's/^CFG_IPV6IFNAME=auto/CFG_IPV6IFNAME=no/' $(@D)/configure
 endef
+endif
 
-$(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
-	-[ -f $(QT_TARGET_DIR)/Makefile ] && $(MAKE) -C $(QT_TARGET_DIR) confclean
-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
+ifneq ($(QT_CONFIG_FILE),)
+define QT_CONFIGURE_CONFIG_FILE
+	cp $(QT_CONFIG_FILE) $(@D)/src/corelib/global/qconfig-buildroot.h
+endef
 endif
+
+define QT_CONFIGURE_CMDS
+	-[ -f $(@D)/Makefile ] && $(MAKE) -C $(@D) confclean
+	$(QT_CONFIGURE_IPV6)
+	$(QT_CONFIGURE_CONFIG_FILE)
 	# Fix compiler path
-	$(call QT_QMAKE_SET,CC,$(filter-out --sysroot=%,$(TARGET_CC)))
-	$(call QT_QMAKE_SET,CXX,$(filter-out --sysroot=%,$(TARGET_CXX)))
-	$(call QT_QMAKE_SET,LINK,$(TARGET_CXX))
-	$(call QT_QMAKE_SET,LINK_SHLIB,$(TARGET_CXX))
-	$(call QT_QMAKE_SET,AR,$(TARGET_AR) cqs)
-	$(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_SYSROOT_OPT) $(TARGET_CFLAGS))
-	$(call QT_QMAKE_SET,CXXFLAGS,$(TARGET_SYSROOT_OPT) $(TARGET_CXXFLAGS))
-	$(call QT_QMAKE_SET,LFLAGS,$(TARGET_LDFLAGS))
-	-[ -f $(QT_QCONFIG_FILE) ] && cp $(QT_QCONFIG_FILE) \
-		$(QT_TARGET_DIR)/$(QT_QCONFIG_FILE_LOCATION)
+	$(call QT_QMAKE_SET,CC,$(filter-out --sysroot=%,$(TARGET_CC)),$(@D))
+	$(call QT_QMAKE_SET,CXX,$(filter-out --sysroot=%,$(TARGET_CXX)),$(@D))
+	$(call QT_QMAKE_SET,LINK,$(TARGET_CXX),$(@D))
+	$(call QT_QMAKE_SET,LINK_SHLIB,$(TARGET_CXX),$(@D))
+	$(call QT_QMAKE_SET,AR,$(TARGET_AR) cqs,$(@D))
+	$(call QT_QMAKE_SET,OBJCOPY,$(TARGET_OBJCOPY),$(@D))
+	$(call QT_QMAKE_SET,RANLIB,$(TARGET_RANLIB),$(@D))
+	$(call QT_QMAKE_SET,STRIP,$(TARGET_STRIP),$(@D))
+	$(call QT_QMAKE_SET,CFLAGS,$(TARGET_SYSROOT_OPT) $(TARGET_CFLAGS),$(@D))
+	$(call QT_QMAKE_SET,CXXFLAGS,$(TARGET_SYSROOT_OPT) $(TARGET_CXXFLAGS),$(@D))
+	$(call QT_QMAKE_SET,LFLAGS,$(TARGET_LDFLAGS),$(@D))
 # Don't use TARGET_CONFIGURE_OPTS here, qmake would be compiled for the target
 # instead of the host then. So set PKG_CONFIG* manually.
-	(cd $(QT_TARGET_DIR); \
+	(cd $(@D); \
 		PKG_CONFIG_SYSROOT_DIR="$(STAGING_DIR)" \
 		PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \
 		PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig:$(PKG_CONFIG_PATH)" \
 		./configure \
 		$(if $(VERBOSE),-verbose,-silent) \
 		-force-pkg-config \
-		-embedded $(BR2_PACKAGE_QT_EMB_PLATFORM) \
-		$(QT_QCONFIG_COMMAND) \
-		$(QT_CONFIGURE) \
+		$(QT_CONFIGURE_OPTS) \
 		-no-gfx-qnx \
 		-no-kbd-qnx \
 		-no-mouse-qnx \
@@ -538,133 +485,139 @@ endif
 		-fast \
 		-no-rpath \
 	)
-	touch $@
-
-$(QT_TARGET_DIR)/.compiled: $(QT_TARGET_DIR)/.configured
-	$(MAKE) -C $(QT_TARGET_DIR)
-	touch $@
-
-$(HOST_DIR)/usr/bin/qt.conf:
-	mkdir -p $(dir $@)
-	echo "[Paths]" > $@
-	echo "Prefix=$(HOST_DIR)/usr" >> $@
-	echo "Headers=$(STAGING_DIR)/usr/include" >> $@
-	echo "Libraries=$(STAGING_DIR)/usr/lib" >> $@
-	echo "Data=$(HOST_DIR)/usr" >> $@
-	echo "Binaries=$(HOST_DIR)/usr/bin" >> $@
-
-$(STAGING_DIR)/usr/lib/libQtCore.la: $(QT_TARGET_DIR)/.compiled $(HOST_DIR)/usr/bin/qt.conf
-	$(MAKE) -C $(QT_TARGET_DIR) install
-	# Move host programs and spec files to the host directory. The
-	# generated qt.conf file will tell qmake where everything is.
-	mv $(addprefix $(STAGING_DIR)/usr/bin/,moc rcc qmake lrelease) $(HOST_DIR)/usr/bin
+endef
+
+define QT_BUILD_CMDS
+	$(MAKE) -C $(@D)
+endef
+
+
+# Build the list of libraries and plugins to install to the target
+
+QT_INSTALL_LIBS    += QtCore
+QT_HOST_PROGRAMS   += moc rcc qmake lrelease
+
 ifeq ($(BR2_PACKAGE_QT_GUI_MODULE),y)
-	mv $(STAGING_DIR)/usr/bin/uic $(HOST_DIR)/usr/bin
+QT_INSTALL_LIBS    += QtGui
+QT_INSTALL_PLUGINS += imageformats
+QT_HOST_PROGRAMS   += uic
 endif
-	mv $(STAGING_DIR)/usr/mkspecs $(HOST_DIR)/usr
-
-qt-gui: $(STAGING_DIR)/usr/lib/libQtCore.la
-	mkdir -p $(TARGET_DIR)/usr/lib/fonts
-ifneq ($(QT_FONTS),)
-	cp -dpf $(QT_FONTS) $(TARGET_DIR)/usr/lib/fonts
+ifeq ($(BR2_PACKAGE_QT_SQL_MODULE),y)
+QT_INSTALL_LIBS    += QtSql
+QT_INSTALL_PLUGINS += sqldrivers
 endif
-ifneq ($(BR2_PACKAGE_QT_NOFREETYPE),y)
-	cp -dpf $(STAGING_DIR)/usr/lib/fonts/*.ttf $(TARGET_DIR)/usr/lib/fonts
+ifeq ($(BR2_PACKAGE_QT_MULTIMEDIA),y)
+QT_INSTALL_LIBS    += QtMultimedia
 endif
-	# 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/
+ifeq ($(BR2_PACKAGE_QT_PHONON),y)
+QT_INSTALL_LIBS    += phonon
+QT_INSTALL_PLUGINS += phonon_backend
 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/
+ifeq ($(BR2_PACKAGE_QT_SVG),y)
+QT_INSTALL_LIBS    += QtSvg
+QT_INSTALL_PLUGINS += iconengines
 endif
-
-qt-multimedia: $(STAGING_DIR)/usr/lib/libQtCore.la
-ifeq ($(BR2_PACKAGE_QT_SHARED),y)
-	cp -dpf $(STAGING_DIR)/usr/lib/libQtMultimedia.so.* $(TARGET_DIR)/usr/lib/
+ifeq ($(BR2_PACKAGE_QT_NETWORK),y)
+QT_INSTALL_LIBS    += QtNetwork
 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/
+ifeq ($(BR2_PACKAGE_QT_WEBKIT),y)
+QT_INSTALL_LIBS    += QtWebKit
 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/
+ifeq ($(BR2_PACKAGE_QT_XML),y)
+QT_INSTALL_LIBS    += QtXml
 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/
+ifeq ($(BR2_PACKAGE_QT_DBUS),y)
+QT_INSTALL_LIBS    += QtDBus
 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/
+ifeq ($(BR2_PACKAGE_QT_XMLPATTERNS),y)
+QT_INSTALL_LIBS    += QtXmlPatterns
 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/
+ifeq ($(BR2_PACKAGE_QT_SCRIPT),y)
+QT_INSTALL_LIBS    += QtScript
 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/
+ifeq ($(BR2_PACKAGE_QT_SCRIPTTOOLS),y)
+QT_INSTALL_LIBS    += QtScriptTools
 endif
+ifeq ($(BR2_PACKAGE_QT_QT3SUPPORT),y)
+QT_INSTALL_LIBS    += libQt3Support
+endif
+
+QT_CONF_FILE=$(HOST_DIR)/usr/bin/qt.conf
+
+# Since host programs and spec files have been moved to $(HOST_DIR),
+# we need to tell qmake the new location of the various elements,
+# through a qt.conf file.
+define QT_INSTALL_QT_CONF
+	mkdir -p $(dir $(QT_CONF_FILE))
+	echo "[Paths]"                             > $(QT_CONF_FILE)
+	echo "Prefix=$(HOST_DIR)/usr"             >> $(QT_CONF_FILE)
+	echo "Headers=$(STAGING_DIR)/usr/include" >> $(QT_CONF_FILE)
+	echo "Libraries=$(STAGING_DIR)/usr/lib"   >> $(QT_CONF_FILE)
+	echo "Data=$(HOST_DIR)/usr"               >> $(QT_CONF_FILE)
+	echo "Binaries=$(HOST_DIR)/usr/bin"       >> $(QT_CONF_FILE)
+endef
 
-qt-dbus: $(STAGING_DIR)/usr/lib/libQtCore.la
-ifeq ($(BR2_PACKAGE_QT_SHARED),y)
-	cp -dpf $(STAGING_DIR)/usr/lib/libQtDBus.so.* $(TARGET_DIR)/usr/lib/
-endif
+# After running Qt normal installation process (which installs
+# everything in the STAGING_DIR), we move host programs such as qmake,
+# rcc or uic to the HOST_DIR so that they are available at the usual
+# location. A qt.conf file is generated to make sure that all host
+# programs still find all files they need.
+define QT_INSTALL_STAGING_CMDS
+	$(MAKE) -C $(@D) install
+	mkdir -p $(HOST_DIR)/usr/bin
+	mv $(addprefix $(STAGING_DIR)/usr/bin/,$(QT_HOST_PROGRAMS)) $(HOST_DIR)/usr/bin
+	rm -rf $(HOST_DIR)/usr/mkspecs
+	mv $(STAGING_DIR)/usr/mkspecs $(HOST_DIR)/usr
+	$(QT_INSTALL_QT_CONF)
+endef
 
-qt-script: $(STAGING_DIR)/usr/lib/libQtCore.la
+# Library installation
 ifeq ($(BR2_PACKAGE_QT_SHARED),y)
-	cp -dpf $(STAGING_DIR)/usr/lib/libQtScript.so.* $(TARGET_DIR)/usr/lib/
+define QT_INSTALL_TARGET_LIBS
+	for lib in $(QT_INSTALL_LIBS); do \
+		cp -dpf $(STAGING_DIR)/usr/lib/lib$${lib}.so.* $(TARGET_DIR)/usr/lib ; \
+	done
+endef
 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
+# Plugin installation
+define QT_INSTALL_TARGET_PLUGINS
+	for plugin in $(QT_INSTALL_PLUGINS); do \
+		mkdir -p $(TARGET_DIR)/usr/plugins ; \
+		cp -dpfr $(STAGING_DIR)/usr/plugins/$$plugin $(TARGET_DIR)/usr/plugins/; \
+	done
+endef
 
-qt-qt3support: $(STAGING_DIR)/usr/lib/libQtCore.la
-ifeq ($(BR2_PACKAGE_QT_SHARED),y)
-	cp -dpf $(STAGING_DIR)/usr/lib/libQt3Support.so.* $(TARGET_DIR)/usr/lib/
+# Fonts installation
+ifneq ($(QT_FONTS),)
+define QT_INSTALL_TARGET_FONTS
+	mkdir -p $(TARGET_DIR)/usr/lib/fonts
+	cp -dpf $(QT_FONTS) $(TARGET_DIR)/usr/lib/fonts
+endef
 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.*
+ifeq ($(BR2_PACKAGE_QT_QTFREETYPE)$(BR2_PACKAGE_QT_SYSTEMFREETYPE),y)
+define QT_INSTALL_TARGET_FONTS_TTF
+	mkdir -p $(TARGET_DIR)/usr/lib/fonts
+	cp -dpf $(STAGING_DIR)/usr/lib/fonts/*.ttf $(TARGET_DIR)/usr/lib/fonts
+endef
 endif
 
-qt: $(QT_DEP_LIBS) $(TARGET_DIR)/usr/lib/libQtCore.so.4
+define QT_INSTALL_TARGET_CMDS
+	$(QT_INSTALL_TARGET_LIBS)
+	$(QT_INSTALL_TARGET_PLUGINS)
+	$(QT_INSTALL_TARGET_FONTS)
+	$(QT_INSTALL_TARGET_FONTS_TTF)
+endef
+
+define QT_CLEAN_CMDS
+	-$(MAKE) -C $(@D) clean
+endef
 
-qt-clean:
-	-$(MAKE) -C $(QT_TARGET_DIR) clean
+define QT_UNINSTALL_TARGET_CMDS
 	-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)
+endef
 
-#############################################################
-#
-# Toplevel Makefile options
-#
-#############################################################
-ifeq ($(BR2_PACKAGE_QT),y)
-TARGETS+=qt
-endif
+$(eval $(call GENTARGETS,package,qt))
-- 
1.7.0.4

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Buildroot] [PATCH 1/1] qt: convert to the GENTARGETS infrastructure
  2011-03-20 14:19 ` [Buildroot] [PATCH 1/1] qt: convert to the GENTARGETS infrastructure Thomas Petazzoni
@ 2011-03-24 20:57   ` Luca Ceresoli
  2011-03-25 16:37   ` Will Wagner
  2011-03-27 22:06   ` Peter Korsgaard
  2 siblings, 0 replies; 6+ messages in thread
From: Luca Ceresoli @ 2011-03-24 20:57 UTC (permalink / raw)
  To: buildroot

Thomas Petazzoni wrote:
> In addition to converting the qt package to the GENTARGETS
> infrastructure, this commit also does the following (related) things
> in the Qt package:
>
>   * Create a BR2_PACKAGE_QT_CONFIG_FILE option, which can be used to
>     pass a custom Qt configuration file, such as the ones found in
>     src/corelib/global/qconfig-*.h. This used to be possible, but
>     required changing qt.mk directly, which isn't really how we
>     configure things in Buildroot.
>
>   * Remove the BR2_PACKAGE_QT_EMB_PLATFORM option, the embedded
>     platform name is now computed directly in qt.mk.
>
>   * The QT_CONFIGURE variable, which hosted all ./configure options,
>     has been renamed to QT_CONFIGURE_OPTS, for consistency with what we
>     do in the AUTOTARGETS infrastructure.
>
>   * The QT_DEP_LIBS variable has been renamed to QT_DEPENDENCIES, so
>     that dependencies are properly handled by the GENTARGETS
>     infrastructures.
>
>   * The QT_QMAKE_SET macro (used to adjust the path/flags of the
>     compiler/linker) has been extended with an additional argument,
>     which allows to pass the source directory of Qt.
>
>   * All the installation procedure has been rewritten to fit within the
>     GENTARGETS mechanism.
>
> Signed-off-by: Thomas Petazzoni<thomas.petazzoni@free-electrons.com>
> ---
>   package/qt/Config.in |   35 ++--
>   package/qt/qt.mk     |  623 +++++++++++++++++++++++---------------------------
>   2 files changed, 302 insertions(+), 356 deletions(-)
>

Acked-by: Luca Ceresoli <luca@lucaceresoli.net>

Luca

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Buildroot] [PATCH 1/1] qt: convert to the GENTARGETS infrastructure
  2011-03-20 14:19 ` [Buildroot] [PATCH 1/1] qt: convert to the GENTARGETS infrastructure Thomas Petazzoni
  2011-03-24 20:57   ` Luca Ceresoli
@ 2011-03-25 16:37   ` Will Wagner
  2011-03-27 22:07     ` Peter Korsgaard
  2011-03-27 22:06   ` Peter Korsgaard
  2 siblings, 1 reply; 6+ messages in thread
From: Will Wagner @ 2011-03-25 16:37 UTC (permalink / raw)
  To: buildroot

On 20/03/2011 14:19, Thomas Petazzoni wrote:
> In addition to converting the qt package to the GENTARGETS
> infrastructure, this commit also does the following (related) things
> in the Qt package:
>
>   * Create a BR2_PACKAGE_QT_CONFIG_FILE option, which can be used to
>     pass a custom Qt configuration file, such as the ones found in
>     src/corelib/global/qconfig-*.h. This used to be possible, but
>     required changing qt.mk directly, which isn't really how we
>     configure things in Buildroot.
>
>   * Remove the BR2_PACKAGE_QT_EMB_PLATFORM option, the embedded
>     platform name is now computed directly in qt.mk.
>
>   * The QT_CONFIGURE variable, which hosted all ./configure options,
>     has been renamed to QT_CONFIGURE_OPTS, for consistency with what we
>     do in the AUTOTARGETS infrastructure.
>
>   * The QT_DEP_LIBS variable has been renamed to QT_DEPENDENCIES, so
>     that dependencies are properly handled by the GENTARGETS
>     infrastructures.
>
>   * The QT_QMAKE_SET macro (used to adjust the path/flags of the
>     compiler/linker) has been extended with an additional argument,
>     which allows to pass the source directory of Qt.
>
>   * All the installation procedure has been rewritten to fit within the
>     GENTARGETS mechanism.
>
> Signed-off-by: Thomas Petazzoni<thomas.petazzoni@free-electrons.com>
> ---
>   package/qt/Config.in |   35 ++--
>   package/qt/qt.mk     |  623 +++++++++++++++++++++++---------------------------
>   2 files changed, 302 insertions(+), 356 deletions(-)
>
I have found three issues with this patch:

Should be:
+else ifeq ($(BR2_i386),y)
Not
+else ifeq ($(BR2_x86),y)

Should be:
ifneq ($(findstring x86,$(QT_EMB_PLATFORM)),)
Not
ifneq ($(findstring x86,$(BR2_PACKAGE_QT_EMB_PLATFORM)),)

Finally whitespace formatting is slightly inconsistent for the 
QT_DEPENDENCIES libglib2, directfb and tslib

Assuming you fixup those three minor things
Acked-by: Will Wagner <willw@carallon.com>

As a slight aside I have a number of Qt patches in my tree that I'd love 
to get merged if there was any interest.

First is to allow compiling Qt for X11 rather than embedded. This is 
involves a slight hack as Qt doesn't officially support cross compiling 
the X11 version, however I have it working well and have been in touch 
with Nokia support who say that although not officially supported it 
should work

Second is re-adding commercial support. i know we had this before and it 
was removed, however I'm stuck with some projects that have to use the 
commercial license. I have done it slightly differently to how it was 
before, it no longer needs login details to download the tarball, 
instead it just fails with an explanation if it isn't in your buildroot 
dl folder.

Other patches include Qt Declarative config option, more font config 
options.

If people are interested I'll submit patches.

Will

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Buildroot] [PATCH 1/1] qt: convert to the GENTARGETS infrastructure
  2011-03-20 14:19 ` [Buildroot] [PATCH 1/1] qt: convert to the GENTARGETS infrastructure Thomas Petazzoni
  2011-03-24 20:57   ` Luca Ceresoli
  2011-03-25 16:37   ` Will Wagner
@ 2011-03-27 22:06   ` Peter Korsgaard
  2 siblings, 0 replies; 6+ messages in thread
From: Peter Korsgaard @ 2011-03-27 22:06 UTC (permalink / raw)
  To: buildroot

>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@free-electrons.com> writes:

 Thomas> In addition to converting the qt package to the GENTARGETS
 Thomas> infrastructure, this commit also does the following (related) things
 Thomas> in the Qt package:

Committed, thanks.

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Buildroot] [PATCH 1/1] qt: convert to the GENTARGETS infrastructure
  2011-03-25 16:37   ` Will Wagner
@ 2011-03-27 22:07     ` Peter Korsgaard
  0 siblings, 0 replies; 6+ messages in thread
From: Peter Korsgaard @ 2011-03-27 22:07 UTC (permalink / raw)
  To: buildroot

>>>>> "Will" == Will Wagner <will_wagner@carallon.com> writes:

Hi,

 Will> I have found three issues with this patch:

 Will> Should be:
 Will> +else ifeq ($(BR2_i386),y)
 Will> Not
 Will> +else ifeq ($(BR2_x86),y)

 Will> Should be:
 Will> ifneq ($(findstring x86,$(QT_EMB_PLATFORM)),)
 Will> Not
 Will> ifneq ($(findstring x86,$(BR2_PACKAGE_QT_EMB_PLATFORM)),)

 Will> Finally whitespace formatting is slightly inconsistent for the
 Will> QT_DEPENDENCIES libglib2, directfb and tslib

 Will> Assuming you fixup those three minor things
 Will> Acked-by: Will Wagner <willw@carallon.com>

Fixed, thanks.

 Will> As a slight aside I have a number of Qt patches in my tree that I'd
 Will> love to get merged if there was any interest.

 Will> First is to allow compiling Qt for X11 rather than embedded. This is
 Will> involves a slight hack as Qt doesn't officially support cross
 Will> compiling the X11 version, however I have it working well and have
 Will> been in touch with Nokia support who say that although not officially
 Will> supported it should work

 Will> Second is re-adding commercial support. i know we had this before and
 Will> it was removed, however I'm stuck with some projects that have to use
 Will> the commercial license. I have done it slightly differently to how it
 Will> was before, it no longer needs login details to download the tarball,
 Will> instead it just fails with an explanation if it isn't in your
 Will> buildroot dl folder.

 Will> Other patches include Qt Declarative config option, more font config
 Will> options.

 Will> If people are interested I'll submit patches.

I am, please submit - I'll add them If they are not too intrusive.

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2011-03-27 22:07 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-03-20 14:19 [Buildroot] [pull request] Pull request for branch for-2011.05/qt-migration Thomas Petazzoni
2011-03-20 14:19 ` [Buildroot] [PATCH 1/1] qt: convert to the GENTARGETS infrastructure Thomas Petazzoni
2011-03-24 20:57   ` Luca Ceresoli
2011-03-25 16:37   ` Will Wagner
2011-03-27 22:07     ` Peter Korsgaard
2011-03-27 22:06   ` Peter Korsgaard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox