QTE by Allan Clark Bug 391
authorMike Frysinger <vapier@gentoo.org>
Fri, 9 Sep 2005 03:14:28 +0000 (03:14 -0000)
committerMike Frysinger <vapier@gentoo.org>
Fri, 9 Sep 2005 03:14:28 +0000 (03:14 -0000)
package/Config.in
package/qte/Config.in [new file with mode: 0644]
package/qte/qte.mk [new file with mode: 0644]
package/qte/qtopia-2.1.1-no-programinvocation.patch [new file with mode: 0644]

index 091e0571f7febedaa20ca33d65b1fb5302163b18..588abdc0efcecf50ed9d7cf432778106129836cc 100644 (file)
@@ -92,6 +92,7 @@ source "package/portmap/Config.in"
 source "package/pppd/Config.in"
 source "package/procps/Config.in"
 source "package/python/Config.in"
+source "package/qte/Config.in"
 source "package/raidtools/Config.in"
 source "package/readline/Config.in"
 source "package/rsync/Config.in"
diff --git a/package/qte/Config.in b/package/qte/Config.in
new file mode 100644 (file)
index 0000000..d523ccf
--- /dev/null
@@ -0,0 +1,262 @@
+config BR2_PACKAGE_QTE
+       bool "Qt/E"
+       default n
+       select BR2_INSTALL_LIBSTDCPP
+       select BR2_PTHREADS_NATIVE
+       select BR2_PACKAGE_JPEG
+       select BR2_PACKAGE_LIBPNG
+       help
+         Trolltech's Qt/Embedded, which offers the same APIs used in building desktop applications tailored to a smaller footprint.
+
+         http://trolltech.com/
+
+         Only tested with threading on, PACKAGE_JPEG, PACKAGE_LIBPNG, but remove those if you like.
+
+
+config BR2_PACKAGE_QTE_COMMERCIAL_USERNAME
+        string "Qt/E Commercial License Username"
+        default ""
+       depends BR2_PACKAGE_QTE
+        help
+            Commercial users can download their source directly by providing a username.  I do not mean this to be a political or economic statement, just a convenience function
+
+
+config BR2_PACKAGE_QTE_COMMERCIAL_PASSWORD
+        string "Qt/E Commercial License Password"
+        default ""
+       depends BR2_PACKAGE_QTE
+        help
+            Commercial users can download their source directly by providing a password.  I do not mean this to be a political or economic statement, just a convenience function
+
+
+choice
+        prompt "Qt/E Version"
+        default BR2_QTE_VERSION_2_3_11
+       depends BR2_PACKAGE_QTE
+        help
+          Select the version of Qt/E you wish to use.
+
+        config BR2_QTE_VERSION_2_3_8
+                bool "Qt/E 2.3.8"
+
+        config BR2_QTE_VERSION_2_3_9
+                bool "Qt/E 2.3.9"
+
+        config BR2_QTE_VERSION_2_3_10
+                bool "Qt/E 2.3.10"
+
+        config BR2_QTE_VERSION_2_3_11
+                bool "Qt/E 2.3.11"
+
+endchoice
+
+config BR2_QTE_VERSION
+        string
+       default "2.3.8"         if BR2_QTE_VERSION_2_3_8
+       default "2.3.9"         if BR2_QTE_VERSION_2_3_9
+       default "2.3.10"                if BR2_QTE_VERSION_2_3_10
+       default "2.3.11"                if BR2_QTE_VERSION_2_3_11
+
+
+config BR2_PACKAGE_QTE_QVFB
+       bool "QVfb"
+       default n
+       depends BR2_PACKAGE_QTE
+       help
+         Trolltech provides a Virtual Framebuffer used to simulate the embedded device during development
+
+         http://trolltech.com/
+
+choice
+        prompt "QVfb Version"
+        default BR2_QTE_QVFB_VERSION_2_3_2
+       depends BR2_PACKAGE_QTE_QVFB
+        help
+          Select the version of QVfb you wish to use.
+
+        config BR2_QTE_QVFB_VERSION_2_3_2
+                bool "QVfb 2.3.2"
+
+        config BR2_QTE_QVFB_VERSION_2_3_9
+                bool "QVfb 2.3.9"
+
+endchoice
+
+config BR2_QTE_QVFB_VERSION
+        string
+       default "2.3.2"         if BR2_QTE_QVFB_VERSION_2_3_2
+       default "2.3.9"         if BR2_QTE_QVFB_VERSION_2_3_9
+
+
+
+config BR2_PACKAGE_QTE_QT3
+       bool "Qt/E-3.3.x for Qtopia build"
+       default n
+       depends BR2_PACKAGE_QTE_QTOPIA
+       help
+         Qtopia requires a Qt/E version >= 3.3.0; when using a Qt/E-2.3.x on the runtime, Qtopia still needs a Qt/E-3.3.x codebase to build
+
+         http://trolltech.com/
+
+choice
+        prompt "QT/E v3 Version"
+        default BR2_QTE_QT3_VERSION_3_3_4
+       depends BR2_PACKAGE_QTE_QT3
+        help
+          Select the version of QVfb you wish to use.
+
+        config BR2_QTE_QT3_VERSION_3_3_4
+                bool "Qt/E 3.3.4"
+
+        config BR2_QTE_QT3_VERSION_3_3_3
+                bool "Qt/E 3.3.3"
+
+endchoice
+
+config BR2_QTE_QT3_VERSION
+        string
+       default "3.3.4"         if BR2_QTE_QT3_VERSION_3_3_4
+       default "3.3.3"         if BR2_QTE_QT3_VERSION_3_3_3
+
+
+config BR2_PACKAGE_QTE_QTOPIA
+       bool "Qtopia"
+       default n
+       depends BR2_PACKAGE_QTE
+       help
+         Qtopia defines some more advanced components used for mobile devices
+
+         http://trolltech.com/
+
+choice
+        prompt "Qtopia Version"
+        default BR2_QTE_QTOPIA_VERSION_2_1_2
+       depends BR2_PACKAGE_QTE_QTOPIA
+        help
+          Select the version of Qtopia you wish to use.
+
+        config BR2_QTE_QTOPIA_VERSION_2_1_1
+                bool "Qtopia 2.1.1"
+
+        config BR2_QTE_QTOPIA_VERSION_2_1_2
+                bool "Qtopia 2.1.2"
+
+endchoice
+
+config BR2_QTE_QTOPIA_VERSION
+        string
+       default "2.1.1"         if BR2_QTE_QTOPIA_VERSION_2_1_1
+       default "2.1.2"         if BR2_QTE_QTOPIA_VERSION_2_1_2
+
+config BR2_QTE_TMAKE_VERSION
+        string
+       default "1.13"
+
+# generated from:
+# ls ~/src/buildroot/build_arm/qt-2.3.10/configs/*-static|cut -c56-|sed -e 's/-static//g'|\
+#   awk '{BR="BR2_QTE_CROSS_"toupper($1); gsub("-","_",BR); gsub("+","P",BR); printf"\tconfig %s\n\t\tbool \"%s\"\n\n",BR,$1}'
+
+choice
+        prompt "Qt/E Cross-Compiler Target Platform"
+        default BR2_QTE_CROSS_LINUX_ARM_GPP
+       depends BR2_PACKAGE_QTE
+        help
+          Select the Qt cross-platform string for your build
+
+       config BR2_QTE_CROSS_CYGWIN_ARM_GPP
+               # qtopia-phone does not have this platform in qtopia-phone-2.1.1/src/libraries/qtopia/custom-cygwin-arm-g++.{cpp,h}
+               depends !BR2_PACKAGE_QTE_QTOPIA
+               bool "cygwin-arm-g++"
+
+       config BR2_QTE_CROSS_CYGWIN_IPAQ_GPP
+               # qtopia-phone does not have this platform in qtopia-phone-2.1.1/src/libraries/qtopia/custom-cygwin-ipaq-g++.{cpp,h}
+               depends !BR2_PACKAGE_QTE_QTOPIA
+               bool "cygwin-ipaq-g++"
+
+       config BR2_QTE_CROSS_CYGWIN_SHARP_GPP
+               # qtopia-phone does not have this platform in qtopia-phone-2.1.1/src/libraries/qtopia/custom-cygwin-sharp-g++.{cpp,h}
+               depends !BR2_PACKAGE_QTE_QTOPIA
+               bool "cygwin-sharp-g++"
+
+       config BR2_QTE_CROSS_FREEBSD_GPP
+               # qtopia-phone does not have this platform in qtopia-phone-2.1.1/src/libraries/qtopia/custom-freebsd-g++.{cpp,h}
+               depends !BR2_PACKAGE_QTE_QTOPIA
+               bool "freebsd-g++"
+
+       config BR2_QTE_CROSS_LINUX_ARM_GPP
+               # qtopia-phone does not have this platform in qtopia-phone-2.1.1/src/libraries/qtopia/custom-linux-arm-g++.{cpp,h}
+               depends !BR2_PACKAGE_QTE_QTOPIA
+               bool "linux-arm-g++"
+
+       config BR2_QTE_CROSS_LINUX_CASSIOPEIA_GPP
+               bool "linux-cassiopeia-g++"
+
+       config BR2_QTE_CROSS_LINUX_GENERIC_GPP
+               bool "linux-generic-g++"
+
+       config BR2_QTE_CROSS_LINUX_INNOVATOR_GPP
+               bool "linux-innovator-g++"
+
+       config BR2_QTE_CROSS_LINUX_IPAQ_GPP
+               bool "linux-ipaq-g++"
+
+       config BR2_QTE_CROSS_LINUX_KOALA_GPP
+               # qtopia-phone does not have this platform in qtopia-phone-2.1.1/src/libraries/qtopia/custom-linux-koala-g++.{cpp,h}
+               depends !BR2_PACKAGE_QTE_QTOPIA
+               bool "linux-koala-g++"
+
+       config BR2_QTE_CROSS_LINUX_MIPS_GPP
+               # qtopia-phone does not have this platform in qtopia-phone-2.1.1/src/libraries/qtopia/custom-linux-mips-g++.{cpp,h}
+               depends !BR2_PACKAGE_QTE_QTOPIA
+               bool "linux-mips-g++"
+
+       config BR2_QTE_CROSS_LINUX_SH3_GPP
+               # qtopia-phone does not have this platform in qtopia-phone-2.1.1/src/libraries/qtopia/custom-linux-sh3-g++.{cpp,h}
+               depends !BR2_PACKAGE_QTE_QTOPIA
+               bool "linux-sh3-g++"
+
+       config BR2_QTE_CROSS_LINUX_SHARP_GPP
+               bool "linux-sharp-g++"
+
+       config BR2_QTE_CROSS_LINUX_X86_GPP
+               bool "linux-x86-g++"
+
+       config BR2_QTE_CROSS_QNX_RTP_GPP
+               # qtopia-phone does not have this platform in qtopia-phone-2.1.1/src/libraries/qtopia/custom-qnx-rtp-g++.{cpp,h}
+               depends !BR2_PACKAGE_QTE_QTOPIA
+               bool "qnx-rtp-g++"
+
+       config BR2_QTE_CROSS_SOLARIS_GPP
+               # qtopia-phone does not have this platform in qtopia-phone-2.1.1/src/libraries/qtopia/custom-solaris-g++.{cpp,h}
+               depends !BR2_PACKAGE_QTE_QTOPIA
+               bool "solaris-g++"
+
+       config BR2_QTE_CROSS_WIN32_MSVC
+               # qtopia-phone does not have this platform in qtopia-phone-2.1.1/src/libraries/qtopia/custom-win32-msvc.{cpp,h}
+               depends !BR2_PACKAGE_QTE_QTOPIA
+               bool "win32-msvc"
+
+endchoice
+
+config BR2_QTE_CROSS_PLATFORM
+        string
+# generated from:
+# ls ~/src/buildroot/build_arm/qt-2.3.10/configs/*-static|cut -c56-|sed -e 's/-static//g'|\
+#   awk '{BR="BR2_QTE_CROSS_"toupper($1); gsub("-","_",BR); gsub("+","P",BR); printf"\tdefault \"%s\"\tif %s\n",$1,BR}'
+       default "cygwin-arm-g++"        if BR2_QTE_CROSS_CYGWIN_ARM_GPP
+       default "cygwin-ipaq-g++"       if BR2_QTE_CROSS_CYGWIN_IPAQ_GPP
+       default "cygwin-sharp-g++"      if BR2_QTE_CROSS_CYGWIN_SHARP_GPP
+       default "freebsd-g++"   if BR2_QTE_CROSS_FREEBSD_GPP
+       default "linux-arm-g++" if BR2_QTE_CROSS_LINUX_ARM_GPP
+       default "linux-cassiopeia-g++"  if BR2_QTE_CROSS_LINUX_CASSIOPEIA_GPP
+       default "linux-generic-g++"     if BR2_QTE_CROSS_LINUX_GENERIC_GPP
+       default "linux-innovator-g++"   if BR2_QTE_CROSS_LINUX_INNOVATOR_GPP
+       default "linux-ipaq-g++"        if BR2_QTE_CROSS_LINUX_IPAQ_GPP
+       default "linux-koala-g++"       if BR2_QTE_CROSS_LINUX_KOALA_GPP
+       default "linux-mips-g++"        if BR2_QTE_CROSS_LINUX_MIPS_GPP
+       default "linux-sh3-g++" if BR2_QTE_CROSS_LINUX_SH3_GPP
+       default "linux-sharp-g++"       if BR2_QTE_CROSS_LINUX_SHARP_GPP
+       default "linux-x86-g++" if BR2_QTE_CROSS_LINUX_X86_GPP
+       default "qnx-rtp-g++"   if BR2_QTE_CROSS_QNX_RTP_GPP
+       default "solaris-g++"   if BR2_QTE_CROSS_SOLARIS_GPP
+       default "win32-msvc"    if BR2_QTE_CROSS_WIN32_MSVC
diff --git a/package/qte/qte.mk b/package/qte/qte.mk
new file mode 100644 (file)
index 0000000..a17758a
--- /dev/null
@@ -0,0 +1,251 @@
+#############################################################
+#
+# qte: Qt/E build, includes Qt/E-2, QVfb, and Qtopia-2
+#
+#############################################################
+BR2_QTE_C_QTE_VERSION:=$(shell echo $(BR2_QTE_VERSION)| sed -e 's/"//g')
+BR2_QTE_C_QT3_VERSION:=$(shell echo $(BR2_QTE_QT3_VERSION)| sed -e 's/"//g')
+BR2_QTE_C_QVFB_VERSION:=$(shell echo $(BR2_QTE_QVFB_VERSION)| sed -e 's/"//g')
+BR2_QTE_C_QTOPIA_VERSION:=$(shell echo $(BR2_QTE_QTOPIA_VERSION)| sed -e 's/"//g')
+BR2_QTE_C_TMAKE_VERSION:=$(shell echo $(BR2_QTE_TMAKE_VERSION)| sed -e 's/"//g')
+BR2_QTE_C_USERNAME:=$(shell echo $(BR2_PACKAGE_QTE_COMMERCIAL_USERNAME)| sed -e 's/"//g')
+BR2_QTE_C_PASSWORD:=$(shell echo $(BR2_PACKAGE_QTE_COMMERCIAL_PASSWORD)| sed -e 's/"//g')
+QTE_QTE_SOURCE:=qt-embedded-$(BR2_QTE_C_QTE_VERSION)-commercial.tar.gz
+QTE_QT3_SOURCE:=qt-$(BR2_QTE_C_QT3_VERSION)-commercial.tar.gz
+QTE_TMAKE_SOURCE:=tmake-$(BR2_QTE_C_TMAKE_VERSION).tar.gz
+QTE_QVFB_SOURCE:=qt-x11-$(BR2_QTE_C_QVFB_VERSION)-commercial.tar.gz
+QTE_QTOPIA_SOURCE:=qtopia-phone-source-$(BR2_QTE_C_QTOPIA_VERSION).tar.gz
+QTE_SITE:=http://$(BR2_QTE_C_USERNAME):$(BR2_QTE_C_PASSWORD)@dist.trolltech.com/$(BR2_QTE_C_USERNAME)
+QTE_QTE_DIR:=$(BUILD_DIR)/qt-$(BR2_QTE_C_QTE_VERSION)
+QTE_QT3_DIR:=$(BUILD_DIR)/qt-$(BR2_QTE_C_QT3_VERSION)
+QTE_TMAKE_DIR:=$(BUILD_DIR)/tmake-$(BR2_QTE_C_TMAKE_VERSION)
+QTE_QVFB_DIR:=$(BUILD_DIR)/qt-$(BR2_QTE_C_QVFB_VERSION)
+QTE_QTOPIA_DIR:=$(BUILD_DIR)/qtopia-phone-$(BR2_QTE_C_QTOPIA_VERSION)
+
+QTE_CAT:=zcat
+TMAKE:=$(QTE_TMAKE_DIR)/bin/tmake
+QTE_UIC_BINARY:=bin/uic
+QTE_QVFB_BINARY:=bin/qvfb
+QTE_QTE_LIB:=$(QTE_QTE_DIR)/lib/libqte-mt.so.$(BR2_QTE_C_QTE_VERSION)
+#QTE_QTE_LIB:=$(TARGET_DIR)/lib/libqte-mt.so.$(BR2_QTE_C_QTE_VERSION)
+QTE_QTOPIA_FILE:=$(QTE_QTOPIA_DIR)/bin/qpe
+QTE_QTOPIA_IFILE:=$(QTE_QTOPIA_DIR)/opt/Qtopia/bin/qpe
+
+#export QT2DIR=$(pwd)/qt-2.3.2
+#export QT3DIR=$(pwd)/qt-%{qt_version}
+#export QTEDIR=$(pwd)/qt-%{qte_version}
+#export QPEDIR=$(pwd)
+
+#############################################################
+#
+# Calculate configure options... scary eventually, trivial now
+#
+# currently only tested with threading
+# FIXME: I should use the staging directory here, but I don't yet.
+#
+#############################################################
+# I choose to make the link in libqte so that the linking later is trivial -- a user may choose to use -luuid, or not, and it'll just work.
+# ...since libqte* needs -luuid anyhow... 
+QTE_QTE_CONFIGURE:=-no-xft -L$(E2FSPROGS_DIR)/lib -luuid
+QTE_QVFB_CONFIGURE:=-no-xft
+QTE_QTOPIA_CONFIGURE:=
+QTE_QT3_CONFIGURE:=
+
+ifeq ($(BR2_PTHREADS_NATIVE),y)
+QTE_QTE_CONFIGURE:=$(QTE_QTE_CONFIGURE) -thread 
+QTE_QVFB_CONFIGURE:=$(QTE_QVFB_CONFIGURE) -thread
+QTE_QTOPIA_CONFIGURE:=$(QTE_QTOPIA_CONFIGURE) -thread
+QTE_QT3_CONFIGURE:=$(QTE_QT3_CONFIGURE) -thread
+endif
+
+ifeq ($(BR2_PACKAGE_JPEG),y)
+QTE_QTE_CONFIGURE:=$(QTE_QTE_CONFIGURE) -system-jpeg
+#FIXME: Do I need an else on this?
+endif
+
+ifeq ($(BR2_PACKAGE_LIBPNG),y)
+QTE_QTE_CONFIGURE:=$(QTE_QTE_CONFIGURE) -system-libpng
+else
+QTE_QTE_CONFIGURE:=$(QTE_QTE_CONFIGURE) -qt-libpng
+endif
+
+# as of 2005-08-17's snapshot, uClibc's pthread does NOT support pthread_yield, which is needed
+# for ffmpeg's qtopia-phone-2.1.1/src/3rdparty/plugins/codecs/libffmpeg/mediapacketbuffer.h:230
+# (also called at line 232).  ...so we have to disable ffmpeg
+QTE_QTOPIA_CONFIGURE:=$(QTE_QTOPIA_CONFIGURE) -without-libffmpeg
+
+QTE_QTOPIA_CONFIGURE:=$(QTE_QTOPIA_CONFIGURE) -L $(E2FSPROGS_DIR)/lib -I $(E2FSPROGS_DIR)/lib -luuid
+
+#############################################################
+#
+# Build portion
+#
+#############################################################
+
+ifneq ($(BR2_QTE_C_QTE_VERSION),$(BR2_QTE_C_QT3_VERSION))
+$(DL_DIR)/$(QTE_QT3_SOURCE):
+       $(WGET) -P $(DL_DIR) $(QTE_SITE)/$(@F)
+endif
+
+$(DL_DIR)/$(QTE_QTE_SOURCE) $(DL_DIR)/$(QTE_QVFB_SOURCE) $(DL_DIR)/$(QTE_QTOPIA_SOURCE):
+       $(WGET) -P $(DL_DIR) $(QTE_SITE)/$(@F)
+
+$(QTE_TMAKE_DIR)/.unpacked: $(DL_DIR)/$(QTE_TMAKE_SOURCE)
+       $(QTE_CAT) $(DL_DIR)/$(QTE_TMAKE_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+       touch $@
+
+ifneq ($(BR2_QTE_C_QTE_VERSION),$(BR2_QTE_C_QT3_VERSION))
+ $(QTE_QT3_DIR)/.unpacked: $(DL_DIR)/$(QTE_QT3_SOURCE)
+       $(QTE_CAT) $(DL_DIR)/$(QTE_QT3_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+       touch $@
+endif
+
+ $(QTE_QTE_DIR)/.unpacked: $(DL_DIR)/$(QTE_QTE_SOURCE)
+       $(QTE_CAT) $(DL_DIR)/$(QTE_QTE_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+       touch $@
+
+$(QTE_QVFB_DIR)/.unpacked: $(DL_DIR)/$(QTE_QVFB_SOURCE)
+       $(QTE_CAT) $(DL_DIR)/$(QTE_QVFB_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+       touch $@
+
+$(QTE_QTOPIA_DIR)/.unpacked: $(DL_DIR)/$(QTE_QTOPIA_SOURCE)
+       $(QTE_CAT) $(DL_DIR)/$(QTE_QTOPIA_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+       # Allow patches -- copy from busybox usage of kernel patcher
+       toolchain/patch-kernel.sh $(@D) package/qte qtopia-$(BR2_QTE_C_QTOPIA_VERSION)-\*.patch
+       touch $@
+
+
+# currently, this assumes that Qtopis is always involved.  The dependency fails and the cp is wrong if Qtopis is not selected.
+# I'll fix that later.
+$(QTE_QTE_DIR)/.configured: $(QTE_QTE_DIR)/.unpacked $(QTE_TMAKE_DIR)/.unpacked $(QTE_QTE_DIR)/$(QTE_UIC_BINARY) $(QTE_QTE_DIR)/$(QTE_QVFB_BINARY) $(QTE_QTOPIA_DIR)/.unpacked
+       cp $(QTE_QTOPIA_DIR)/src/qt/qconfig-qpe.h $(QTE_QTE_DIR)/src/tools/
+       (cd $(@D); export QTDIR=`pwd`; export TMAKEPATH=$(QTE_TMAKE_DIR)/lib/qws/linux-x86-g++; export PATH=$(STAGING_DIR)/bin:$$QTDIR/bin:$$PATH; export LD_LIBRARY_PATH=$$QTDIR/lib:$$LD_LIBRARY_PATH; echo 'yes' | \
+               $(TARGET_CONFIGURE_OPTS) CC_FOR_BUILD=$(HOSTCC) \
+               CFLAGS="$(TARGET_CFLAGS)" \
+               ./configure \
+               $(QTE_QTE_CONFIGURE) -qconfig qpe -keypad-mode -qvfb -depths 4,8,16,32 -xplatform $(BR2_QTE_CROSS_PLATFORM) \
+       );
+       touch $@
+
+ifneq ($(BR2_QTE_C_QTE_VERSION),$(BR2_QTE_C_QT3_VERSION))
+# this is a host-side build, so we don't use any staging dir stuff, nor any TARGET_CONFIGURE_OPTS
+$(QTE_QT3_DIR)/.configured: $(QTE_QT3_DIR)/.unpacked $(QTE_TMAKE_DIR)/.unpacked
+       (cd $(@D); export QTDIR=`pwd`; export TMAKEPATH=$(QTE_TMAKE_DIR)/lib/qws/linux-x86-g++; export PATH=$$QTDIR/bin:$$PATH; export LD_LIBRARY_PATH=$$QTDIR/lib:$$LD_LIBRARY_PATH; echo 'yes' | \
+               CC_FOR_BUILD=$(HOSTCC) \
+               ./configure \
+               -fast $(QTE_QT3_CONFIGURE) \
+       );
+       touch $@
+endif
+
+$(QTE_QVFB_DIR)/.configured: $(QTE_QVFB_DIR)/.unpacked $(QTE_TMAKE_DIR)/.unpacked
+       (cd $(@D); export QTDIR=`pwd`; export TMAKEPATH=$(QTE_TMAKE_DIR)/lib/linux-g++; export $$QTDIR/bin:$$PATH; export LD_LIBRARY_PATH=$$QTDIR/lib:$$LD_LIBRARY_PATH; echo 'yes' | \
+               $(TARGET_CONFIGURE_OPTS) CC_FOR_BUILD=$(HOSTCC) \
+               CFLAGS="$(TARGET_CFLAGS)" \
+               ./configure \
+               $(QTE_QVFB_CONFIGURE) \
+       );
+       touch $@
+
+# --edition {other}
+# This has some kooky logic.  Qtopia requires a Qt <= 3.3.0 to build, yet we like to use s Qt-2.3.x for size constraints on an embedded device
+# This target depends on both $(QTE_QTE_DIR)/$(QTE_UIC_BINARY) **and** $(QTE_QT3_DIR)/.configured.   if BR2_QTE_C_QTE_VERSION == BR2_QTE_C_QT3_VERSION,
+# then it really depends on $(QTE_QTE_DIR)/.configured, which $(QTE_QTE_DIR)/$(QTE_UIC_BINARY) needs, so it's redundant.  If QTE is 3.3.0 or later,
+# then BR2_QTE_C_QTE_VERSION != BR2_QTE_C_QT3_VERSION, then we need to unpack the other Qt/E, so this dependency is not redundant.
+
+$(QTE_QTOPIA_DIR)/.configured: $(QTE_QTOPIA_DIR)/.unpacked $(QTE_TMAKE_DIR)/.unpacked $(QTE_QTE_DIR)/$(QTE_UIC_BINARY) $(QTE_QTE_DIR)/$(QTE_QVFB_BINARY) $(QTE_QT3_DIR)/.configured
+       (cd $(@D); export QTDIR=$(QTE_QTE_DIR); export QPEDIR=$(QTE_QTOPIA_DIR); export PATH=$(STAGING_DIR)/bin:$$QTDIR/bin:$$PATH; QT3DIR=$(QTE_QTE_DIR); echo 'yes' | \
+               $(TARGET_CONFIGURE_OPTS) CC_FOR_BUILD=$(HOSTCC) \
+               CFLAGS="$(TARGET_CFLAGS)" \
+               ./configure \
+               $(QTE_QTOPIA_CONFIGURE) --edition phone -no-qtopiadesktop -dqt $(QTE_QT3_DIR) -arch generic -displaysize 160-240 -languages en_US \
+               -platform linux-g++ -qvfb -xplatform $(BR2_QTE_CROSS_PLATFORM) \
+       );
+       touch $@
+
+# there is no build for tmake, only unpack
+$(TMAKE): $(QTE_TMAKE_DIR)/.unpacked
+
+# This must NOT use TARGET_CC -- it is a host-side tool
+$(QTE_QVFB_DIR)/.make: $(QTE_QVFB_DIR)/.configured $(TMAKE)
+       #$(TARGET_CONFIGURE_OPTS)
+       export QTDIR=$(QTE_QVFB_DIR); export PATH=$$QTDIR/bin:$$PATH; \
+       $(MAKE) -C $(QTE_QVFB_DIR) src-moc
+       touch $@
+
+$(QTE_QTE_DIR)/$(QTE_UIC_BINARY): $(QTE_QVFB_DIR)/.make $(QTE_QTE_DIR)/.unpacked
+       export QTDIR=$(QTE_QVFB_DIR); export PATH=$$QTDIR/bin:$$PATH; \
+       $(MAKE) -C $(QTE_QVFB_DIR)/tools/designer/uic
+       test -d $(@D) || install -dm 0755 $(@D)
+       install -m 0755 $(QTE_QVFB_DIR)/bin/$(@F) $@
+
+ifneq ($(BR2_QTE_C_QTE_VERSION),$(BR2_QTE_C_QT3_VERSION))
+$(QTE_QT3_DIR)/.make: $(QTE_QT3_DIR)/.unpacked
+       ( export QTDIR=$(QTE_QT3_DIR); export PATH=$$QTDIR/bin:$$PATH; export LD_LIBRARY_PATH=$$QTDIR/lib:$$LD_LIBRARY_PATH; \
+       $(MAKE) -C $(QTE_QT3_DIR) sub-src && \
+       $(MAKE) -C $(QTE_QT3_DIR)/tools/linguist/lrelease \
+       $(MAKE) -C $(QTE_QT3_DIR)/tools/linguist/lupdate \
+       $(MAKE) -C $(QTE_QT3_DIR)/tools/designer/uilib \
+       $(MAKE) -C $(QTE_QT3_DIR)/tools/designer/uic
+       );
+       touch $@
+endif
+
+$(QTE_QTE_DIR)/$(QTE_QVFB_BINARY): $(QTE_QVFB_DIR)/.make $(QTE_QTE_DIR)/.unpacked $(TMAKE)
+       (cd $(QTE_QVFB_DIR)/tools/qvfb && TMAKEPATH=$(QTE_TMAKE_DIR)/lib/linux-g++ $(TMAKE) -o Makefile qvfb.pro)
+       #$(TARGET_CONFIGURE_OPTS)
+       export QTDIR=$(QTE_QVFB_DIR); export PATH=$$QTDIR/bin:$$PATH; \
+       $(MAKE) -C $(QTE_QVFB_DIR)/tools/qvfb
+       test -d $(@D) || install -dm 0755 $(@D)
+       install -m 0755 $(QTE_QVFB_DIR)/tools/qvfb/$(@F) $@
+
+$(QTE_QTE_DIR)/src-mt.mk: $(QTE_QTE_DIR)/.configured
+       # I don't like the src-mk that gets built, so blow it away.  Too many includes to override yet
+       echo "SHELL=/bin/sh" > $@
+       echo "" >> $@
+       echo "src-mt:" >> $@
+       echo "  cd src; "'$$(MAKE)'" 'QT_THREAD_SUFFIX=-mt' 'QT_LFLAGS_MT="'$$$$(SYSCONF_LFLAGS_THREAD)'" "'$$$$(SYSCONF_LIBS_THREAD)'"' 'QT_CXX_MT="'$$$$(SYSCONF_CXXFLAGS_THREAD)'" -DQT_THREAD_SUPPORT' 'QT_C_MT="'$$$$(SYSCONF_CFLAGS_THREAD)'" -DQT_THREAD_SUPPORT'" >> $@
+
+$(QTE_QTE_LIB): $(QTE_QTE_DIR)/src-mt.mk
+       export QTDIR=$(QTE_QTE_DIR); export QPEDIR=$(QTE_QTOPIA_DIR); export PATH=$(STAGING_DIR)/bin:$$QTDIR/bin:$$PATH; \
+       $(TARGET_CONFIGURE_OPTS) $(MAKE) $(TARGET_CC) -C $(QTE_QTE_DIR) src-mt
+       $(TARGET_CONFIGURE_OPTS) $(MAKE) $(TARGET_CC) DESTDIR=$(TARGET_DIR)/lib -C $(QTE_QTE_DIR) src-mt
+       # ... and make sure it actually built... grrr... make deep-deep-deep makefile recursion for this habit
+       test -f $@
+
+$(QTE_QTOPIA_FILE): $(QTE_QTOPIA_DIR)/.configured
+       export QTDIR=$(QTE_QT3_DIR); export QPEDIR=$(QTE_QTOPIA_DIR); export PATH=$(STAGING_DIR)/bin:$$QTDIR/bin:$$PATH; \
+       $(TARGET_CONFIGURE_OPTS) $(MAKE) CC=$(TARGET_CC) -C $(QTE_QTOPIA_DIR)
+
+$(QTE_QTOPIA_IFILE): $(QTE_QTOPIA_FILE)
+       export QTDIR=$(QTE_QT3_DIR); export QPEDIR=$(QTE_QTOPIA_DIR); export PATH=$(STAGING_DIR)/bin:$$QTDIR/bin:$$PATH; \
+       $(TARGET_CONFIGURE_OPTS) $(MAKE) CC=$(TARGET_CC) -C $(QTE_QTOPIA_DIR) install PREFIX=$(TARGET_DIR)
+
+
+qte:: $(QTE_QTE_LIB)
+
+ifeq ($(strip $(BR2_PACKAGE_QTE_QTOPIA)),y)
+qte:: $(QTE_QTOPIA_IFILE)
+endif
+
+# kinda no-op right now, these are built anyhow
+ifeq ($(strip $(BR2_PACKAGE_QTE_QVFB)),y)
+qte:: $(QTE_QTE_DIR)/$(QTE_UIC_BINARY) $(QTE_QTE_DIR)/$(QTE_QVFB_BINARY)
+endif
+
+qte-clean:
+       rm -f $(QTE_QTE_DIR)/$(QTE_UIC_BINARY) $(QTE_QTE_DIR)/$(QTE_QVFB_BINARY) $(QTE_QTE_LIB) $(QTE_QTOPIA_FILE)
+       -$(MAKE) -C $(QTE_QTE_DIR) clean
+       -$(MAKE) -C $(QTE_QVFB_DIR) clean
+       -$(MAKE) -C $(QTE_QTOPIA_DIR) clean
+
+qte-dirclean:
+       rm -rf $(QTE_QTE_DIR) $(QTE_QVFB_DIR) $(QTE_QTOPIA_DIR)
+#############################################################
+#
+# Toplevel Makefile options
+#
+#############################################################
+ifeq ($(strip $(BR2_PACKAGE_QTE)),y)
+TARGETS+=qte
+endif
diff --git a/package/qte/qtopia-2.1.1-no-programinvocation.patch b/package/qte/qtopia-2.1.1-no-programinvocation.patch
new file mode 100644 (file)
index 0000000..ec3cccd
--- /dev/null
@@ -0,0 +1,24 @@
+Qtopia includes a hard-coded config.h file that must have been built by ./configure at some point in its life.
+Nevertheless, this file now conflicts with what uClibc provides, so we need to patch it for some more sane
+Operation.  This change is required for rsync, the only thing I found using program_invocation_short_name
+
+diff -cr qtopia-phone-2.1.1/src/3rdparty/libraries/rsync/config_linux.h qtopia-phone-2.1.1-orig/src/3rdparty/libraries/rsync/config_linux.h
+*** qtopia-phone-2.1.1/src/3rdparty/libraries/rsync/config_linux.h     2005-08-18 23:23:00.000000000 +0800
+--- qtopia-phone-2.1.1/src/3rdparty/libraries/rsync/config_linux.h     2005-08-18 23:05:17.000000000 +0800
+***************
+*** 23,29 ****
+  #define _GNU_SOURCE 1
+  
+  /* GNU extension of saving argv[0] to program_invocation_short_name */
+! #define HAVE_PROGRAM_INVOCATION_NAME 1
+  
+  /* Define to a replacement type if intmax_t is not a builtin, or in
+     sys/types.h or stdlib.h or stddef.h */
+--- 23,29 ----
+  #define _GNU_SOURCE 1
+  
+  /* GNU extension of saving argv[0] to program_invocation_short_name */
+! /* #undef HAVE_PROGRAM_INVOCATION_NAME */
+  
+  /* Define to a replacement type if intmax_t is not a builtin, or in
+     sys/types.h or stdlib.h or stddef.h */