aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-qt
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@linux.intel.com>2010-08-27 15:14:24 +0100
committerRichard Purdie <rpurdie@linux.intel.com>2010-08-27 15:29:45 +0100
commit29d6678fd546377459ef75cf54abeef5b969b5cf (patch)
tree8edd65790e37a00d01c3f203f773fe4b5012db18 /meta/recipes-qt
parentda49de6885ee1bc424e70bc02f21f6ab920efb55 (diff)
downloadopenembedded-core-contrib-29d6678fd546377459ef75cf54abeef5b969b5cf.tar.gz
openembedded-core-contrib-29d6678fd546377459ef75cf54abeef5b969b5cf.tar.bz2
openembedded-core-contrib-29d6678fd546377459ef75cf54abeef5b969b5cf.zip
Major layout change to the packages directory
Having one monolithic packages directory makes it hard to find things and is generally overwhelming. This commit splits it into several logical sections roughly based on function, recipes.txt gives more information about the classifications used. The opportunity is also used to switch from "packages" to "recipes" as used in OpenEmbedded as the term "packages" can be confusing to people and has many different meanings. Not all recipes have been classified yet, this is just a first pass at separating things out. Some packages are moved to meta-extras as they're no longer actively used or maintained. Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'meta/recipes-qt')
-rw-r--r--meta/recipes-qt/qmake/qmake2-cross/0001-fix-mkspecs.patch120
-rw-r--r--meta/recipes-qt/qmake/qmake2-cross/linux-oe-qmake.conf1
-rw-r--r--meta/recipes-qt/qmake/qmake2-cross/use-lflags-last.patch22
-rw-r--r--meta/recipes-qt/qmake/qmake2-cross_2.10a.bb74
-rw-r--r--meta/recipes-qt/qt-apps/fotowall_0.9.bb19
-rw-r--r--meta/recipes-qt/qt-apps/qmmp_0.4.1.bb32
-rw-r--r--meta/recipes-qt/qt-apps/quicky_0.4.bb16
-rw-r--r--meta/recipes-qt/qt4/files/0001-cross-compile.patch36
-rw-r--r--meta/recipes-qt/qt4/files/0002-fix-resinit-declaration.patch22
-rw-r--r--meta/recipes-qt/qt4/files/0004-no-qmake.patch26
-rw-r--r--meta/recipes-qt/qt4/files/0006-freetype-host-includes.patch24
-rw-r--r--meta/recipes-qt/qt4/files/0008-qt-lib-infix.patch36
-rw-r--r--meta/recipes-qt/qt4/files/0009-support-2bpp.patch299
-rw-r--r--meta/recipes-qt/qt4/files/0010-no-simpledecoration-example.patch14
-rw-r--r--meta/recipes-qt/qt4/files/fix-config-tests.patch36
-rw-r--r--meta/recipes-qt/qt4/files/g++.conf53
-rw-r--r--meta/recipes-qt/qt4/files/hack-out-pg_config.patch30
-rw-r--r--meta/recipes-qt/qt4/files/linux.conf54
-rw-r--r--meta/recipes-qt/qt4/files/qt-config.patch24
-rw-r--r--meta/recipes-qt/qt4/qt-4.6.3.inc65
-rw-r--r--meta/recipes-qt/qt4/qt4-tools-native.inc74
-rw-r--r--meta/recipes-qt/qt4/qt4-tools-native_4.6.3.bb11
-rw-r--r--meta/recipes-qt/qt4/qt4-x11-free-4.6.3/linux.conf54
-rw-r--r--meta/recipes-qt/qt4/qt4-x11-free.inc14
-rw-r--r--meta/recipes-qt/qt4/qt4-x11-free_4.6.3.bb6
-rw-r--r--meta/recipes-qt/qt4/qt4.inc300
-rw-r--r--meta/recipes-qt/uicmoc/uicmoc4-native.inc67
-rw-r--r--meta/recipes-qt/uicmoc/uicmoc4-native_4.3.2.bb1
28 files changed, 1530 insertions, 0 deletions
diff --git a/meta/recipes-qt/qmake/qmake2-cross/0001-fix-mkspecs.patch b/meta/recipes-qt/qmake/qmake2-cross/0001-fix-mkspecs.patch
new file mode 100644
index 0000000000..4ebc3dea8d
--- /dev/null
+++ b/meta/recipes-qt/qmake/qmake2-cross/0001-fix-mkspecs.patch
@@ -0,0 +1,120 @@
+From 594157753a24d0575aaf948dc0e9500f6bdb2178 Mon Sep 17 00:00:00 2001
+From: Michael Krelin <hacker@klever.net>
+Date: Sat, 2 Jun 2007 16:39:58 +0200
+Subject: [PATCH] fix mkspecs
+
+---
+ mkspecs/common/g++.conf | 18 +++++++++---------
+ mkspecs/common/linux.conf | 26 +++++++++++++-------------
+ 2 files changed, 22 insertions(+), 22 deletions(-)
+
+Index: qt-embedded-linux-opensource-src-4.5.3/mkspecs/common/g++.conf
+===================================================================
+--- qt-embedded-linux-opensource-src-4.5.3.orig/mkspecs/common/g++.conf
++++ qt-embedded-linux-opensource-src-4.5.3/mkspecs/common/g++.conf
+@@ -2,12 +2,12 @@
+ # qmake configuration for common gcc
+ #
+
+-QMAKE_CC = gcc
+-QMAKE_CFLAGS += -pipe
++QMAKE_CC = $(OE_QMAKE_CC)
++QMAKE_CFLAGS += -pipe $(OE_QMAKE_CFLAGS)
+ QMAKE_CFLAGS_DEPS += -M
+ QMAKE_CFLAGS_WARN_ON += -Wall -W
+ QMAKE_CFLAGS_WARN_OFF += -w
+-QMAKE_CFLAGS_RELEASE += -O2
++QMAKE_CFLAGS_RELEASE += -O2
+ QMAKE_CFLAGS_DEBUG += -g
+ QMAKE_CFLAGS_SHLIB += -fPIC
+ QMAKE_CFLAGS_STATIC_LIB += -fPIC
+@@ -16,8 +16,8 @@ QMAKE_CFLAGS_HIDESYMS += -fvisibility=
+ QMAKE_CFLAGS_PRECOMPILE += -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+ QMAKE_CFLAGS_USE_PRECOMPILE += -include ${QMAKE_PCH_OUTPUT_BASE}
+
+-QMAKE_CXX = g++
+-QMAKE_CXXFLAGS += $$QMAKE_CFLAGS
++QMAKE_CXX = $(OE_QMAKE_CXX)
++QMAKE_CXXFLAGS += $$QMAKE_CFLAGS $(OE_QMAKE_CXXFLAGS)
+ QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS
+ QMAKE_CXXFLAGS_WARN_ON += $$QMAKE_CFLAGS_WARN_ON
+ QMAKE_CXXFLAGS_WARN_OFF += $$QMAKE_CFLAGS_WARN_OFF
+@@ -30,11 +30,11 @@ QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAG
+ QMAKE_CXXFLAGS_PRECOMPILE += -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+ QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
+
+-QMAKE_LINK = g++
+-QMAKE_LINK_SHLIB = g++
+-QMAKE_LINK_C = gcc
+-QMAKE_LINK_C_SHLIB = gcc
+-QMAKE_LFLAGS +=
++QMAKE_LINK = $(OE_QMAKE_LINK)
++QMAKE_LINK_SHLIB = $(OE_QMAKE_LINK)
++QMAKE_LINK_C = $(OE_QMAKE_CC)
++QMAKE_LINK_C_SHLIB = $(OE_QMAKE_CC)
++QMAKE_LFLAGS += $(OE_QMAKE_LDFLAGS)
+ QMAKE_LFLAGS_RELEASE += -Wl,-O1
+ QMAKE_LFLAGS_DEBUG +=
+ QMAKE_LFLAGS_APP +=
+@@ -43,7 +43,7 @@ QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SH
+ QMAKE_LFLAGS_SONAME += -Wl,-soname,
+ QMAKE_LFLAGS_THREAD +=
+ QMAKE_LFLAGS_NOUNDEF += -Wl,--no-undefined
+-QMAKE_RPATH = -Wl,-rpath,
++QMAKE_RPATH = -Wl,-rpath-link,
+
+ QMAKE_PCH_OUTPUT_EXT = .gch
+
+Index: qt-embedded-linux-opensource-src-4.5.3/mkspecs/common/linux.conf
+===================================================================
+--- qt-embedded-linux-opensource-src-4.5.3.orig/mkspecs/common/linux.conf
++++ qt-embedded-linux-opensource-src-4.5.3/mkspecs/common/linux.conf
+@@ -7,27 +7,27 @@ QMAKE_CXXFLAGS_THREAD += $$QMAKE_CFLAGS_
+
+ QMAKE_INCDIR =
+ QMAKE_LIBDIR =
+-QMAKE_INCDIR_X11 = /usr/X11R6/include
+-QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+-QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+-QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+-QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+-QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
++QMAKE_INCDIR_X11 =
++QMAKE_LIBDIR_X11 =
++QMAKE_INCDIR_QT = $(OE_QMAKE_INCDIR_QT)
++QMAKE_LIBDIR_QT = $(OE_QMAKE_LIBDIR_QT)
++QMAKE_INCDIR_OPENGL =
++QMAKE_LIBDIR_OPENGL =
+
+ QMAKE_LIBS =
+ QMAKE_LIBS_DYNLOAD = -ldl
+-QMAKE_LIBS_X11 = -lXext -lX11 -lm
+-QMAKE_LIBS_X11SM = -lSM -lICE
++QMAKE_LIBS_X11 = $(OE_QMAKE_LIBS_X11)
++QMAKE_LIBS_X11SM = $(OE_QMAKE_LIBS_X11SM)
+ QMAKE_LIBS_NIS = -lnsl
+ QMAKE_LIBS_OPENGL = -lGLU -lGL
+ QMAKE_LIBS_OPENGL_QT = -lGL
+ QMAKE_LIBS_THREAD = -lpthread
+
+-QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+-QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
++QMAKE_MOC = $(OE_QMAKE_MOC)
++QMAKE_UIC = $(OE_QMAKE_UIC)
+
+-QMAKE_AR = ar cqs
+-QMAKE_OBJCOPY = objcopy
++QMAKE_AR = $(OE_QMAKE_AR) cqs
++QMAKE_OBJCOPY = $(OE_QMAKE_OBJCOPY)
+ QMAKE_RANLIB =
+
+ QMAKE_TAR = tar -cf
+@@ -39,7 +39,7 @@ QMAKE_COPY_DIR = $(COPY) -r
+ QMAKE_MOVE = mv -f
+ QMAKE_DEL_FILE = rm -f
+ QMAKE_DEL_DIR = rmdir
+-QMAKE_STRIP = strip
++QMAKE_STRIP = $(OE_QMAKE_STRIP)
+ QMAKE_STRIPFLAGS_LIB += --strip-unneeded
+ QMAKE_CHK_DIR_EXISTS = test -d
+ QMAKE_MKDIR = mkdir -p
diff --git a/meta/recipes-qt/qmake/qmake2-cross/linux-oe-qmake.conf b/meta/recipes-qt/qmake/qmake2-cross/linux-oe-qmake.conf
new file mode 100644
index 0000000000..f58481a693
--- /dev/null
+++ b/meta/recipes-qt/qmake/qmake2-cross/linux-oe-qmake.conf
@@ -0,0 +1 @@
+include(../linux-g++/qmake.conf)
diff --git a/meta/recipes-qt/qmake/qmake2-cross/use-lflags-last.patch b/meta/recipes-qt/qmake/qmake2-cross/use-lflags-last.patch
new file mode 100644
index 0000000000..4197dbbf64
--- /dev/null
+++ b/meta/recipes-qt/qmake/qmake2-cross/use-lflags-last.patch
@@ -0,0 +1,22 @@
+Index: qtopia-core-opensource-src-4.3.1/qmake/generators/unix/unixmake2.cpp
+===================================================================
+--- qtopia-core-opensource-src-4.3.1.orig/qmake/generators/unix/unixmake2.cpp 2007-10-07 13:45:26.000000000 +0200
++++ qtopia-core-opensource-src-4.3.1/qmake/generators/unix/unixmake2.cpp 2007-10-07 13:57:09.000000000 +0200
+@@ -416,7 +416,7 @@
+ t << "\n\t" << mkdir_p_asstring(destdir) << "\n\t";
+ if(!project->isEmpty("QMAKE_PRE_LINK"))
+ t << var("QMAKE_PRE_LINK") << "\n\t";
+- t << "$(LINK) $(LFLAGS) -o $(TARGET) " << incr_deps << " " << incr_objs << " $(OBJCOMP) $(LIBS)";
++ t << "$(LINK) -o $(TARGET) " << incr_deps << " " << incr_objs << " $(OBJCOMP) $(LIBS) $(LFLAGS)";
+ if(!project->isEmpty("QMAKE_POST_LINK"))
+ t << "\n\t" << var("QMAKE_POST_LINK");
+ t << endl << endl;
+@@ -430,7 +430,7 @@
+ t << mkdir_p_asstring(destdir) << "\n\t";
+ if(!project->isEmpty("QMAKE_PRE_LINK"))
+ t << var("QMAKE_PRE_LINK") << "\n\t";
+- t << "$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)";
++ t << "$(LINK) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS) $(LFLAGS)";
+ if(!project->isEmpty("QMAKE_POST_LINK"))
+ t << "\n\t" << var("QMAKE_POST_LINK");
+ t << endl << endl;
diff --git a/meta/recipes-qt/qmake/qmake2-cross_2.10a.bb b/meta/recipes-qt/qmake/qmake2-cross_2.10a.bb
new file mode 100644
index 0000000000..60f738b9ce
--- /dev/null
+++ b/meta/recipes-qt/qmake/qmake2-cross_2.10a.bb
@@ -0,0 +1,74 @@
+DESCRIPTION = "TrollTech Makefile Generator"
+PRIORITY = "optional"
+HOMEPAGE = "http://www.trolltech.com"
+SECTION = "devel"
+LICENSE = "GPL"
+PR = "r2"
+
+QTVER = "qt-embedded-linux-opensource-src-4.5.3"
+
+SRC_URI = "ftp://ftp.trolltech.com/pub/qt/source/${QTVER}.tar.gz \
+ file://0001-fix-mkspecs.patch;patch=1 \
+ file://use-lflags-last.patch;patch=1 \
+ file://linux-oe-qmake.conf"
+S = "${WORKDIR}/${QTVER}"
+
+# we need the real target system here
+CROSS_SYS := "${TARGET_SYS}"
+CROSS_BINDIR := "${STAGING_BINDIR_CROSS}"
+inherit autotools cross
+
+export QTDIR = "${S}"
+EXTRA_OEMAKE = "-e"
+EXTRA_OECONF = "-opensource"
+
+do_configure() {
+ # Install the OE build templates
+ for template in linux-oe-g++ linux-uclibc-oe-g++ linux-gnueabi-oe-g++
+ do
+ install -d ${S}/mkspecs/$template
+ install -m 0644 ${WORKDIR}/linux-oe-qmake.conf ${S}/mkspecs/$template/qmake.conf
+ ln -sf ../linux-g++/qplatformdefs.h ${S}/mkspecs/$template/qplatformdefs.h
+ done
+
+ QMAKESPEC=
+ PLATFORM=${HOST_OS}-oe-g++
+ export PLATFORM
+ # yes, TARGET_SYS is correct, because this is a 'cross'-qmake-native :) :M:
+ export OE_QMAKE_CC="${CC}"
+ export OE_QMAKE_CFLAGS="${CFLAGS}"
+ export OE_QMAKE_CXX="${CXX}"
+ export OE_QMAKE_CXXFLAGS="-fno-exceptions -fno-rtti ${CXXFLAGS}"
+ export OE_QMAKE_LDFLAGS="${LDFLAGS}"
+ export OE_QMAKE_LINK="${CCLD}"
+ export OE_QMAKE_AR="${AR}"
+ export OE_QMAKE_OBJCOPY="${OBJCOPY}"
+ export OE_QMAKE_STRIP="${STRIP}"
+ export OE_QMAKE_UIC="${STAGING_BINDIR_NATIVE}/uic"
+ export OE_QMAKE_MOC="${STAGING_BINDIR_NATIVE}/moc"
+ export OE_QMAKE_RCC="non-existant"
+ export OE_QMAKE_QMAKE="${STAGING_BINDIR_NATIVE}/qmake"
+ export OE_QMAKE_RPATH="-Wl,-rpath-link,"
+ echo yes | ./configure -prefix ${STAGING_DIR}/${CROSS_SYS}/qt4 ${EXTRA_OECONF} || die "Configuring qt failed"
+}
+
+do_compile() {
+ :
+}
+
+do_install() {
+ install -d ${D}${CROSS_BINDIR}/
+ install -m 0755 bin/qmake ${D}${CROSS_BINDIR}/qmake2
+ install -m 0755 bin/qmake ${D}${CROSS_BINDIR}/qmake-qt4
+ install -d ${D}${STAGING_DIR}/${CROSS_SYS}/qt4/
+ cp -PfR mkspecs ${D}${STAGING_DIR}/${CROSS_SYS}/qt4/
+ install -d ${D}${STAGING_DIR}/${HOST_SYS}/qt4/
+ cp -PfR mkspecs ${D}${STAGING_DIR}/${HOST_SYS}/qt4/
+}
+
+sysroot_stage_all_append() {
+ sysroot_stage_dir ${D}/${STAGING_DIR_NATIVE}/qt4 ${SYSROOT_DESTDIR}/${STAGING_DIR_NATIVE}/qt4
+ sysroot_stage_dir ${D}/${STAGING_DIR_TARGET}/qt4 ${SYSROOT_DESTDIR}/${STAGING_DIR_TARGET}/qt4
+}
+
+
diff --git a/meta/recipes-qt/qt-apps/fotowall_0.9.bb b/meta/recipes-qt/qt-apps/fotowall_0.9.bb
new file mode 100644
index 0000000000..4070ac5548
--- /dev/null
+++ b/meta/recipes-qt/qt-apps/fotowall_0.9.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Fotowall is a creative tool that allows you to layout your photos or pictures \
+in a personal way. You can add pictures, then resize, move, change colors, text, shadows, etc.."
+
+HOMEPAGE = "http://www.enricoros.com/opensource/fotowall"
+LICENSE = "GPLv2+"
+SECTION = "x11/apps"
+
+DEPENDS = "qt4-x11-free"
+RDEPENDS = "qt4-x11-free"
+
+SRC_URI = "http://qt-apps.org/CONTENT/content-files/71316-Fotowall-0.9.tar.bz2"
+
+S = "${WORKDIR}/Fotowall-${PV}"
+
+inherit qmake2 pkgconfig
+
+do_install() {
+ oe_runmake INSTALL_ROOT=${D} install
+}
diff --git a/meta/recipes-qt/qt-apps/qmmp_0.4.1.bb b/meta/recipes-qt/qt-apps/qmmp_0.4.1.bb
new file mode 100644
index 0000000000..5f971e8b47
--- /dev/null
+++ b/meta/recipes-qt/qt-apps/qmmp_0.4.1.bb
@@ -0,0 +1,32 @@
+DESCRIPTION = "Qmmp (Qt-based Multimedia Player) is an audio-player, written with help of Qt library"
+HOMEPAGE = "http://qmmp.ylsoftware.com"
+LICENSE = "GPLv2"
+SECTION = "multimedia"
+
+DEPENDS = "qt4-x11-free"
+RDEPENDS = "qt4-x11-free libmad libvorbis libogg taglib alsa-lib curl"
+
+SRC_URI = "http://qmmp.ylsoftware.com/files/qmmp-0.4.1.tar.bz2"
+
+PARALLEL_MAKE = ""
+
+inherit qmake2 pkgconfig
+
+do_configure_prepend() {
+ # fix qt4 lrelease name
+ sed -i -e 's/lrelease-qt4/lrelease4/' ${S}/qmmp.pro
+
+ # disable the unsupported plugin
+ for plugin in sndfile wavpack ; do
+ sed -i -e "s/$plugin//" ${S}/src/plugins/Input/Input.pro
+ done
+ sed -i -e 's/mms//' ${S}/src/plugins/Transports/Transports.pro
+ sed -i -e 's/srconverter//' ${S}/src/plugins/Effect/Effect.pro
+
+ sed -i -e 's/^CONFIG/#CONFIG/' ${S}/qmmp.pri
+ sed -i -e 's/CONFIG += WITH_ENCA/#CONFIG += WITH_ENCA/' ${S}/qmmp.pri
+}
+
+do_install() {
+ oe_runmake INSTALL_ROOT=${D} install
+}
diff --git a/meta/recipes-qt/qt-apps/quicky_0.4.bb b/meta/recipes-qt/qt-apps/quicky_0.4.bb
new file mode 100644
index 0000000000..ece8ead926
--- /dev/null
+++ b/meta/recipes-qt/qt-apps/quicky_0.4.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "A simple note-taking application with Wiki-style syntax and behaviour"
+HOMEPAGE = "http://qt-apps.org/content/show.php/Quicky?content=80325"
+LICENSE = "GPLv2+"
+SECTION = "x11/apps"
+
+DEPENDS = "qt4-x11-free"
+RDEPENDS = "qt4-x11-free"
+
+SRC_URI = "http://qt-apps.org/CONTENT/content-files/80325-quicky-0.4.tar.gz"
+
+inherit qmake2 pkgconfig
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 0755 ${S}/${PN} ${D}${bindir}
+}
diff --git a/meta/recipes-qt/qt4/files/0001-cross-compile.patch b/meta/recipes-qt/qt4/files/0001-cross-compile.patch
new file mode 100644
index 0000000000..053be06e54
--- /dev/null
+++ b/meta/recipes-qt/qt4/files/0001-cross-compile.patch
@@ -0,0 +1,36 @@
+Add configure option "crossarch" for cross compiling
+
+Ported from OE by: Yu Ke <ke.yu@intel.com>
+
+Index: qt-embedded-linux-opensource-src-4.4.3/configure
+===================================================================
+--- qt-embedded-linux-opensource-src-4.4.3.orig/configure 2009-03-26 17:02:45.000000000 +0100
++++ qt-embedded-linux-opensource-src-4.4.3/configure 2009-03-26 17:03:43.000000000 +0100
+@@ -726,7 +726,7 @@
+ UNKNOWN_ARG=yes
+ fi
+ ;;
+- -prefix|-docdir|-headerdir|-plugindir|-datadir|-libdir|-bindir|-translationdir|-sysconfdir|-examplesdir|-demosdir|-depths|-make|-nomake|-platform|-xplatform|-buildkey|-sdk|-arch|-host-arch|-mysql_config)
++ -prefix|-docdir|-headerdir|-plugindir|-datadir|-libdir|-bindir|-translationdir|-sysconfdir|-examplesdir|-demosdir|-depths|-make|-nomake|-platform|-xplatform|-buildkey|-sdk|-arch|-host-arch|-mysql_config|-crossarch)
+ VAR=`echo $1 | sed "s,^-\(.*\),\1,"`
+ shift
+ VAL="$1"
+@@ -1143,6 +1143,9 @@
+ xplatform)
+ XPLATFORM="$VAL"
+ ;;
++ crossarch)
++ CROSSARCH="$VAL"
++ ;;
+ debug-and-release)
+ if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
+ CFG_DEBUG_RELEASE="$VAL"
+@@ -2405,6 +2408,8 @@
+ CFG_ARCH=$CFG_HOST_ARCH
+ fi
+
++CFG_ARCH="$CROSSARCH"
++
+ if [ -d "$relpath/src/corelib/arch/$CFG_ARCH" ]; then
+ if [ "$OPT_VERBOSE" = "yes" ]; then
+ echo " '$CFG_ARCH' is supported"
diff --git a/meta/recipes-qt/qt4/files/0002-fix-resinit-declaration.patch b/meta/recipes-qt/qt4/files/0002-fix-resinit-declaration.patch
new file mode 100644
index 0000000000..be4d5c0e22
--- /dev/null
+++ b/meta/recipes-qt/qt4/files/0002-fix-resinit-declaration.patch
@@ -0,0 +1,22 @@
+From acfeb18aa94bad6b2066e91cd15570889baaa252 Mon Sep 17 00:00:00 2001
+From: Michael Krelin <hacker@klever.net>
+Date: Sat, 2 Jun 2007 16:04:01 +0200
+Subject: [PATCH] fix resinit declaration
+
+---
+ src/qt3support/network/q3dns.cpp | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+Index: qt-embedded-linux-opensource-src-4.4.3/src/qt3support/network/q3dns.cpp
+===================================================================
+--- qt-embedded-linux-opensource-src-4.4.3.orig/src/qt3support/network/q3dns.cpp 2008-09-27 11:01:28.000000000 +0200
++++ qt-embedded-linux-opensource-src-4.4.3/src/qt3support/network/q3dns.cpp 2009-03-26 17:04:05.000000000 +0100
+@@ -44,7 +44,7 @@
+ # include <netinet/in.h>
+ # include <arpa/nameser.h>
+ # include <resolv.h>
+-extern "C" int res_init();
++extern "C" int res_init() throw();
+ #endif
+
+ // POSIX Large File Support redefines open -> open64
diff --git a/meta/recipes-qt/qt4/files/0004-no-qmake.patch b/meta/recipes-qt/qt4/files/0004-no-qmake.patch
new file mode 100644
index 0000000000..a58b19f904
--- /dev/null
+++ b/meta/recipes-qt/qt4/files/0004-no-qmake.patch
@@ -0,0 +1,26 @@
+From f5a73ce944240de9013cc23288c115e8213add5e Mon Sep 17 00:00:00 2001
+From: Michael Krelin <hacker@klever.net>
+Date: Sat, 2 Jun 2007 16:06:59 +0200
+Subject: [PATCH] no qmake
+
+qmake is already built in qt4-tools-native, so disable it
+
+Ported from OE by: Yu Ke <ke.yu@intel.com>
+
+---
+ configure | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+Index: qt-embedded-linux-opensource-src-4.4.3/configure
+===================================================================
+--- qt-embedded-linux-opensource-src-4.4.3.orig/configure 2009-03-26 17:03:43.000000000 +0100
++++ qt-embedded-linux-opensource-src-4.4.3/configure 2009-03-26 17:04:17.000000000 +0100
+@@ -3786,7 +3786,7 @@
+ }
+
+ # build qmake
+-if true; then ###[ '!' -f "$outpath/bin/qmake" ];
++if false; then ###[ '!' -f "$outpath/bin/qmake" ];
+ echo "Creating qmake. Please wait..."
+
+ OLD_QCONFIG_H=
diff --git a/meta/recipes-qt/qt4/files/0006-freetype-host-includes.patch b/meta/recipes-qt/qt4/files/0006-freetype-host-includes.patch
new file mode 100644
index 0000000000..081d8992ef
--- /dev/null
+++ b/meta/recipes-qt/qt4/files/0006-freetype-host-includes.patch
@@ -0,0 +1,24 @@
+From c9ab62bd9a56643574b3ae6e59e0ca776d4860d2 Mon Sep 17 00:00:00 2001
+From: Michael Krelin <hacker@klever.net>
+Date: Mon, 4 Jun 2007 14:48:50 +0200
+Subject: [PATCH] freetype host includes
+
+Host include path should not be used in corss compiling case.
+
+Ported from OE by: Yu Ke <ke.yu@intel.com>
+
+---
+ config.tests/unix/freetype/freetype.pri | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+Index: qt-embedded-linux-opensource-src-4.5.0/config.tests/unix/freetype/freetype.pri
+===================================================================
+--- qt-embedded-linux-opensource-src-4.5.0.orig/config.tests/unix/freetype/freetype.pri 2009-02-25 22:32:32.000000000 +0100
++++ qt-embedded-linux-opensource-src-4.5.0/config.tests/unix/freetype/freetype.pri 2009-03-26 17:14:16.000000000 +0100
+@@ -1,5 +1,5 @@
+ !cross_compile {
+- TRY_INCLUDEPATHS = /include /usr/include $$QMAKE_INCDIR $$QMAKE_INCDIR_X11 $$INCLUDEPATH
++ TRY_INCLUDEPATHS = $$QMAKE_INCDIR $$QMAKE_INCDIR_X11 $$INCLUDEPATH
+ # LSB doesn't allow using headers from /include or /usr/include
+ linux-lsb-g++:TRY_INCLUDEPATHS = $$QMAKE_INCDIR $$QMAKE_INCDIR_X11 $$INCLUDEPATH
+ for(p, TRY_INCLUDEPATHS) {
diff --git a/meta/recipes-qt/qt4/files/0008-qt-lib-infix.patch b/meta/recipes-qt/qt4/files/0008-qt-lib-infix.patch
new file mode 100644
index 0000000000..a1b89124dd
--- /dev/null
+++ b/meta/recipes-qt/qt4/files/0008-qt-lib-infix.patch
@@ -0,0 +1,36 @@
+Add lib infix to distinguish different qt compile version: e.g. "E" for embedded, "" for X11
+
+Ported from OE by: Yu Ke <ke.yu@intel.com>
+
+--- /tmp/uitools.prf 2009-12-01 18:38:22.000000000 +0100
++++ qt-everywhere-opensource-src-4.6.0/mkspecs/features/uitools.prf 2009-12-01 18:58:16.000000000 +0100
+@@ -3,11 +3,11 @@
+
+ # Include the correct version of the UiLoader library
+ symbian: QTUITOOLS_LINKAGE = -lQtUiTools.lib
+-else: QTUITOOLS_LINKAGE = -lQtUiTools
++else: QTUITOOLS_LINKAGE = -lQtUiTools$${QT_LIBINFIX}
+
+ CONFIG(debug, debug|release) {
+- mac: QTUITOOLS_LINKAGE = -lQtUiTools_debug
+- win32: QTUITOOLS_LINKAGE = -lQtUiToolsd
++ mac: QTUITOOLS_LINKAGE = -lQtUiTools$${QT_LIBINFIX}_debug
++ win32: QTUITOOLS_LINKAGE = -lQtUiTools$${QT_LIBINFIX}d
+ }
+ LIBS += $$QTUITOOLS_LINKAGE
+
+--- /tmp/uitools.pro 2009-12-01 18:40:28.000000000 +0100
++++ qt-everywhere-opensource-src-4.6.0/tools/designer/src/uitools/uitools.pro 2009-12-01 18:59:18.000000000 +0100
+@@ -1,5 +1,5 @@
+ TEMPLATE = lib
+-TARGET = $$qtLibraryTarget(QtUiTools)
++TARGET = QtUiTools
+ QT += xml
+ CONFIG += qt staticlib
+ DESTDIR = ../../../../lib
+@@ -43,3 +43,5 @@
+ QMAKE_PKGCONFIG_DESTDIR = pkgconfig
+ QMAKE_PKGCONFIG_REQUIRES += QtXml
+ }
++
++TARGET = $$qtLibraryTarget($$TARGET$$QT_LIBINFIX) #do this towards the end
diff --git a/meta/recipes-qt/qt4/files/0009-support-2bpp.patch b/meta/recipes-qt/qt4/files/0009-support-2bpp.patch
new file mode 100644
index 0000000000..cf44ea8214
--- /dev/null
+++ b/meta/recipes-qt/qt4/files/0009-support-2bpp.patch
@@ -0,0 +1,299 @@
+Add 2bpp support
+
+Ported from OE by: Yu Ke <ke.yu@intel.com>
+
+diff -urN qt-embedded-linux-opensource-src-4.4.3.orig/configure qt-embedded-linux-opensource-src-4.4.3/configure
+--- qt-embedded-linux-opensource-src-4.4.3.orig/configure 2008-09-27 11:01:23.000000000 +0200
++++ qt-embedded-linux-opensource-src-4.4.3/configure 2009-01-14 14:30:53.000000000 +0100
+@@ -5045,6 +5045,7 @@
+ echo "Choose pixel-depths to support:"
+ echo
+ echo " 1. 1bpp, black/white"
++ echo " 2. 2bpp, grayscale"
+ echo " 4. 4bpp, grayscale"
+ echo " 8. 8bpp, paletted"
+ echo " 12. 12bpp, rgb 4-4-4"
+@@ -5063,11 +5064,11 @@
+ fi
+ if [ -n "$CFG_QWS_DEPTHS" -a "$PLATFORM_QWS" = "yes" ]; then
+ if [ "$CFG_QWS_DEPTHS" = "all" ]; then
+- CFG_QWS_DEPTHS="1 4 8 12 15 16 18 24 32 generic"
++ CFG_QWS_DEPTHS="1 2 4 8 12 15 16 18 24 32 generic"
+ fi
+ for D in `echo "$CFG_QWS_DEPTHS" | sed -e 's/,/ /g'`; do
+ case $D in
+- 1|4|8|12|15|16|18|24|32) QCONFIG_FLAGS="$QCONFIG_FLAGS QT_QWS_DEPTH_$D";;
++ 1|2|4|8|12|15|16|18|24|32) QCONFIG_FLAGS="$QCONFIG_FLAGS QT_QWS_DEPTH_$D";;
+ generic) QCONFIG_FLAGS="$QCONFIG_FLAGS QT_QWS_DEPTH_GENERIC";;
+ esac
+ done
+diff -urN qt-embedded-linux-opensource-src-4.4.3.orig/src/gui/embedded/qscreenlinuxfb_qws.cpp qt-embedded-linux-opensource-src-4.4.3/src/gui/embedded/qscreenlinuxfb_qws.cpp
+--- qt-embedded-linux-opensource-src-4.4.3.orig/src/gui/embedded/qscreenlinuxfb_qws.cpp 2008-09-27 11:01:28.000000000 +0200
++++ qt-embedded-linux-opensource-src-4.4.3/src/gui/embedded/qscreenlinuxfb_qws.cpp 2009-01-14 17:22:34.000000000 +0100
+@@ -404,8 +404,8 @@
+ setupOffScreen();
+
+ // Now read in palette
+- if((vinfo.bits_per_pixel==8) || (vinfo.bits_per_pixel==4)) {
+- screencols= (vinfo.bits_per_pixel==8) ? 256 : 16;
++ if((vinfo.bits_per_pixel==8) || (vinfo.bits_per_pixel==4) || (vinfo.bits_per_pixel==2)) {
++ screencols= 1 << vinfo.bits_per_pixel;
+ int loopc;
+ fb_cmap startcmap;
+ startcmap.start=0;
+diff -urN qt-embedded-linux-opensource-src-4.4.3.orig/src/gui/embedded/qscreen_qws.cpp qt-embedded-linux-opensource-src-4.4.3/src/gui/embedded/qscreen_qws.cpp
+--- qt-embedded-linux-opensource-src-4.4.3.orig/src/gui/embedded/qscreen_qws.cpp 2008-09-27 11:01:28.000000000 +0200
++++ qt-embedded-linux-opensource-src-4.4.3/src/gui/embedded/qscreen_qws.cpp 2009-01-14 17:22:44.000000000 +0100
+@@ -444,6 +444,58 @@
+ }
+ #endif // QT_QWS_DEPTH_4
+
++#ifdef QT_QWS_DEPTH_2
++static inline void qt_rectfill_gray2(quint8 *dest, quint8 value,
++ int x, int y, int width, int height,
++ int stride)
++{
++ const int pixelsPerByte = 4;
++ const int alignWidth = qMin(width, (4 - (x & 3)) & 3);
++ const int doAlign = (alignWidth > 0 ? 1 : 0);
++ const int alignStart = pixelsPerByte - 1 - (x & 3);
++ const int alignStop = alignStart - (alignWidth - 1);
++ const quint8 alignMask = ((1 << (2 * alignWidth)) - 1) << (2 * alignStop);
++ const int tailWidth = (width - alignWidth) & 3;
++ const int doTail = (tailWidth > 0 ? 1 : 0);
++ const quint8 tailMask = (1 << (2 * (pixelsPerByte - tailWidth))) - 1;
++ const int width8 = (width - alignWidth) / pixelsPerByte;
++
++ dest += y * stride + x / pixelsPerByte;
++ stride -= (doAlign + width8);
++
++ for (int j = 0; j < height; ++j) {
++ if (doAlign) {
++ *dest = (*dest & ~alignMask) | (value & alignMask);
++ ++dest;
++ }
++ if (width8) {
++ qt_memfill<quint8>(dest, value, width8);
++ dest += width8;
++ }
++ if (doTail)
++ *dest = (*dest & tailMask) | (value & ~tailMask);
++ dest += stride;
++ }
++}
++
++static void solidFill_gray2(QScreen *screen, const QColor &color,
++ const QRegion &region)
++{
++ quint8 *dest = reinterpret_cast<quint8*>(screen->base());
++ const quint8 c = qGray(color.rgba()) >> 6;
++ const quint8 c8 = (c << 6) | (c << 4) | (c << 2) | c;
++
++ const int stride = screen->linestep();
++ const QVector<QRect> rects = region.rects();
++
++ for (int i = 0; i < rects.size(); ++i) {
++ const QRect r = rects.at(i);
++ qt_rectfill_gray2(dest, c8, r.x(), r.y(), r.width(), r.height(),
++ stride);
++ }
++}
++#endif // QT_QWS_DEPTH_2
++
+ #ifdef QT_QWS_DEPTH_1
+ static inline void qt_rectfill_mono(quint8 *dest, quint8 value,
+ int x, int y, int width, int height,
+@@ -551,6 +603,11 @@
+ screen->d_ptr->solidFill = solidFill_gray4;
+ break;
+ #endif
++#ifdef QT_QWS_DEPTH_2
++ case 2:
++ screen->d_ptr->solidFill = solidFill_gray2;
++ break;
++#endif
+ #ifdef QT_QWS_DEPTH_1
+ case 1:
+ screen->d_ptr->solidFill = solidFill_mono;
+@@ -958,6 +1015,149 @@
+ }
+ #endif // QT_QWS_DEPTH_4
+
++#ifdef QT_QWS_DEPTH_2
++
++struct qgray2 { quint8 dummy; } Q_PACKED;
++
++template <typename SRC>
++static inline quint8 qt_convertToGray2(SRC color);
++
++template <>
++inline quint8 qt_convertToGray2(quint32 color)
++{
++ return qGray(color) >> 6;
++}
++
++template <>
++inline quint8 qt_convertToGray2(quint16 color)
++{
++ const int r = (color & 0xf800) >> 11;
++ const int g = (color & 0x07e0) >> 6; // only keep 5 bit
++ const int b = (color & 0x001f);
++ return (r * 11 + g * 16 + b * 5) >> 8;
++}
++
++template <>
++inline quint8 qt_convertToGray2(qrgb444 color)
++{
++ return qt_convertToGray2(quint32(color));
++}
++
++template <>
++inline quint8 qt_convertToGray2(qargb4444 color)
++{
++ return qt_convertToGray2(quint32(color));
++}
++
++template <typename SRC>
++static inline void qt_rectconvert_gray2(qgray2 *dest2, const SRC *src,
++ int x, int y, int width, int height,
++ int dstStride, int srcStride)
++{
++ const int pixelsPerByte = 4;
++ quint8 *dest8 = reinterpret_cast<quint8*>(dest2)
++ + y * dstStride + x / pixelsPerByte;
++ const int alignWidth = qMin(width, (4 - (x & 3)) & 3);
++ const int doAlign = (alignWidth > 0 ? 1 : 0);
++ const int alignStart = pixelsPerByte - 1 - (x & 3);
++ const int alignStop = alignStart - (alignWidth - 1);
++ const quint8 alignMask = ((1 << (2 * alignWidth)) - 1) << (2 * alignStop);
++ const int tailWidth = (width - alignWidth) & 3;
++ const int doTail = (tailWidth > 0 ? 1 : 0);
++ const quint8 tailMask = (1 << (2 * (pixelsPerByte - tailWidth))) - 1;
++ const int width8 = (width - alignWidth) / pixelsPerByte;
++
++ srcStride = srcStride / sizeof(SRC) - (width8 * pixelsPerByte + alignWidth);
++ dstStride -= (width8 + doAlign);
++
++ for (int j = 0; j < height; ++j) {
++ if (doAlign) {
++ quint8 d = *dest8 & ~alignMask;
++ for (int i = alignStart; i >= alignStop; --i)
++ d |= qt_convertToGray2<SRC>(*src++) << (2 * i);
++ *dest8++ = d;
++ }
++ for (int i = 0; i < width8; ++i) {
++ *dest8 = (qt_convertToGray2<SRC>(src[0]) << 6)
++ | (qt_convertToGray2<SRC>(src[1]) << 4)
++ | (qt_convertToGray2<SRC>(src[2]) << 2)
++ | (qt_convertToGray2<SRC>(src[3]));
++ src += 4;
++ ++dest8;
++ }
++ if (doTail) {
++ quint8 d = *dest8 & tailMask;
++ switch (tailWidth) {
++ case 3: d |= qt_convertToGray2<SRC>(src[2]) << 2;
++ case 2: d |= qt_convertToGray2<SRC>(src[1]) << 4;
++ case 1: d |= qt_convertToGray2<SRC>(src[0]) << 6;
++ }
++ *dest8 = d;
++ }
++
++ dest8 += dstStride;
++ src += srcStride;
++ }
++}
++
++template <>
++void qt_rectconvert(qgray2 *dest, const quint32 *src,
++ int x, int y, int width, int height,
++ int dstStride, int srcStride)
++{
++ qt_rectconvert_gray2<quint32>(dest, src, x, y, width, height,
++ dstStride, srcStride);
++}
++
++template <>
++void qt_rectconvert(qgray2 *dest, const quint16 *src,
++ int x, int y, int width, int height,
++ int dstStride, int srcStride)
++{
++ qt_rectconvert_gray2<quint16>(dest, src, x, y, width, height,
++ dstStride, srcStride);
++}
++
++template <>
++void qt_rectconvert(qgray2 *dest, const qrgb444 *src,
++ int x, int y, int width, int height,
++ int dstStride, int srcStride)
++{
++ qt_rectconvert_gray2<qrgb444>(dest, src, x, y, width, height,
++ dstStride, srcStride);
++}
++
++template <>
++void qt_rectconvert(qgray2 *dest, const qargb4444 *src,
++ int x, int y, int width, int height,
++ int dstStride, int srcStride)
++{
++ qt_rectconvert_gray2<qargb4444>(dest, src, x, y, width, height,
++ dstStride, srcStride);
++}
++
++static void blit_2(QScreen *screen, const QImage &image,
++ const QPoint &topLeft, const QRegion &region)
++{
++ switch (image.format()) {
++ case QImage::Format_ARGB32_Premultiplied:
++ blit_template<qgray2, quint32>(screen, image, topLeft, region);
++ return;
++ case QImage::Format_RGB16:
++ blit_template<qgray2, quint16>(screen, image, topLeft, region);
++ return;
++ case QImage::Format_RGB444:
++ blit_template<qgray2, qrgb444>(screen, image, topLeft, region);
++ return;
++ case QImage::Format_ARGB4444_Premultiplied:
++ blit_template<qgray2, qargb4444>(screen, image, topLeft, region);
++ return;
++ default:
++ qCritical("blit_2(): Image format %d not supported!", image.format());
++ }
++}
++#endif // QT_QWS_DEPTH_2
++
+ #ifdef QT_QWS_DEPTH_1
+
+ struct qmono { quint8 dummy; } Q_PACKED;
+@@ -1206,6 +1406,11 @@
+ screen->d_ptr->blit = blit_4;
+ break;
+ #endif
++#ifdef QT_QWS_DEPTH_2
++ case 2:
++ screen->d_ptr->blit = blit_2;
++ break;
++#endif
+ #ifdef QT_QWS_DEPTH_1
+ case 1:
+ screen->d_ptr->blit = blit_1;
+@@ -2056,6 +2261,8 @@
+ }
+ } else if (d == 4) {
+ ret = qGray(r, g, b) >> 4;
++ } else if (d == 2) {
++ ret = qGray(r, g, b) >> 6;
+ } else if (d == 1) {
+ ret = qGray(r, g, b) >= 128;
+ } else {
+@@ -2126,6 +2333,10 @@
+ } else if(d==1) {
+ return true;
+ #endif
++#ifdef QT_QWS_DEPTH_2
++ } else if(d==2) {
++ return true;
++#endif
+ #ifdef QT_QWS_DEPTH_4
+ } else if(d==4) {
+ return true;
diff --git a/meta/recipes-qt/qt4/files/0010-no-simpledecoration-example.patch b/meta/recipes-qt/qt4/files/0010-no-simpledecoration-example.patch
new file mode 100644
index 0000000000..e52736926f
--- /dev/null
+++ b/meta/recipes-qt/qt4/files/0010-no-simpledecoration-example.patch
@@ -0,0 +1,14 @@
+
+Ported from OE by: Yu Ke <ke.yu@intel.com>
+
+--- /tmp/qws.pro 2009-12-10 19:30:08.000000000 +0100
++++ qt-everywhere-opensource-src-4.6.0/examples/qws/qws.pro 2009-12-10 19:30:21.000000000 +0100
+@@ -1,7 +1,7 @@
+ TEMPLATE = subdirs
+ # no /dev/fbX
+ !qnx:!vxworks:SUBDIRS = framebuffer
+-SUBDIRS += mousecalibration simpledecoration
++SUBDIRS += mousecalibration
+
+ # install
+ sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS README *.pro
diff --git a/meta/recipes-qt/qt4/files/fix-config-tests.patch b/meta/recipes-qt/qt4/files/fix-config-tests.patch
new file mode 100644
index 0000000000..21054555bc
--- /dev/null
+++ b/meta/recipes-qt/qt4/files/fix-config-tests.patch
@@ -0,0 +1,36 @@
+Fix invocation in case of "ccache some-compiler-gcc". As the command "ccache some-compiler-gcc" will not exist but "ccache" will.
+
+both visibility and relocs were affected.
+
+Ported from OE by: Yu Ke <ke.yu@intel.com>
+
+Index: qt-x11-opensource-src-4.5.2/config.tests/unix/bsymbolic_functions.test
+===================================================================
+--- qt-x11-opensource-src-4.5.2.orig/config.tests/unix/bsymbolic_functions.test 2009-08-01 08:01:11.000000000 +0200
++++ qt-x11-opensource-src-4.5.2/config.tests/unix/bsymbolic_functions.test 2009-08-01 08:01:16.000000000 +0200
+@@ -8,7 +8,7 @@
+ int main() { return 0; }
+ EOF
+
+-"$COMPILER" -o libtest.so -shared -Wl,-Bsymbolic-functions -fPIC bsymbolic_functions.c >/dev/null 2>&1 && BSYMBOLIC_FUNCTIONS_SUPPORT=yes
++$COMPILER -o libtest.so -shared -Wl,-Bsymbolic-functions -fPIC bsymbolic_functions.c >/dev/null 2>&1 && BSYMBOLIC_FUNCTIONS_SUPPORT=yes
+ rm -f bsymbolic_functions.c libtest.so
+
+ # done
+Index: qt-x11-opensource-src-4.5.2/config.tests/unix/fvisibility.test
+===================================================================
+--- qt-x11-opensource-src-4.5.2.orig/config.tests/unix/fvisibility.test 2009-06-20 06:57:50.000000000 +0200
++++ qt-x11-opensource-src-4.5.2/config.tests/unix/fvisibility.test 2009-08-01 07:59:05.000000000 +0200
+@@ -15,9 +15,9 @@
+ EOF
+
+ if [ "$VERBOSE" = "yes" ] ; then
+- "$COMPILER" -c -fvisibility=hidden fvisibility.c && FVISIBILITY_SUPPORT=yes
++ $COMPILER -c -fvisibility=hidden fvisibility.c && FVISIBILITY_SUPPORT=yes
+ else
+- "$COMPILER" -c -fvisibility=hidden fvisibility.c >/dev/null 2>&1 && FVISIBILITY_SUPPORT=yes
++ $COMPILER -c -fvisibility=hidden fvisibility.c >/dev/null 2>&1 && FVISIBILITY_SUPPORT=yes
+ fi
+ rm -f fvisibility.c fvisibility.o
+ }
+
diff --git a/meta/recipes-qt/qt4/files/g++.conf b/meta/recipes-qt/qt4/files/g++.conf
new file mode 100644
index 0000000000..4cd76e62ea
--- /dev/null
+++ b/meta/recipes-qt/qt4/files/g++.conf
@@ -0,0 +1,53 @@
+#
+# qmake configuration for common gcc
+#
+
+QMAKE_CC = $(OE_QMAKE_CC)
+QMAKE_CFLAGS += -pipe $(OE_QMAKE_CFLAGS)
+QMAKE_CFLAGS_DEPS += -M
+QMAKE_CFLAGS_WARN_ON += -Wall -W
+QMAKE_CFLAGS_WARN_OFF += -w
+QMAKE_CFLAGS_RELEASE +=
+QMAKE_CFLAGS_DEBUG += -g
+QMAKE_CFLAGS_SHLIB += -fPIC
+QMAKE_CFLAGS_STATIC_LIB += -fPIC
+QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
+QMAKE_CFLAGS_PRECOMPILE += -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+QMAKE_CFLAGS_USE_PRECOMPILE += -include ${QMAKE_PCH_OUTPUT_BASE}
+
+QMAKE_CXX = $(OE_QMAKE_CXX)
+QMAKE_CXXFLAGS += $$QMAKE_CFLAGS $(OE_QMAKE_CXXFLAGS)
+QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON += $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF += $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_STATIC_LIB
+QMAKE_CXXFLAGS_YACC += $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
+QMAKE_CXXFLAGS_PRECOMPILE += -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
+
+QMAKE_LINK = $(OE_QMAKE_LINK)
+QMAKE_LINK_SHLIB = $(OE_QMAKE_LINK)
+QMAKE_LFLAGS += $(OE_QMAKE_LDFLAGS)
+QMAKE_LFLAGS_RELEASE +=
+QMAKE_LFLAGS_DEBUG +=
+QMAKE_LFLAGS_APP +=
+QMAKE_LFLAGS_SHLIB += -shared
+QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME += -Wl,-soname,
+QMAKE_LFLAGS_THREAD +=
+QMAKE_LFLAGS_NOUNDEF += -Wl,--no-undefined
+QMAKE_RPATH = -Wl,-rpath-link,
+
+QMAKE_PCH_OUTPUT_EXT = .gch
+
+# -Bsymbolic-functions (ld) support
+QMAKE_LFLAGS_BSYMBOLIC_FUNC = -Wl,-Bsymbolic-functions
+QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,
+
+# for the SDK
+isEmpty(QMAKE_QT_CONFIG):QMAKE_QT_CONFIG = $(OE_QMAKE_QT_CONFIG)
diff --git a/meta/recipes-qt/qt4/files/hack-out-pg_config.patch b/meta/recipes-qt/qt4/files/hack-out-pg_config.patch
new file mode 100644
index 0000000000..650ed7745e
--- /dev/null
+++ b/meta/recipes-qt/qt4/files/hack-out-pg_config.patch
@@ -0,0 +1,30 @@
+Hack to not use the pg_config of the host system which will add /usr/include
+
+pg_config is a native binary so using that when cross compiling
+will always fail. The commented out fix would do, but for OE
+our -platform and -xplatform is the same so we are actually not
+really cross compiling. Just comment out the test, we are passing
+the location to the postgres headers and if they are okay we
+will padd.
+
+Ported from OE by: Yu Ke <ke.yu@intel.com>
+
+Index: qt-embedded-linux-opensource-src-4.5.2/configure
+===================================================================
+--- qt-embedded-linux-opensource-src-4.5.2.orig/configure 2009-08-10 03:03:04.000000000 +0200
++++ qt-embedded-linux-opensource-src-4.5.2/configure 2009-08-10 03:58:11.000000000 +0200
+@@ -4401,10 +4402,10 @@
+ ;;
+ psql)
+ if [ "$CFG_SQL_psql" != "no" ]; then
+- if "$WHICH" pg_config >/dev/null 2>&1; then
+- QT_CFLAGS_PSQL=`pg_config --includedir 2>/dev/null`
+- QT_LFLAGS_PSQL=`pg_config --libdir 2>/dev/null`
+- fi
++# if [ "$QT_CROSS_COMPILE" = "no" ] && "$WHICH" pg_config >/dev/null 2>&1; then
++# QT_CFLAGS_PSQL=`pg_config --includedir 2>/dev/null`
++# QT_LFLAGS_PSQL=`pg_config --libdir 2>/dev/null`
++# fi
+ [ -z "$QT_CFLAGS_PSQL" ] || QT_CFLAGS_PSQL="-I$QT_CFLAGS_PSQL"
+ [ -z "$QT_LFLAGS_PSQL" ] || QT_LFLAGS_PSQL="-L$QT_LFLAGS_PSQL"
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/psql "PostgreSQL" $QT_LFLAGS_PSQL $L_FLAGS $QT_CFLAGS_PSQL $I_FLAGS $l_FLAGS $MAC_ARCHS_COMMANDLINE; then
diff --git a/meta/recipes-qt/qt4/files/linux.conf b/meta/recipes-qt/qt4/files/linux.conf
new file mode 100644
index 0000000000..90b8d65aba
--- /dev/null
+++ b/meta/recipes-qt/qt4/files/linux.conf
@@ -0,0 +1,54 @@
+#
+# qmake configuration for common linux
+#
+
+QMAKE_CFLAGS_THREAD += -D_REENTRANT
+QMAKE_CXXFLAGS_THREAD += $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 =
+QMAKE_LIBDIR_X11 =
+QMAKE_INCDIR_QT = $(OE_QMAKE_INCDIR_QT)
+QMAKE_LIBDIR_QT = $(OE_QMAKE_LIBDIR_QT)
+QMAKE_INCDIR_OPENGL =
+QMAKE_LIBDIR_OPENGL =
+
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = $(OE_QMAKE_LIBS_X11)
+QMAKE_LIBS_X11SM = $(OE_QMAKE_LIBS_X11SM)
+QMAKE_LIBS_NIS = -lnsl
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthread
+
+QMAKE_MOC = $(OE_QMAKE_MOC)
+QMAKE_UIC = $(OE_QMAKE_UIC)
+QMAKE_UIC3 = $(OE_QMAKE_UIC3)
+QMAKE_RCC = $(OE_QMAKE_RCC)
+QMAKE_QDBUSCPP2XML = $(OE_QMAKE_QDBUSCPP2XML)
+QMAKE_QDBUSXML2CPP = $(OE_QMAKE_QDBUSXML2CPP)
+
+QMAKE_AR = $(OE_QMAKE_AR) cqs
+QMAKE_OBJCOPY = objcopy
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_COPY_FILE = $(COPY)
+QMAKE_COPY_DIR = $(COPY) -r
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_STRIP = $(OE_QMAKE_STRIP)
+QMAKE_STRIPFLAGS_LIB += --strip-unneeded
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+QMAKE_INSTALL_FILE = install -m 644 -p
+QMAKE_INSTALL_PROGRAM = install -m 755 -p
+
+include(unix.conf)
diff --git a/meta/recipes-qt/qt4/files/qt-config.patch b/meta/recipes-qt/qt4/files/qt-config.patch
new file mode 100644
index 0000000000..a31e7b3e2a
--- /dev/null
+++ b/meta/recipes-qt/qt4/files/qt-config.patch
@@ -0,0 +1,24 @@
+
+Ported from OE by: Yu Ke <ke.yu@intel.com>
+
+--- /tmp/qlibraryinfo.cpp 2008-08-02 17:16:41.000000000 +0200
++++ qt-embedded-linux-opensource-src-4.4.1/src/corelib/global/qlibraryinfo.cpp 2008-08-02 17:17:42.000000000 +0200
+@@ -47,6 +47,7 @@
+ QT_BEGIN_NAMESPACE
+ extern QString qmake_libraryInfoFile();
+ QT_END_NAMESPACE
++#include <stdlib.h>
+ #else
+ # include "qcoreapplication.h"
+ #endif
+@@ -113,6 +114,10 @@
+ #ifdef QT_BUILD_QMAKE
+ if(!QFile::exists(qtconfig))
+ qtconfig = qmake_libraryInfoFile();
++ if (!QFile::exists(qtconfig)) {
++ QByteArray config = getenv("QT_CONF_PATH");
++ qtconfig = QFile::decodeName(config);
++ }
+ #else
+ if (!QFile::exists(qtconfig) && QCoreApplication::instance()) {
+ #ifdef Q_OS_MAC
diff --git a/meta/recipes-qt/qt4/qt-4.6.3.inc b/meta/recipes-qt/qt4/qt-4.6.3.inc
new file mode 100644
index 0000000000..9f4e221bb5
--- /dev/null
+++ b/meta/recipes-qt/qt4/qt-4.6.3.inc
@@ -0,0 +1,65 @@
+LICENSE = "LGPLv2.1 | GPLv3"
+LIC_FILES_CHKSUM = "file://LICENSE.LGPL;md5=fbc093901857fcd118f065f900982c24 \
+ file://LICENSE.GPL3;md5=babc5b6b77441da277f5c06b2e547720 \
+ file://LGPL_EXCEPTION.txt;md5=411080a56ff917a5a1aa08c98acae354"
+
+SRC_URI = "http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-${PV}.tar.gz \
+ file://0001-cross-compile.patch \
+ file://0002-fix-resinit-declaration.patch \
+ file://0004-no-qmake.patch \
+ file://0006-freetype-host-includes.patch \
+ file://0008-qt-lib-infix.patch \
+ file://0009-support-2bpp.patch \
+ file://0010-no-simpledecoration-example.patch \
+ file://fix-config-tests.patch \
+ file://qt-config.patch \
+ file://g++.conf \
+ file://linux.conf \
+ file://hack-out-pg_config.patch \
+ "
+
+S = "${WORKDIR}/qt-everywhere-opensource-src-${PV}"
+
+do_configure_prepend() {
+ for pro in $(find ${S} -name "*.pro") ; do
+ sed -i 's:$$QT_BUILD_TREE/bin/lrelease:${OE_QMAKE_LRELEASE}:g' $pro
+ done
+
+ sed -i s:SEDME:${S}: ${WORKDIR}/linux.conf
+ sed -i \
+ -e /QMAKE_MOC\ /d \
+ -e /QMAKE_UIC\ /d \
+ -e /QMAKE_UIC3\ /d \
+ -e /QMAKE_RCC\ /d \
+ ${S}/configure
+}
+
+do_configure_append() {
+ sed -e '/QMAKE_TARGET /d' -e '/TARGET /d' -i ${S}/translations/Makefile
+}
+
+QT_GLFLAGS ?= ""
+QT_CONFIG_FLAGS += " -no-rpath -qt3support -silent ${QT_GLFLAGS}"
+
+do_compile() {
+ # Fixup missing wsegl header in some SGX SDKs
+ if ! [ -e ${STAGING_INCDIR}/wsegl.h ] ; then
+ cp src/3rdparty/powervr/wsegl.h src/plugins/gfxdrivers/powervr/QWSWSEGL/
+ fi
+
+ unset CFLAGS CXXFLAGS
+ oe_runmake ${EXTRA_ENV}
+}
+
+do_install_append() {
+ install -d ${D}${bindir}
+ for i in rcc uic moc ; do
+ install -m 0755 ${S}/bin/$i ${D}${bindir}/
+ done
+
+ #Append an E to the qtdemo file
+ if [ -n "${QT_LIBINFIX}" ] ; then
+ mv ${D}${bindir}/qtdemo ${D}${bindir}/qtdemo${QT_LIBINFIX}
+ fi
+}
+
diff --git a/meta/recipes-qt/qt4/qt4-tools-native.inc b/meta/recipes-qt/qt4/qt4-tools-native.inc
new file mode 100644
index 0000000000..7621d629f1
--- /dev/null
+++ b/meta/recipes-qt/qt4/qt4-tools-native.inc
@@ -0,0 +1,74 @@
+DESCRIPTION = "Native tools for Qt/[X11|Mac|Embedded] version 4.x"
+DEPENDS = "zlib-native dbus-native libsm-native"
+SECTION = "libs"
+HOMEPAGE = "http://qt.nokia.com"
+PRIORITY = "optional"
+
+inherit native
+
+SRC_URI = "http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-${PV}.tar.gz \
+ file://qt-config.patch \
+ file://g++.conf \
+ file://linux.conf"
+S = "${WORKDIR}/qt-everywhere-opensource-src-${PV}"
+
+EXTRA_OECONF = "-prefix ${prefix} \
+ -L ${STAGING_LIBDIR_NATIVE} \
+ -I ${STAGING_INCDIR_NATIVE} \
+ -qt-libjpeg -qt-gif -system-zlib \
+ -no-libjpeg -no-libpng \
+ -no-accessibility \
+ -no-cups \
+ -no-exceptions \
+ -no-nas-sound \
+ -no-nis \
+ -verbose -release -static \
+ -qt3support"
+
+# yank default -e, otherwise we get the following error:
+# moc_qbuffer.cpp: No such file or directory
+EXTRA_OEMAKE = " "
+
+do_configure() {
+ (echo o; echo yes) | ./configure ${EXTRA_OECONF} || die "Configuring qt failed. EXTRA_OECONF was ${EXTRA_OECONF}"
+}
+
+TOBUILD = "\
+ src/tools/moc \
+ src/corelib \
+ src/sql \
+ src/dbus \
+ src/qt3support \
+ src/xml \
+ src/tools/uic \
+ src/tools/rcc \
+ src/network \
+ src/gui \
+ src/tools/uic3 \
+ tools/linguist/lrelease \
+ tools/linguist/lupdate \
+ tools/qdbus \
+"
+
+do_compile() {
+ for i in ${TOBUILD}; do
+ cd ${S}/$i && oe_runmake CC="${CC}" CXX="${CXX}"
+ done
+}
+
+NATIVE_INSTALL_WORKS = "1"
+
+do_install() {
+ install -d ${D}${bindir}/
+ install -m 0755 bin/qmake ${D}${bindir}/qmake2
+ for i in moc uic uic3 rcc lrelease lupdate qdbuscpp2xml qdbusxml2cpp; do
+ install -m 0755 bin/${i} ${D}${bindir}/${i}4
+ done
+
+ install -d ${D}${datadir}/qt4/
+ cp -PfR mkspecs ${D}${datadir}/qt4/
+ ln -sf linux-g++ ${D}${datadir}/qt4/mkspecs/${BUILD_OS}-oe-g++
+ cp -f ${WORKDIR}/g++.conf ${WORKDIR}/linux.conf ${D}${datadir}/qt4/mkspecs/common/
+
+ install -m 0644 tools/porting/src/q3porting.xml ${D}${datadir}/qt4/
+}
diff --git a/meta/recipes-qt/qt4/qt4-tools-native_4.6.3.bb b/meta/recipes-qt/qt4/qt4-tools-native_4.6.3.bb
new file mode 100644
index 0000000000..de24b38dea
--- /dev/null
+++ b/meta/recipes-qt/qt4/qt4-tools-native_4.6.3.bb
@@ -0,0 +1,11 @@
+require qt4-tools-native.inc
+
+LICENSE = "LGPLv2.1 | GPLv3"
+LIC_FILES_CHKSUM = "file://LICENSE.LGPL;md5=fbc093901857fcd118f065f900982c24 \
+ file://LICENSE.GPL3;md5=babc5b6b77441da277f5c06b2e547720 \
+ file://LGPL_EXCEPTION.txt;md5=411080a56ff917a5a1aa08c98acae354"
+PR = "r0"
+
+EXTRA_OECONF += " -no-fast -silent -no-rpath"
+
+TOBUILD := "src/tools/bootstrap ${TOBUILD}"
diff --git a/meta/recipes-qt/qt4/qt4-x11-free-4.6.3/linux.conf b/meta/recipes-qt/qt4/qt4-x11-free-4.6.3/linux.conf
new file mode 100644
index 0000000000..68ae80b929
--- /dev/null
+++ b/meta/recipes-qt/qt4/qt4-x11-free-4.6.3/linux.conf
@@ -0,0 +1,54 @@
+#
+# qmake configuration for common linux
+#
+
+QMAKE_CFLAGS_THREAD += -D_REENTRANT
+QMAKE_CXXFLAGS_THREAD += $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 =
+QMAKE_LIBDIR_X11 =
+QMAKE_INCDIR_QT = $(OE_QMAKE_INCDIR_QT)
+QMAKE_LIBDIR_QT = $(OE_QMAKE_LIBDIR_QT)
+QMAKE_INCDIR_OPENGL =
+QMAKE_LIBDIR_OPENGL =
+
+
+QMAKE_LIBS = -Wl,-rpath-link,SEDME/lib -lglib-2.0
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = $(OE_QMAKE_LIBS_X11)
+QMAKE_LIBS_X11SM = $(OE_QMAKE_LIBS_X11SM)
+QMAKE_LIBS_NIS = -lnsl
+QMAKE_LIBS_OPENGL = -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_THREAD = -lpthread
+
+QMAKE_MOC = $(OE_QMAKE_MOC)
+QMAKE_UIC = $(OE_QMAKE_UIC)
+QMAKE_UIC3 = $(OE_QMAKE_UIC3)
+QMAKE_RCC = $(OE_QMAKE_RCC)
+QMAKE_QDBUSCPP2XML = $(OE_QMAKE_QDBUSCPP2XML)
+QMAKE_QDBUSXML2CPP = $(OE_QMAKE_QDBUSXML2CPP)
+
+QMAKE_AR = $(OE_QMAKE_AR) cqs
+QMAKE_OBJCOPY = ${OBJCOPY}
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_COPY_FILE = $(COPY)
+QMAKE_COPY_DIR = $(COPY) -r
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_STRIP = $(OE_QMAKE_STRIP)
+QMAKE_STRIPFLAGS_LIB += --strip-unneeded
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+QMAKE_INSTALL_FILE = install -m 644 -p
+QMAKE_INSTALL_PROGRAM = install -m 755 -p
+
+include(unix.conf)
diff --git a/meta/recipes-qt/qt4/qt4-x11-free.inc b/meta/recipes-qt/qt4/qt4-x11-free.inc
new file mode 100644
index 0000000000..352df1e5a7
--- /dev/null
+++ b/meta/recipes-qt/qt4/qt4-x11-free.inc
@@ -0,0 +1,14 @@
+require qt4.inc
+
+SECTION = "x11/libs"
+PRIORITY = "optional"
+DEPENDS += "virtual/libx11 fontconfig libxft libxext libxrender libxrandr libxcursor"
+
+QT_GLFLAGS ?= "-no-opengl"
+QT_CONFIG_FLAGS += "-no-xinerama -no-xkb ${QT_GLFLAGS}"
+QT_BASE_NAME ?= "qt4"
+QT_BASE_LIB ?= "libqt"
+QT_DIR_NAME = "qt4"
+QT_LIBINFIX = ""
+
+inherit qmake2
diff --git a/meta/recipes-qt/qt4/qt4-x11-free_4.6.3.bb b/meta/recipes-qt/qt4/qt4-x11-free_4.6.3.bb
new file mode 100644
index 0000000000..e42f650c07
--- /dev/null
+++ b/meta/recipes-qt/qt4/qt4-x11-free_4.6.3.bb
@@ -0,0 +1,6 @@
+require qt4-x11-free.inc
+require qt-4.6.3.inc
+
+PR = "r0"
+
+QT_CONFIG_FLAGS += " -xrandr "
diff --git a/meta/recipes-qt/qt4/qt4.inc b/meta/recipes-qt/qt4/qt4.inc
new file mode 100644
index 0000000000..16d5bebd36
--- /dev/null
+++ b/meta/recipes-qt/qt4/qt4.inc
@@ -0,0 +1,300 @@
+DESCRIPTION = "Qt is a comprehensive cross-platform C++ application framework"
+HOMEPAGE = "http://qt.nokia.com"
+
+DEPENDS += "qt4-tools-native freetype jpeg libpng zlib dbus openssl glib-2.0 gstreamer gst-plugins-base sqlite3"
+
+inherit qmake_base
+
+QT_CONFIG_FLAGS += "-release -no-cups -no-accessibility -reduce-relocations \
+ -shared -no-nas-sound -no-sm -no-nis \
+ -qt-gif -system-libjpeg -system-libpng -system-zlib \
+ -no-sql-ibase -no-sql-mysql -no-sql-psql -no-sql-odbc -plugin-sql-sqlite \
+ -no-pch -dbus -stl -glib -phonon -webkit"
+
+EXTRA_OEMAKE = "-e"
+
+EXTRA_ENV = 'QMAKE="${STAGING_BINDIR_NATIVE}/qmake2 -after \
+ INCPATH+=${STAGING_INCDIR}/freetype2 LIBS+=-L${STAGING_LIBDIR}" \
+ QMAKESPEC="${QMAKESPEC}" LINK="${CXX} -Wl,-rpath-link,${STAGING_LIBDIR}" \
+ AR="${TARGET_PREFIX}ar cqs" \
+ MOC="${STAGING_BINDIR_NATIVE}/moc4" UIC="${STAGING_BINDIR_NATIVE}/uic4" MAKE="make -e"'
+
+export QT_CONF_PATH="${WORKDIR}/qt.conf"
+
+# Library packages
+QT_LIB_NAMES = "Qt3Support QtAssistantClient QtCLucene QtCore QtDBus QtDesigner QtDesignerComponents QtGui QtHelp QtNetwork QtOpenGL QtScript QtScriptTools QtSql QtSvg QtTest QtUiTools QtWebKit QtXml QtXmlPatterns phonon QtMultimedia QtOpenVG QtMediaServices"
+
+QT_EXTRA_LIBS = "pvrQWSWSEGL"
+
+python __anonymous () {
+ import bb
+
+ lib_packages = []
+ dev_packages = []
+ dbg_packages = []
+ for name in bb.data.getVar("QT_LIB_NAMES", d, 1).split():
+ pkg = "${QT_BASE_LIB}" + name.lower().replace("qt", "") + "4"
+ # NOTE: the headers for QtAssistantClient are different
+ incname = name.replace("QtAssistantClient", "QtAssistant")
+ bb.data.setVar("FILES_%s" % pkg, "${libdir}/lib%(name)s${QT_LIBINFIX}.so.*" % locals(), d)
+ bb.data.setVar("FILES_%s-dev" % pkg, """${libdir}/lib%(name)s${QT_LIBINFIX}.prl
+ ${libdir}/lib%(name)s${QT_LIBINFIX}.a
+ ${libdir}/lib%(name)s${QT_LIBINFIX}.la
+ ${libdir}/lib%(name)s${QT_LIBINFIX}.so
+ ${includedir}/${QT_DIR_NAME}/%(incname)s
+ ${libdir}/pkgconfig/%(name)s${QT_LIBINFIX}.pc""" % locals(), d)
+ bb.data.setVar("FILES_%s-dbg" % pkg, "${libdir}/.debug/lib%(name)s${QT_LIBINFIX}.so.*" % locals(), d)
+ lib_packages.append(pkg)
+ dev_packages.append("%s-dev" % pkg)
+ dbg_packages.append("%s-dbg" % pkg)
+ for name in bb.data.getVar("OTHER_PACKAGES", d, 1).split():
+ dbg_packages.append("%s-dbg" % name)
+
+ for name in bb.data.getVar("QT_EXTRA_LIBS", d, 1).split():
+ pkg = "${QT_BASE_LIB}" + name.lower().replace("qt", "") + "4"
+ bb.data.setVar("FILES_%s" % pkg, "${libdir}/lib%(name)s.so.*" % locals(), d)
+ bb.data.setVar("FILES_%s-dev" % pkg, """${libdir}/lib%(name)s.prl
+ ${libdir}/lib%(name)s.a
+ ${libdir}/lib%(name)s.la
+ ${libdir}/lib%(name)s.so
+ ${includedir}/${QT_DIR_NAME}/%(incname)s
+ ${libdir}/pkgconfig/%(name)s.pc""" % locals(), d)
+ bb.data.setVar("FILES_%s-dbg" % pkg, "${libdir}/.debug/lib%(name)s.so.*" % locals(), d)
+ lib_packages.append(pkg)
+ dev_packages.append("%s-dev" % pkg)
+ dbg_packages.append("%s-dbg" % pkg)
+
+ bb.data.setVar("LIB_PACKAGES", " ".join(lib_packages), d)
+ bb.data.setVar("DEV_PACKAGES", " ".join(dev_packages), d)
+ bb.data.setVar("DBG_PACKAGES", " ".join(dbg_packages), d)
+}
+
+OTHER_PACKAGES = "\
+ ${QT_BASE_NAME}-tools \
+ ${QT_BASE_NAME}-assistant \
+ ${QT_BASE_NAME}-common \
+ ${QT_BASE_NAME}-dbus \
+ ${QT_BASE_NAME}-demos \
+ ${QT_BASE_NAME}-designer \
+ ${QT_BASE_NAME}-examples \
+ ${QT_BASE_NAME}-fonts \
+ ${QT_BASE_NAME}-fonts-ttf-vera \
+ ${QT_BASE_NAME}-fonts-ttf-dejavu \
+ ${QT_BASE_NAME}-fonts-pfa \
+ ${QT_BASE_NAME}-fonts-pfb \
+ ${QT_BASE_NAME}-fonts-qpf \
+ ${QT_BASE_NAME}-linguist \
+ ${QT_BASE_NAME}-makeqpf \
+ ${QT_BASE_NAME}-mkspecs \
+ ${QT_BASE_NAME}-pixeltool \
+ ${QT_BASE_NAME}-qt3to4"
+
+PACKAGES += "${LIB_PACKAGES} ${DEV_PACKAGES} ${DBG_PACKAGES} ${OTHER_PACKAGES}"
+PACKAGES_DYNAMIC = "${QT_BASE_NAME}-plugin-* ${QT_BASE_NAME}-translation-* ${QT_BASE_NAME}-fonts-*"
+
+ALLOW_EMPTY_${PN} = "1"
+ALLOW_EMPTY_${QT_BASE_NAME}-fonts = "1"
+FILES_${PN} = ""
+FILES_${PN}-dev = "${includedir}/${QT_DIR_NAME}/Qt/*"
+FILES_${PN}-dbg = ""
+RRECOMMENDS_${PN} = "${LIB_PACKAGES} ${OTHER_PACKAGES}"
+RRECOMMENDS_${PN}-dev = "${DEV_PACKAGES}"
+RRECOMMENDS_${PN}-dbg = "${DBG_PACKAGES}"
+RRECOMMENDS_${QT_BASE_NAME}-fonts = " \
+ ${QT_BASE_NAME}-fonts-ttf-vera \
+ ${QT_BASE_NAME}-fonts-ttf-dejavu \
+ ${QT_BASE_NAME}-fonts-pfa \
+ ${QT_BASE_NAME}-fonts-pfb \
+ ${QT_BASE_NAME}-fonts-qpf"
+
+FILES_${QT_BASE_NAME}-tools = "${bindir}/uic* ${bindir}/moc ${bindir}/rcc ${bindir}/qttracereplay ${bindir}/qdoc*"
+FILES_${QT_BASE_NAME}-assistant = "${bindir}/*assistant* ${bindir}/qcollectiongenerator ${bindir}/qhelpconverter ${bindir}/qhelpgenerator"
+FILES_${QT_BASE_NAME}-assistant-dbg = "${bindir}/.debug/*assistant* ${bindir}/.debug/qcollectiongenerator ${bindir}/.debug/qhelpconverter ${bindir}/.debug/qhelpgenerator"
+FILES_${QT_BASE_NAME}-common = "${bindir}/qtconfig"
+FILES_${QT_BASE_NAME}-common-dbg = "${bindir}/.debug/qtconfig"
+FILES_${QT_BASE_NAME}-dbus = "${bindir}/qdbus ${bindir}/qdbusxml2cpp ${bindir}/qdbuscpp2xml ${bindir}/qdbusviewer"
+FILES_${QT_BASE_NAME}-dbus-dbg = "${bindir}/.debug/qdbus ${bindir}/.debug/qdbusxml2cpp ${bindir}/.debug/qdbuscpp2xml ${bindir}/.debug/qdbusviewer"
+FILES_${QT_BASE_NAME}-demos = "${bindir}/qtdemo* ${bindir}/${QT_DIR_NAME}/demos/*"
+FILES_${QT_BASE_NAME}-demos-dbg = "${bindir}/.debug/qtdemo* ${bindir}/${QT_DIR_NAME}/demos/.debug/* ${bindir}/${QT_DIR_NAME}/demos/*/.debug ${bindir}/${QT_DIR_NAME}/demos/*/*/.debug ${bindir}/${QT_DIR_NAME}/demos/*/*/*/.debug"
+FILES_${QT_BASE_NAME}-designer = "${bindir}/*designer*"
+FILES_${QT_BASE_NAME}-designer-dbg = "${bindir}/.debug/*designer*"
+FILES_${QT_BASE_NAME}-examples = "${bindir}/${QT_DIR_NAME}/examples/*"
+FILES_${QT_BASE_NAME}-examples-dbg = "${bindir}/${QT_DIR_NAME}/examples/.debug ${bindir}/${QT_DIR_NAME}/examples/*/.debug ${bindir}/${QT_DIR_NAME}/examples/*/*/.debug ${bindir}/${QT_DIR_NAME}/examples/*/*/*/.debug ${bindir}/${QT_DIR_NAME}/examples/*/*/*/*/.debug"
+FILES_${QT_BASE_NAME}-fonts-ttf-vera = "${libdir}/fonts/Vera*.ttf"
+FILES_${QT_BASE_NAME}-fonts-ttf-dejavu = "${libdir}/fonts/DejaVu*.ttf"
+FILES_${QT_BASE_NAME}-fonts-pfa = "${libdir}/fonts/*.pfa"
+FILES_${QT_BASE_NAME}-fonts-pfb = "${libdir}/fonts/*.pfb"
+FILES_${QT_BASE_NAME}-fonts-qpf = "${libdir}/fonts/*.qpf"
+FILES_${QT_BASE_NAME}-linguist = "${bindir}/*linguist* ${bindir}/lrelease ${bindir}/lupdate ${bindir}/lconvert ${bindir}/qm2ts"
+FILES_${QT_BASE_NAME}-linguist-dbg = "${bindir}/.debug/*linguist* ${bindir}/.debug/lrelease ${bindir}/.debug/lupdate ${bindir}/.debug/lconvert ${bindir}/.debug/qm2ts"
+FILES_${QT_BASE_NAME}-pixeltool = "${bindir}/pixeltool"
+FILES_${QT_BASE_NAME}-pixeltool-dbg = "${bindir}/.debug/pixeltool"
+FILES_${QT_BASE_NAME}-qt3to4 = "${bindir}/qt3to4 ${datadir}/${QT_DIR_NAME}/q3porting.xml"
+FILES_${QT_BASE_NAME}-qt3to4-dbg = "${bindir}/.debug/qt3to4"
+FILES_${QT_BASE_NAME}-makeqpf = "${bindir}/makeqpf"
+FILES_${QT_BASE_NAME}-makeqpf-dbg = "${bindir}/.debug/makeqpf"
+FILES_${QT_BASE_NAME}-mkspecs = "${datadir}/${QT_DIR_NAME}/mkspecs/*"
+
+ARM_INSTRUCTION_SET = "arm"
+
+set_arch() {
+ case ${TARGET_ARCH} in
+ arm*) QT_ARCH=arm ;;
+ i*86*) QT_ARCH=i386 ;;
+ mips*) QT_ARCH=mips ;;
+ powerpc*) QT_ARCH=powerpc ;;
+ x86_64*) QT_ARCH=x86_64 ;;
+ esac
+}
+
+do_configure() {
+ unset QMAKESPEC
+ unset QTDIR
+
+ set_arch
+
+ if [ ! -e bin/qmake ]; then
+ ln -sf ${STAGING_BINDIR_NATIVE}/qmake2 bin/qmake
+ fi
+
+ if [ ! -e mkspecs/${TARGET_OS}-oe-g++ ]; then
+ ln -sf linux-g++ mkspecs/${TARGET_OS}-oe-g++
+ fi
+
+ cp -f ${WORKDIR}/g++.conf ${WORKDIR}/linux.conf mkspecs/common/
+
+ echo "[Paths]" > $QT_CONF_PATH
+ echo "Prefix=${prefix}/" >> $QT_CONF_PATH
+ echo "Documentation=${docdir}/${QT_DIR_NAME}" >> $QT_CONF_PATH
+ echo "Headers=${includedir}/${QT_DIR_NAME}" >> $QT_CONF_PATH
+ echo "Libraries=${libdir}" >> $QT_CONF_PATH
+ echo "Binaries=${bindir}" >> $QT_CONF_PATH
+ echo "Plugins=${libdir}/${QT_DIR_NAME}/plugins" >> $QT_CONF_PATH
+ echo "Data=${datadir}/${QT_DIR_NAME}" >> $QT_CONF_PATH
+ echo "Translations=${datadir}/${QT_DIR_NAME}/translations" >> $QT_CONF_PATH
+ echo "Settings=${sysconfdir}/${QT_DIR_NAME}" >> $QT_CONF_PATH
+ echo "Examples=${bindir}/${QT_DIR_NAME}/examples" >> $QT_CONF_PATH
+ echo "Demos=${bindir}/${QT_DIR_NAME}/demos" >> $QT_CONF_PATH
+
+ ${EXTRA_QMAKE_MUNGE}|| true
+
+ (echo o; echo yes) | ./configure -v \
+ -prefix ${prefix}/ \
+ -bindir ${bindir} \
+ -libdir ${libdir} \
+ -datadir ${datadir}/${QT_DIR_NAME} \
+ -sysconfdir ${sysconfdir}/${QT_DIR_NAME} \
+ -docdir ${docdir}/${QT_DIR_NAME} \
+ -headerdir ${includedir}/${QT_DIR_NAME} \
+ -plugindir ${libdir}/${QT_DIR_NAME}/plugins \
+ -translationdir ${datadir}/${QT_DIR_NAME}/translations \
+ -examplesdir ${bindir}/${QT_DIR_NAME}/examples \
+ -demosdir ${bindir}/${QT_DIR_NAME}/demos \
+ -platform ${TARGET_OS}-oe-g++ \
+ -xplatform ${TARGET_OS}-oe-g++ \
+ -crossarch ${QT_ARCH} \
+ ${QT_CONFIG_FLAGS} -no-fast \
+ -L${STAGING_LIBDIR} -I${STAGING_INCDIR} \
+ -I${STAGING_INCDIR}/freetype2
+}
+
+do_compile() {
+ unset CFLAGS CXXFLAGS
+ install -m 0755 ${STAGING_BINDIR_NATIVE}/rcc4 ${S}/bin/rcc
+ install -m 0755 ${STAGING_BINDIR_NATIVE}/moc4 ${S}/bin/moc
+ install -m 0755 ${STAGING_BINDIR_NATIVE}/uic4 ${S}/bin/uic
+
+ oe_runmake ${EXTRA_ENV}
+}
+
+python populate_packages_prepend() {
+ translation_dir = bb.data.expand('${datadir}/${QT_DIR_NAME}/translations/', d)
+ translation_name = bb.data.expand('${QT_BASE_NAME}-translation-%s', d)
+ do_split_packages(d, translation_dir, '^(assistant|designer|linguist|qt|qtconfig|qvfb)_(.*)\.qm$', translation_name, '${PN} translation for %s', extra_depends='' )
+
+ phrasebook_dir = bb.data.expand('${datadir}/${QT_DIR_NAME}/phrasebooks/', d)
+ phrasebook_name = bb.data.expand('${QT_BASE_NAME}-phrasebook-%s', d)
+ do_split_packages(d, phrasebook_dir, '^(.*)\.qph$', phrasebook_name, '${PN} phrasebook for %s', extra_depends='' )
+
+ # Package all the plugins and their -dbg version and create a meta package
+ import os
+ def qtopia_split(path, name, glob):
+ """
+ Split the package into a normal and -dbg package and then add the
+ new packages to the meta package.
+ """
+ plugin_dir = bb.data.expand('${libdir}/${QT_DIR_NAME}/plugins/%s/' % path, d)
+ if not os.path.exists("%s%s" % (bb.data.expand('${D}',d), plugin_dir)):
+ bb.note("The path does not exist:", bb.data.expand('${D}', d), plugin_dir)
+ return
+
+ plugin_name = bb.data.expand('${QT_BASE_NAME}-plugin-%s-%%s' % name, d)
+ dev_packages = []
+ dev_hook = lambda file,pkg,b,c,d:dev_packages.append((file,pkg))
+ do_split_packages(d, plugin_dir, glob, plugin_name, '${PN} %s for %%s' % name, extra_depends='', hook=dev_hook)
+ # Create a -dbg package as well
+ plugin_dir_dbg = bb.data.expand('${libdir}/${QT_DIR_NAME}/plugins/%s/.debug' % path, d)
+ packages = bb.data.getVar('PACKAGES',d)
+ for (file,package) in dev_packages:
+ packages = "%s %s-dbg" % (packages, package)
+ file_name = os.path.join(plugin_dir_dbg, os.path.basename(file))
+ bb.data.setVar("FILES_%s-dbg" % package, file_name, d)
+ bb.data.setVar("DESCRIPTION_%s-dbg" % package, "${PN} %s for %s" % (name, package), d)
+
+ bb.data.setVar('PACKAGES', packages, d)
+
+ qtopia_split('accessible', 'accessible', '^libq(.*)\.so$')
+ qtopia_split('codecs', 'codec', '^libq(.*)\.so$')
+ qtopia_split('decorations', 'decoration', '^libqdecoration(.*)\.so$')
+ qtopia_split('designer', 'designer', '^lib(.*)\.so$')
+ qtopia_split('gfxdrivers', 'gfxdriver', '^libq(.*)\.so$')
+ qtopia_split('graphicssystems','graphicssystems', '^libq(.*)\.so$')
+ qtopia_split('mousedrivers', 'mousedriver', '^libq(.*)mousedriver\.so$')
+ qtopia_split('iconengines', 'iconengine', '^libq(.*)\.so$')
+ qtopia_split('imageformats', 'imageformat', '^libq(.*)\.so$')
+ qtopia_split('inputmethods', 'inputmethod', '^libq(.*)\.so$')
+ qtopia_split('sqldrivers', 'sqldriver', '^libq(.*)\.so$')
+ qtopia_split('script', 'script', '^libqtscript(.*)\.so$')
+ qtopia_split('styles', 'style', '^libq(.*)\.so$')
+ qtopia_split('phonon_backend','phonon-backend','^libphonon_(.*)\.so$')
+}
+
+do_install() {
+ oe_runmake install INSTALL_ROOT=${D}
+
+ # These are host binaries, we should only use them in staging
+ rm -rf ${D}/${bindir}/qmake
+
+ # fix pkgconfig, libtool and prl files
+ sed -i -e s#-L${S}/lib##g \
+ -e s#-L${STAGING_LIBDIR}##g \
+ -e 's#STAGING_LIBDIR}#libdir}'#g \
+ -e s#-L${libdir}##g \
+ -e s#'$(OE_QMAKE_LIBS_X11)'#"${OE_QMAKE_LIBS_X11}"#g \
+ -e s#" -Wl,-rpath-link,${S}/lib"##g \
+ -e s#" -Wl,-rpath-link,${libdir}"##g \
+ -e 's#I/usr/include#Iincludedir}#g' \
+ -e 's#Iin#I${in#g' \
+ ${D}${libdir}/*.la ${D}${libdir}/*.prl ${D}${libdir}/pkgconfig/*.pc
+
+ sed -i -e s#" -Wl,-rpath-link,${S}/lib"##g \
+ ${D}${datadir}/${QT_DIR_NAME}/mkspecs/common/linux.conf
+
+ # fix pkgconfig files
+ sed -i -e s#"moc_location=.*$"#"moc_location=${bindir}/moc4"# \
+ -e s#"uic_location=.*$"#"uic_location=${bindir}/uic4"# \
+ ${D}${libdir}/pkgconfig/*.pc
+ for name in ${QT_LIB_NAMES}; do
+ sed -i -e /Requires/s#"${name}"#"${name}${QT_LIBINFIX}"#g ${D}${libdir}/pkgconfig/*.pc
+ done
+
+ # QT abuses $includedir to point to its headers, which breaks pkgconfig sysroot, so manually fix it up here:
+ for pc in ${D}${libdir}/pkgconfig/*.pc ; do
+ sed -i -e "s:prefix}include/${QT_BASE_NAME}/$(basename $pc .pc):prefix}/include:" \
+ -e "s,Cflags: ,Cflags: -IP{includedir}/${QT_BASE_NAME}/$(basename $pc .pc) ," \
+ -e 's:IP{:I${:g' $pc
+ done
+
+ install -d ${D}/${libdir}/fonts
+ touch ${D}/${libdir}/fonts/fontdir
+}
diff --git a/meta/recipes-qt/uicmoc/uicmoc4-native.inc b/meta/recipes-qt/uicmoc/uicmoc4-native.inc
new file mode 100644
index 0000000000..b6933628d9
--- /dev/null
+++ b/meta/recipes-qt/uicmoc/uicmoc4-native.inc
@@ -0,0 +1,67 @@
+DESCRIPTION = "User-Interface-, Meta-Object-, and Resource Compiler for Qt/[X11|Mac|Embedded] version 4.x"
+DEPENDS = "zlib-native"
+SECTION = "libs"
+HOMEPAGE = "http://www.trolltech.com"
+PRIORITY = "optional"
+LICENSE = "GPL"
+PR = "r1"
+
+SRC_URI = "ftp://ftp.trolltech.com/qt/source/qtopia-core-opensource-src-${PV}.tar.gz"
+S = "${WORKDIR}/qtopia-core-opensource-src-${PV}"
+
+inherit native
+
+EXTRA_OECONF = "-prefix ${STAGING_DIR_NATIVE}/qt4 \
+ -qt-libjpeg -qt-gif -system-zlib \
+ -no-nis -no-cups -no-exceptions \
+ -no-accessibility -no-libjpeg \
+ -no-nas-sound -no-sm \
+ -no-xshape -no-xinerama \
+ -no-xcursor -no-xrandr \
+ -no-xrender -no-fontconfig \
+ -no-tablet -no-xkb \
+ -no-libpng \
+ -verbose -release -fast -static \
+ -L ${STAGING_LIBDIR_NATIVE} \
+ -qt3support "
+# yank default -e
+EXTRA_OEMAKE = " "
+
+do_configure() {
+ sed -i 's:^QT += xml qt3support$:QT += xml qt3support network:' "${S}"/src/tools/uic3/uic3.pro
+ echo yes | ./configure ${EXTRA_OECONF} || die "Configuring qt failed. EXTRA_OECONF was ${EXTRA_OECONF}"
+}
+
+TOBUILD = "\
+ src/tools/moc \
+ src/corelib \
+ src/sql \
+ src/qt3support \
+ src/xml \
+ src/tools/uic \
+ src/tools/rcc \
+ src/network \
+ src/gui \
+ src/tools/uic3 \
+"
+
+do_compile() {
+ unset CC CXX CFLAGS LFLAGS CXXFLAGS CPPFLAGS
+ for i in ${TOBUILD}; do
+ cd ${S}/$i && oe_runmake CC="${CC}" CXX="${CXX}"
+ done
+}
+
+do_install() {
+ install -d ${D}${bindir}/
+ install -m 0755 bin/moc ${D}${bindir}//moc4
+ install -m 0755 bin/uic ${D}${bindir}/uic4
+ install -m 0755 bin/uic3 ${D}${bindir}/uic34
+ install -m 0755 bin/rcc $${D}${bindir}/rcc4
+ install -d ${D}/qt4/
+ install -m 0644 tools/porting/src/q3porting.xml ${D}/qt4/
+}
+
+sysroot_stage_all_append() {
+ sysroot_stage_dir ${D}/qt4 ${SYSROOT_DESTDIR}/${STAGING_DIR_TARGET}/qt4
+}
diff --git a/meta/recipes-qt/uicmoc/uicmoc4-native_4.3.2.bb b/meta/recipes-qt/uicmoc/uicmoc4-native_4.3.2.bb
new file mode 100644
index 0000000000..1950f63068
--- /dev/null
+++ b/meta/recipes-qt/uicmoc/uicmoc4-native_4.3.2.bb
@@ -0,0 +1 @@
+require uicmoc4-native.inc