summaryrefslogtreecommitdiff
path: root/recipes/obsolete
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
committerDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
commit709c4d66e0b107ca606941b988bad717c0b45d9b (patch)
tree37ee08b1eb308f3b2b6426d5793545c38396b838 /recipes/obsolete
parentfa6cd5a3b993f16c27de4ff82b42684516d433ba (diff)
rename packages/ to recipes/ per earlier agreement
See links below for more details: http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326 http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816 Signed-off-by: Denys Dmytriyenko <denis@denix.org> Acked-by: Mike Westerhof <mwester@dls.net> Acked-by: Philip Balister <philip@balister.org> Acked-by: Khem Raj <raj.khem@gmail.com> Acked-by: Marcin Juszkiewicz <hrw@openembedded.org> Acked-by: Koen Kooi <koen@openembedded.org> Acked-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Diffstat (limited to 'recipes/obsolete')
-rw-r--r--recipes/obsolete/antlr/antlr-native_2.7.5.bb8
-rw-r--r--recipes/obsolete/antlr/antlr_2.7.5.bb26
-rw-r--r--recipes/obsolete/antlr/files/install.patch186
-rw-r--r--recipes/obsolete/dbus/dbus-0.34/dbus-1.init86
-rw-r--r--recipes/obsolete/dbus/dbus-0.50/dbus-1.init86
-rw-r--r--recipes/obsolete/dbus/dbus-0.50/no-bindings.patch12
-rw-r--r--recipes/obsolete/dbus/dbus-0.50/no-introspect.patch14
-rw-r--r--recipes/obsolete/dbus/dbus-native_0.34.bb16
-rw-r--r--recipes/obsolete/dbus/dbus-native_0.50.bb19
-rw-r--r--recipes/obsolete/dbus/dbus_0.20.bb32
-rw-r--r--recipes/obsolete/dbus/dbus_0.21.bb69
-rw-r--r--recipes/obsolete/dbus/dbus_0.22.bb72
-rw-r--r--recipes/obsolete/dbus/dbus_0.23.1-osso5.bb73
-rw-r--r--recipes/obsolete/dbus/dbus_0.23.4.bb63
-rw-r--r--recipes/obsolete/dbus/dbus_0.23.bb63
-rw-r--r--recipes/obsolete/dbus/dbus_0.34.bb14
-rw-r--r--recipes/obsolete/dbus/dbus_0.34.inc65
-rw-r--r--recipes/obsolete/dbus/dbus_0.50.bb14
-rw-r--r--recipes/obsolete/dbus/dbus_0.50.inc65
-rw-r--r--recipes/obsolete/gaim/files/01-optional-icons-in-dialogs.patch514
-rw-r--r--recipes/obsolete/gaim/files/02-request-field-dialogs.patch116
-rw-r--r--recipes/obsolete/gaim/files/03-blist-dialogs.patch240
-rw-r--r--recipes/obsolete/gaim/files/04-saved-status-dialogs.patch40
-rw-r--r--recipes/obsolete/gaim/files/05-statusbox-icon-size.patch11
-rw-r--r--recipes/obsolete/gaim/files/06-account-dialogs.patch219
-rw-r--r--recipes/obsolete/gaim/files/07-roomlist-dialog.patch67
-rw-r--r--recipes/obsolete/gaim/files/08-prefs-dialog.patch64
-rw-r--r--recipes/obsolete/gaim/files/09-filetransfer-dialog.patch52
-rw-r--r--recipes/obsolete/gaim/files/10-pda-default-settings.patch13
-rw-r--r--recipes/obsolete/gaim/files/define-pda-mode.patch36
-rw-r--r--recipes/obsolete/gaim/files/desktop-name-2.0.0.patch27
-rw-r--r--recipes/obsolete/gaim/files/desktop-name.patch10
-rw-r--r--recipes/obsolete/gaim/files/desktop-name_1.4.0.patch11
-rw-r--r--recipes/obsolete/gaim/files/desktop-name_1.5.0.patch11
-rw-r--r--recipes/obsolete/gaim/files/docklet-icon-size.patch13
-rw-r--r--recipes/obsolete/gaim/files/gaim-OE-branding.patch11
-rw-r--r--recipes/obsolete/gaim/files/gevolution-eds-dbus.patch53
-rw-r--r--recipes/obsolete/gaim/files/gtk-deprecated-2.0.0.patch13
-rw-r--r--recipes/obsolete/gaim/files/no-superimposed-version-on-logo.patch19
-rw-r--r--recipes/obsolete/gaim/files/series14
-rw-r--r--recipes/obsolete/gaim/gaim.inc35
-rw-r--r--recipes/obsolete/gaim/gaim_1.0.3.bb6
-rw-r--r--recipes/obsolete/gaim/gaim_1.1.0.bb6
-rw-r--r--recipes/obsolete/gaim/gaim_1.1.1.bb6
-rw-r--r--recipes/obsolete/gaim/gaim_1.1.2.bb9
-rw-r--r--recipes/obsolete/gaim/gaim_1.4.0.bb9
-rw-r--r--recipes/obsolete/gaim/gaim_1.5.0.bb9
-rw-r--r--recipes/obsolete/gaim/gaim_2.0.0-cvs-mco1.bb44
-rw-r--r--recipes/obsolete/libsdl/libsdl-qpe-1.2.7/SDL-Akita.patch37
-rw-r--r--recipes/obsolete/libsdl/libsdl-qpe-1.2.7/acinclude.m4189
-rw-r--r--recipes/obsolete/libsdl/libsdl-qpe-1.2.7/agawa-piro-mickey.patch2065
-rw-r--r--recipes/obsolete/libsdl/libsdl-qpe-1.2.7/fixlibs.patch25
-rw-r--r--recipes/obsolete/libsdl/libsdl-qpe-1.2.7/gcc34.patch176
-rw-r--r--recipes/obsolete/libsdl/libsdl-qpe-1.2.7/ipaq.patch143
-rw-r--r--recipes/obsolete/libsdl/libsdl-qpe-1.2.7/kill-stdc++.patch408
-rw-r--r--recipes/obsolete/libsdl/libsdl-qpe-1.2.7/mouse.patch47
-rw-r--r--recipes/obsolete/libsdl/libsdl-qpe-1.2.7/pygame.patch196
-rw-r--r--recipes/obsolete/libsdl/libsdl-qpe_1.2.7.bb57
-rw-r--r--recipes/obsolete/maemo/osso-gnome-vfs2/gconftool-lossage.patch11
-rw-r--r--recipes/obsolete/maemo/osso-gnome-vfs2_2.8.4.4-1.bb92
-rw-r--r--recipes/obsolete/olsr/files/0.4.9-httpinfo-makefile.diff296
-rw-r--r--recipes/obsolete/olsr/files/lib.diff23
-rw-r--r--recipes/obsolete/olsr/olsr_0.3-1.bb8
-rw-r--r--recipes/obsolete/olsr/olsrd_0.4.10.bb2
-rw-r--r--recipes/obsolete/olsr/olsrd_0.4.8.bb36
-rw-r--r--recipes/obsolete/olsr/olsrd_0.4.9.bb11
-rw-r--r--recipes/obsolete/olsr/olsrd_cvs.bb39
-rw-r--r--recipes/obsolete/quilt/quilt-0.39/non-gnu.patch13
-rw-r--r--recipes/obsolete/quilt/quilt-0.39/nostrip.patch16
-rw-r--r--recipes/obsolete/quilt/quilt-native_0.39.bb2
-rw-r--r--recipes/obsolete/quilt/quilt_0.39.bb7
-rw-r--r--recipes/obsolete/quilt/quilt_0.39.inc5
-rw-r--r--recipes/obsolete/tasks/task-bootstrap-unionroot.bb33
-rw-r--r--recipes/obsolete/tasks/task-bootstrap.bb26
-rw-r--r--recipes/obsolete/tasks/task-bootstrap.inc9
-rw-r--r--recipes/obsolete/wesnoth_svn.bb19
76 files changed, 6652 insertions, 0 deletions
diff --git a/recipes/obsolete/antlr/antlr-native_2.7.5.bb b/recipes/obsolete/antlr/antlr-native_2.7.5.bb
new file mode 100644
index 0000000000..77cb88c7e7
--- /dev/null
+++ b/recipes/obsolete/antlr/antlr-native_2.7.5.bb
@@ -0,0 +1,8 @@
+require antlr_${PV}.bb
+inherit native
+
+# A native antlr would need a native java virtual machine..
+# eww. -CL
+DEPENDS = "virtual/java-native"
+RDEPENDS= "virtual/java-native"
+BROKEN = "1"
diff --git a/recipes/obsolete/antlr/antlr_2.7.5.bb b/recipes/obsolete/antlr/antlr_2.7.5.bb
new file mode 100644
index 0000000000..f61b3a0b87
--- /dev/null
+++ b/recipes/obsolete/antlr/antlr_2.7.5.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "ANother Tool for Language Recognition, (formerly PCCTS) is a \
+language tool that provides a framework for constructing recognizers, \
+compilers, and translators from grammatical descriptions containing \
+Java, C#, C++, or Python actions."
+LICENSE = "PD"
+PRIORITY = "optional"
+SECTION = "devel"
+# DEPENDS += "virtual/java"
+RDEPENDS += "java-virtual-machine"
+
+SRC_URI = "http://www.antlr.org/download/antlr-${PV}.tar.gz \
+ file://install.patch;patch=1"
+S = "${WORKDIR}/antlr-${PV}"
+
+inherit autotools
+
+EXTRA_OECONF += "--disable-java --enable-cxx \
+ --disable-python --disable-csharp \
+ --disable-verbose --disable-examples"
+
+do_configure () {
+ if [ ! -e acinclude.m4 ]; then
+ mv aclocal.m4 acinclude.m4
+ fi
+ autotools_do_configure
+}
diff --git a/recipes/obsolete/antlr/files/install.patch b/recipes/obsolete/antlr/files/install.patch
new file mode 100644
index 0000000000..3ab0932673
--- /dev/null
+++ b/recipes/obsolete/antlr/files/install.patch
@@ -0,0 +1,186 @@
+Index: antlr-2.7.5/Makefile.in
+===================================================================
+--- antlr-2.7.5.orig/Makefile.in 2005-01-28 15:45:42.000000000 -0600
++++ antlr-2.7.5/Makefile.in 2005-02-18 12:53:15.000000000 -0600
+@@ -123,16 +123,16 @@
+ extradir = $(datadir)/$(versioneddir)
+
+ install ::
+- $(MKDIR) -p "$(bindir)"
+- $(MKDIR) -p "$(extradir)"
+- $(MKDIR) -p "$(docdir)"
+- $(INSTALL) -m 755 scripts/run-antlr "$(bindir)/antlr"
+- $(INSTALL) -m 755 scripts/antlr-config "$(bindir)/antlr-config"
+- $(INSTALL) -m 444 @abs_top_srcdir@/extras/antlr-mode.el "$(extradir)"
+- $(INSTALL) -m 444 @abs_top_srcdir@/extras/antlr-jedit.xml "$(extradir)"
+- $(INSTALL) -m 444 @abs_top_srcdir@/LICENSE.txt "$(docdir)"
+- $(INSTALL) -m 444 @abs_top_srcdir@/README.txt "$(docdir)"
+- $(INSTALL) -m 444 @abs_top_srcdir@/INSTALL.txt "$(docdir)"
++ $(MKDIR) -p "$(DESTDIR)$(bindir)"
++ $(MKDIR) -p "$(DESTDIR)$(extradir)"
++ $(MKDIR) -p "$(DESTDIR)$(docdir)"
++ $(INSTALL) -m 755 scripts/run-antlr "$(DESTDIR)$(bindir)/antlr"
++ $(INSTALL) -m 755 scripts/antlr-config "$(DESTDIR)$(bindir)/antlr-config"
++ $(INSTALL) -m 444 @abs_top_srcdir@/extras/antlr-mode.el "$(DESTDIR)$(extradir)"
++ $(INSTALL) -m 444 @abs_top_srcdir@/extras/antlr-jedit.xml "$(DESTDIR)$(extradir)"
++ $(INSTALL) -m 444 @abs_top_srcdir@/LICENSE.txt "$(DESTDIR)$(docdir)"
++ $(INSTALL) -m 444 @abs_top_srcdir@/README.txt "$(DESTDIR)$(docdir)"
++ $(INSTALL) -m 444 @abs_top_srcdir@/INSTALL.txt "$(DESTDIR)$(docdir)"
+
+ install ::
+ echo "installation done"
+Index: antlr-2.7.5/doc/Makefile.in
+===================================================================
+--- antlr-2.7.5.orig/doc/Makefile.in 2005-01-28 15:13:19.000000000 -0600
++++ antlr-2.7.5/doc/Makefile.in 2005-02-18 12:50:51.000000000 -0600
+@@ -43,12 +43,12 @@
+ $(eol)
+
+ install ::
+- @$(MKDIR) -p "$(antlr_doc_DIR)"
++ @$(MKDIR) -p "$(DESTDIR)$(antlr_doc_DIR)"
+ @echo "install doc files .. "
+ @for f in $(antlr_doc_FILES) ; do \
+ echo "install $${f}" ; \
+ if test -f "$${f}" ; then \
+- $(INSTALL) -m 444 "$${f}" "$(antlr_doc_DIR)" ; \
++ $(INSTALL) -m 444 "$${f}" "$(DESTDIR)$(antlr_doc_DIR)" ; \
+ fi ;\
+ done
+
+Index: antlr-2.7.5/lib/csharp/src/Makefile.in
+===================================================================
+--- antlr-2.7.5.orig/lib/csharp/src/Makefile.in 2005-01-28 15:13:23.000000000 -0600
++++ antlr-2.7.5/lib/csharp/src/Makefile.in 2005-02-18 12:51:54.000000000 -0600
+@@ -134,13 +134,13 @@
+ distclean :: clean
+
+ install :: @ANTLR_NET@
+- @$(MKDIR) -p "$(libdir)"
++ @$(MKDIR) -p "$(DESTDIR)$(libdir)"
+ @echo "install C# core files .. "
+ @for f in @ANTLR_NET@ ; do \
+ echo "install $${f}" ; \
+ if test -f "$${f}" ; then \
+- $(INSTALL) -m 444 "$${f}" "$(libdir)" ; \
+- $(INSTALL) -m 444 "$${f}" "$(datadir)/$(versioneddir)" ; \
++ $(INSTALL) -m 444 "$${f}" "$(DESTDIR)$(libdir)" ; \
++ $(INSTALL) -m 444 "$${f}" "$(DESTDIR)$(datadir)/$(versioneddir)" ; \
+ fi ;\
+ done
+
+Index: antlr-2.7.5/lib/csharp/ASTFrame/Makefile.in
+===================================================================
+--- antlr-2.7.5.orig/lib/csharp/ASTFrame/Makefile.in 2005-01-28 15:13:23.000000000 -0600
++++ antlr-2.7.5/lib/csharp/ASTFrame/Makefile.in 2005-02-18 12:51:38.000000000 -0600
+@@ -46,13 +46,13 @@
+
+ ## install our target ..
+ install :: @ASTFRAME_NET@
+- @$(MKDIR) -p "$(libdir)"
++ @$(MKDIR) -p "$(DESTDIR)$(libdir)"
+ @echo "install C# core files .. "
+ @for f in @ASTFRAME_NET@ ; do \
+ echo "install $${f}" ; \
+ if test -f "$${f}" ; then \
+- $(INSTALL) -m 444 "$${f}" "$(libdir)" ; \
+- $(INSTALL) -m 444 "$${f}" "$(datadir)/$(versioneddir)" ; \
++ $(INSTALL) -m 444 "$${f}" "$(DESTDIR)$(libdir)" ; \
++ $(INSTALL) -m 444 "$${f}" "$(DESTDIR)$(datadir)/$(versioneddir)" ; \
+ fi ;\
+ done
+
+Index: antlr-2.7.5/lib/cpp/antlr/Makefile.in
+===================================================================
+--- antlr-2.7.5.orig/lib/cpp/antlr/Makefile.in 2005-01-28 15:13:23.000000000 -0600
++++ antlr-2.7.5/lib/cpp/antlr/Makefile.in 2005-02-18 12:51:03.000000000 -0600
+@@ -74,11 +74,11 @@
+
+ install:
+ @echo "install hpp files .. "
+- @$(MKDIR) -p "$(includedir)/antlr"
++ @$(MKDIR) -p "$(DESTDIR)$(includedir)/antlr"
+ @for f in $(antlr_hpp_FILES) ; do \
+ echo "install $${f}" ; \
+ if test -f "$${f}" ; then \
+- $(INSTALL) -m 444 "$${f}" "$(includedir)/antlr" ; \
++ $(INSTALL) -m 444 "$${f}" "$(DESTDIR)$(includedir)/antlr" ; \
+ fi ;\
+ done
+
+Index: antlr-2.7.5/lib/cpp/src/Makefile.in
+===================================================================
+--- antlr-2.7.5.orig/lib/cpp/src/Makefile.in 2005-01-28 15:13:23.000000000 -0600
++++ antlr-2.7.5/lib/cpp/src/Makefile.in 2005-02-18 12:51:21.000000000 -0600
+@@ -113,12 +113,12 @@
+ $(eol)
+
+ this-install: @ANTLR_LIB@
+- @$(MKDIR) -p "$(libdir)"
++ @$(MKDIR) -p "$(DESTDIR)$(libdir)"
+ @echo "install C++ core files .. "
+ @for f in $(antlr_lib_FILES) ; do \
+ echo "install $${f}" ; \
+ if test -f "$${f}" ; then \
+- $(INSTALL) -m 444 "$${f}" "$(libdir)" ; \
++ $(INSTALL) -m 444 "$${f}" "$(DESTDIR)$(libdir)" ; \
+ fi ;\
+ done
+
+Index: antlr-2.7.5/antlr/Makefile.in
+===================================================================
+--- antlr-2.7.5.orig/antlr/Makefile.in 2005-01-28 15:13:18.000000000 -0600
++++ antlr-2.7.5/antlr/Makefile.in 2005-02-18 12:50:34.000000000 -0600
+@@ -314,11 +314,11 @@
+
+ ## install antlr.jar in libdirectory if exists
+ install :: @ANTLR_JAR@
+- -$(MKDIR) -p "$(libdir)"
+- -$(MKDIR) -p "$(datadir)/$(versioneddir)"
++ -$(MKDIR) -p "$(DESTDIR)$(libdir)"
++ -$(MKDIR) -p "$(DESTDIR)$(datadir)/$(versioneddir)"
+ -test -f @ANTLR_JAR@ && {\
+- $(INSTALL) -m 444 @ANTLR_JAR@ "$(datadir)/$(versioneddir)" ; \
+- $(INSTALL) -m 444 @ANTLR_JAR@ "$(libdir)" ; \
++ $(INSTALL) -m 444 @ANTLR_JAR@ "$(DESTDIR)$(datadir)/$(versioneddir)" ; \
++ $(INSTALL) -m 444 @ANTLR_JAR@ "$(DESTDIR)$(libdir)" ; \
+ }
+
+ ## get configured dependencies
+Index: antlr-2.7.5/lib/python/Makefile.in
+===================================================================
+--- antlr-2.7.5.orig/lib/python/Makefile.in 2005-01-28 15:13:24.000000000 -0600
++++ antlr-2.7.5/lib/python/Makefile.in 2005-02-18 12:52:50.000000000 -0600
+@@ -41,26 +41,26 @@
+ extradir = $(datadir)/$(versioneddir)
+
+ install-this:
+- $(MKDIR) -p "$(antlr_py_DIR)"
+- $(MKDIR) -p "$(libdir)"
++ $(MKDIR) -p "$(DESTDIR)$(antlr_py_DIR)"
++ $(MKDIR) -p "$(DESTDIR)$(libdir)"
+ @echo "install python files .. "
+ @for f in $(antlr_py_FILES) ; do \
+ echo "install $${f}" ; \
+ if test -f "$${f}" ; then \
+- $(INSTALL) -m 444 "$${f}" "$(libdir)" ; \
++ $(INSTALL) -m 444 "$${f}" "$(DESTDIR)$(libdir)" ; \
+ fi ;\
+ done
+ @for f in $(antlr_py1_FILES) ; do \
+ echo "install $${f}" ; \
+ if test -f "$${f}" ; then \
+- $(INSTALL) -m 444 "$${f}" "$(antlr_py_DIR)" ; \
++ $(INSTALL) -m 444 "$${f}" "$(DESTDIR)$(antlr_py_DIR)" ; \
+ fi ;\
+ done
+ @f="$(objdir)/scripts/pyantlr.sh"; \
+ if test -f "$${f}" ; then \
+ echo "install Python installer" ; \
+- $(MKDIR) -p "$(sbindir)" ; \
+- $(INSTALL) -m 555 "$${f}" "$(sbindir)" ; \
++ $(MKDIR) -p "$(DESTDIR)$(sbindir)" ; \
++ $(INSTALL) -m 555 "$${f}" "$(DESTDIR)$(sbindir)" ; \
+ fi
+
+
diff --git a/recipes/obsolete/dbus/dbus-0.34/dbus-1.init b/recipes/obsolete/dbus/dbus-0.34/dbus-1.init
new file mode 100644
index 0000000000..60440b7223
--- /dev/null
+++ b/recipes/obsolete/dbus/dbus-0.34/dbus-1.init
@@ -0,0 +1,86 @@
+#! /bin/sh
+# -*- coding: utf-8 -*-
+# Debian init.d script for D-BUS
+# Copyright © 2003 Colin Walters <walters@debian.org>
+
+set -e
+
+DAEMON=/usr/bin/dbus-daemon
+NAME=dbus-1
+DAEMONUSER=messagebus
+PIDDIR=/var/run/dbus
+PIDFILE=$PIDDIR/pid
+DESC="system message bus"
+EVENTDIR=/etc/dbus-1/event.d
+
+test -x $DAEMON || exit 0
+
+# Source defaults file; edit that file to configure this script.
+ENABLED=1
+PARAMS=""
+if [ -e /etc/default/dbus-1 ]; then
+ . /etc/default/dbus-1
+fi
+
+test "$ENABLED" != "0" || exit 0
+
+start_it_up()
+{
+ if [ ! -d $PIDDIR ]; then
+ mkdir -p $PIDDIR
+ chown $DAEMONUSER $PIDDIR
+ chgrp $DAEMONUSER $PIDDIR
+ fi
+ if [ -e $PIDFILE ]; then
+ PIDDIR=/proc/$(cat $PIDFILE)
+ if [ -d ${PIDDIR} -a "$(readlink -f ${PIDDIR}/exe)" = "${DAEMON}" ]; then
+ echo "$DESC already started; not starting."
+ else
+ echo "Removing stale PID file $PIDFILE."
+ rm -f $PIDFILE
+ fi
+ fi
+ echo -n "Starting $DESC: "
+ start-stop-daemon --start --quiet --pidfile $PIDFILE \
+ --user $DAEMONUSER --exec $DAEMON -- --system $PARAMS
+ echo "$NAME."
+ if [ -d $EVENTDIR ]; then
+ run-parts --arg=start $EVENTDIR
+ fi
+}
+
+shut_it_down()
+{
+ if [ -d $EVENTDIR ]; then
+ run-parts --reverse --arg=stop $EVENTDIR
+ fi
+ echo -n "Stopping $DESC: "
+ start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+ --user $DAEMONUSER
+ # We no longer include these arguments so that start-stop-daemon
+ # can do its job even given that we may have been upgraded.
+ # We rely on the pidfile being sanely managed
+ # --exec $DAEMON -- --system $PARAMS
+ echo "$NAME."
+ rm -f $PIDFILE
+}
+
+case "$1" in
+ start)
+ start_it_up
+ ;;
+ stop)
+ shut_it_down
+ ;;
+ restart|force-reload)
+ shut_it_down
+ sleep 1
+ start_it_up
+ ;;
+ *)
+ echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/recipes/obsolete/dbus/dbus-0.50/dbus-1.init b/recipes/obsolete/dbus/dbus-0.50/dbus-1.init
new file mode 100644
index 0000000000..60440b7223
--- /dev/null
+++ b/recipes/obsolete/dbus/dbus-0.50/dbus-1.init
@@ -0,0 +1,86 @@
+#! /bin/sh
+# -*- coding: utf-8 -*-
+# Debian init.d script for D-BUS
+# Copyright © 2003 Colin Walters <walters@debian.org>
+
+set -e
+
+DAEMON=/usr/bin/dbus-daemon
+NAME=dbus-1
+DAEMONUSER=messagebus
+PIDDIR=/var/run/dbus
+PIDFILE=$PIDDIR/pid
+DESC="system message bus"
+EVENTDIR=/etc/dbus-1/event.d
+
+test -x $DAEMON || exit 0
+
+# Source defaults file; edit that file to configure this script.
+ENABLED=1
+PARAMS=""
+if [ -e /etc/default/dbus-1 ]; then
+ . /etc/default/dbus-1
+fi
+
+test "$ENABLED" != "0" || exit 0
+
+start_it_up()
+{
+ if [ ! -d $PIDDIR ]; then
+ mkdir -p $PIDDIR
+ chown $DAEMONUSER $PIDDIR
+ chgrp $DAEMONUSER $PIDDIR
+ fi
+ if [ -e $PIDFILE ]; then
+ PIDDIR=/proc/$(cat $PIDFILE)
+ if [ -d ${PIDDIR} -a "$(readlink -f ${PIDDIR}/exe)" = "${DAEMON}" ]; then
+ echo "$DESC already started; not starting."
+ else
+ echo "Removing stale PID file $PIDFILE."
+ rm -f $PIDFILE
+ fi
+ fi
+ echo -n "Starting $DESC: "
+ start-stop-daemon --start --quiet --pidfile $PIDFILE \
+ --user $DAEMONUSER --exec $DAEMON -- --system $PARAMS
+ echo "$NAME."
+ if [ -d $EVENTDIR ]; then
+ run-parts --arg=start $EVENTDIR
+ fi
+}
+
+shut_it_down()
+{
+ if [ -d $EVENTDIR ]; then
+ run-parts --reverse --arg=stop $EVENTDIR
+ fi
+ echo -n "Stopping $DESC: "
+ start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+ --user $DAEMONUSER
+ # We no longer include these arguments so that start-stop-daemon
+ # can do its job even given that we may have been upgraded.
+ # We rely on the pidfile being sanely managed
+ # --exec $DAEMON -- --system $PARAMS
+ echo "$NAME."
+ rm -f $PIDFILE
+}
+
+case "$1" in
+ start)
+ start_it_up
+ ;;
+ stop)
+ shut_it_down
+ ;;
+ restart|force-reload)
+ shut_it_down
+ sleep 1
+ start_it_up
+ ;;
+ *)
+ echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/recipes/obsolete/dbus/dbus-0.50/no-bindings.patch b/recipes/obsolete/dbus/dbus-0.50/no-bindings.patch
new file mode 100644
index 0000000000..ccfc3f88b2
--- /dev/null
+++ b/recipes/obsolete/dbus/dbus-0.50/no-bindings.patch
@@ -0,0 +1,12 @@
+--- dbus-0.50/tools/Makefile.am.orig 2005-09-07 10:05:38 +0200
++++ dbus-0.50/tools/Makefile.am 2005-09-07 10:06:30 +0200
+@@ -6,9 +6,6 @@
+ nodist_libdbus_glib_HEADERS = dbus-glib-bindings.h
+ libdbus_glibdir = $(includedir)/dbus-1.0/dbus
+
+-dbus-glib-bindings.h: dbus-bus-introspect.xml $(top_builddir)/glib/dbus-binding-tool$(EXEEXT)
+- $(top_builddir)/glib/dbus-binding-tool --mode=glib-client --output=dbus-glib-bindings.h dbus-bus-introspect.xml
+-
+ BUILT_SOURCES = dbus-glib-bindings.h dbus-bus-introspect.xml
+
+ else
diff --git a/recipes/obsolete/dbus/dbus-0.50/no-introspect.patch b/recipes/obsolete/dbus/dbus-0.50/no-introspect.patch
new file mode 100644
index 0000000000..1e43dd121b
--- /dev/null
+++ b/recipes/obsolete/dbus/dbus-0.50/no-introspect.patch
@@ -0,0 +1,14 @@
+--- dbus-0.50/tools/Makefile.am.orig 2005-09-07 10:03:49 +0200
++++ dbus-0.50/tools/Makefile.am 2005-09-07 10:04:28 +0200
+@@ -21,11 +21,6 @@
+ GTK_TOOLS=
+ endif
+
+-if HAVE_GLIB
+-dbus-bus-introspect.xml: $(top_builddir)/bus/dbus-daemon$(EXEEXT) dbus-launch$(EXEEXT) dbus-send$(EXEEXT) $(top_builddir)/bus/dbus-daemon$(EXEEXT) Makefile
+- DBUS_TOP_BUILDDIR=$(top_builddir) $(srcdir)/run-with-tmp-session-bus.sh ./dbus-send --print-reply=literal --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.Introspectable.Introspect > dbus-bus-introspect.xml.tmp && mv dbus-bus-introspect.xml.tmp dbus-bus-introspect.xml
+-endif
+-
+ bin_PROGRAMS=dbus-send $(GLIB_TOOLS) dbus-launch dbus-cleanup-sockets $(GTK_TOOLS)
+
+ dbus_send_SOURCES= \
diff --git a/recipes/obsolete/dbus/dbus-native_0.34.bb b/recipes/obsolete/dbus/dbus-native_0.34.bb
new file mode 100644
index 0000000000..e293ecb551
--- /dev/null
+++ b/recipes/obsolete/dbus/dbus-native_0.34.bb
@@ -0,0 +1,16 @@
+require dbus_${PV}.inc
+
+SRC_URI_EXTRA=""
+
+inherit native
+
+S = "${WORKDIR}/dbus-${PV}"
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/dbus"
+DEPENDS = "glib-2.0-native"
+
+do_stage() {
+ install -d ${STAGING_DATADIR}/dbus
+ install -m 0644 tools/dbus-bus-introspect.xml ${STAGING_DATADIR}/dbus
+ install -m 0644 tools/dbus-glib-bindings.h ${STAGING_DATADIR}/dbus
+}
+
diff --git a/recipes/obsolete/dbus/dbus-native_0.50.bb b/recipes/obsolete/dbus/dbus-native_0.50.bb
new file mode 100644
index 0000000000..39ea2ae0b7
--- /dev/null
+++ b/recipes/obsolete/dbus/dbus-native_0.50.bb
@@ -0,0 +1,19 @@
+require dbus_${PV}.inc
+
+SRC_URI_EXTRA=""
+
+inherit native
+
+S = "${WORKDIR}/dbus-${PV}"
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/dbus"
+DEPENDS = "glib-2.0-native"
+
+PR = "r1"
+
+do_stage() {
+ oe_runmake install
+ install -d ${STAGING_DATADIR}/dbus
+ install -m 0644 tools/dbus-bus-introspect.xml ${STAGING_DATADIR}/dbus
+ install -m 0644 tools/dbus-glib-bindings.h ${STAGING_DATADIR}/dbus
+}
+
diff --git a/recipes/obsolete/dbus/dbus_0.20.bb b/recipes/obsolete/dbus/dbus_0.20.bb
new file mode 100644
index 0000000000..6d0a777fef
--- /dev/null
+++ b/recipes/obsolete/dbus/dbus_0.20.bb
@@ -0,0 +1,32 @@
+SECTION = "base"
+HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
+DESCRIPTION = "message bus system for applications to talk to one another"
+DEPENDS = "expat glib-2.0 virtual/libintl"
+PROVIDES = "dbus-glib"
+LICENSE = "GPL"
+
+SRC_URI = "http://freedesktop.org/Software/dbus/releases/dbus-${PV}.tar.gz \
+ file://cross.patch;patch=1"
+
+inherit autotools pkgconfig gettext
+
+EXTRA_OECONF = "--disable-qt --disable-gtk --disable-tests \
+ --disable-checks --disable-xml-docs --disable-doxygen-docs \
+ --with-xml=expat --without-x"
+
+headers = "dbus-address.h dbus-bus.h dbus-connection.h dbus-errors.h dbus-macros.h dbus-memory.h dbus-message.h dbus-pending-call.h dbus-protocol.h dbus-server.h dbus-threads.h dbus-types.h dbus.h"
+
+do_stage () {
+ oe_libinstall -so -C dbus libdbus-1 ${STAGING_LIBDIR}
+ oe_libinstall -so -C glib libdbus-glib-1 ${STAGING_LIBDIR}
+
+ mkdir -p ${STAGING_INCDIR}/dbus-1.0/dbus
+ for i in ${headers}; do
+ install -m 0644 dbus/$i ${STAGING_INCDIR}/dbus-1.0/dbus/$i
+ done
+
+ install -m 0644 glib/dbus-glib.h ${STAGING_INCDIR}/dbus-1.0/dbus/
+
+ mkdir -p ${STAGING_LIBDIR}/dbus-1.0/include/dbus/
+ install -m 0644 dbus/dbus-arch-deps.h ${STAGING_LIBDIR}/dbus-1.0/include/dbus/
+}
diff --git a/recipes/obsolete/dbus/dbus_0.21.bb b/recipes/obsolete/dbus/dbus_0.21.bb
new file mode 100644
index 0000000000..d7b164e8cc
--- /dev/null
+++ b/recipes/obsolete/dbus/dbus_0.21.bb
@@ -0,0 +1,69 @@
+SECTION = "base"
+PR = "r4"
+HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
+DESCRIPTION = "message bus system for applications to talk to one another"
+DEPENDS = "expat glib-2.0 virtual/libintl"
+PROVIDES = "dbus-glib"
+LICENSE = "GPL"
+
+SRC_URI = "http://freedesktop.org/Software/dbus/releases/dbus-${PV}.tar.gz \
+ file://cross.patch;patch=1 \
+ file://dbus-1.init"
+
+inherit autotools pkgconfig update-rc.d gettext
+
+INITSCRIPT_NAME = "dbus-1"
+INITSCRIPT_PARAMS = "defaults"
+
+CONFFILES_${PN} = "${sysconfdir}/dbus-1/system.conf ${sysconfdir}/dbus-1/session.conf"
+
+FILES_${PN} += "${libdir}/dbus-1.0/services"
+FILES_${PN}-dev += "${libdir}/dbus-1.0/include"
+
+pkg_postinst_dbus() {
+#!/bin/sh
+
+# can't do adduser stuff offline
+if [ "x$D" != "x" ]; then
+ exit 1
+fi
+
+MESSAGEUSER=messagebus
+MESSAGEHOME=/var/run/dbus
+
+mkdir -p $MESSAGEHOME || true
+chgrp "$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || addgroup "$MESSAGEUSER"
+chown "$MESSAGEUSER"."$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || adduser --system --home "$MESSAGEHOME" --no-create-home --disabled-password --ingroup "$MESSAGEUSER" "$MESSAGEUSER"
+}
+
+EXTRA_OECONF = "--disable-qt --disable-gtk --disable-tests \
+ --disable-checks --disable-xml-docs --disable-doxygen-docs \
+ --with-xml=expat --without-x"
+
+headers = "dbus-address.h dbus-bus.h dbus-connection.h dbus-errors.h dbus-macros.h dbus-memory.h dbus-message.h dbus-pending-call.h dbus-protocol.h dbus-server.h dbus-threads.h dbus-types.h dbus.h"
+
+do_stage () {
+ oe_libinstall -so -C dbus libdbus-1 ${STAGING_LIBDIR}
+ oe_libinstall -so -C glib libdbus-glib-1 ${STAGING_LIBDIR}
+
+ mkdir -p ${STAGING_INCDIR}/dbus-1.0/dbus
+ for i in ${headers}; do
+ install -m 0644 dbus/$i ${STAGING_INCDIR}/dbus-1.0/dbus/$i
+ done
+
+ install -m 0644 glib/dbus-glib.h ${STAGING_INCDIR}/dbus-1.0/dbus/
+
+ mkdir -p ${STAGING_LIBDIR}/dbus-1.0/include/dbus/
+ install -m 0644 dbus/dbus-arch-deps.h ${STAGING_LIBDIR}/dbus-1.0/include/dbus/
+}
+
+do_install_append () {
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/dbus-1.init ${D}${sysconfdir}/init.d/dbus-1
+ install -d ${D}${libdir}/dbus-1.0/services
+}
+
+python populate_packages_prepend () {
+ if (bb.data.getVar('DEBIAN_NAMES', d, 1)):
+ bb.data.setVar('PKG_dbus', 'dbus-1', d)
+}
diff --git a/recipes/obsolete/dbus/dbus_0.22.bb b/recipes/obsolete/dbus/dbus_0.22.bb
new file mode 100644
index 0000000000..8eacbeca27
--- /dev/null
+++ b/recipes/obsolete/dbus/dbus_0.22.bb
@@ -0,0 +1,72 @@
+SECTION = "base"
+PR = "r6"
+HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
+DESCRIPTION = "message bus system for applications to talk to one another"
+LICENSE = "GPL"
+DEPENDS = "expat glib-2.0 virtual/libintl"
+PROVIDES = "dbus-glib"
+
+SRC_URI = "http://freedesktop.org/software/dbus/releases/dbus-${PV}.tar.gz \
+ file://cross.patch;patch=1 \
+ file://tmpdir.patch;patch=1 \
+ file://gettext.patch;patch=1 \
+ file://dbus-1.init"
+
+inherit autotools pkgconfig update-rc.d gettext
+
+INITSCRIPT_NAME = "dbus-1"
+INITSCRIPT_PARAMS = "defaults"
+
+CONFFILES_${PN} = "${sysconfdir}/dbus-1/system.conf ${sysconfdir}/dbus-1/session.conf"
+
+FILES_${PN} = "${bindir}/dbus-daemon-1 ${bindir}/dbus-launch ${bindir}/dbus-cleanup-sockets ${bindir}/dbus-send ${bindir}/dbus-monitor ${sysconfdir} ${libdir}/dbus-1.0/services ${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${libdir}/dbus-1.0/include ${bindir}/dbus-glib-tool"
+
+pkg_postinst_dbus() {
+#!/bin/sh
+
+# can't do adduser stuff offline
+if [ "x$D" != "x" ]; then
+ exit 1
+fi
+
+MESSAGEUSER=messagebus
+MESSAGEHOME=/var/run/dbus
+
+mkdir -p $MESSAGEHOME || true
+chgrp "$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || addgroup "$MESSAGEUSER"
+chown "$MESSAGEUSER"."$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || adduser --system --home "$MESSAGEHOME" --no-create-home --disabled-password --ingroup "$MESSAGEUSER" "$MESSAGEUSER"
+}
+
+EXTRA_OECONF = "--disable-qt --disable-gtk --disable-tests \
+ --disable-checks --disable-xml-docs --disable-doxygen-docs \
+ --with-xml=expat --without-x"
+
+headers = "dbus-glib-error-enum.h dbus-shared.h dbus-address.h dbus-bus.h dbus-connection.h dbus-errors.h dbus-macros.h dbus-memory.h dbus-message.h dbus-pending-call.h dbus-protocol.h dbus-server.h dbus-threads.h dbus-types.h dbus.h"
+
+do_stage () {
+ oe_libinstall -so -C dbus libdbus-1 ${STAGING_LIBDIR}
+ oe_libinstall -so -C glib libdbus-glib-1 ${STAGING_LIBDIR}
+
+ mkdir -p ${STAGING_INCDIR}/dbus-1.0/dbus
+ for i in ${headers}; do
+ install -m 0644 dbus/$i ${STAGING_INCDIR}/dbus-1.0/dbus/$i
+ done
+
+ install -m 0644 dbus/dbus-glib.h ${STAGING_INCDIR}/dbus-1.0/dbus/
+ install -m 0644 dbus/dbus-glib-lowlevel.h ${STAGING_INCDIR}/dbus-1.0/dbus/
+
+ mkdir -p ${STAGING_LIBDIR}/dbus-1.0/include/dbus/
+ install -m 0644 dbus/dbus-arch-deps.h ${STAGING_LIBDIR}/dbus-1.0/include/dbus/
+}
+
+do_install_append () {
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/dbus-1.init ${D}${sysconfdir}/init.d/dbus-1
+ install -d ${D}${libdir}/dbus-1.0/services
+}
+
+python populate_packages_prepend () {
+ if (bb.data.getVar('DEBIAN_NAMES', d, 1)):
+ bb.data.setVar('PKG_dbus', 'dbus-1', d)
+}
diff --git a/recipes/obsolete/dbus/dbus_0.23.1-osso5.bb b/recipes/obsolete/dbus/dbus_0.23.1-osso5.bb
new file mode 100644
index 0000000000..1cb72cb792
--- /dev/null
+++ b/recipes/obsolete/dbus/dbus_0.23.1-osso5.bb
@@ -0,0 +1,73 @@
+DEFAULT_PREFERENCE = "-1"
+SECTION = "base"
+PR = "r1"
+HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
+DESCRIPTION = "message bus system for applications to talk to one another"
+LICENSE = "GPL"
+DEPENDS = "expat glib-2.0 virtual/libintl"
+PROVIDES = "dbus-glib"
+
+SRC_URI = "http://repository.maemo.org/pool/maemo/ossw/source/d/${PN}/${PN}_${PV}.tar.gz \
+ file://cross.patch;patch=1 \
+ file://tmpdir.patch;patch=1 \
+ file://gettext.patch;patch=1 \
+ file://0.23.1.diff;patch=1 \
+ file://dbus-monitor.patch;patch=1 \
+ file://dbussend.patch;patch=1;pnum=0 \
+ file://spawn-priority.diff;patch=1 \
+ file://config.diff;patch=1;pnum=0 \
+ file://dbus-quiesce-startup-errors.patch;patch=1 \
+ file://tools.diff;patch=1;pnum=0 \
+ file://dbus-1.init"
+
+inherit autotools pkgconfig update-rc.d gettext
+
+S = "${WORKDIR}/dbus-0.23.1"
+
+INITSCRIPT_NAME = "dbus-1"
+INITSCRIPT_PARAMS = "defaults"
+
+CONFFILES_${PN} = "${sysconfdir}/dbus-1/system.conf ${sysconfdir}/dbus-1/session.conf"
+
+FILES_${PN} = "${bindir}/dbus-daemon-1 ${bindir}/dbus-launch ${bindir}/dbus-cleanup-sockets ${bindir}/dbus-send ${bindir}/dbus-monitor ${sysconfdir} ${datadir}/dbus-1/services ${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${libdir}/dbus-1.0/include ${bindir}/dbus-glib-tool"
+
+pkg_postinst_dbus() {
+#!/bin/sh
+
+# can't do adduser stuff offline
+if [ "x$D" != "x" ]; then
+ exit 1
+fi
+
+MESSAGEUSER=messagebus
+MESSAGEHOME=/var/run/dbus
+
+mkdir -p $MESSAGEHOME || true
+chgrp "$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || addgroup "$MESSAGEUSER"
+chown "$MESSAGEUSER"."$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || adduser --system --home "$MESSAGEHOME" --no-create-home --disabled-password --ingroup "$MESSAGEUSER" "$MESSAGEUSER"
+}
+
+EXTRA_OECONF = "--disable-qt --disable-gtk --disable-tests \
+ --disable-checks --disable-xml-docs --disable-doxygen-docs \
+ --with-xml=expat --without-x"
+
+do_stage () {
+ oe_libinstall -so -C dbus libdbus-1 ${STAGING_LIBDIR}
+ oe_libinstall -so -C glib libdbus-glib-1 ${STAGING_LIBDIR}
+
+ autotools_stage_includes
+
+ mkdir -p ${STAGING_LIBDIR}/dbus-1.0/include/dbus/
+ install -m 0644 dbus/dbus-arch-deps.h ${STAGING_LIBDIR}/dbus-1.0/include/dbus/
+}
+
+do_install_append () {
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/dbus-1.init ${D}${sysconfdir}/init.d/dbus-1
+}
+
+python populate_packages_prepend () {
+ if (bb.data.getVar('DEBIAN_NAMES', d, 1)):
+ bb.data.setVar('PKG_dbus', 'dbus-1', d)
+}
diff --git a/recipes/obsolete/dbus/dbus_0.23.4.bb b/recipes/obsolete/dbus/dbus_0.23.4.bb
new file mode 100644
index 0000000000..6fd86ae1aa
--- /dev/null
+++ b/recipes/obsolete/dbus/dbus_0.23.4.bb
@@ -0,0 +1,63 @@
+SECTION = "base"
+PR = "r1"
+HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
+DESCRIPTION = "message bus system for applications to talk to one another"
+LICENSE = "GPL"
+DEPENDS = "expat glib-2.0 virtual/libintl"
+PROVIDES = "dbus-glib"
+
+SRC_URI = "http://freedesktop.org/software/dbus/releases/dbus-${PV}.tar.gz \
+ file://cross.patch;patch=1 \
+ file://tmpdir.patch;patch=1 \
+ file://gettext.patch;patch=1 \
+ file://dbus-1.init"
+
+inherit autotools pkgconfig update-rc.d gettext
+
+INITSCRIPT_NAME = "dbus-1"
+INITSCRIPT_PARAMS = "defaults"
+
+CONFFILES_${PN} = "${sysconfdir}/dbus-1/system.conf ${sysconfdir}/dbus-1/session.conf"
+
+FILES_${PN} = "${bindir}/dbus-daemon-1 ${bindir}/dbus-launch ${bindir}/dbus-cleanup-sockets ${bindir}/dbus-send ${bindir}/dbus-monitor ${sysconfdir} ${datadir}/dbus-1/services ${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${libdir}/dbus-1.0/include ${bindir}/dbus-glib-tool"
+
+pkg_postinst_dbus() {
+#!/bin/sh
+
+# can't do adduser stuff offline
+if [ "x$D" != "x" ]; then
+ exit 1
+fi
+
+MESSAGEUSER=messagebus
+MESSAGEHOME=/var/run/dbus
+
+mkdir -p $MESSAGEHOME || true
+chgrp "$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || addgroup "$MESSAGEUSER"
+chown "$MESSAGEUSER"."$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || adduser --system --home "$MESSAGEHOME" --no-create-home --disabled-password --ingroup "$MESSAGEUSER" "$MESSAGEUSER"
+}
+
+EXTRA_OECONF = "--disable-qt --disable-gtk --disable-tests \
+ --disable-checks --disable-xml-docs --disable-doxygen-docs \
+ --with-xml=expat --without-x"
+
+do_stage () {
+ oe_libinstall -so -C dbus libdbus-1 ${STAGING_LIBDIR}
+ oe_libinstall -so -C glib libdbus-glib-1 ${STAGING_LIBDIR}
+
+ autotools_stage_includes
+
+ mkdir -p ${STAGING_LIBDIR}/dbus-1.0/include/dbus/
+ install -m 0644 dbus/dbus-arch-deps.h ${STAGING_LIBDIR}/dbus-1.0/include/dbus/
+}
+
+do_install_append () {
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/dbus-1.init ${D}${sysconfdir}/init.d/dbus-1
+}
+
+python populate_packages_prepend () {
+ if (bb.data.getVar('DEBIAN_NAMES', d, 1)):
+ bb.data.setVar('PKG_dbus', 'dbus-1', d)
+}
diff --git a/recipes/obsolete/dbus/dbus_0.23.bb b/recipes/obsolete/dbus/dbus_0.23.bb
new file mode 100644
index 0000000000..de224f307e
--- /dev/null
+++ b/recipes/obsolete/dbus/dbus_0.23.bb
@@ -0,0 +1,63 @@
+SECTION = "base"
+PR = "r2"
+HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
+DESCRIPTION = "message bus system for applications to talk to one another"
+LICENSE = "GPL"
+DEPENDS = "expat glib-2.0 virtual/libintl"
+PROVIDES = "dbus-glib"
+
+SRC_URI = "http://freedesktop.org/software/dbus/releases/dbus-${PV}.tar.gz \
+ file://cross.patch;patch=1 \
+ file://tmpdir.patch;patch=1 \
+ file://gettext.patch;patch=1 \
+ file://dbus-1.init"
+
+inherit autotools pkgconfig update-rc.d gettext
+
+INITSCRIPT_NAME = "dbus-1"
+INITSCRIPT_PARAMS = "defaults"
+
+CONFFILES_${PN} = "${sysconfdir}/dbus-1/system.conf ${sysconfdir}/dbus-1/session.conf"
+
+FILES_${PN} = "${bindir}/dbus-daemon-1 ${bindir}/dbus-launch ${bindir}/dbus-cleanup-sockets ${bindir}/dbus-send ${bindir}/dbus-monitor ${sysconfdir} ${datadir}/dbus-1/services ${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${libdir}/dbus-1.0/include ${bindir}/dbus-glib-tool"
+
+pkg_postinst_dbus() {
+#!/bin/sh
+
+# can't do adduser stuff offline
+if [ "x$D" != "x" ]; then
+ exit 1
+fi
+
+MESSAGEUSER=messagebus
+MESSAGEHOME=/var/run/dbus
+
+mkdir -p $MESSAGEHOME || true
+chgrp "$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || addgroup "$MESSAGEUSER"
+chown "$MESSAGEUSER"."$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || adduser --system --home "$MESSAGEHOME" --no-create-home --disabled-password --ingroup "$MESSAGEUSER" "$MESSAGEUSER"
+}
+
+EXTRA_OECONF = "--disable-qt --disable-gtk --disable-tests \
+ --disable-checks --disable-xml-docs --disable-doxygen-docs \
+ --with-xml=expat --without-x"
+
+do_stage () {
+ oe_libinstall -so -C dbus libdbus-1 ${STAGING_LIBDIR}
+ oe_libinstall -so -C glib libdbus-glib-1 ${STAGING_LIBDIR}
+
+ autotools_stage_includes
+
+ mkdir -p ${STAGING_LIBDIR}/dbus-1.0/include/dbus/
+ install -m 0644 dbus/dbus-arch-deps.h ${STAGING_LIBDIR}/dbus-1.0/include/dbus/
+}
+
+do_install_append () {
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/dbus-1.init ${D}${sysconfdir}/init.d/dbus-1
+}
+
+python populate_packages_prepend () {
+ if (bb.data.getVar('DEBIAN_NAMES', d, 1)):
+ bb.data.setVar('PKG_dbus', 'dbus-1', d)
+}
diff --git a/recipes/obsolete/dbus/dbus_0.34.bb b/recipes/obsolete/dbus/dbus_0.34.bb
new file mode 100644
index 0000000000..442cb191ea
--- /dev/null
+++ b/recipes/obsolete/dbus/dbus_0.34.bb
@@ -0,0 +1,14 @@
+require dbus_${PV}.inc
+
+
+DEPENDS = "expat glib-2.0 virtual/libintl dbus-native"
+DEFAULT_PREFERENCE = "-1"
+SRC_URI_EXTRA = "file://no-introspect.patch;patch=1 file://no-bindings.patch;patch=1"
+
+FILES_${PN} += "${bindir}/dbus-daemon"
+FILES_${PN}-dev += "${bindir}/dbus-binding-tool"
+
+do_configure_prepend() {
+ install -m 0644 ${STAGING_DATADIR_NATIVE}/dbus/dbus-bus-introspect.xml ${S}/tools/
+ install -m 0644 ${STAGING_DATADIR_NATIVE}/dbus/dbus-glib-bindings.h ${S}/tools/
+}
diff --git a/recipes/obsolete/dbus/dbus_0.34.inc b/recipes/obsolete/dbus/dbus_0.34.inc
new file mode 100644
index 0000000000..1c63c37fdf
--- /dev/null
+++ b/recipes/obsolete/dbus/dbus_0.34.inc
@@ -0,0 +1,65 @@
+SECTION = "base"
+PR = "r0"
+HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
+DESCRIPTION = "message bus system for applications to talk to one another"
+LICENSE = "GPL"
+DEPENDS = "expat glib-2.0 virtual/libintl"
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "http://freedesktop.org/software/dbus/releases/dbus-${PV}.tar.gz \
+ file://cross.patch;patch=1 \
+ file://tmpdir.patch;patch=1 \
+ file://dbus-1.init \
+ ${SRC_URI_EXTRA}"
+
+
+inherit autotools pkgconfig update-rc.d gettext
+
+INITSCRIPT_NAME = "dbus-1"
+INITSCRIPT_PARAMS = "defaults"
+
+CONFFILES_${PN} = "${sysconfdir}/dbus-1/system.conf ${sysconfdir}/dbus-1/session.conf"
+
+FILES_${PN} = "${bindir}/dbus-daemon-1 ${bindir}/dbus-launch ${bindir}/dbus-cleanup-sockets ${bindir}/dbus-send ${bindir}/dbus-monitor ${sysconfdir} ${datadir}/dbus-1/services ${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${libdir}/dbus-1.0/include ${bindir}/dbus-glib-tool"
+
+pkg_postinst_dbus() {
+#!/bin/sh
+
+# can't do adduser stuff offline
+if [ "x$D" != "x" ]; then
+ exit 1
+fi
+
+MESSAGEUSER=messagebus
+MESSAGEHOME=/var/run/dbus
+
+mkdir -p $MESSAGEHOME || true
+chgrp "$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || addgroup "$MESSAGEUSER"
+chown "$MESSAGEUSER"."$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || adduser --system --home "$MESSAGEHOME" --no-create-home --disabled-password --ingroup "$MESSAGEUSER" "$MESSAGEUSER"
+}
+
+EXTRA_OECONF = "--disable-qt --disable-gtk --disable-tests \
+ --disable-checks --disable-xml-docs --disable-doxygen-docs \
+ --with-xml=expat --without-x"
+
+
+do_stage () {
+ oe_libinstall -so -C dbus libdbus-1 ${STAGING_LIBDIR}
+ oe_libinstall -so -C glib libdbus-glib-1 ${STAGING_LIBDIR}
+
+ autotools_stage_includes
+
+ mkdir -p ${STAGING_LIBDIR}/dbus-1.0/include/dbus/
+ install -m 0644 dbus/dbus-arch-deps.h ${STAGING_LIBDIR}/dbus-1.0/include/dbus/
+}
+
+do_install_append () {
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/dbus-1.init ${D}${sysconfdir}/init.d/dbus-1
+}
+
+python populate_packages_prepend () {
+ if (bb.data.getVar('DEBIAN_NAMES', d, 1)):
+ bb.data.setVar('PKG_dbus', 'dbus-1', d)
+}
diff --git a/recipes/obsolete/dbus/dbus_0.50.bb b/recipes/obsolete/dbus/dbus_0.50.bb
new file mode 100644
index 0000000000..442cb191ea
--- /dev/null
+++ b/recipes/obsolete/dbus/dbus_0.50.bb
@@ -0,0 +1,14 @@
+require dbus_${PV}.inc
+
+
+DEPENDS = "expat glib-2.0 virtual/libintl dbus-native"
+DEFAULT_PREFERENCE = "-1"
+SRC_URI_EXTRA = "file://no-introspect.patch;patch=1 file://no-bindings.patch;patch=1"
+
+FILES_${PN} += "${bindir}/dbus-daemon"
+FILES_${PN}-dev += "${bindir}/dbus-binding-tool"
+
+do_configure_prepend() {
+ install -m 0644 ${STAGING_DATADIR_NATIVE}/dbus/dbus-bus-introspect.xml ${S}/tools/
+ install -m 0644 ${STAGING_DATADIR_NATIVE}/dbus/dbus-glib-bindings.h ${S}/tools/
+}
diff --git a/recipes/obsolete/dbus/dbus_0.50.inc b/recipes/obsolete/dbus/dbus_0.50.inc
new file mode 100644
index 0000000000..094a9b68d6
--- /dev/null
+++ b/recipes/obsolete/dbus/dbus_0.50.inc
@@ -0,0 +1,65 @@
+SECTION = "base"
+PR = "r0"
+HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
+DESCRIPTION = "message bus system for applications to talk to one another"
+LICENSE = "GPL"
+DEPENDS = "expat glib-2.0 virtual/libintl"
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "http://freedesktop.org/software/dbus/releases/dbus-${PV}.tar.gz \
+ file://cross.patch;patch=1 \
+ file://tmpdir.patch;patch=1 \
+ file://dbus-1.init \
+ file://no-examples.patch;patch=1 \
+ ${SRC_URI_EXTRA}"
+
+inherit autotools pkgconfig update-rc.d gettext
+
+INITSCRIPT_NAME = "dbus-1"
+INITSCRIPT_PARAMS = "defaults"
+
+CONFFILES_${PN} = "${sysconfdir}/dbus-1/system.conf ${sysconfdir}/dbus-1/session.conf"
+
+FILES_${PN} = "${bindir}/dbus-daemon ${bindir}/dbus-launch ${bindir}/dbus-cleanup-sockets ${bindir}/dbus-send ${bindir}/dbus-monitor ${sysconfdir} ${datadir}/dbus-1/services ${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${libdir}/dbus-1.0/include ${bindir}/dbus-glib-tool"
+
+pkg_postinst_dbus() {
+#!/bin/sh
+
+# can't do adduser stuff offline
+if [ "x$D" != "x" ]; then
+ exit 1
+fi
+
+MESSAGEUSER=messagebus
+MESSAGEHOME=/var/run/dbus
+
+mkdir -p $MESSAGEHOME || true
+chgrp "$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || addgroup "$MESSAGEUSER"
+chown "$MESSAGEUSER"."$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || adduser --system --home "$MESSAGEHOME" --no-create-home --disabled-password --ingroup "$MESSAGEUSER" "$MESSAGEUSER"
+}
+
+EXTRA_OECONF = "--disable-qt --disable-gtk --disable-tests \
+ --disable-checks --disable-xml-docs --disable-doxygen-docs \
+ --with-xml=expat --without-x"
+
+
+do_stage () {
+ oe_libinstall -so -C dbus libdbus-1 ${STAGING_LIBDIR}
+ oe_libinstall -so -C glib libdbus-glib-1 ${STAGING_LIBDIR}
+
+ autotools_stage_includes
+
+ mkdir -p ${STAGING_LIBDIR}/dbus-1.0/include/dbus/
+ install -m 0644 dbus/dbus-arch-deps.h ${STAGING_LIBDIR}/dbus-1.0/include/dbus/
+}
+
+do_install_append () {
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/dbus-1.init ${D}${sysconfdir}/init.d/dbus-1
+}
+
+python populate_packages_prepend () {
+ if (bb.data.getVar('DEBIAN_NAMES', d, 1)):
+ bb.data.setVar('PKG_dbus', 'dbus-1', d)
+}
diff --git a/recipes/obsolete/gaim/files/01-optional-icons-in-dialogs.patch b/recipes/obsolete/gaim/files/01-optional-icons-in-dialogs.patch
new file mode 100644
index 0000000000..260dcf364f
--- /dev/null
+++ b/recipes/obsolete/gaim/files/01-optional-icons-in-dialogs.patch
@@ -0,0 +1,514 @@
+Index: gaim/src/gtkblist.c
+===================================================================
+--- gaim.orig/src/gtkblist.c 2005-08-19 23:23:45.000000000 +0200
++++ gaim/src/gtkblist.c 2005-08-21 02:32:13.989658832 +0200
+@@ -873,16 +873,23 @@
+ void
+ gaim_gtk_blist_joinchat_show(void)
+ {
+- GtkWidget *hbox, *vbox;
++ GtkWidget *vbox;
+ GtkWidget *rowbox;
+ GtkWidget *label;
++ GtkWidget *pri_label;
+ GaimGtkBuddyList *gtkblist;
++ GtkWidget *sw;
++#if ICONS_IN_DIALOGS
++ GtkWidget *hbox;
+ GtkWidget *img = NULL;
++#endif
+ GaimGtkJoinChatData *data = NULL;
+
+ gtkblist = GAIM_GTK_BLIST(gaim_get_blist());
++#if ICONS_IN_DIALOGS
+ img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION,
+ GTK_ICON_SIZE_DIALOG);
++#endif
+ data = g_new0(GaimGtkJoinChatData, 1);
+
+ data->window = gtk_dialog_new_with_buttons(_("Join a Chat"),
+@@ -897,6 +904,7 @@
+ GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), GAIM_HIG_BOX_SPACE);
+ gtk_window_set_role(GTK_WINDOW(data->window), "join_chat");
+
++#if ICONS_IN_DIALOGS
+ hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
+ gtk_container_add(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), hbox);
+ gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
+@@ -905,6 +913,9 @@
+ vbox = gtk_vbox_new(FALSE, 5);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 0);
+ gtk_container_add(GTK_CONTAINER(hbox), vbox);
++#else
++ vbox = GTK_DIALOG(data->window)->vbox;
++#endif
+
+ label = gtk_label_new(_("Please enter the appropriate information "
+ "about the chat you would like to join.\n"));
+@@ -4304,9 +4315,13 @@
+ {
+ GtkWidget *table;
+ GtkWidget *label;
++ GtkWidget *pri_label;
+ GtkWidget *hbox;
+ GtkWidget *vbox;
++ GtkWidget *sw;
++#if ICONS_IN_DIALOGS
+ GtkWidget *img;
++#endif
+ GaimGtkBuddyList *gtkblist;
+ GaimGtkAddBuddyData *data = g_new0(GaimGtkAddBuddyData, 1);
+
+@@ -4315,8 +4330,10 @@
+ ? account
+ : gaim_connection_get_account(gaim_connections_get_all()->data));
+
++#if ICONS_IN_DIALOGS
+ img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION,
+ GTK_ICON_SIZE_DIALOG);
++#endif
+
+ gtkblist = GAIM_GTK_BLIST(gaim_get_blist());
+
+@@ -4335,6 +4352,7 @@
+ gtk_window_set_type_hint(GTK_WINDOW(data->window),
+ GDK_WINDOW_TYPE_HINT_DIALOG);
+
++#if ICONS_IN_DIALOGS
+ hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
+ gtk_container_add(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), hbox);
+ gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
+@@ -4342,6 +4360,9 @@
+
+ vbox = gtk_vbox_new(FALSE, 0);
+ gtk_container_add(GTK_CONTAINER(hbox), vbox);
++#else
++ vbox = GTK_DIALOG(data->window)->vbox;
++#endif
+
+ label = gtk_label_new(
+ _("Please enter the screen name of the person you would like "
+@@ -4663,10 +4684,14 @@
+ GList *l;
+ GaimConnection *gc;
+ GtkWidget *label;
++ GtkWidget *pri_label;
+ GtkWidget *rowbox;
+- GtkWidget *hbox;
+ GtkWidget *vbox;
++ GtkWidget *sw;
++#if ICONS_IN_DIALOGS
++ GtkWidget *hbox;
+ GtkWidget *img;
++#endif
+
+ if (account != NULL) {
+ gc = gaim_account_get_connection(account);
+@@ -4698,8 +4723,10 @@
+ data->account = account;
+ data->default_chat_name = g_strdup(name);
+
++#if ICONS_IN_DIALOGS
+ img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION,
+ GTK_ICON_SIZE_DIALOG);
++#endif
+
+ gtkblist = GAIM_GTK_BLIST(gaim_get_blist());
+
+@@ -4720,6 +4747,7 @@
+ gtk_window_set_type_hint(GTK_WINDOW(data->window),
+ GDK_WINDOW_TYPE_HINT_DIALOG);
+
++#if ICONS_IN_DIALOGS
+ hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
+ gtk_container_add(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), hbox);
+ gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
+@@ -4727,6 +4755,9 @@
+
+ vbox = gtk_vbox_new(FALSE, 5);
+ gtk_container_add(GTK_CONTAINER(hbox), vbox);
++#else
++ vbox = GTK_DIALOG(data->window)->vbox;
++#endif
+
+ label = gtk_label_new(
+ _("Please enter an alias, and the appropriate information "
+Index: gaim/src/gtkconn.c
+===================================================================
+--- gaim.orig/src/gtkconn.c 2005-08-19 23:23:45.000000000 +0200
++++ gaim/src/gtkconn.c 2005-08-19 23:27:18.000000000 +0200
+@@ -371,7 +371,10 @@
+
+ /* Build the window if it isn't there yet */
+ if (!disconnect_window) {
+- GtkWidget *hbox, *vbox, *img;
++ GtkWidget *hbox, *vbox;
++ #if ICONS_IN_DIALOGS
++ GtkWidget *img;
++ #endif
+ GtkCellRenderer *rend, *rend2;
+
+ disconnect_window = g_new0(struct disconnect_window, 1);
+@@ -384,6 +387,7 @@
+ gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(disconnect_window->window)->vbox), GAIM_HIG_BORDER);
+ gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(disconnect_window->window)->vbox), GAIM_HIG_BOX_SPACE);
+
++#if ICONS_IN_DIALOGS
+ hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
+ gtk_container_add(GTK_CONTAINER(GTK_DIALOG(disconnect_window->window)->vbox), hbox);
+ img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_ERROR, GTK_ICON_SIZE_DIALOG);
+@@ -392,6 +396,9 @@
+
+ vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER);
+ gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
++#else
++ vbox = GTK_DIALOG(disconnect_window->window)->vbox;
++#endif
+
+ disconnect_window->label = gtk_label_new(label_text);
+
+Index: gaim/src/gtkconv.c
+===================================================================
+--- gaim.orig/src/gtkconv.c 2005-08-19 23:23:45.000000000 +0200
++++ gaim/src/gtkconv.c 2005-08-19 23:27:18.000000000 +0200
+@@ -847,10 +847,12 @@
+ GtkWidget *label;
+ GtkWidget *vbox, *hbox;
+ GtkWidget *table;
++#if ICONS_IN_DIALOGS
+ GtkWidget *img;
+
+ img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION,
+ GTK_ICON_SIZE_DIALOG);
++#endif
+
+ info = g_new0(InviteBuddyInfo, 1);
+ info->conv = conv;
+@@ -880,6 +882,7 @@
+ gtk_box_set_spacing(GTK_BOX(vbox), GAIM_HIG_BORDER);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), GAIM_HIG_BOX_SPACE);
+
++#if ICONS_IN_DIALOGS
+ /* Setup the inner hbox and put the dialog's icon in it. */
+ hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
+ gtk_container_add(GTK_CONTAINER(vbox), hbox);
+@@ -889,6 +892,7 @@
+ /* Setup the right vbox. */
+ vbox = gtk_vbox_new(FALSE, 0);
+ gtk_container_add(GTK_CONTAINER(hbox), vbox);
++#endif
+
+ /* Put our happy label in it. */
+ label = gtk_label_new(_("Please enter the name of the user you wish "
+@@ -1107,8 +1111,10 @@
+ GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win);
+ GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv);
+ GtkWidget *hbox;
++#if ICONS_IN_DIALOGS
+ GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION,
+ GTK_ICON_SIZE_DIALOG);
++#endif
+ GtkWidget *label;
+ struct _search *s;
+
+@@ -1139,9 +1145,11 @@
+ hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
+ gtk_container_add(GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox),
+ hbox);
++#if ICONS_IN_DIALOGS
+ gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
+
+ gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
++#endif
+ gtk_dialog_set_response_sensitive(GTK_DIALOG(gtkconv->dialogs.search),
+ GTK_RESPONSE_OK, FALSE);
+
+Index: gaim/src/gtkdebug.c
+===================================================================
+--- gaim.orig/src/gtkdebug.c 2005-08-19 23:23:45.000000000 +0200
++++ gaim/src/gtkdebug.c 2005-08-19 23:27:18.000000000 +0200
+@@ -149,7 +149,10 @@
+ static void
+ find_cb(GtkWidget *w, DebugWindow *win)
+ {
+- GtkWidget *hbox, *img, *label;
++ GtkWidget *hbox, *label;
++#if ICONS_IN_DIALOGS
++ GtkWidget *img;
++#endif
+ struct _find *f;
+
+ if(win->find)
+@@ -179,11 +182,13 @@
+ hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
+ gtk_container_add(GTK_CONTAINER(GTK_DIALOG(win->find)->vbox),
+ hbox);
++#if ICONS_IN_DIALOGS
+ img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION,
+ GTK_ICON_SIZE_DIALOG);
+ gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
+
+ gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
++#endif
+ gtk_dialog_set_response_sensitive(GTK_DIALOG(win->find),
+ GTK_RESPONSE_OK, FALSE);
+
+Index: gaim/src/gtkdialogs.c
+===================================================================
+--- gaim.orig/src/gtkdialogs.c 2005-08-19 23:23:45.000000000 +0200
++++ gaim/src/gtkdialogs.c 2005-08-19 23:27:18.000000000 +0200
+@@ -534,7 +534,9 @@
+ GtkWidget *window;
+ GtkWidget *hbox;
+ GtkWidget *label;
++#if ICONS_IN_DIALOGS
+ GtkWidget *img;
++#endif
+ gchar *norm = gaim_strreplace(ee, "rocksmyworld", "");
+
+ label = gtk_label_new(NULL);
+@@ -582,8 +584,10 @@
+
+ hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
+ gtk_container_add(GTK_CONTAINER(GTK_DIALOG(window)->vbox), hbox);
++#if ICONS_IN_DIALOGS
+ img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_COOL, gtk_icon_size_from_name(GAIM_ICON_SIZE_DIALOG_COOL));
+ gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
++#endif
+
+ gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
+ gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
+Index: gaim/src/gtkgaim.h
+===================================================================
+--- gaim.orig/src/gtkgaim.h 2005-08-19 23:26:29.000000000 +0200
++++ gaim/src/gtkgaim.h 2005-08-21 02:32:29.270335816 +0200
+@@ -61,5 +61,10 @@
+ #define GAIM_HIG_BORDER 12
+ #define GAIM_HIG_BOX_SPACE 6
+
++/**
++ * Do we want icons in dialogs?
++ */
++#define ICONS_IN_DIALOGS 1
++
+ #endif /* _GAIM_GTKGAIM_H_ */
+
+Index: gaim/src/gtknotify.c
+===================================================================
+--- gaim.orig/src/gtknotify.c 2005-08-19 23:23:45.000000000 +0200
++++ gaim/src/gtknotify.c 2005-08-21 02:32:03.765213184 +0200
+@@ -125,7 +125,9 @@
+ GtkWidget *dialog;
+ GtkWidget *hbox;
+ GtkWidget *label;
++#if ICONS_IN_DIALOGS
+ GtkWidget *img = NULL;
++#endif
+ char label_text[2048];
+ const char *icon_name = NULL;
+ char *primary_esc, *secondary_esc;
+@@ -149,11 +151,13 @@
+ break;
+ }
+
++#if ICONS_IN_DIALOGS
+ if (icon_name != NULL)
+ {
+ img = gtk_image_new_from_stock(icon_name, GTK_ICON_SIZE_DIALOG);
+ gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
+ }
++#endif
+
+ dialog = gtk_dialog_new_with_buttons(title ? title : GAIM_ALERT_TITLE,
+ NULL, 0, GTK_STOCK_CLOSE,
+@@ -173,8 +177,10 @@
+ hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
+ gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox);
+
++#if ICONS_IN_DIALOGS
+ if (img != NULL)
+ gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
++#endif
+
+ primary_esc = g_markup_escape_text(primary, -1);
+ secondary_esc = (secondary != NULL) ? g_markup_escape_text(secondary, -1) : NULL;
+@@ -218,9 +224,11 @@
+ GaimNotifyMailData *data;
+ GtkWidget *dialog;
+ GtkWidget *vbox;
+- GtkWidget *hbox;
+ GtkWidget *label;
++#if ICONS_IN_DIALOGS
++ GtkWidget *hbox;
+ GtkWidget *img;
++#endif
+ char *detail_text;
+ char *label_text;
+
+@@ -248,6 +256,7 @@
+ gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
+ gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), GAIM_HIG_BORDER);
+
++#if ICONS_IN_DIALOGS
+ /* Setup the main horizontal box */
+ hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
+ gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox);
+@@ -262,6 +271,9 @@
+ vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER);
+
+ gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
++#else
++ vbox = GTK_DIALOG(dialog)->vbox;
++#endif
+
+ /* Descriptive label */
+ detail_text = g_strdup_printf(ngettext("%s has %d new message.",
+Index: gaim/src/gtkrequest.c
+===================================================================
+--- gaim.orig/src/gtkrequest.c 2005-08-19 23:23:45.000000000 +0200
++++ gaim/src/gtkrequest.c 2005-08-21 02:32:15.943361824 +0200
+@@ -281,10 +281,12 @@
+ GaimGtkRequestData *data;
+ GtkWidget *dialog;
+ GtkWidget *vbox;
+- GtkWidget *hbox;
+ GtkWidget *label;
+ GtkWidget *entry;
++#if ICONS_IN_DIALOGS
++ GtkWidget *hbox;
+ GtkWidget *img;
++#endif
+ GtkWidget *toolbar;
+ char *label_text;
+ char *primary_esc, *secondary_esc;
+@@ -318,6 +320,7 @@
+ gtk_dialog_set_default_response(GTK_DIALOG(dialog), 0);
+ gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), GAIM_HIG_BORDER);
+
++#if ICONS_IN_DIALOGS
+ /* Setup the main horizontal box */
+ hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
+ gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox);
+@@ -332,6 +335,9 @@
+ vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER);
+
+ gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
++#else
++ vbox = GTK_DIALOG(dialog)->vbox;
++#endif
+
+ /* Descriptive label */
+ primary_esc = (primary != NULL) ? g_markup_escape_text(primary, -1) : NULL;
+@@ -435,9 +441,11 @@
+ GaimGtkRequestData *data;
+ GtkWidget *dialog;
+ GtkWidget *vbox, *vbox2;
+- GtkWidget *hbox;
+ GtkWidget *label;
++#if ICONS_IN_DIALOGS
++ GtkWidget *hbox;
+ GtkWidget *img;
++#endif
+ GtkWidget *radio = NULL;
+ char *label_text;
+ char *radio_text;
+@@ -475,6 +483,7 @@
+ gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
+ gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), GAIM_HIG_BORDER);
+
++#if ICONS_IN_DIALOGS
+ /* Setup the main horizontal box */
+ hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
+ gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox);
+@@ -488,6 +497,9 @@
+ /* Vertical box */
+ vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER);
+ gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
++#else
++ vbox = GTK_DIALOG(dialog)->vbox;
++#endif
+
+ /* Descriptive label */
+ primary_esc = (primary != NULL) ? g_markup_escape_text(primary, -1) : NULL;
+@@ -536,9 +548,11 @@
+ GaimGtkRequestData *data;
+ GtkWidget *dialog;
+ GtkWidget *vbox;
+- GtkWidget *hbox;
+ GtkWidget *label;
++#if ICONS_IN_DIALOGS
++ GtkWidget *hbox;
+ GtkWidget *img;
++#endif
+ void **buttons;
+ char *label_text;
+ char *primary_esc, *secondary_esc;
+@@ -584,6 +598,7 @@
+ gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
+ gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), GAIM_HIG_BORDER);
+
++#if ICONS_IN_DIALOGS
+ /* Setup the main horizontal box */
+ hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
+ gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox);
+@@ -597,7 +612,10 @@
+ /* Vertical box */
+ vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER);
+ gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
+-
++#else
++ vbox = GTK_DIALOG(dialog)->vbox;
++#endif
++
+ /* Descriptive label */
+ primary_esc = (primary != NULL) ? g_markup_escape_text(primary, -1) : NULL;
+ secondary_esc = (secondary != NULL) ? g_markup_escape_text(secondary, -1) : NULL;
+@@ -620,10 +638,12 @@
+
+
+ if (default_action == GAIM_DEFAULT_ACTION_NONE) {
++#if ICONS_IN_DIALOGS
+ GTK_WIDGET_SET_FLAGS(img, GTK_CAN_DEFAULT);
+ GTK_WIDGET_SET_FLAGS(img, GTK_CAN_FOCUS);
+ gtk_widget_grab_focus(img);
+ gtk_widget_grab_default(img);
++#endif
+ } else
+ gtk_dialog_set_default_response(GTK_DIALOG(dialog), default_action);
+
+@@ -1351,13 +1371,15 @@
+ GtkWidget *win;
+ GtkWidget *vbox;
+ GtkWidget *vbox2;
+- GtkWidget *hbox;
+ GtkWidget *bbox;
+ GtkWidget *frame;
+ GtkWidget *label;
+ GtkWidget *table;
+ GtkWidget *button;
++#if ICONS_IN_DIALOGS
++ GtkWidget *hbox;
+ GtkWidget *img;
++#endif
+ GtkWidget *sw;
+ GtkSizeGroup *sg;
+ GList *gl, *fl;
+@@ -1392,6 +1414,7 @@
+ g_signal_connect(G_OBJECT(win), "delete_event",
+ G_CALLBACK(destroy_multifield_cb), data);
+
++#if ICONS_IN_DIALOGS
+ /* Setup the main horizontal box */
+ hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
+ gtk_container_add(GTK_CONTAINER(win), hbox);
+@@ -1407,6 +1430,10 @@
+ /* Setup the vbox */
+ vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER);
+ gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
++#else
++ vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER);
++ gtk_container_add(GTK_CONTAINER(win), vbox);
++#endif
+ gtk_widget_show(vbox);
+
+ sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
diff --git a/recipes/obsolete/gaim/files/02-request-field-dialogs.patch b/recipes/obsolete/gaim/files/02-request-field-dialogs.patch
new file mode 100644
index 0000000000..50529ca53e
--- /dev/null
+++ b/recipes/obsolete/gaim/files/02-request-field-dialogs.patch
@@ -0,0 +1,116 @@
+Identiske underkataloger: src2/CVS og src/CVS
+Identiske underkataloger: src2/.deps og src/.deps
+Index: gaim/src/gtkgaim.h
+===================================================================
+--- gaim.orig/src/gtkgaim.h 2005-08-19 21:46:09.550560256 +0200
++++ gaim/src/gtkgaim.h 2005-08-19 21:47:37.276223928 +0200
+@@ -66,5 +66,11 @@
+ */
+ #define ICONS_IN_DIALOGS 0
+
++/**
++ * How many fields is there screen-space for vertically, before a scrollbar is needed?
++ */
++#define VERT_ITEMS 0
++
++
+ #endif /* _GAIM_GTKGAIM_H_ */
+
+Index: gaim/src/gtkrequest.c
+===================================================================
+--- gaim.orig/src/gtkrequest.c 2005-08-19 21:46:09.550560256 +0200
++++ gaim/src/gtkrequest.c 2005-08-19 21:53:46.782050504 +0200
+@@ -1381,6 +1381,8 @@
+ GtkWidget *img;
+ #endif
+ GtkWidget *sw;
++ GtkWidget *pri_label;
++ GtkWidget *sec_label;
+ GtkSizeGroup *sg;
+ GList *gl, *fl;
+ GaimRequestFieldGroup *group;
+@@ -1450,6 +1452,7 @@
+ gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
+ gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);
+ gtk_widget_show(label);
++ pri_label = label;
+ g_free(label_text);
+ }
+
+@@ -1457,7 +1460,7 @@
+ gl = gl->next)
+ total_fields += g_list_length(gaim_request_field_group_get_fields(gl->data));
+
+- if(total_fields > 9) {
++ if(total_fields > VERT_ITEMS) {
+ sw = gtk_scrolled_window_new(NULL, NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
+ GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+@@ -1484,6 +1487,7 @@
+ gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
+ gtk_box_pack_start(GTK_BOX(vbox2), label, TRUE, TRUE, 0);
+ gtk_widget_show(label);
++ sec_label = label;
+ }
+
+ for (gl = gaim_request_fields_get_groups(fields);
+@@ -1718,6 +1722,59 @@
+
+ gtk_widget_show(win);
+
++ //Wait for the window to have recieved its "configure_event",
++ //which means it has been resized by the WM
++ while (gtk_events_pending ()) gtk_main_iteration ();
++
++ //Get allocated size, and adjust widgets accordingly
++ int w, h, field_labels_w;
++ GtkRequisition sg_labels_req;
++ gtk_window_get_size(GTK_WINDOW(win), &w, &h);
++ field_labels_w = label->allocation.width + GAIM_HIG_BORDER*2; //The width of the largest field-label
++
++ printf("%d / %d\n", field_labels_w, w);
++
++ w = w - GAIM_HIG_BORDER * 2;
++ if (primary) gtk_widget_set_size_request(GTK_WIDGET(pri_label), w, -1);
++ if (secondary) gtk_widget_set_size_request(GTK_WIDGET(sec_label), w, -1);
++
++ //Determine what to do - add a scrollbar or resize the input fields?
++ if ((float)field_labels_w / w > 0.5) //if the labels fill more than half the screen add a horizontal scrollbar
++ {
++ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
++ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
++ }
++ else //resize the input fields
++ {
++ for (gl = gaim_request_fields_get_groups(fields);
++ gl != NULL;
++ gl = gl->next)
++ {
++ GList *field_list;
++ size_t field_count = 0;
++ size_t cols = 1;
++ size_t rows;
++ size_t col_num;
++ size_t row_num = 0;
++
++ group = gl->data;
++ field_list = gaim_request_field_group_get_fields(group);
++
++ for (row_num = 0, fl = field_list;
++ row_num < rows && fl != NULL;
++ row_num++)
++ {
++ for (col_num = 0;
++ col_num < cols && fl != NULL;
++ col_num++, fl = fl->next)
++ {
++ field = fl->data;
++ gtk_widget_set_size_request(GTK_WIDGET(field->ui_data), w-field_labels_w, -1);
++ }
++ }
++ }
++ }
++
+ return data;
+ }
+
diff --git a/recipes/obsolete/gaim/files/03-blist-dialogs.patch b/recipes/obsolete/gaim/files/03-blist-dialogs.patch
new file mode 100644
index 0000000000..62d4710d46
--- /dev/null
+++ b/recipes/obsolete/gaim/files/03-blist-dialogs.patch
@@ -0,0 +1,240 @@
+Identiske underkataloger: src2/CVS og src/CVS
+Identiske underkataloger: src2/.deps og src/.deps
+Index: gaim/src/gtkblist.c
+===================================================================
+--- gaim.orig/src/gtkblist.c 2005-08-19 21:57:30.272074856 +0200
++++ gaim/src/gtkblist.c 2005-08-19 21:57:42.030287336 +0200
+@@ -825,6 +825,15 @@
+ joinchat_set_sensitive_if_input_cb(NULL, data);
+
+ gtk_widget_show_all(data->entries_box);
++
++ GList* children;
++ children = GTK_BOX(data->entries_box)->children;
++ while (children)
++ {
++ //Let the prilabel handle the maxsize
++ gtk_widget_set_size_request(((GtkBoxChild*)(children->data))->widget, 0, -1);
++ children = children->next;
++ }
+ }
+
+ static void
+@@ -916,12 +925,26 @@
+ #else
+ vbox = GTK_DIALOG(data->window)->vbox;
+ #endif
++
++ //Make a scrollview to accomodate it all
++ sw = gtk_scrolled_window_new(NULL, NULL);
++ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
++ GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
++ gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
++ GTK_SHADOW_NONE);
++ gtk_widget_set_size_request(sw, -1, 200);
++ gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
++ gtk_widget_show(sw);
++
++ vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER);
++ gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw), vbox);
+
+ label = gtk_label_new(_("Please enter the appropriate information "
+ "about the chat you would like to join.\n"));
+ gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
+ gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
+ gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
++ pri_label = label;
+
+ rowbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
+ gtk_box_pack_start(GTK_BOX(vbox), rowbox, TRUE, TRUE, 0);
+@@ -955,6 +978,22 @@
+ g_object_unref(data->sg);
+
+ gtk_widget_show_all(data->window);
++
++ //Wait for the window to have recieved its "configure_event",
++ //which means it has been resized by the WM
++ while (gtk_events_pending ()) gtk_main_iteration ();
++
++ //Get allocated size, and adjust widgets accordingly
++ int w, h;
++ gtk_window_get_size(GTK_WINDOW(data->window), &w, &h);
++
++ // Window_border Scrollbar (FFH)
++ w = w - GAIM_HIG_BORDER * 2 - GAIM_HIG_BORDER * 4;
++ gtk_widget_set_size_request(GTK_WIDGET(pri_label), w, -1);
++
++ //Let the prilabel handle the maxsize
++ gtk_widget_set_size_request(GTK_WIDGET(data->account_menu), 0, -1);
++ gtk_widget_set_size_request(GTK_WIDGET(data->entries_box), 0, -1);
+ }
+
+ static void gtk_blist_row_expanded_cb(GtkTreeView *tv, GtkTreeIter *iter, GtkTreePath *path, gpointer user_data) {
+@@ -4364,6 +4403,19 @@
+ vbox = GTK_DIALOG(data->window)->vbox;
+ #endif
+
++ //Make a scrollview to accomodate it all
++ sw = gtk_scrolled_window_new(NULL, NULL);
++ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
++ GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
++ gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
++ GTK_SHADOW_NONE);
++ gtk_widget_set_size_request(sw, -1, 200);
++ gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
++ gtk_widget_show(sw);
++
++ vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER);
++ gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw), vbox);
++
+ label = gtk_label_new(
+ _("Please enter the screen name of the person you would like "
+ "to add to your buddy list. You may optionally enter an alias, "
+@@ -4374,6 +4426,7 @@
+ gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
+ gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
+ gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
++ pri_label = label;
+
+ hbox = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE);
+ gtk_container_add(GTK_CONTAINER(vbox), hbox);
+@@ -4446,6 +4499,25 @@
+
+ if (group != NULL)
+ gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(data->combo)->entry), group);
++
++ //Wait for the window to have recieved its "configure_event",
++ //which means it has been resized by the WM
++ while (gtk_events_pending ()) gtk_main_iteration ();
++
++ //Get allocated size, and adjust widgets accordingly
++ int w, h, field_labels_w;
++ gtk_window_get_size(GTK_WINDOW(data->window), &w, &h);
++ field_labels_w = label->allocation.width + GAIM_HIG_BORDER*2; //The width of the largest field-label
++
++ // Window_border Scrollbar (FFH)
++ w = w - GAIM_HIG_BORDER * 2 - GAIM_HIG_BORDER * 4;
++ gtk_widget_set_size_request(GTK_WIDGET(pri_label), w, -1);
++ //Set the size of the input fields
++ gtk_widget_set_size_request(GTK_WIDGET(data->entry), w-field_labels_w, -1);
++ gtk_widget_set_size_request(GTK_WIDGET(data->entry_for_alias), w-field_labels_w, -1);
++ gtk_widget_set_size_request(GTK_WIDGET(data->combo), w-field_labels_w, -1);
++ gtk_widget_set_size_request(GTK_WIDGET(data->account_box), w-field_labels_w, -1);
++
+ }
+
+ static void
+@@ -4572,6 +4644,9 @@
+ GHashTable *defaults = NULL;
+ struct proto_chat_entry *pce;
+ gboolean focus = TRUE;
++ GtkWidget *label;
++ GtkWidget *rowbox;
++ GtkWidget *input;
+
+ g_return_if_fail(data->account != NULL);
+
+@@ -4596,10 +4671,6 @@
+
+ for (tmp = list; tmp; tmp = tmp->next)
+ {
+- GtkWidget *label;
+- GtkWidget *rowbox;
+- GtkWidget *input;
+-
+ pce = tmp->data;
+
+ rowbox = gtk_hbox_new(FALSE, 5);
+@@ -4657,6 +4728,15 @@
+ addchat_set_sensitive_if_input_cb(NULL, data);
+
+ gtk_widget_show_all(data->entries_box);
++
++ GList* children;
++ children = GTK_BOX(data->entries_box)->children;
++ while (children)
++ {
++ //Let the prilabel handle the maxsize
++ gtk_widget_set_size_request(((GtkBoxChild*)(children->data))->widget, 0, -1);
++ children = children->next;
++ }
+ }
+
+ static void
+@@ -4759,6 +4839,19 @@
+ vbox = GTK_DIALOG(data->window)->vbox;
+ #endif
+
++ //Make a scrollview to accomodate it all
++ sw = gtk_scrolled_window_new(NULL, NULL);
++ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
++ GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
++ gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
++ GTK_SHADOW_NONE);
++ gtk_widget_set_size_request(sw, -1, 200);
++ gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
++ gtk_widget_show(sw);
++
++ vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER);
++ gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw), vbox);
++
+ label = gtk_label_new(
+ _("Please enter an alias, and the appropriate information "
+ "about the chat you would like to add to your buddy list.\n"));
+@@ -4766,7 +4859,8 @@
+ gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
+ gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
+ gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
+-
++ pri_label = label;
++
+ rowbox = gtk_hbox_new(FALSE, 5);
+ gtk_box_pack_start(GTK_BOX(vbox), rowbox, FALSE, FALSE, 0);
+
+@@ -4825,6 +4919,24 @@
+ G_CALLBACK(add_chat_resp_cb), data);
+
+ gtk_widget_show_all(data->window);
++
++ //Wait for the window to have recieved its "configure_event",
++ //which means it has been resized by the WM
++ while (gtk_events_pending ()) gtk_main_iteration ();
++
++ //Get allocated size, and adjust the label accordingly
++ int w, h;
++ gtk_window_get_size(GTK_WINDOW(data->window), &w, &h);
++
++ // Window_border Scrollbar (FFH)
++ w = w - GAIM_HIG_BORDER * 2 - GAIM_HIG_BORDER * 4;
++ gtk_widget_set_size_request(GTK_WIDGET(pri_label), w, -1);
++ //Let the prilabel handle the maxsize
++ gtk_widget_set_size_request(GTK_WIDGET(data->account_menu), 0, -1);
++ gtk_widget_set_size_request(GTK_WIDGET(data->entries_box), 0, -1);
++ gtk_widget_set_size_request(GTK_WIDGET(data->alias_entry), 0, -1);
++ gtk_widget_set_size_request(GTK_WIDGET(data->group_combo), 0, -1);
++
+ }
+
+ static void
+Index: gaim/src/gtkrequest.c
+===================================================================
+--- gaim.orig/src/gtkrequest.c 2005-08-19 21:57:30.273074704 +0200
++++ gaim/src/gtkrequest.c 2005-08-19 21:58:05.468724152 +0200
+@@ -650,6 +650,17 @@
+ /* Show everything. */
+ gtk_widget_show_all(dialog);
+
++ //Wait for the window to have recieved its "configure_event",
++ //which means it has been resized by the WM
++ while (gtk_events_pending ()) gtk_main_iteration ();
++
++ //Get allocated size, and adjust widgets accordingly
++ int w, h;
++ gtk_window_get_size(GTK_WINDOW(dialog), &w, &h);
++
++ w = w - GAIM_HIG_BORDER * 2;
++ gtk_widget_set_size_request(GTK_WIDGET(label), w, -1);
++
+ return data;
+ }
+
diff --git a/recipes/obsolete/gaim/files/04-saved-status-dialogs.patch b/recipes/obsolete/gaim/files/04-saved-status-dialogs.patch
new file mode 100644
index 0000000000..2cdf70c5c1
--- /dev/null
+++ b/recipes/obsolete/gaim/files/04-saved-status-dialogs.patch
@@ -0,0 +1,40 @@
+Identiske underkataloger: src2/CVS og src/CVS
+Identiske underkataloger: src2/.deps og src/.deps
+Index: gaim/src/gtksavedstatuses.c
+===================================================================
+--- gaim.orig/src/gtksavedstatuses.c 2005-08-13 07:54:33.000000000 +0200
++++ gaim/src/gtksavedstatuses.c 2005-08-19 21:20:41.806812608 +0200
+@@ -417,6 +417,7 @@
+ bbox = gtk_hbutton_box_new();
+ gtk_box_set_spacing(GTK_BOX(bbox), GAIM_HIG_BOX_SPACE);
+ gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
++ gtk_button_box_set_child_size(GTK_BUTTON_BOX(bbox), 20, -1); //DEPRECATED FFH
+ gtk_box_pack_end(GTK_BOX(vbox), bbox, FALSE, TRUE, 0);
+ gtk_widget_show(bbox);
+
+@@ -449,12 +450,13 @@
+ G_CALLBACK(status_window_delete_cb), dialog);
+
+ /* Close button */
+- button = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
++ //We can do without the close button to save screen estate
++ /*button = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
+ gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
+ gtk_widget_show(button);
+
+ g_signal_connect(G_OBJECT(button), "clicked",
+- G_CALLBACK(status_window_close_cb), dialog);
++ G_CALLBACK(status_window_close_cb), dialog);*/
+
+ gtk_widget_show(win);
+ }
+@@ -790,7 +792,8 @@
+ disclosure = gaim_disclosure_new(_("Use a different status for some accounts"),
+ _("Use a different status for some accounts"));
+ gtk_box_pack_start(GTK_BOX(vbox), disclosure, FALSE, FALSE, 0);
+- gtk_widget_show(disclosure);
++ //For now, do without the custom messages - not implemented yet
++ //gtk_widget_show(disclosure);
+
+ /* Setup the box that the disclosure will cover */
+ dbox = gtk_vbox_new(FALSE, GAIM_HIG_CAT_SPACE);
diff --git a/recipes/obsolete/gaim/files/05-statusbox-icon-size.patch b/recipes/obsolete/gaim/files/05-statusbox-icon-size.patch
new file mode 100644
index 0000000000..e18f3b2bcb
--- /dev/null
+++ b/recipes/obsolete/gaim/files/05-statusbox-icon-size.patch
@@ -0,0 +1,11 @@
+--- gaim.ori/src/gtkstatusbox.c 2005-09-04 20:42:29.000000000 +0200
++++ gaim/src/gtkstatusbox.c 2005-09-05 08:44:13.000000000 +0200
+@@ -173,7 +173,7 @@
+
+ text_rend = gtk_cell_renderer_text_new();
+ icon_rend = gtk_cell_renderer_pixbuf_new();
+- icon_size = gtk_icon_size_from_name(GAIM_ICON_SIZE_STATUS);
++ icon_size = GTK_ICON_SIZE_SMALL_TOOLBAR;
+
+ status_box->imhtml_visible = FALSE;
+ status_box->error_pixbuf = gtk_widget_render_icon (GTK_WIDGET(status_box), GAIM_STOCK_STATUS_OFFLINE,
diff --git a/recipes/obsolete/gaim/files/06-account-dialogs.patch b/recipes/obsolete/gaim/files/06-account-dialogs.patch
new file mode 100644
index 0000000000..9d2cb9acb0
--- /dev/null
+++ b/recipes/obsolete/gaim/files/06-account-dialogs.patch
@@ -0,0 +1,219 @@
+Index: gaim/src/gtkaccount.c
+===================================================================
+--- gaim.orig/src/gtkaccount.c 2005-08-25 17:16:44.000000000 +0200
++++ gaim/src/gtkaccount.c 2005-08-29 22:34:25.511003600 +0200
+@@ -857,7 +857,6 @@
+ {
+ GtkWidget *frame;
+ GtkWidget *vbox;
+- GtkWidget *vbox2;
+ GtkWidget *hbox;
+ GtkWidget *hbox2;
+ GtkWidget *button;
+@@ -901,12 +900,8 @@
+ gaim_set_accessible_label (dialog->icon_entry, label);
+ dialog->icon_path = NULL;
+
+- vbox2 = gtk_vbox_new(FALSE, 0);
+- gtk_box_pack_start(GTK_BOX(hbox), vbox2, TRUE, TRUE, 0);
+- gtk_widget_show(vbox2);
+-
+ hbox2 = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE);
+- gtk_box_pack_start(GTK_BOX(vbox2), hbox2, FALSE, FALSE, GAIM_HIG_BORDER);
++ gtk_box_pack_start(GTK_BOX(vbox), hbox2, FALSE, FALSE, GAIM_HIG_BORDER);
+ gtk_widget_show(hbox2);
+
+ button = gtk_button_new_from_stock(GTK_STOCK_OPEN);
+@@ -1275,7 +1270,18 @@
+ gtk_option_menu_get_menu(GTK_OPTION_MENU(dialog->proxy_dropdown));
+ #endif
+
+- add_pref_box(dialog, vbox, _("Proxy _type:"), dialog->proxy_dropdown);
++ GtkWidget *label;
++ label = gtk_label_new_with_mnemonic(_("Proxy _type:"));
++ gtk_size_group_add_widget(dialog->sg, label);
++ gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
++ gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
++ gtk_widget_show(label);
++
++ gtk_box_pack_start(GTK_BOX(vbox), dialog->proxy_dropdown, TRUE, TRUE, GAIM_HIG_BORDER);
++ gtk_widget_show(dialog->proxy_dropdown);
++ gaim_set_accessible_label (dialog->proxy_dropdown, label);
++
++ //add_pref_box(dialog, vbox, _("Proxy _type:"), dialog->proxy_dropdown);
+
+ /* Setup the second vbox, which may be hidden at times. */
+ dialog->proxy_vbox = vbox2 = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE);
+@@ -1643,6 +1649,7 @@
+ AccountPrefsDialog *dialog;
+ GtkWidget *win;
+ GtkWidget *main_vbox;
++ GtkWidget *sw;
+ GtkWidget *vbox;
+ GtkWidget *bbox;
+ GtkWidget *dbox;
+@@ -1709,10 +1716,19 @@
+ gtk_box_pack_start(GTK_BOX(main_vbox), notebook, FALSE, FALSE, 0);
+
+ /* Setup the inner vbox */
++ //With a scrollbox
++ sw = gtk_scrolled_window_new(NULL, NULL);
++ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
++ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
++ gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
++ GTK_SHADOW_NONE);
++ gtk_widget_set_size_request(sw, -1, -1);
++ gtk_notebook_append_page(GTK_NOTEBOOK(notebook), sw,
++ gtk_label_new_with_mnemonic("_Basic"));
++ gtk_widget_show(sw);
+ dialog->top_vbox = vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), GAIM_HIG_BORDER);
+- gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox,
+- gtk_label_new_with_mnemonic("_Basic"));
++ gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw), vbox);
+ gtk_widget_show(vbox);
+
+ /* Setup the top frames. */
+@@ -1720,10 +1736,20 @@
+ add_user_options(dialog, vbox);
+
+ /* Setup the page with 'Advanced'. */
++ //With a scrollbox
++ sw = gtk_scrolled_window_new(NULL, NULL);
++ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
++ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
++ gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
++ GTK_SHADOW_NONE);
++ gtk_widget_set_size_request(sw, -1, -1);
++ gtk_notebook_append_page(GTK_NOTEBOOK(notebook), sw,
++ gtk_label_new_with_mnemonic("_Advanced"));
++ gtk_widget_show(sw);
+ dialog->bottom_vbox = dbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER);
+ gtk_container_set_border_width(GTK_CONTAINER(dbox), GAIM_HIG_BORDER);
+- gtk_notebook_append_page(GTK_NOTEBOOK(notebook), dbox,
+- gtk_label_new_with_mnemonic("_Advanced"));
++ gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw), dbox);
++ gtk_widget_show(dbox);
+
+ /** Setup the bottom frames. */
+ add_protocol_options(dialog, dbox);
+@@ -1731,46 +1757,50 @@
+ add_proxy_options(dialog, dbox);
+
+ /* Setup the button box */
+- bbox = gtk_hbutton_box_new();
++ //bbox = gtk_hbutton_box_new();
++ //Replaced with a hbox, otherwise the Register-button doesn't fit (same size required)
++ bbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER);
+ gtk_box_set_spacing(GTK_BOX(bbox), GAIM_HIG_BOX_SPACE);
+- gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
+ gtk_box_pack_end(GTK_BOX(main_vbox), bbox, FALSE, TRUE, 0);
+ gtk_widget_show(bbox);
+
+- /* Register button */
+- button = gtk_button_new_with_label(_("Register"));
+- gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
+- gtk_widget_show(button);
+-
+- g_signal_connect(G_OBJECT(button), "clicked",
+- G_CALLBACK(register_account_prefs_cb), dialog);
+-
+- dialog->register_button = button;
+-
++ /* Save button */
++ button = gtk_button_new_from_stock(GTK_STOCK_SAVE);
++ gtk_box_pack_end(GTK_BOX(bbox), button, FALSE, FALSE, 0);
++
+ if (dialog->account == NULL)
+ gtk_widget_set_sensitive(button, FALSE);
+
+- if (!dialog->prpl_info || !dialog->prpl_info->register_user)
+- gtk_widget_hide(button);
++ gtk_widget_show(button);
++
++ dialog->ok_button = button;
++
++ g_signal_connect(G_OBJECT(button), "clicked",
++ G_CALLBACK(ok_account_prefs_cb), dialog);
+
+ /* Cancel button */
+ button = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
+- gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
++ gtk_box_pack_end(GTK_BOX(bbox), button, FALSE, FALSE, 0);
+ gtk_widget_show(button);
+
+ g_signal_connect(G_OBJECT(button), "clicked",
+ G_CALLBACK(cancel_account_prefs_cb), dialog);
+
+- /* Save button */
+- button = gtk_button_new_from_stock(GTK_STOCK_SAVE);
+- gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
++ /* Register button */
++ button = gtk_button_new_with_label(_("Register"));
++ gtk_box_pack_end(GTK_BOX(bbox), button, FALSE, FALSE, 0);
++ gtk_widget_show(button);
++
++ g_signal_connect(G_OBJECT(button), "clicked",
++ G_CALLBACK(register_account_prefs_cb), dialog);
++
++ dialog->register_button = button;
+
+ if (dialog->account == NULL)
+ gtk_widget_set_sensitive(button, FALSE);
+
+- gtk_widget_show(button);
+-
+- dialog->ok_button = button;
++ if (!dialog->prpl_info || !dialog->prpl_info->register_user)
++ gtk_widget_hide(button);
+
+ /* Set up DND */
+ gtk_drag_dest_set(dialog->window,
+@@ -1783,11 +1813,20 @@
+ g_signal_connect(G_OBJECT(dialog->window), "drag_data_received",
+ G_CALLBACK(account_dnd_recv), dialog);
+
+- g_signal_connect(G_OBJECT(button), "clicked",
+- G_CALLBACK(ok_account_prefs_cb), dialog);
+-
+ /* Show the window. */
+ gtk_widget_show(win);
++
++ //Wait for the window to have recieved its "configure_event",
++ //which means it has been resized by the WM
++ while (gtk_events_pending ()) gtk_main_iteration ();
++
++ //Get allocated size, and adjust widgets accordingly
++ int w, h;
++ gtk_window_get_size(GTK_WINDOW(win), &w, &h);
++
++ w = w - GAIM_HIG_BORDER * 2;
++ gtk_widget_set_size_request(GTK_WIDGET(dialog->protocol_menu), w, -1);
++
+ }
+
+ /**************************************************************************
+@@ -2389,6 +2428,7 @@
+ bbox = gtk_hbutton_box_new();
+ gtk_box_set_spacing(GTK_BOX(bbox), GAIM_HIG_BOX_SPACE);
+ gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
++ gtk_button_box_set_child_size(GTK_BUTTON_BOX(bbox), 20, -1); //DEPRECATED FFH
+ gtk_box_pack_end(GTK_BOX(vbox), bbox, FALSE, TRUE, 0);
+ gtk_widget_show(bbox);
+
+@@ -2421,12 +2461,13 @@
+ G_CALLBACK(ask_delete_account_cb), dialog);
+
+ /* Close button */
+- button = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
++ //We can do without the close button to save screen estate
++ /*button = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
+ gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
+ gtk_widget_show(button);
+
+ g_signal_connect(G_OBJECT(button), "clicked",
+- G_CALLBACK(close_accounts_cb), dialog);
++ G_CALLBACK(close_accounts_cb), dialog);*/
+
+ /* Setup some gaim signal handlers. */
+ gaim_signal_connect(gaim_connections_get_handle(), "signed-on",
diff --git a/recipes/obsolete/gaim/files/07-roomlist-dialog.patch b/recipes/obsolete/gaim/files/07-roomlist-dialog.patch
new file mode 100644
index 0000000000..2806c78fd4
--- /dev/null
+++ b/recipes/obsolete/gaim/files/07-roomlist-dialog.patch
@@ -0,0 +1,67 @@
+Index: gaim/src/gtkroomlist.c
+===================================================================
+--- gaim.orig/src/gtkroomlist.c 2005-08-13 01:53:28.000000000 +0200
++++ gaim/src/gtkroomlist.c 2005-08-19 21:37:26.225117816 +0200
+@@ -129,7 +129,9 @@
+ gtk_container_add(GTK_CONTAINER(dialog->sw), rl->tree);
+
+ gtk_widget_set_sensitive(dialog->stop_button, TRUE);
++ gtk_widget_show(dialog->stop_button);
+ gtk_widget_set_sensitive(dialog->list_button, FALSE);
++ gtk_widget_hide(dialog->list_button);
+ gtk_widget_set_sensitive(dialog->join_button, FALSE);
+ }
+
+@@ -141,7 +143,9 @@
+ gtk_widget_set_sensitive(dialog->account_widget, TRUE);
+
+ gtk_widget_set_sensitive(dialog->stop_button, FALSE);
++ gtk_widget_hide(dialog->stop_button);
+ gtk_widget_set_sensitive(dialog->list_button, TRUE);
++ gtk_widget_show(dialog->list_button);
+ gtk_widget_set_sensitive(dialog->join_button, FALSE);
+ }
+
+@@ -396,7 +400,7 @@
+ g_signal_connect(G_OBJECT(dialog->stop_button), "clicked",
+ G_CALLBACK(stop_button_cb), dialog);
+ gtk_widget_set_sensitive(dialog->stop_button, FALSE);
+- gtk_widget_show(dialog->stop_button);
++ //gtk_widget_show(dialog->stop_button);
+
+ /* list button */
+ dialog->list_button = gtk_button_new_with_mnemonic(_("_Get List"));
+@@ -415,11 +419,12 @@
+ gtk_widget_show(dialog->join_button);
+
+ /* close button */
+- dialog->close_button = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
++ //We can do without the close button to save screen estate
++ /*dialog->close_button = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
+ gtk_box_pack_start(GTK_BOX(bbox), dialog->close_button, FALSE, FALSE, 0);
+ g_signal_connect(G_OBJECT(dialog->close_button), "clicked",
+ G_CALLBACK(close_button_cb), dialog);
+- gtk_widget_show(dialog->close_button);
++ gtk_widget_show(dialog->close_button);*/
+
+ /* show the dialog window and return the dialog */
+ gtk_widget_show(dialog->window);
+@@ -683,14 +688,18 @@
+ if (rl->dialog->account_widget)
+ gtk_widget_set_sensitive(rl->dialog->account_widget, FALSE);
+ gtk_widget_set_sensitive(rl->dialog->stop_button, TRUE);
++ gtk_widget_show(rl->dialog->stop_button);
+ gtk_widget_set_sensitive(rl->dialog->list_button, FALSE);
++ gtk_widget_hide(rl->dialog->list_button);
+ } else {
+ rl->dialog->pg_needs_pulse = FALSE;
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(rl->dialog->progress), 0.0);
+ if (rl->dialog->account_widget)
+ gtk_widget_set_sensitive(rl->dialog->account_widget, TRUE);
+ gtk_widget_set_sensitive(rl->dialog->stop_button, FALSE);
++ gtk_widget_hide(rl->dialog->stop_button);
+ gtk_widget_set_sensitive(rl->dialog->list_button, TRUE);
++ gtk_widget_show(rl->dialog->list_button);
+ }
+ }
+
diff --git a/recipes/obsolete/gaim/files/08-prefs-dialog.patch b/recipes/obsolete/gaim/files/08-prefs-dialog.patch
new file mode 100644
index 0000000000..a8fcb89311
--- /dev/null
+++ b/recipes/obsolete/gaim/files/08-prefs-dialog.patch
@@ -0,0 +1,64 @@
+--- gaim.ori/src/gtkprefs.c 2005-09-05 08:28:17.000000000 +0200
++++ gaim/src/gtkprefs.c 2005-09-05 09:06:27.000000000 +0200
+@@ -2108,12 +2108,18 @@
+ if (icon)
+ g_object_unref(icon);
+
+-#if GTK_CHECK_VERSION(2,4,0)
+- return gtk_notebook_append_page(GTK_NOTEBOOK(prefsnotebook), page, gtk_label_new(text));
+-#else
+- gtk_notebook_append_page(GTK_NOTEBOOK(prefsnotebook), page, gtk_label_new(text));
+- return gtk_notebook_page_num(GTK_NOTEBOOK(prefsnotebook), page);
+-#endif
++ //Add a scrolled window around the page contents
++ GtkWidget *sw;
++ sw = gtk_scrolled_window_new(NULL, NULL);
++ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
++ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
++ gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
++ GTK_SHADOW_NONE);
++ //gtk_widget_set_size_request(sw, -1, 200);
++ gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw), page);
++
++
++ return gtk_notebook_append_page(GTK_NOTEBOOK(prefsnotebook), sw, gtk_label_new(text));
+ }
+
+ static void prefs_notebook_init() {
+@@ -2146,9 +2152,9 @@
+ void gaim_gtk_prefs_show(void)
+ {
+ GtkWidget *vbox;
+- GtkWidget *bbox;
++ //GtkWidget *bbox;
+ GtkWidget *notebook;
+- GtkWidget *button;
++ //GtkWidget *button;
+
+ if (prefs) {
+ gtk_window_present(GTK_WINDOW(prefs));
+@@ -2176,11 +2182,13 @@
+
+ /* The notebook */
+ prefsnotebook = notebook = gtk_notebook_new ();
+- gtk_box_pack_start (GTK_BOX (vbox), notebook, FALSE, FALSE, 0);
++ gtk_notebook_set_scrollable(GTK_NOTEBOOK(prefsnotebook), TRUE);
++ gtk_box_pack_start (GTK_BOX (vbox), notebook, TRUE, TRUE, 0);
+
+
+ /* The buttons to press! */
+- bbox = gtk_hbutton_box_new();
++ //To save screen estate we will do without a close button
++ /*bbox = gtk_hbutton_box_new();
+ gtk_box_set_spacing(GTK_BOX(bbox), GAIM_HIG_BOX_SPACE);
+ gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
+ gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0);
+@@ -2190,7 +2198,7 @@
+ g_signal_connect_swapped(G_OBJECT(button), "clicked",
+ G_CALLBACK(gtk_widget_destroy), prefs);
+ gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
+- gtk_widget_show(button);
++ gtk_widget_show(button);*/
+
+ prefs_notebook_init();
+
diff --git a/recipes/obsolete/gaim/files/09-filetransfer-dialog.patch b/recipes/obsolete/gaim/files/09-filetransfer-dialog.patch
new file mode 100644
index 0000000000..c4fa3a0a6d
--- /dev/null
+++ b/recipes/obsolete/gaim/files/09-filetransfer-dialog.patch
@@ -0,0 +1,52 @@
+Index: gaim/src/gtkft.c
+===================================================================
+--- gaim.orig/src/gtkft.c 2005-08-21 01:59:50.000000000 +0200
++++ gaim/src/gtkft.c 2005-08-29 23:05:02.000000000 +0200
+@@ -772,24 +772,26 @@
+ G_CALLBACK(open_button_cb), dialog);
+
+ /* Pause button */
+- button = gtk_button_new_with_mnemonic(_("_Pause"));
++ /* Pause button has no function*/
++ /*button = gtk_button_new_with_mnemonic(_("_Pause"));
+ gtk_widget_set_sensitive(button, FALSE);
+ gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
+ gtk_widget_show(button);
+ dialog->pause_button = button;
+
+ g_signal_connect(G_OBJECT(button), "clicked",
+- G_CALLBACK(pause_button_cb), dialog);
++ G_CALLBACK(pause_button_cb), dialog);*/
+
+ /* Resume button */
+- button = gtk_button_new_with_mnemonic(_("_Resume"));
++ /* Resume button has no function */
++ /*button = gtk_button_new_with_mnemonic(_("_Resume"));
+ gtk_widget_set_sensitive(button, FALSE);
+ gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
+ gtk_widget_show(button);
+ dialog->resume_button = button;
+
+ g_signal_connect(G_OBJECT(button), "clicked",
+- G_CALLBACK(resume_button_cb), dialog);
++ G_CALLBACK(resume_button_cb), dialog);*/
+
+ /* Remove button */
+ button = gtk_button_new_from_stock(GTK_STOCK_REMOVE);
+@@ -811,13 +813,14 @@
+ G_CALLBACK(stop_button_cb), dialog);
+
+ /* Close button */
+- button = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
++ /* Do without a close button to save screen estate */
++ /*button = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
+ gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
+ gtk_widget_show(button);
+ dialog->close_button = button;
+
+ g_signal_connect(G_OBJECT(button), "clicked",
+- G_CALLBACK(close_button_cb), dialog);
++ G_CALLBACK(close_button_cb), dialog);*/
+
+ return dialog;
+ }
diff --git a/recipes/obsolete/gaim/files/10-pda-default-settings.patch b/recipes/obsolete/gaim/files/10-pda-default-settings.patch
new file mode 100644
index 0000000000..953dc11612
--- /dev/null
+++ b/recipes/obsolete/gaim/files/10-pda-default-settings.patch
@@ -0,0 +1,13 @@
+Index: gaim/src/gtkconv.c
+===================================================================
+--- gaim.orig/src/gtkconv.c 2005-08-25 17:16:50.000000000 +0200
++++ gaim/src/gtkconv.c 2005-08-29 23:56:48.142463528 +0200
+@@ -6126,7 +6126,7 @@
+ gaim_prefs_add_bool("/gaim/gtk/conversations/spellcheck", TRUE);
+ gaim_prefs_add_bool("/gaim/gtk/conversations/show_incoming_formatting", TRUE);
+
+- gaim_prefs_add_bool("/gaim/gtk/conversations/show_formatting_toolbar", TRUE);
++ gaim_prefs_add_bool("/gaim/gtk/conversations/show_formatting_toolbar", FALSE);
+ gaim_prefs_add_bool("/gaim/gtk/conversations/passthrough_unknown_commands", FALSE);
+
+ gaim_prefs_add_string("/gaim/gtk/conversations/placement", "last");
diff --git a/recipes/obsolete/gaim/files/define-pda-mode.patch b/recipes/obsolete/gaim/files/define-pda-mode.patch
new file mode 100644
index 0000000000..f1a368bc73
--- /dev/null
+++ b/recipes/obsolete/gaim/files/define-pda-mode.patch
@@ -0,0 +1,36 @@
+Index: gaim/src/gtkgaim.h
+===================================================================
+--- gaim.orig/src/gtkgaim.h 2005-08-25 17:29:42.000000000 +0200
++++ gaim/src/gtkgaim.h 2005-08-25 19:00:37.335318168 +0200
+@@ -57,14 +57,14 @@
+ * Spacings between components, as defined by the
+ * Gnome Human Interface Guidelines.
+ */
+-#define GAIM_HIG_CAT_SPACE 18
+-#define GAIM_HIG_BORDER 12
+-#define GAIM_HIG_BOX_SPACE 6
++#define GAIM_HIG_CAT_SPACE 9
++#define GAIM_HIG_BORDER 6
++#define GAIM_HIG_BOX_SPACE 3
+
+ /**
+ * Do we want icons in dialogs?
+ */
+-#define ICONS_IN_DIALOGS 1
++#define ICONS_IN_DIALOGS 0
+
+ /**
+ * How many fields is there screen-space for vertically, before a scrollbar is needed?
+Index: gaim/src/gtkutils.c
+===================================================================
+--- gaim.orig/src/gtkutils.c 2005-08-25 19:01:19.630888264 +0200
++++ gaim/src/gtkutils.c 2005-08-25 19:02:05.067980776 +0200
+@@ -398,7 +398,7 @@
+ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
+ gtk_widget_show(hbox);
+
+- label = gtk_label_new(" ");
++ label = gtk_label_new(" ");
+ gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
+ gtk_widget_show(label);
+
diff --git a/recipes/obsolete/gaim/files/desktop-name-2.0.0.patch b/recipes/obsolete/gaim/files/desktop-name-2.0.0.patch
new file mode 100644
index 0000000000..c921619721
--- /dev/null
+++ b/recipes/obsolete/gaim/files/desktop-name-2.0.0.patch
@@ -0,0 +1,27 @@
+Index: gaim/gaim.desktop
+===================================================================
+--- gaim.orig/gaim.desktop 2005-06-06 03:40:46.000000000 +0200
++++ gaim/gaim.desktop 2005-08-21 02:00:18.525853592 +0200
+@@ -33,21 +33,7 @@
+ GenericName[sq]=Lajmësjellës Internet
+ GenericName[sv]=Meddelandeklient
+ GenericName[zh_CN]=互联眑通讯皋序
+-Name=Gaim Internet Messenger
+-Name[da]=Gaim - internet beskeder
+-Name[de]=Gaim Internet Messenger
+-Name[fr]=Gaim Messagerie Instantanée
+-Name[hu]=Gaim IM
+-Name[it]=Gaim Internet Messenger
+-Name[ko]=게임 메신저
+-Name[nb]=Gaim lynmeldingsklient
+-Name[nl]=Gaim - Expresberichten
+-Name[pl]=Komunikator Internetowy Gaim
+-Name[pt]=Mensageiro Internet Gaim
+-Name[sl]=Gaim - spletni sel
+-Name[sq]=Lajmësjellësi Internet Gaim
+-Name[sv]=Gaim Internet Messenger
+-Name[zh_CN]=Gaim 互联眑通讯皋序
++Name=Gaim
+ Exec=gaim
+ Icon=gaim.png
+ StartupNotify=true
diff --git a/recipes/obsolete/gaim/files/desktop-name.patch b/recipes/obsolete/gaim/files/desktop-name.patch
new file mode 100644
index 0000000000..6095a77e47
--- /dev/null
+++ b/recipes/obsolete/gaim/files/desktop-name.patch
@@ -0,0 +1,10 @@
+--- gaim-1.0.3/gaim.desktop.old 2005-01-01 16:48:58.000000000 +0000
++++ gaim-1.0.3/gaim.desktop 2005-01-01 16:49:15.000000000 +0000
+@@ -1,6 +1,6 @@
+ [Desktop Entry]
+ Encoding=UTF-8
+-Name=Gaim Internet Messenger
++Name=Gaim
+ Name[de]=Gaim Internet Messenger
+ Name[da]=Gaim - internet beskeder
+ Name[fr]=Gaim Messagerie Instantanée
diff --git a/recipes/obsolete/gaim/files/desktop-name_1.4.0.patch b/recipes/obsolete/gaim/files/desktop-name_1.4.0.patch
new file mode 100644
index 0000000000..3cfaa5771e
--- /dev/null
+++ b/recipes/obsolete/gaim/files/desktop-name_1.4.0.patch
@@ -0,0 +1,11 @@
+--- gaim-1.4.0/gaim.desktop.old 2005-07-15 00:58:50.000000000 +0200
++++ gaim-1.4.0/gaim.desktop 2005-07-15 00:59:35.000000000 +0200
+@@ -7,7 +7,7 @@
+ Terminal=false
+ Type=Application
+
+-Name=Gaim Internet Messenger
++Name=Gaim
+ Name[ca]=Missatger d'Internet Gaim
+ Name[cs]=Gaim Internet Messenger
+ Name[da]=Gaim - internet beskeder
diff --git a/recipes/obsolete/gaim/files/desktop-name_1.5.0.patch b/recipes/obsolete/gaim/files/desktop-name_1.5.0.patch
new file mode 100644
index 0000000000..3cfaa5771e
--- /dev/null
+++ b/recipes/obsolete/gaim/files/desktop-name_1.5.0.patch
@@ -0,0 +1,11 @@
+--- gaim-1.4.0/gaim.desktop.old 2005-07-15 00:58:50.000000000 +0200
++++ gaim-1.4.0/gaim.desktop 2005-07-15 00:59:35.000000000 +0200
+@@ -7,7 +7,7 @@
+ Terminal=false
+ Type=Application
+
+-Name=Gaim Internet Messenger
++Name=Gaim
+ Name[ca]=Missatger d'Internet Gaim
+ Name[cs]=Gaim Internet Messenger
+ Name[da]=Gaim - internet beskeder
diff --git a/recipes/obsolete/gaim/files/docklet-icon-size.patch b/recipes/obsolete/gaim/files/docklet-icon-size.patch
new file mode 100644
index 0000000000..6b8047a30c
--- /dev/null
+++ b/recipes/obsolete/gaim/files/docklet-icon-size.patch
@@ -0,0 +1,13 @@
+Index: gaim/plugins/docklet/docklet-x11.c
+===================================================================
+--- gaim.orig/plugins/docklet/docklet-x11.c 2005-04-02 17:23:28.000000000 +0200
++++ gaim/plugins/docklet/docklet-x11.c 2005-08-21 02:06:51.869056336 +0200
+@@ -112,7 +112,7 @@
+ break;
+ }
+
+- gtk_image_set_from_stock(GTK_IMAGE(image), icon_name, GTK_ICON_SIZE_LARGE_TOOLBAR);
++ gtk_image_set_from_stock(GTK_IMAGE(image), icon_name, GTK_ICON_SIZE_SMALL_TOOLBAR);
+
+ #if 0
+ GdkPixbuf *p;
diff --git a/recipes/obsolete/gaim/files/gaim-OE-branding.patch b/recipes/obsolete/gaim/files/gaim-OE-branding.patch
new file mode 100644
index 0000000000..d090899cac
--- /dev/null
+++ b/recipes/obsolete/gaim/files/gaim-OE-branding.patch
@@ -0,0 +1,11 @@
+--- /tmp/irc.h 2005-10-04 14:10:59.699874560 +0200
++++ gaim/src/protocols/irc/irc.h 2005-10-04 14:13:10.135045400 +0200
+@@ -35,7 +35,7 @@
+ #define IRC_DEFAULT_CHARSET "UTF-8"
+ #define IRC_DEFAULT_ALIAS "gaim"
+
+-#define IRC_DEFAULT_QUIT "Download Gaim: " GAIM_WEBSITE
++#define IRC_DEFAULT_QUIT "Powered by OE: www.openembedded.org"
+
+ #define IRC_INITIAL_BUFSIZE 1024
+
diff --git a/recipes/obsolete/gaim/files/gevolution-eds-dbus.patch b/recipes/obsolete/gaim/files/gevolution-eds-dbus.patch
new file mode 100644
index 0000000000..0b7479d4f7
--- /dev/null
+++ b/recipes/obsolete/gaim/files/gevolution-eds-dbus.patch
@@ -0,0 +1,53 @@
+--- gaim/plugins/gevolution/gevolution.c.orig 2006-02-23 23:30:25.000000000 +0100
++++ gaim/plugins/gevolution/gevolution.c 2006-02-23 23:31:42.000000000 +0100
+@@ -38,17 +38,12 @@
+
+-#include <libedata-book/Evolution-DataServer-Addressbook.h>
+
+-#include <libebook/e-book-listener.h>
+-#include <libedata-book/e-data-book-factory.h>
+-#include <bonobo/bonobo-main.h>
++#include <libebook/e-book-view-listener.h>
++#include <libebook/e-data-book-factory-bindings.h>
+
+ #include <glib.h>
+
+ #define GEVOLUTION_PLUGIN_ID "gtk-x11-gevolution"
+
+-#define E_DATA_BOOK_FACTORY_OAF_ID \
+- "OAFIID:GNOME_Evolution_DataServer_BookFactory"
+-
+ enum
+ {
+ COLUMN_AUTOADD,
+@@ -324,8 +320,6 @@
+ static gboolean
+ plugin_load(GaimPlugin *plugin)
+ {
+- bonobo_activate();
+-
+ backup_blist_ui_ops = gaim_blist_get_ui_ops();
+
+ blist_ui_ops = g_memdup(backup_blist_ui_ops, sizeof(GaimBlistUiOps));
+@@ -370,7 +364,6 @@
+ static void
+ plugin_destroy(GaimPlugin *plugin)
+ {
+- bonobo_debug_shutdown();
+ }
+
+ static void
+@@ -563,13 +556,6 @@
+ * So, in conclusion, this is an evil hack, but it doesn't harm anything
+ * and it works.
+ */
+- g_module_make_resident(plugin->handle);
+-
+- if (!bonobo_init_full(NULL, NULL, bonobo_activation_orb_get(),
+- CORBA_OBJECT_NIL, CORBA_OBJECT_NIL))
+- {
+- gaim_debug_error("evolution", "Unable to initialize bonobo.\n");
+- }
+ }
+
+ GAIM_INIT_PLUGIN(gevolution, init_plugin, info)
diff --git a/recipes/obsolete/gaim/files/gtk-deprecated-2.0.0.patch b/recipes/obsolete/gaim/files/gtk-deprecated-2.0.0.patch
new file mode 100644
index 0000000000..04bb9244f0
--- /dev/null
+++ b/recipes/obsolete/gaim/files/gtk-deprecated-2.0.0.patch
@@ -0,0 +1,13 @@
+--- gaim/configure.ac.orig 2005-12-19 23:04:14 +0100
++++ gaim/configure.ac 2005-12-19 23:04:49 +0100
+@@ -442,10 +442,6 @@
+ fi
+ fi
+
+-if test "x$enable_deprecated" = "xno"; then
+- DEBUG_CFLAGS="$DEBUG_CFLAGS -DG_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
+-fi
+-
+ if test "x$GCC" = "xyes"; then
+ DEBUG_CFLAGS="-Wall $DEBUG_CFLAGS"
+ CFLAGS="-g $CFLAGS"
diff --git a/recipes/obsolete/gaim/files/no-superimposed-version-on-logo.patch b/recipes/obsolete/gaim/files/no-superimposed-version-on-logo.patch
new file mode 100644
index 0000000000..86809dfe98
--- /dev/null
+++ b/recipes/obsolete/gaim/files/no-superimposed-version-on-logo.patch
@@ -0,0 +1,19 @@
+Index: gaim/src/gtkstock.c
+===================================================================
+--- gaim.orig/src/gtkstock.c 2005-08-15 08:52:45.000000000 +0200
++++ gaim/src/gtkstock.c 2005-08-19 18:13:26.550881552 +0200
+@@ -214,12 +214,12 @@
+
+ pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
+
+ g_free(filename);
+
+- if (!strcmp(stock_icons[i].name, GAIM_STOCK_LOGO))
+- gaim_gtk_stock_versionize(&pixbuf, win);
++ /*if (!strcmp(stock_icons[i].name, GAIM_STOCK_LOGO))
++ gaim_gtk_stock_versionize(&pixbuf, win);*/
+
+ iconset = gtk_icon_set_new_from_pixbuf(pixbuf);
+
+ g_object_unref(G_OBJECT(pixbuf));
+ }
diff --git a/recipes/obsolete/gaim/files/series b/recipes/obsolete/gaim/files/series
new file mode 100644
index 0000000000..c7a16f71c1
--- /dev/null
+++ b/recipes/obsolete/gaim/files/series
@@ -0,0 +1,14 @@
+no-superimposed-version-on-logo.patch
+01-optional-icons-in-dialogs.patch
+02-request-field-dialogs.patch
+03-blist-dialogs.patch
+04-saved-status-dialogs.patch
+05-statusbox-icon-size.patch
+06-account-dialogs.patch
+07-roomlist-dialog.patch
+define-pda-mode.patch
+desktop-name-2.0.0.patch
+docklet-icon-size.patch
+08-prefs-dialog.patch
+09-filetransfer-dialog.patch
+10-pda-default-settings.patch
diff --git a/recipes/obsolete/gaim/gaim.inc b/recipes/obsolete/gaim/gaim.inc
new file mode 100644
index 0000000000..d2fb38881a
--- /dev/null
+++ b/recipes/obsolete/gaim/gaim.inc
@@ -0,0 +1,35 @@
+SECTION = "x11/network"
+DESCRIPTION = "multi-protocol instant messaging client"
+LICENSE = "GPL"
+
+DEPENDS = "gtk+ gnutls virtual/libintl"
+RRECOMMENDS_${PN} = "gaim-protocol-irc gaim-protocol-jabber gaim-plugin-docklet"
+
+EXTRA_OECONF = "--disable-audio --disable-perl --disable-tcl --disable-deprecated"
+
+FILES_${PN} = "${bindir} ${sbindir} ${libexecdir} ${libdir}/lib*.so.* \
+ ${sysconfdir} ${sharedstatedir} ${localstatedir} \
+ /bin /sbin /lib/*.so* ${datadir}/${PN} ${libdir}/${PN}/*.so \
+ ${datadir}/pixmaps ${datadir}/applications \
+ ${datadir}/idl ${datadir}/omf ${datadir}/sounds \
+ ${libdir}/bonobo/servers"
+FILES_${PN}-dev += "${libdir}/gaim/*.la"
+
+inherit autotools gettext
+
+PACKAGES_DYNAMIC = "gaim-protocol-* gaim-plugin-*"
+
+python populate_packages_prepend () {
+ root = bb.data.expand('${libdir}/gaim', d)
+
+ do_split_packages(d, root, '^([^l][^i][^b].*)\.so$',
+ output_pattern='gaim-plugin-%s',
+ description='GAIM plugin %s',
+ prepend=True)
+
+ do_split_packages(d, root, '^lib(.*)\.so$',
+ output_pattern='gaim-protocol-%s',
+ description='GAIM protocol plugin for %s',
+ prepend=True,
+ aux_files_pattern=['${datadir}/pixmaps/gaim/status/default/%s.png', '${datadir}/pixmaps/gaim/smileys/default/%s_*'])
+}
diff --git a/recipes/obsolete/gaim/gaim_1.0.3.bb b/recipes/obsolete/gaim/gaim_1.0.3.bb
new file mode 100644
index 0000000000..f833ddde28
--- /dev/null
+++ b/recipes/obsolete/gaim/gaim_1.0.3.bb
@@ -0,0 +1,6 @@
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${PN}-${PV}.tar.bz2 \
+ file://desktop-name.patch;patch=1"
+
+require gaim.inc
diff --git a/recipes/obsolete/gaim/gaim_1.1.0.bb b/recipes/obsolete/gaim/gaim_1.1.0.bb
new file mode 100644
index 0000000000..f833ddde28
--- /dev/null
+++ b/recipes/obsolete/gaim/gaim_1.1.0.bb
@@ -0,0 +1,6 @@
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${PN}-${PV}.tar.bz2 \
+ file://desktop-name.patch;patch=1"
+
+require gaim.inc
diff --git a/recipes/obsolete/gaim/gaim_1.1.1.bb b/recipes/obsolete/gaim/gaim_1.1.1.bb
new file mode 100644
index 0000000000..f833ddde28
--- /dev/null
+++ b/recipes/obsolete/gaim/gaim_1.1.1.bb
@@ -0,0 +1,6 @@
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${PN}-${PV}.tar.bz2 \
+ file://desktop-name.patch;patch=1"
+
+require gaim.inc
diff --git a/recipes/obsolete/gaim/gaim_1.1.2.bb b/recipes/obsolete/gaim/gaim_1.1.2.bb
new file mode 100644
index 0000000000..3bf9aeb3a7
--- /dev/null
+++ b/recipes/obsolete/gaim/gaim_1.1.2.bb
@@ -0,0 +1,9 @@
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${PN}-${PV}.tar.bz2 \
+ file://desktop-name.patch;patch=1"
+
+require gaim.inc
+
+CFLAGS += "-D_GNU_SOURCE"
+
diff --git a/recipes/obsolete/gaim/gaim_1.4.0.bb b/recipes/obsolete/gaim/gaim_1.4.0.bb
new file mode 100644
index 0000000000..1585229b14
--- /dev/null
+++ b/recipes/obsolete/gaim/gaim_1.4.0.bb
@@ -0,0 +1,9 @@
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${PN}-${PV}.tar.bz2 \
+ file://desktop-name_1.4.0.patch;patch=1"
+
+require gaim.inc
+
+CFLAGS += "-D_GNU_SOURCE"
+
diff --git a/recipes/obsolete/gaim/gaim_1.5.0.bb b/recipes/obsolete/gaim/gaim_1.5.0.bb
new file mode 100644
index 0000000000..3bf9aeb3a7
--- /dev/null
+++ b/recipes/obsolete/gaim/gaim_1.5.0.bb
@@ -0,0 +1,9 @@
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${PN}-${PV}.tar.bz2 \
+ file://desktop-name.patch;patch=1"
+
+require gaim.inc
+
+CFLAGS += "-D_GNU_SOURCE"
+
diff --git a/recipes/obsolete/gaim/gaim_2.0.0-cvs-mco1.bb b/recipes/obsolete/gaim/gaim_2.0.0-cvs-mco1.bb
new file mode 100644
index 0000000000..bf8591920c
--- /dev/null
+++ b/recipes/obsolete/gaim/gaim_2.0.0-cvs-mco1.bb
@@ -0,0 +1,44 @@
+PR = "r3"
+SRCDATE_${PN} = "20050904"
+#Change to x.y.z+cvs${SRCDATE}-mco1 when 2.0.0 changes
+PV = "2.0.0-cvs-mco1-${SRCDATE}"
+
+DEFAULT_PREFERENCE = "-1"
+
+WEBCVSURL = "http://handhelds.org/cgi-bin/cvsweb.cgi/~checkout~/gaim"
+
+SRC_URI = "cvs://anonymous@gaim.cvs.sourceforge.net/cvsroot/gaim;module=gaim \
+ ${WEBCVSURL}/no-superimposed-version-on-logo.patch;patch=1 \
+ ${WEBCVSURL}/01-optional-icons-in-dialogs.patch;patch=1 \
+ ${WEBCVSURL}/02-request-field-dialogs.patch;patch=1 \
+ ${WEBCVSURL}/03-blist-dialogs.patch;patch=1 \
+ ${WEBCVSURL}/04-saved-status-dialogs.patch;patch=1 \
+ ${WEBCVSURL}/05-statusbox-icon-size.patch;patch=1 \
+ ${WEBCVSURL}/06-account-dialogs.patch;patch=1 \
+ ${WEBCVSURL}/07-roomlist-dialog.patch;patch=1 \
+ ${WEBCVSURL}/define-pda-mode.patch;patch=1 \
+ ${WEBCVSURL}/desktop-name-2.0.0.patch;patch=1 \
+ ${WEBCVSURL}/docklet-icon-size.patch;patch=1 \
+ ${WEBCVSURL}/08-prefs-dialog.patch;patch=1 \
+ ${WEBCVSURL}/09-filetransfer-dialog.patch;patch=1 \
+ ${WEBCVSURL}/10-pda-default-settings.patch;patch=1 \
+ file://gaim-OE-branding.patch;patch=1 \
+ "
+
+require gaim.inc
+
+S = "${WORKDIR}/gaim"
+
+CFLAGS += "-D_GNU_SOURCE"
+
+
+DEPENDS += "startup-notification"
+
+#include autopoint (gettext)
+EXTRA_AUTORECONF = ""
+
+#disable "X Session Management"... It is EVIL
+EXTRA_OECONF += "--disable-sm --enable-startup-notification \
+ --with-gnutls-includes=${STAGING_INCDIR}"
+
+
diff --git a/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/SDL-Akita.patch b/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/SDL-Akita.patch
new file mode 100644
index 0000000000..b47a127398
--- /dev/null
+++ b/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/SDL-Akita.patch
@@ -0,0 +1,37 @@
+--- SDL-1.2.7/src/video/qtopia/SDL_sysvideo.cc.orig 2005-07-23 14:31:20.060123510 +0200
++++ SDL-1.2.7/src/video/qtopia/SDL_sysvideo.cc 2005-07-23 14:38:49.000000000 +0200
+@@ -109,6 +109,7 @@
+ MACHINE_SHARP_SLC760,
+ MACHINE_SHARP_SLC860,
+ MACHINE_SHARP_SL6000,
++ MACHINE_SHARP_SLC1000,
+ MACHINE_IPAQ,
+ MACHINE_MAX
+ } machine_t;
+@@ -123,6 +124,7 @@
+ { "Sharp", "SL-C760", 0 },
+ { "Sharp", "SL-C860", 0 },
+ { "Sharp", "SL-6000", 0 },
++ { "Sharp", "SL-C1000", 0 },
+ { "HP", "HP IPAQ", 0 },
+ };
+
+@@ -428,6 +430,8 @@
+ machine = MACHINE_SHARP_SLC760;
+ else if (strstr(buf, "SHARP Boxer") != NULL)
+ machine = MACHINE_SHARP_SLC860;
++ else if (strstr(buf, "SHARP Akita") != NULL)
++ machine = MACHINE_SHARP_SLC1000;
+ else if ( ODevice::inst ( )-> series ( ) == Model_iPAQ )
+ machine = MACHINE_IPAQ;
+ else
+@@ -523,7 +527,8 @@
+ machine == MACHINE_SHARP_SLC750 ||
+ machine == MACHINE_SHARP_SLC760 ||
+ machine == MACHINE_SHARP_SLC860 || // ŸÜ€·€€€³€È€ï€«€é€ó€±€É€È€ê€¢€š€º
+- machine == MACHINE_SHARP_SL6000 ) { // ŸÜ€·€€€³€È€ï€«€é€ó€±€É€È€ê€¢€š€º
++ machine == MACHINE_SHARP_SL6000 ||
++ machine == MACHINE_SHARP_SLC1000 ) { // ŸÜ€·€€€³€È€ï€«€é€ó€±€É€È€ê€¢€š€º
+ is_VGA_machine = true;
+ }else {
+ is_VGA_machine = false;
diff --git a/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/acinclude.m4 b/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/acinclude.m4
new file mode 100644
index 0000000000..ca2df9d5e5
--- /dev/null
+++ b/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/acinclude.m4
@@ -0,0 +1,189 @@
+# Local macros for the SDL configure.in script
+
+dnl Function to link an architecture specific file
+dnl LINK_ARCH_SRC(source_dir, arch, source_file)
+AC_DEFUN([COPY_ARCH_SRC],
+[
+ old="$srcdir/$1/$2/$3"
+ new="$1/$3"
+ if test ! -d $1; then
+ echo "Creating directory $1"
+ mkdir -p $1
+ fi
+ echo "Copying $old -> $new"
+ cat >$new <<__EOF__
+/* WARNING: This file was automatically generated!
+ * Original: $old
+ */
+__EOF__
+ cat >>$new <$old
+])
+
+#
+# --- esd.m4 ---
+#
+# Configure paths for ESD
+# Manish Singh 98-9-30
+# stolen back from Frank Belew
+# stolen from Manish Singh
+# Shamelessly stolen from Owen Taylor
+
+dnl AM_PATH_ESD([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+dnl Test for ESD, and define ESD_CFLAGS and ESD_LIBS
+dnl
+AC_DEFUN([AM_PATH_ESD],
+[dnl
+dnl Get the cflags and libraries from the esd-config script
+dnl
+AC_ARG_WITH(esd-prefix,[ --with-esd-prefix=PFX Prefix where ESD is installed (optional)],
+ esd_prefix="$withval", esd_prefix="")
+AC_ARG_WITH(esd-exec-prefix,[ --with-esd-exec-prefix=PFX Exec prefix where ESD is installed (optional)],
+ esd_exec_prefix="$withval", esd_exec_prefix="")
+AC_ARG_ENABLE(esdtest, [ --disable-esdtest Do not try to compile and run a test ESD program],
+ , enable_esdtest=yes)
+
+ if test x$esd_exec_prefix != x ; then
+ esd_args="$esd_args --exec-prefix=$esd_exec_prefix"
+ if test x${ESD_CONFIG+set} != xset ; then
+ ESD_CONFIG=$esd_exec_prefix/bin/esd-config
+ fi
+ fi
+ if test x$esd_prefix != x ; then
+ esd_args="$esd_args --prefix=$esd_prefix"
+ if test x${ESD_CONFIG+set} != xset ; then
+ ESD_CONFIG=$esd_prefix/bin/esd-config
+ fi
+ fi
+
+ AC_PATH_PROG(ESD_CONFIG, esd-config, no)
+ min_esd_version=ifelse([$1], ,0.2.7,$1)
+ AC_MSG_CHECKING(for ESD - version >= $min_esd_version)
+ no_esd=""
+ if test "$ESD_CONFIG" = "no" ; then
+ no_esd=yes
+ else
+ ESD_CFLAGS=`$ESD_CONFIG $esdconf_args --cflags`
+ ESD_LIBS=`$ESD_CONFIG $esdconf_args --libs`
+
+ esd_major_version=`$ESD_CONFIG $esd_args --version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+ esd_minor_version=`$ESD_CONFIG $esd_args --version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+ esd_micro_version=`$ESD_CONFIG $esd_config_args --version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+ if test "x$enable_esdtest" = "xyes" ; then
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $ESD_CFLAGS"
+ LIBS="$LIBS $ESD_LIBS"
+dnl
+dnl Now check if the installed ESD is sufficiently new. (Also sanity
+dnl checks the results of esd-config to some extent
+dnl
+ rm -f conf.esdtest
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <esd.h>
+
+char*
+my_strdup (char *str)
+{
+ char *new_str;
+
+ if (str)
+ {
+ new_str = malloc ((strlen (str) + 1) * sizeof(char));
+ strcpy (new_str, str);
+ }
+ else
+ new_str = NULL;
+
+ return new_str;
+}
+
+int main ()
+{
+ int major, minor, micro;
+ char *tmp_version;
+
+ system ("touch conf.esdtest");
+
+ /* HP/UX 9 (%@#!) writes to sscanf strings */
+ tmp_version = my_strdup("$min_esd_version");
+ if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+ printf("%s, bad version string\n", "$min_esd_version");
+ exit(1);
+ }
+
+ if (($esd_major_version > major) ||
+ (($esd_major_version == major) && ($esd_minor_version > minor)) ||
+ (($esd_major_version == major) && ($esd_minor_version == minor) && ($esd_micro_version >= micro)))
+ {
+ return 0;
+ }
+ else
+ {
+ printf("\n*** 'esd-config --version' returned %d.%d.%d, but the minimum version\n", $esd_major_version, $esd_minor_version, $esd_micro_version);
+ printf("*** of ESD required is %d.%d.%d. If esd-config is correct, then it is\n", major, minor, micro);
+ printf("*** best to upgrade to the required version.\n");
+ printf("*** If esd-config was wrong, set the environment variable ESD_CONFIG\n");
+ printf("*** to point to the correct copy of esd-config, and remove the file\n");
+ printf("*** config.cache before re-running configure\n");
+ return 1;
+ }
+}
+
+],, no_esd=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ if test "x$no_esd" = x ; then
+ AC_MSG_RESULT(yes)
+ ifelse([$2], , :, [$2])
+ else
+ AC_MSG_RESULT(no)
+ if test "$ESD_CONFIG" = "no" ; then
+ echo "*** The esd-config script installed by ESD could not be found"
+ echo "*** If ESD was installed in PREFIX, make sure PREFIX/bin is in"
+ echo "*** your path, or set the ESD_CONFIG environment variable to the"
+ echo "*** full path to esd-config."
+ else
+ if test -f conf.esdtest ; then
+ :
+ else
+ echo "*** Could not run ESD test program, checking why..."
+ CFLAGS="$CFLAGS $ESD_CFLAGS"
+ LIBS="$LIBS $ESD_LIBS"
+ AC_TRY_LINK([
+#include <stdio.h>
+#include <esd.h>
+], [ return 0; ],
+ [ echo "*** The test program compiled, but did not run. This usually means"
+ echo "*** that the run-time linker is not finding ESD or finding the wrong"
+ echo "*** version of ESD. If it is not finding ESD, you'll need to set your"
+ echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+ echo "*** to the installed location Also, make sure you have run ldconfig if that"
+ echo "*** is required on your system"
+ echo "***"
+ echo "*** If you have an old version installed, it is best to remove it, although"
+ echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
+ [ echo "*** The test program failed to compile or link. See the file config.log for the"
+ echo "*** exact error that occured. This usually means ESD was incorrectly installed"
+ echo "*** or that you have moved ESD since it was installed. In the latter case, you"
+ echo "*** may want to edit the esd-config script: $ESD_CONFIG" ])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ ESD_CFLAGS=""
+ ESD_LIBS=""
+ ifelse([$3], , :, [$3])
+ fi
+ AC_SUBST(ESD_CFLAGS)
+ AC_SUBST(ESD_LIBS)
+ rm -f conf.esdtest
+])
+
diff --git a/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/agawa-piro-mickey.patch b/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/agawa-piro-mickey.patch
new file mode 100644
index 0000000000..7f3622ea4c
--- /dev/null
+++ b/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/agawa-piro-mickey.patch
@@ -0,0 +1,2065 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+Index: SDL-1.2.7/src/video/qtopia/SDL_QWin.cc
+===================================================================
+--- SDL-1.2.7.orig/src/video/qtopia/SDL_QWin.cc 2005-03-02 22:24:43.457491622 +0100
++++ SDL-1.2.7/src/video/qtopia/SDL_QWin.cc 2005-03-02 22:24:46.867009932 +0100
+@@ -1,3 +1,4 @@
++
+ /*
+ SDL - Simple DirectMedia Layer
+ Copyright (C) 1997-2004 Sam Lantinga
+@@ -27,15 +28,24 @@
+
+ #include "SDL_QWin.h"
+ #include <qapplication.h>
++#include <qpe/qpeapplication.h>
+ #include <qdirectpainter_qws.h>
+
++extern int fb_hwrot;
++extern int fb_direct;
++extern bool is_VGA_machine;
++static int mouse_button_mode=1;
++
+ screenRotationT screenRotation = SDL_QT_NO_ROTATION;
+
+ SDL_QWin::SDL_QWin(const QSize& size)
+ : QWidget(0, "SDL_main"), my_painter(0), my_image(0),
+ my_inhibit_resize(false), my_mouse_pos(-1,-1), my_flags(0),
+- my_has_fullscreen(false), my_locked(0)
++ my_has_fullscreen(false), my_locked(0),
++ rotation_(0), qteRotation_(0), keyRotation_(0), qteKeyRotation_(0),
++ isSLA300InputFix_(0)
+ {
++ for (int i = 0; i < 5; i++) curAxis_[i] = 0;
+ setBackgroundMode(NoBackground);
+ }
+
+@@ -84,6 +94,7 @@
+ }
+
+ void SDL_QWin::setMousePos(const QPoint &pos) {
++#if 0
+ if(my_image->width() == height()) {
+ if (screenRotation == SDL_QT_ROTATION_90)
+ my_mouse_pos = QPoint(height()-pos.y(), pos.x());
+@@ -92,6 +103,66 @@
+ } else {
+ my_mouse_pos = pos;
+ }
++#else
++ QPoint realPos;
++
++ if (is_VGA_machine) {
++ realPos = pos;
++ my_mouse_pos = realPos;
++ }else {
++ switch (qteRotation_) {
++ case 0:
++ realPos = pos;
++ break;
++ case 1:
++ realPos.setX(pos.y());
++ realPos.setY(fbSize_.height() - 1 - pos.x());
++ break;
++ case 2:
++ realPos.setX(fbSize_.width() - 1 - pos.x());
++ realPos.setY(fbSize_.height() - 1 - pos.y());
++ break;
++ case 3:
++ realPos.setX(fbSize_.width() - 1 - pos.y());
++ realPos.setY(pos.x());
++ break;
++ };
++
++ // fprintf(stderr, "setMousePos: realPos(%d, %d)\n", realPos.x(), realPos.y());
++
++ int borderWidth = (fbSize_.width() - my_image->width()) >> 1;
++ int borderHeight = (fbSize_.height() - my_image->height()) >> 1;
++ if ( rotation_ & 1 ){
++ borderWidth = (fbSize_.height() - my_image->width()) >> 1;
++ borderHeight = (fbSize_.width() - my_image->height()) >> 1;
++ }
++ realPos.setX(realPos.x() - borderWidth);
++ realPos.setY(realPos.y() - borderHeight);
++
++ fprintf(stderr, "setMousePos: realPos2(%d, %d)\n", realPos.x(), realPos.y());
++
++ switch (rotation_) {
++ case 0:
++ my_mouse_pos = realPos;
++ break;
++ case 1:
++ my_mouse_pos.setX(realPos.y());
++ my_mouse_pos.setY(my_image->height() - 1 - realPos.x());
++ break;
++ case 2:
++ my_mouse_pos.setX(my_image->width() - 1 - realPos.x());
++ my_mouse_pos.setY(my_image->height() - 1 - realPos.y());
++ break;
++ case 3:
++ my_mouse_pos.setX(realPos.y());//my_image->width() - 1 - realPos.y());
++ my_mouse_pos.setY(my_image->height() - realPos.x());
++ break;
++ }
++ }
++
++// fprintf(stderr, "setMousePos: mymousePos(%d, %d)\n", (short)my_mouse_pos.x(), (short)my_mouse_pos.y());
++
++#endif
+ }
+
+ void SDL_QWin::mouseMoveEvent(QMouseEvent *e) {
+@@ -113,269 +184,318 @@
+ void SDL_QWin::mousePressEvent(QMouseEvent *e) {
+ mouseMoveEvent(e);
+ Qt::ButtonState button = e->button();
+- SDL_PrivateMouseButton(SDL_PRESSED,
+- (button & Qt::LeftButton) ? 1 :
+- ((button & Qt::RightButton) ? 2 : 3),
++ SDL_PrivateMouseButton(SDL_PRESSED,mouse_button_mode,
+ my_mouse_pos.x(), my_mouse_pos.y());
+ }
+
+ void SDL_QWin::mouseReleaseEvent(QMouseEvent *e) {
+ setMousePos(e->pos());
+ Qt::ButtonState button = e->button();
+- SDL_PrivateMouseButton(SDL_RELEASED,
+- (button & Qt::LeftButton) ? 1 :
+- ((button & Qt::RightButton) ? 2 : 3),
++ SDL_PrivateMouseButton(SDL_RELEASED,mouse_button_mode,
+ my_mouse_pos.x(), my_mouse_pos.y());
+ my_mouse_pos = QPoint(-1, -1);
+ }
+
+-static inline void
+-gs_fastRotateBlit_3 ( unsigned short *fb,
+- unsigned short *bits,
+- const QRect& rect )
++#ifndef __i386__
++
++static void
++blitRotate3(Uint16 *dstBits, const QSize& dstSize,
++ const Uint16 *srcBits, const QSize& srcSize,
++ const QRect& srcBlitRect);
++
++static void
++blitRotate0(Uint16 *dstBits, const QSize& dstSize,
++ const Uint16 *srcBits, const QSize& srcSize,
++ const QRect& srcBlitRect)
+ {
+- // FIXME: this only works correctly for 240x320 displays
+- int startx, starty;
+- int width, height;
+-
+- startx = rect.left() >> 1;
+- starty = rect.top() >> 1;
+- width = ((rect.right() - rect.left()) >> 1) + 2;
+- height = ((rect.bottom() - rect.top()) >> 1) + 2;
+-
+- if((startx+width) > 120) {
+- width = 120 - startx; // avoid horizontal overflow
+- }
+- if((starty+height) > 160) {
+- height = 160 - starty; // avoid vertical overflow
+- }
+-
+- ulong *sp1, *sp2, *dp1, *dp2;
+- ulong stop, sbot, dtop, dbot;
+-
+- sp1 = (ulong*)bits + startx + starty*240;
+- sp2 = sp1 + 120;
+- dp1 = (ulong *)fb + (159 - starty) + startx*320;
+- dp2 = dp1 + 160;
+- int rowadd = (-320*width) - 1;
+- int rowadd2 = 240 - width;
+- // transfer in cells of 2x2 pixels in words
+- for (int y=0; y<height; y++) {
+- for (int x=0; x<width; x++) {
+- // read source pixels
+- stop = *sp1;
+- sbot = *sp2;
+- // rotate pixels
+- dtop = (sbot & 0xffff) + ((stop & 0xffff)<<16);
+- dbot = ((sbot & 0xffff0000)>>16) + (stop & 0xffff0000);
+- // write to framebuffer
+- *dp1 = dtop;
+- *dp2 = dbot;
+- // update source ptrs
+- sp1++; sp2++;
+- // update dest ptrs - 2 pix at a time
+- dp1 += 320;
+- dp2 += 320;
+- }
+- // adjust src ptrs - skip a row as we work in pairs
+- sp1 += rowadd2;
+- sp2 += rowadd2;
+- // adjust dest ptrs for rotation
+- dp1 += rowadd;
+- dp2 += rowadd;
++ srcBits += srcBlitRect.left() + srcBlitRect.top() * srcSize.width();
++ dstBits += ((dstSize.width() - srcSize.width()) >> 1)
++ + (((dstSize.height() - srcSize.height()) >> 1) * dstSize.width());
++ dstBits += srcBlitRect.left() + srcBlitRect.top() * dstSize.width();
++ int w = srcBlitRect.width() << 1;
++ int h = srcBlitRect.height();
++
++ while (h--) {
++ memcpy(dstBits, srcBits, w);
++ dstBits += dstSize.width();
++ srcBits += srcSize.width();
+ }
+ }
+
+-static inline void
+-gs_fastRotateBlit_1 ( unsigned short *fb,
+- unsigned short *bits,
+- const QRect& rect ) {
+- // FIXME: this only works correctly for 240x320 displays
+- int startx, starty;
+- int width, height;
+-
+- startx = rect.left() >> 1;
+- starty = rect.top() >> 1;
+- width = ((rect.right() - rect.left()) >> 1) + 2;
+- height = ((rect.bottom() - rect.top()) >> 1) + 2;
+-
+- if((startx+width) > 120) {
+- width = 120 - startx; // avoid horizontal overflow
+- }
+- if((starty+height) > 160) {
+- height = 160 - starty; // avoid vertical overflow
+- }
+-
+- ulong *sp1, *sp2, *dp1, *dp2;
+- ulong stop, sbot, dtop, dbot;
+- fb += 320*239; // Move "fb" to top left corner
+- sp1 = (ulong*)bits + startx + starty*240;
+- sp2 = sp1 + 120;
+- dp1 = (ulong*)fb - startx * 320 - starty;
+- dp2 = dp1 - 160;
+- int rowadd = (320*width) + 1;
+- int rowadd2 = 240 - width;
+- // transfer in cells of 2x2 pixels in words
+- for (int y=0; y<height; y++) {
+- for (int x=0; x<width; x++) {
+- // read
+- stop = *sp1;
+- sbot = *sp2;
+- // rotate
+- dtop = (stop & 0xffff) + ((sbot & 0xffff)<<16);
+- dbot = ((stop & 0xffff0000)>>16) + (sbot & 0xffff0000);
+- // write
+- *dp1 = dtop;
+- *dp2 = dbot;
+- // update source ptrs
+- sp1++; sp2++;
+- // update dest ptrs - 2 pix at a time
+- dp1 -= 320;
+- dp2 -= 320;
+- }
+- // adjust src ptrs - skip a row as we work in pairs
+- sp1 += rowadd2;
+- sp2 += rowadd2;
+- // adjust dest ptrs for rotation
+- dp1 += rowadd;
+- dp2 += rowadd;
+- }
++static void
++blitRotate1(Uint16 *dstBits, const QSize& dstSize,
++ const Uint16 *srcBits, const QSize& srcSize,
++ const QRect& srcBlitRect)
++{
++// fprintf(stdout, "SDL_QT_ROTATION (1) is not implemented.\n");
++ blitRotate3(dstBits, dstSize, srcBits, srcSize, srcBlitRect);
+ }
+
+-// desktop, SL-A300 etc
+-bool SDL_QWin::repaintRotation0(const QRect& rect) {
+- if(my_image->width() == width()) {
+- uchar *fb = (uchar*)my_painter->frameBuffer();
+- uchar *buf = (uchar*)my_image->bits();
+- if(rect == my_image->rect()) {
+- memcpy(fb, buf, width()*height()*2);
+- } else {
+- int h = rect.height();
+- int wd = rect.width()<<1;
+- int fblineadd = my_painter->lineStep();
+- int buflineadd = my_image->bytesPerLine();
+- fb += (rect.left()<<1) + rect.top() * my_painter->lineStep();
+- buf += (rect.left()<<1) + rect.top() * my_image->bytesPerLine();
+- while(h--) {
+- memcpy(fb, buf, wd);
+- fb += fblineadd;
+- buf += buflineadd;
+- }
++static void
++blitRotate2(Uint16 *dstBits, const QSize& dstSize,
++ const Uint16 *srcBits, const QSize& srcSize,
++ QRect srcBlitRect)
++{
++// if (srcBlitRect.left() & 1)
++// srcBlitRect.setLeft(srcBlitRect.left() - 1);
++// if (srcBlitRect.right() & 1)
++// srcBlitRect.setRight(srcBlitRect.right() - 1);
++
++ int dstBorderLeftRight = (dstSize.width() - srcSize.width()) >>1;
++ int dstBorderTopBottom = (dstSize.height() - srcSize.height()) >>1;
++ int dstStartOffsetX = dstSize.width() - dstBorderLeftRight - 2;
++ int dstStartOffsetY = dstSize.height() - dstBorderTopBottom - 1;
++ int left = srcBlitRect.left() & ~(int)1; // to be 32bit aligned
++ srcBits += left + srcBlitRect.top() * srcSize.width();
++ dstBits += dstStartOffsetY * dstSize.width() + dstStartOffsetX;
++ dstBits -= left;
++ dstBits -= srcBlitRect.top() * dstSize.width();
++
++ Uint32 *pSrc = (Uint32 *)srcBits;
++ Uint32 *pDst = (Uint32 *)dstBits;
++
++ int width = srcBlitRect.width(), width2 = srcBlitRect.width(), w;
++ if ( srcBlitRect.left() & 1 ){
++ width--; width2++;
++ }
++ if ( (srcBlitRect.left()+srcBlitRect.width()) & 1 ){
++ width--; width2++;
++ }
++ width >>= 1;
++ int height = srcBlitRect.height();
++ int srcYAdd = srcSize.width() - width2;
++ int dstYSub = dstSize.width() - width2;
++
++ while (height--) {
++ w = width;
++ if (srcBlitRect.left() & 1){
++ *((Uint16 *)pDst) = *(((Uint16 *)pSrc) + 1);
++ pDst--; pSrc++;
+ }
+- } else {
+- return false; // FIXME: Landscape
++ while (w--) {
++ *pDst-- = (*pSrc << 16) | (*pSrc >> 16);
++ ++pSrc;
++ }
++ if ((srcBlitRect.left()+srcBlitRect.width()) & 1){
++ *(((Uint16 *)pDst) + 1) = *((Uint16 *)pSrc);
++ pDst--; pSrc++;
++ }
++ pSrc += srcYAdd;
++ pDst -= dstYSub;
+ }
+-#ifdef __i386__
+- my_painter->fillRect( rect, QBrush( Qt::NoBrush ) );
+-#endif
+- return true;
+ }
+
+-
+-// Sharp Zaurus SL-5500 etc
+-bool SDL_QWin::repaintRotation3(const QRect& rect) {
+- if(my_image->width() == width()) {
+- ushort *fb = (ushort*)my_painter->frameBuffer();
+- ushort *buf = (ushort*)my_image->bits();
+- gs_fastRotateBlit_3(fb, buf, rect);
++#define BLIT_ROTATE_3_MOV32
++
++static void
++blitRotate3(Uint16 *dstBits, const QSize& dstSize,
++ const Uint16 *srcBits, const QSize& srcSize,
++ const QRect& srcBlitRect)
++{
++ if (srcBlitRect.width() != dstSize.height() ||
++ srcBlitRect.height() != dstSize.width()) {
++ // partial update
++ const Uint16 *pSrc = srcBits +
++ (srcBlitRect.left() + srcBlitRect.top() * srcSize.width());
++
++ int dstBorderLeftRight = (dstSize.width() - srcSize.height()) >>1;
++ int dstBorderTopBottom = (dstSize.height() - srcSize.width()) >>1;
++ int dstStartOffsetX = dstSize.width() - dstBorderLeftRight - 1;
++ int dstStartOffsetY = dstBorderTopBottom;
++ Uint16 *pDst = dstBits +
++ (dstStartOffsetY * dstSize.width() + dstStartOffsetX);
++ pDst += srcBlitRect.left() * dstSize.width();
++ pDst -= srcBlitRect.top();
++
++ int width = srcBlitRect.width(), height = srcBlitRect.height(), w;
++ int srcYAdd = srcSize.width() - srcBlitRect.width();
++ int dstXAdd = dstSize.width();
++ int dstYSub = (dstSize.width() * srcBlitRect.width()) + 1;
++
++#if 0
++ fprintf(stderr, "---- Blit begin\n");
++ fprintf(stderr, "srcSize.width: %d srcSize.height:%d\n",
++ srcSize.width(), srcSize.height());
++ fprintf(stderr, "srcBlitRect.left:%d srcBlitRect.right:%d srcBlitRect.top:%d srcBlitRect.bottom:%d srcBlitRect.width:%d srcBlitRect.height:%d\n",
++ srcBlitRect.left(), srcBlitRect.right(), srcBlitRect.top(), srcBlitRect.bottom(), srcBlitRect.width(), srcBlitRect.height());
++
++ fprintf(stderr, "dstSize.width: %d dstSize.height:%d\n",
++ dstSize.width(), dstSize.height());
++ fprintf(stderr, "dstBorderLeftRight:%d dstBorderTopBottom:%d dstStartOffsetX:%d dstStartOffsetY:%d\n",
++ dstBorderLeftRight, dstBorderTopBottom, dstStartOffsetX, dstStartOffsetY);
++ fprintf(stderr, "srcYAdd:%d dstXAdd:%d dstYSub:%d\n", srcYAdd, dstXAdd, dstYSub);
++#endif
++
++ while (height--) {
++ w = width;
++ while (w--) {
++ *pDst = *pSrc ++;
++ pDst += dstXAdd;
++ }
++ pSrc += srcYAdd;
++ pDst -= dstYSub;
++ }
++ // fprintf(stderr, "---- Blit end\n");
+ } else {
+- // landscape mode
+- if (screenRotation == SDL_QT_ROTATION_90) {
+- uchar *fb = (uchar*)my_painter->frameBuffer();
+- uchar *buf = (uchar*)my_image->bits();
+- if(rect == my_image->rect()) {
+- memcpy(fb, buf, width()*height()*2);
+- } else {
+- int h = rect.height();
+- int wd = rect.width()<<1;
+- int fblineadd = my_painter->lineStep();
+- int buflineadd = my_image->bytesPerLine();
+- fb += (rect.left()<<1) + rect.top() * my_painter->lineStep();
+- buf += (rect.left()<<1) + rect.top() * my_image->bytesPerLine();
+- while(h--) {
+- memcpy(fb, buf, wd);
+- fb += fblineadd;
+- buf += buflineadd;
+- }
++ // full update
++#if !defined(BLIT_ROTATE_3_MOV32)
++ const Uint16 *src = srcBits;
++ Uint16 *dst = dstBits + (dstSize.width() - 1);
++ int w = srcBlitRect.width();
++ int h = srcBlitRect.height();
++ int i, dstSub = dstSize.width() * w + 1;
++ int dstAdd = dstSize.width();
++
++ while (h--) {
++ i = w;
++ while (i--) {
++ *dst = *src ++;
++ dst += dstAdd;
+ }
+- } else if (screenRotation == SDL_QT_ROTATION_270) {
+- int h = rect.height();
+- int wd = rect.width();
+- int fblineadd = my_painter->lineStep() - (rect.width() << 1);
+- int buflineadd = my_image->bytesPerLine() - (rect.width() << 1);
+- int w;
+-
+- uchar *fb = (uchar*)my_painter->frameBuffer();
+- uchar *buf = (uchar*)my_image->bits();
+-
+- fb += ((my_painter->width() - (rect.top() + rect.height())) *
+- my_painter->lineStep()) + ((my_painter->height() - ((rect.left() +
+- rect.width()))) << 1);
+-
+- buf += my_image->bytesPerLine() * (rect.top() + rect.height()) -
+- (((my_image->width() - (rect.left() + rect.width())) << 1) + 2);
+-
+- while(h--) {
+- w = wd;
+- while(w--) *((unsigned short*)fb)++ = *((unsigned short*)buf)--;
+- fb += fblineadd;
+- buf -= buflineadd;
++ dst -= dstSub;
++ }
++#else // BLIT_ROTATE_3_MOV32
++ Uint32 *src1 = (Uint32 *)(srcBits);
++ Uint32 *src2 = (Uint32 *)(srcBits + srcSize.width());
++ Uint32 *dst1 = (Uint32 *)(dstBits + (dstSize.width() - 2));
++ Uint32 *dst2 = (Uint32 *)(dstBits + (dstSize.width() + dstSize.width() - 2));
++ int w = srcBlitRect.width() >> 3;
++ int h = srcBlitRect.height() >> 1;
++ int i, dstSub = ((dstSize.width() * srcBlitRect.width()) >> 1) + 1;
++ int dstAdd = dstSize.width();
++
++ Uint32 a, b;
++ while (h--) {
++ i = w;
++ while (i--) {
++ a = *src1 ++;
++ b = *src2 ++;
++ *dst1 = (a << 16) | (b & 0xFFFF);
++ *dst2 = (a & 0xFFFF0000) | (b >> 16);
++ dst1 += dstAdd;
++ dst2 += dstAdd;
++
++ a = *src1 ++;
++ b = *src2 ++;
++ *dst1 = (a << 16) | (b & 0xFFFF);
++ *dst2 = (a & 0xFFFF0000) | (b >> 16);
++ dst1 += dstAdd;
++ dst2 += dstAdd;
++
++ a = *src1 ++;
++ b = *src2 ++;
++ *dst1 = (a << 16) | (b & 0xFFFF);
++ *dst2 = (a & 0xFFFF0000) | (b >> 16);
++ dst1 += dstAdd;
++ dst2 += dstAdd;
++
++ a = *src1 ++;
++ b = *src2 ++;
++ *dst1 = (a << 16) | (b & 0xFFFF);
++ *dst2 = (a & 0xFFFF0000) | (b >> 16);
++ dst1 += dstAdd;
++ dst2 += dstAdd;
+ }
++ src1 += srcSize.width() >> 1;
++ src2 += srcSize.width() >> 1;
++ dst1 -= dstSub;
++ dst2 -= dstSub;
+ }
++#endif // BLIT_ROTATE_3_MOV32
+ }
+- return true;
+ }
+
+-// ipaq 3800...
+-bool SDL_QWin::repaintRotation1(const QRect& rect) {
+- if(my_image->width() == width()) {
+- ushort *fb = (ushort*)my_painter->frameBuffer();
+- ushort *buf = (ushort*)my_image->bits();
+- gs_fastRotateBlit_1(fb, buf, rect);
+- } else {
+- return false; // FIXME: landscape mode
+- }
+- return true;
+-}
++#endif // __i386__
+
+ void SDL_QWin::repaintRect(const QRect& rect) {
+ if(!my_painter || !rect.width() || !rect.height()) {
+ return;
+ }
+-
+- if(QPixmap::defaultDepth() == 16) {
+- switch(my_painter->transformOrientation()) {
+- case 3:
+- if(repaintRotation3(rect)) { return; }
++#ifndef __i386__
++ if (QPixmap::defaultDepth() == 16 && my_painter->numRects() >= 0) {
++ Uint16 *fb = (Uint16*)my_painter->frameBuffer();
++ Uint16 *buf = (Uint16*)my_image->bits();
++ switch (rotation_) {
++ case 0:
++ blitRotate0(fb, fbSize_,
++ buf, QSize(my_image->width(), my_image->height()),
++ rect);
+ break;
+ case 1:
+- if(repaintRotation1(rect)) { return; }
++ blitRotate1(fb, fbSize_,
++ buf, QSize(my_image->width(), my_image->height()),
++ rect);
+ break;
+- case 0:
+- if(repaintRotation0(rect)) { return; }
++ case 2:
++ blitRotate2(fb, fbSize_,
++ buf, QSize(my_image->width(), my_image->height()),
++ rect);
++ break;
++ case 3:
++ blitRotate3(fb, fbSize_,
++ buf, QSize(my_image->width(), my_image->height()),
++ rect);
+ break;
+ }
+- }
+- my_painter->drawImage(rect.topLeft(), *my_image, rect);
++ } else {
++#endif // __i386__
++ QDirectPainter pp(this);
++ pp.drawImage(rect.topLeft(), *my_image, rect);
++// pp.end();
++#ifndef __i386__
++ }
++#endif // __i386__
+ }
+
+ // This paints the current buffer to the screen, when desired.
+ void SDL_QWin::paintEvent(QPaintEvent *ev) {
+- if(my_image) {
++ if(my_image && isVisible() && isActiveWindow()) {
++ // TODO: better handling
+ lockScreen(true);
+ repaintRect(ev->rect());
+ unlockScreen();
+ }
+ }
+
++int SDL_QWin::ApplyKeyRotation(int key)
++{
++ int c;
++ int sdlScancode[] = { SDLK_LEFT, SDLK_DOWN, SDLK_RIGHT, SDLK_UP };
++
++ switch (key) {
++ case Qt::Key_Left:
++ c = 0;
++ break;
++ case Qt::Key_Down:
++ c = 1;
++ break;
++ case Qt::Key_Right:
++ c = 2;
++ break;
++ case Qt::Key_Up:
++ c = 3;
++ break;
++ default:
++ return 0;
++ }
++
++// c = (c + qteKeyRotation_) & 3;
++// return sdlScancode[(c - keyRotation_) & 3];
++ return sdlScancode[(c + qteKeyRotation_ - keyRotation_) & 3];
++}
++
+ /* Function to translate a keyboard transition and queue the key event
+ * This should probably be a table although this method isn't exactly
+ * slow.
+ */
+ void SDL_QWin::QueueKey(QKeyEvent *e, int pressed)
+-{
++{
++ if (e->isAutoRepeat())
++ return;
++
+ SDL_keysym keysym;
+ int scancode = e->key();
++
+ /* Set the keysym information */
+ if(scancode >= 'A' && scancode <= 'Z') {
+ // Qt sends uppercase, SDL wants lowercase
+@@ -396,26 +516,12 @@
+ case Qt::Key_Home: scancode = SDLK_HOME; break;
+ case Qt::Key_End: scancode = SDLK_END; break;
+ // We want the control keys to rotate with the screen
+- case Qt::Key_Left:
+- if (screenRotation == SDL_QT_ROTATION_90) scancode = SDLK_UP;
+- else if (screenRotation == SDL_QT_ROTATION_270) scancode = SDLK_DOWN;
+- else scancode = SDLK_LEFT;
+- break;
+- case Qt::Key_Up:
+- if (screenRotation == SDL_QT_ROTATION_90) scancode = SDLK_RIGHT;
+- else if (screenRotation == SDL_QT_ROTATION_270) scancode = SDLK_LEFT;
+- else scancode = SDLK_UP;
+- break;
+- case Qt::Key_Right:
+- if (screenRotation == SDL_QT_ROTATION_90) scancode = SDLK_DOWN;
+- else if (screenRotation == SDL_QT_ROTATION_270) scancode = SDLK_UP;
+- else scancode = SDLK_RIGHT;
+- break;
++ case Qt::Key_Left:
++ case Qt::Key_Up:
++ case Qt::Key_Right:
+ case Qt::Key_Down:
+- if (screenRotation == SDL_QT_ROTATION_90) scancode = SDLK_LEFT;
+- else if (screenRotation == SDL_QT_ROTATION_270) scancode = SDLK_RIGHT;
+- else scancode = SDLK_DOWN;
+- break;
++ scancode = ApplyKeyRotation(scancode);
++ break;
+ case Qt::Key_Prior: scancode = SDLK_PAGEUP; break;
+ case Qt::Key_Next: scancode = SDLK_PAGEDOWN; break;
+ case Qt::Key_Shift: scancode = SDLK_LSHIFT; break;
+@@ -434,9 +540,18 @@
+ case Qt::Key_F7: scancode = SDLK_F7; break;
+ case Qt::Key_F8: scancode = SDLK_F8; break;
+ case Qt::Key_F9: scancode = SDLK_F9; break;
+- case Qt::Key_F10: scancode = SDLK_F10; break;
+- case Qt::Key_F11: scancode = SDLK_F11; break;
+- case Qt::Key_F12: scancode = SDLK_F12; break;
++ case Qt::Key_F10:
++ scancode = SDLK_F10;
++ mouse_button_mode=1;
++ break;
++ case Qt::Key_F11:
++ scancode = SDLK_F11;
++ mouse_button_mode=3;
++ break;
++ case Qt::Key_F12:
++ scancode = SDLK_F12;
++ mouse_button_mode=2;
++ break;
+ case Qt::Key_F13: scancode = SDLK_F13; break;
+ case Qt::Key_F14: scancode = SDLK_F14; break;
+ case Qt::Key_F15: scancode = SDLK_F15; break;
+@@ -452,13 +567,14 @@
+ // david@hedbor.org
+ scancode = SDLK_RETURN;
+ break;
++
+ default:
+ scancode = SDLK_UNKNOWN;
+ break;
+ }
+- keysym.sym = static_cast<SDLKey>(scancode);
++ keysym.sym = static_cast<SDLKey>(scancode);
+ } else {
+- keysym.sym = static_cast<SDLKey>(scancode);
++ keysym.sym = static_cast<SDLKey>(scancode);
+ }
+ keysym.scancode = scancode;
+ keysym.mod = KMOD_NONE;
+@@ -478,11 +594,82 @@
+ // pressed = 1;
+ // }
+
++ if (isSLA300InputFix_ &&
++ (keysym.sym == SDLK_SPACE || (keysym.sym >= 273 && keysym.sym <= 276))) {
++ if (keysym.sym >= 273) curAxis_[keysym.sym-273] = pressed;
++ else curAxis_[4] = pressed;
++ }
++
+ /* Queue the key event */
+ if ( pressed ) {
+- SDL_PrivateKeyboard(SDL_PRESSED, &keysym);
++ /* fprintf(stderr, "press %d\n", keysym.sym); */
++ SDL_PrivateKeyboard(SDL_PRESSED, &keysym);
++ if (isSLA300InputFix_ &&
++ (keysym.sym >= 273 && keysym.sym <= 276)) {
++ if (keysym.sym == SDLK_UP) {
++ if (curAxis_[1]) {
++ keysym.sym = SDLK_DOWN;
++ keysym.scancode = Qt::Key_Down;
++ curAxis_[1] = 0;
++ /* fprintf(stderr, "force release %d\n", keysym.sym); */
++ SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
++ }
++ }
++ else if (keysym.sym == SDLK_DOWN) {
++ if (curAxis_[0]) {
++ keysym.sym = SDLK_UP;
++ keysym.scancode = Qt::Key_Up;
++ curAxis_[0] = 0;
++ /* fprintf(stderr, "force release %d\n", keysym.sym); */
++ SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
++ }
++ }
++ else if (keysym.sym == SDLK_RIGHT) {
++ if (curAxis_[3]) {
++ keysym.sym = SDLK_LEFT;
++ keysym.scancode = Qt::Key_Left;
++ curAxis_[3] = 0;
++ /* fprintf(stderr, "force release %d\n", keysym.sym); */
++ SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
++ }
++ }
++ else if (keysym.sym == SDLK_LEFT) {
++ if (curAxis_[2]) {
++ keysym.sym = SDLK_RIGHT;
++ keysym.scancode = Qt::Key_Right;
++ curAxis_[2] = 0;
++ /* fprintf(stderr, "force release %d\n", keysym.sym); */
++ SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
++ }
++ }
++ }
+ } else {
+- SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
++ /* fprintf(stderr, "release %d\n", keysym.sym); */
++ SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
++
++ if (isSLA300InputFix_ &&
++ (keysym.sym == SDLK_SPACE ||
++ (keysym.sym >= 273 && keysym.sym <= 276))) {
++ for (int i = 0; i < 4; i++) {
++ if (curAxis_[i]) {
++ int sym = i+273;
++ keysym.sym = static_cast<SDLKey>(sym);
++ if (sym == SDLK_UP) keysym.scancode = Qt::Key_Up;
++ else if (sym == SDLK_RIGHT) keysym.scancode = Qt::Key_Right;
++ else if (sym == SDLK_DOWN) keysym.scancode = Qt::Key_Down;
++ else if (sym == SDLK_LEFT) keysym.scancode = Qt::Key_Left;
++ curAxis_[i] = 0;
++ /* fprintf(stderr, "force release %d\n", keysym.sym); */
++ SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
++ }
++ }
++ if (curAxis_[4]) {
++ keysym.scancode = keysym.sym = SDLK_SPACE;
++ curAxis_[4] = 0;
++ /* fprintf(stderr, "force release %d\n", keysym.sym); */
++ SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
++ }
++ }
+ }
+ }
+
+@@ -524,7 +711,7 @@
+ my_locked--; // decrease lock refcount;
+ }
+ if(!my_locked && my_painter) {
+- my_painter->end();
++// my_painter->end();
+ delete my_painter;
+ my_painter = 0;
+ }
+Index: SDL-1.2.7/src/video/qtopia/SDL_QWin.h
+===================================================================
+--- SDL-1.2.7.orig/src/video/qtopia/SDL_QWin.h 2005-03-02 22:24:43.457491622 +0100
++++ SDL-1.2.7/src/video/qtopia/SDL_QWin.h 2005-03-02 22:24:46.868009791 +0100
+@@ -1,3 +1,4 @@
++
+ /*
+ SDL - Simple DirectMedia Layer
+ Copyright (C) 1997-2004 Sam Lantinga
+@@ -52,6 +53,7 @@
+ class SDL_QWin : public QWidget
+ {
+ void QueueKey(QKeyEvent *e, int pressed);
++ int ApplyKeyRotation(int key);
+ public:
+ SDL_QWin(const QSize& size);
+ virtual ~SDL_QWin();
+@@ -71,7 +73,7 @@
+ y = my_offset.y();
+ }
+ QImage *image(void) { return my_image; }
+-
++
+ void setWFlags(WFlags flags) {
+ QWidget::setWFlags(flags);
+ my_flags = flags;
+@@ -83,6 +85,15 @@
+ bool lockScreen(bool force=false);
+ void unlockScreen();
+ void repaintRect(const QRect& rect);
++ void setScreenRotation(int sdlr, int qter) {
++ rotation_ = sdlr; qteRotation_ = qter;
++ }
++ void setKeyRotation(int sdlr, int qter) {
++ keyRotation_ = sdlr; qteKeyRotation_ = qter;
++ }
++ void setFBSize(QSize& s) { fbSize_ = s; }
++// void setSLC700InputFix(bool isEnable) { isSLC700InputFix_ = isEnable; }
++ void setSLA300InputFix(bool isEnable) { isSLA300InputFix_ = isEnable; }
+ protected:
+ /* Handle resizing of the window */
+ virtual void resizeEvent(QResizeEvent *e);
+@@ -95,10 +106,8 @@
+ void paintEvent(QPaintEvent *ev);
+ void keyPressEvent(QKeyEvent *e) { QueueKey(e, 1); }
+ void keyReleaseEvent(QKeyEvent *e) { QueueKey(e, 0); }
++
+ private:
+- bool repaintRotation0(const QRect& rect);
+- bool repaintRotation1(const QRect& rect);
+- bool repaintRotation3(const QRect& rect);
+ void enableFullscreen();
+ QDirectPainter *my_painter;
+ QImage *my_image;
+@@ -108,6 +117,12 @@
+ WFlags my_flags;
+ WFlags my_has_fullscreen;
+ unsigned int my_locked;
++ int rotation_, qteRotation_;
++ int keyRotation_, qteKeyRotation_;
++ QSize fbSize_;
++// bool isSLC700InputFix_;
++ bool isSLA300InputFix_;
++ int curAxis_[5]; // 0: up, 1: down, 2: right, 3: left, 4: center
+ };
+
+ #endif /* _SDL_QWin_h */
+Index: SDL-1.2.7/src/video/qtopia/SDL_sysmouse.cc
+===================================================================
+--- SDL-1.2.7.orig/src/video/qtopia/SDL_sysmouse.cc 2005-03-02 22:24:43.457491622 +0100
++++ SDL-1.2.7/src/video/qtopia/SDL_sysmouse.cc 2005-03-02 22:24:46.868009791 +0100
+@@ -60,6 +60,7 @@
+ void QT_WarpWMCursor(_THIS, Uint16 x, Uint16 y)
+ {
+ SDL_Win->setMousePos(QPoint(x, y));
++ SDL_PrivateMouseMotion( 0, 0, x, y );
+ }
+
+ }; /* Extern C */
+Index: SDL-1.2.7/src/video/qtopia/SDL_sysvideo.cc
+===================================================================
+--- SDL-1.2.7.orig/src/video/qtopia/SDL_sysvideo.cc 2005-03-02 22:24:43.458491481 +0100
++++ SDL-1.2.7/src/video/qtopia/SDL_sysvideo.cc 2005-03-02 22:24:46.873009084 +0100
+@@ -1,3 +1,4 @@
++
+ /*
+ SDL - Simple DirectMedia Layer
+ Copyright (C) 1997-2004 Sam Lantinga
+@@ -29,17 +30,32 @@
+
+ #include <stdlib.h>
+ #include <string.h>
++#include <stdarg.h>
++#include <fcntl.h>
++#include <sys/ioctl.h>
+
+ #include <stdio.h>
+ #include <unistd.h>
++#include <sys/types.h>
++#include <sys/wait.h>
++#include <linux/fb.h>
++#include <sys/mman.h>
++#include <asm/page.h>
+
+ #include <qapplication.h>
+ #include <qpe/qpeapplication.h>
++#include <qpe/qcopenvelope_qws.h>
++#include <qgfx_qws.h>
++#include <qwindowsystem_qws.h>
++#include <qwidget.h>
++#include <qwidgetlist.h>
++#include <qdirectpainter_qws.h>
+
+ #include "SDL.h"
+ #include "SDL_timer.h"
+
+ #include "SDL_QWin.h"
++#include "SDL_sysvideo.h"
+
+ extern "C" {
+
+@@ -51,14 +67,67 @@
+ #include "SDL_lowvideo.h"
+
+ //#define QTOPIA_DEBUG
++#define QTOPIA_LOG
+ #define QT_HIDDEN_SIZE 32 /* starting hidden window size */
+
++#ifdef QTOPIA_LOG
++ static FILE *st_logfp = NULL;
++#endif
++ static inline void LOG(char *fmt, ...)
++ {
++#ifdef QTOPIA_LOG
++ va_list ap;
++
++ va_start(ap, fmt);
++ vfprintf(st_logfp, fmt, ap);
++ if (st_logfp != stderr) {
++ fflush(st_logfp);
++ vfprintf(stderr, fmt, ap);
++ }
++ va_end(ap);
++#endif
++ }
++
++ typedef struct machine_spec {
++ const char *manif;
++ const char *name;
++ int qpe_server_rotation;
++ int init_screen_rot;
++ int init_key_rot;
++ } machine_spec_t;
++
++ typedef enum {
++ MACHINE_SHARP_SL5000D,
++ MACHINE_SHARP_SL5500,
++ MACHINE_SHARP_SLA300,
++ MACHINE_SHARP_SLB500,
++ MACHINE_SHARP_SLC700,
++ MACHINE_SHARP_SLC750,
++ MACHINE_SHARP_SLC760,
++ MACHINE_SHARP_SLC860,
++ MACHINE_SHARP_SL6000,
++ MACHINE_MAX
++ } machine_t;
++
++ static const machine_spec_t st_machine_spec[] = {
++ { "Sharp", "SL-5000D", 0 },
++ { "Sharp", "SL-5500", 0 },
++ { "Sharp", "SL-A300", 0 },
++ { "Sharp", "SL-B500", 0 },
++ { "Sharp", "SL-C700", 0 },
++ { "Sharp", "SL-C750", 0 },
++ { "Sharp", "SL-C760", 0 },
++ { "Sharp", "SL-C860", 0 },
++ { "Sharp", "SL-6000", 0 },
++ };
++
+ /* Name of the environment variable used to invert the screen rotation or not:
+ Possible values:
+- !=0 : Screen is 270° rotated
+- 0: Screen is 90° rotated*/
+-#define SDL_QT_ROTATION_ENV_NAME "SDL_QT_INVERT_ROTATION"
+-
++ !=0 : Screen is 270- rotated
++ 0: Screen is 90- rotated*/
++#define SDL_QT_ROTATION_ENV_NAME "SDL_QT_ROTATION"
++#define SDL_QT_INVERT_ROTATION_ENV_NAME "SDL_QT_INVERT_ROTATION"
++
+ /* Initialization/Query functions */
+ static int QT_VideoInit(_THIS, SDL_PixelFormat *vformat);
+ static SDL_Rect **QT_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags);
+@@ -78,6 +147,20 @@
+ static int QT_IconifyWindow(_THIS);
+ static SDL_GrabMode QT_GrabInput(_THIS, SDL_GrabMode mode);
+
++ static int console_fd;
++ struct fb_var_screeninfo saved_vinfo;
++ int fb_hwrot;
++ int fb_direct;
++ static int isKHloaded;
++ bool is_VGA_machine;
++
++#define W100FB_CONFIG 0x57415200 /* WAL\00 */
++#define W100INIT_ITEM 0
++#define W100INIT_ALL 1
++#define W100INIT_ITEM_WITH_VAL 2
++#define W100FB_CONFIG_EX 0x57415202 /* WAL\02 */
++
++
+ /* FB driver bootstrap functions */
+
+ static int QT_Available(void)
+@@ -222,13 +305,34 @@
+
+ int QT_VideoInit(_THIS, SDL_PixelFormat *vformat)
+ {
+- /* Initialize the QPE Application */
++ const char *SDL_fbdev;
++ struct fb_var_screeninfo vinfo;
++
++ /* Initialize the QPE Application */
+ /* Determine the screen depth */
+ vformat->BitsPerPixel = QPixmap::defaultDepth();
+
+ // For now we hardcode the current depth because anything else
+ // might as well be emulated by SDL rather than by Qtopia.
+-
++
++ //frame buffer device open.
++ SDL_fbdev = getenv("SDL_FBDEV");
++ if ( SDL_fbdev == NULL ) {
++ SDL_fbdev = "/dev/fb0";
++ }
++ console_fd = open(SDL_fbdev, O_RDWR, 0);
++ if ( console_fd < 0 ) {
++ SDL_SetError("Unable to open %s", SDL_fbdev);
++ return(-1);
++ }
++
++ if ( ioctl(console_fd, FBIOGET_VSCREENINFO, &vinfo) < 0 ) {
++ SDL_SetError("Couldn't get console pixel format");
++ QT_VideoQuit(_this);
++ return(-1);
++ }
++ saved_vinfo = vinfo;
++
+ QSize desktop_size = qApp->desktop()->size();
+ QT_AddMode(_this, ((vformat->BitsPerPixel+7)/8)-1,
+ desktop_size.width(), desktop_size.height());
+@@ -241,7 +345,24 @@
+ /* Fill in some window manager capabilities */
+ _this->info.wm_available = 0;
+
+- /* We're done! */
++#ifdef QTOPIA_LOG
++ st_logfp = fopen("/tmp/sdl-qt-debug", "w");
++ if (!st_logfp)
++ st_logfp = stderr;
++#endif
++
++ QT_GrabInput(_this, SDL_GRAB_ON);
++/*
++ {
++ QCopEnvelope e("QPE/KeyHelper", "repeater(int)");
++ e << 2;
++ }
++*/
++ isKHloaded=(fopen("/home/zaurus/Settings/keyhelper_SDL.xml","r") != NULL) ? 1 : 0;
++ if (isKHloaded) {
++ system("qcop QPE/KeyHelper \"reload(QString)\" keyhelper_SDL.xml"); //QcopEnvelope can't use.
++ LOG("keyhelper_SDL.xml loaded\n");
++ }
+ return(0);
+ }
+
+@@ -264,6 +385,7 @@
+
+ /* Various screen update functions available */
+ static void QT_NormalUpdate(_THIS, int numrects, SDL_Rect *rects);
++ static void QT_DirectUpdate(_THIS, int numrects, SDL_Rect *rects);
+
+
+ static int QT_SetFullScreen(_THIS, SDL_Surface *screen, int fullscreen)
+@@ -276,47 +398,428 @@
+ return -1;
+ }
+
++ static machine_t QT_GetMachine(_THIS)
++ {
++ FILE *fp;
++ machine_t machine = MACHINE_SHARP_SL5000D;
++ char buf[1024];
++
++
++ fp = fopen("/proc/cpuinfo", "rb");
++ if (fp) {
++ if (fread(buf, 1, sizeof(buf), fp) > 0) {
++ LOG("QT_GetMachine: /proc/cpuinfo is %s\n", buf);
++ if (strstr(buf, "SHARP Tosa") != NULL)
++ machine = MACHINE_SHARP_SL6000;
++ else if (strstr(buf, "Collie") != NULL)
++ machine = MACHINE_SHARP_SL5500;
++ else if (strstr(buf, "SHARP Poodle") != NULL)
++ machine = MACHINE_SHARP_SLB500;
++ else if (strstr(buf, "SHARP Corgi") !=NULL)
++ machine = MACHINE_SHARP_SLC700;
++ else if (strstr(buf, "SHARP Shepherd") !=NULL)
++ machine = MACHINE_SHARP_SLC750;
++ else if (strstr(buf, "SHARP Husky") !=NULL)
++ machine = MACHINE_SHARP_SLC760;
++ else if (strstr(buf, "SHARP Boxer") != NULL)
++ machine = MACHINE_SHARP_SLC860;
++ }
++ fclose(fp);
++ } else {
++ LOG("QT_GetMachine: Couldn't read /proc/deviceinfo/product.\n");
++ LOG(" Now set machine variable to default (SL-5000D)\n");
++ }
++
++ LOG(" detected machine is '%s %s'\n",
++ st_machine_spec[machine].manif, st_machine_spec[machine].name);
++ return machine;
++ }
++
++ static void QT_GetQteServerSpec(_THIS, int *rotation, bool *isQvga)
++ {
++ const char *user;
++ char buf[FILENAME_MAX];
++ FILE *fp;
++ int rot = 0, is_qvga = 0;
++
++ user = getenv("USER");
++ snprintf(buf, sizeof(buf), "/tmp/qtembedded-%s/QtEmbedded-0.spec",
++ user ? user : "root");
++ LOG("QT_GetRotation: Read spec from '%s'\n", buf);
++
++ fp = fopen(buf, "rb");
++ if (fp) {
++ int size;
++ if ((size = fread(buf, 1, sizeof(buf) - 1, fp)) > 0) {
++ buf[size] = '\0';
++ LOG(" spec is '%s'\n", buf);
++ // get rotation value
++ if (strstr(buf, "Rot")) {
++ rot = atoi(strstr(buf, "Rot") + 3);
++ rot /= 90;
++ if (rot < 0 || rot > 3) {
++ rot = 0;
++ }
++ } else
++ rot = 0;
++
++ // get qvga mode in SL-C700
++ if (strstr(buf, "Qvga"))
++ is_qvga = 1;
++ }
++ fclose(fp);
++ }
++
++ LOG(" Rot=%d, Qvga=%d\n", rot, is_qvga);
++
++ if (rotation)
++ *rotation = rot;
++ if (isQvga)
++ *isQvga = is_qvga;
++ }
++
+ /* FIXME: check return values and cleanup here */
+ SDL_Surface *QT_SetVideoMode(_THIS, SDL_Surface *current,
+ int width, int height, int bpp, Uint32 flags)
+ {
+-
+ QImage *qimage;
+- QSize desktop_size = qApp->desktop()->size();
++ QSize qteSize = qApp->desktop()->size();
++ QSize fbSize;
++ QSize userSize;
++ int fb_xres;
++ int fb_yres;
++ struct fb_var_screeninfo vinfo;
++ struct fb_fix_screeninfo finfo;
++ int tmp_ioctl_data;
++ char fb_size_fix = ' ';
++ bool isW100patch_kernel = false;
++ int numFb_Size;
++
++ int mapped_memlen;
++ int mapped_offset;
++ void *mapped_mem;
++ int fb_offset;
++
++
++ machine_t machine = QT_GetMachine(_this);
++ machine_spec_t machineSpec = st_machine_spec[machine];
++ int qteRotation, userRotation, sdlRotation;
++ int qteKeyRotation, sdlKeyRotation;
++ bool isQteQvga;
++
++ if (machine == MACHINE_SHARP_SLC700 ||
++ machine == MACHINE_SHARP_SLC750 ||
++ machine == MACHINE_SHARP_SLC760 ||
++ machine == MACHINE_SHARP_SLC860 || // ŸÜ€·€€€³€È€ï€«€é€ó€±€É€È€ê€¢€š€º
++ machine == MACHINE_SHARP_SL6000 ) { // ŸÜ€·€€€³€È€ï€«€é€ó€±€É€È€ê€¢€š€º
++ is_VGA_machine = true;
++ }else {
++ is_VGA_machine = false;
++ }
++
++ // qte €Ç€Î²óÅŸ³ÑÅÙ€òŒèÆÀ
++ QT_GetQteServerSpec(_this, &qteRotation, &isQteQvga);
++
++ // SL-C700 €Î¥¹¥¿¥€¥ë
++ bool isInputStyle = false;
++ if (is_VGA_machine) {
++ int status = system("/home/QtPalmtop/bin/chkhinge");
++ if (WEXITSTATUS(status) != 2)
++ isInputStyle = true;
++ LOG("QT_SetVideoMode: SL-C700 Style is %s\n",
++ isInputStyle ? "Input style" : "View style");
++ }
+
+
+- current->flags = 0; //SDL_FULLSCREEN; // We always run fullscreen.
++ // specity screen setting
++ if (is_VGA_machine) {
++
++ // w100 rotation pached kernel check
++ isW100patch_kernel = (fopen("/proc/driver/w100/rotation","r") != NULL) ? true : false;
++ LOG("Your Kernel is %s\n",isW100patch_kernel ? "Special Kernel" : "Normal Kernel");
++
++ const char *envFb_Size = getenv("SDL_FB_SIZE");
++ if (envFb_Size !=NULL) {
++ numFb_Size=sscanf(envFb_Size,"%dx%d%c",&fb_xres,&fb_yres,&fb_size_fix);
++ } else {
++ numFb_Size=0;
++ }
+
+- if(width <= desktop_size.width()
+- && height <= desktop_size.height()) {
+- current->w = desktop_size.width();
+- current->h = desktop_size.height();
+- } else if(width <= desktop_size.height() && height <= desktop_size.width()) {
+- // Landscape mode
+- char * envString = getenv(SDL_QT_ROTATION_ENV_NAME);
+- int envValue = envString ? atoi(envString) : 0;
+- screenRotation = envValue ? SDL_QT_ROTATION_270 : SDL_QT_ROTATION_90;
+- current->h = desktop_size.width();
+- current->w = desktop_size.height();
++ if (numFb_Size >=2) {
++
++ // specity screen mode
++ if ( ioctl(console_fd, FBIOGET_VSCREENINFO, &vinfo) < 0 ) {
++ SDL_SetError("Couldn't get console pixel format");
++ QT_VideoQuit(_this);
++ return(NULL);
++ }
++
++ vinfo.xres = fb_xres;
++ vinfo.xres_virtual = fb_xres;
++ vinfo.yres = fb_yres;
++ vinfo.yres_virtual = fb_yres;
++
++ if (fb_size_fix == '@') {
++ width = fb_xres;
++ height = fb_yres;
++ }
++
++ if ( ioctl(console_fd, FBIOPUT_VSCREENINFO, &vinfo) < 0 ) {
++ SDL_SetError("Couldn't set console screen info");
++ return(NULL);
++ }
++
++
++ if (isW100patch_kernel) {
++ qteSize.setWidth(vinfo.xres);
++ qteSize.setHeight(vinfo.yres);
++ qteRotation=0;
++ }else if(vinfo.xres == 320){
++ qteSize.setWidth(vinfo.xres);
++ qteSize.setHeight(vinfo.yres);
++ qteRotation=2;
++ }else {
++ qteSize.setWidth(vinfo.yres);
++ qteSize.setHeight(vinfo.xres);
++ qteRotation=3;
++ }
++
++ if (isW100patch_kernel && (vinfo.xres == 320) && (vinfo.yres == 240)) {
++ tmp_ioctl_data=121;
++ ioctl(console_fd, W100FB_CONFIG_EX, &tmp_ioctl_data);
++ fb_hwrot=1;
++ }
++
++ LOG("FBVideoMode: %dx%d%c\n", vinfo.xres, vinfo.yres,fb_size_fix );
++
++ }else {
++
++ // auto screen mode
++ if ( ioctl(console_fd, FBIOGET_VSCREENINFO, &vinfo) < 0 ) {
++ SDL_SetError("Couldn't get console pixel format");
++ QT_VideoQuit(_this);
++ return(NULL);
++ }
++
++ if (isW100patch_kernel && (isInputStyle == false) && (vinfo.xres == 240) && (vinfo.yres == 320)) {
++ vinfo.xres = 240;
++ vinfo.xres_virtual = 240;
++ vinfo.yres = 320;
++ vinfo.yres_virtual = 320;
++ qteRotation=0;
++ }else if ((width <= 320) && (height <= 240)) {
++ vinfo.xres = 320;
++ vinfo.xres_virtual = 320;
++ vinfo.yres = 240;
++ vinfo.yres_virtual = 240;
++ }else if (isW100patch_kernel && (isInputStyle == true)){
++ vinfo.xres = 640;
++ vinfo.xres_virtual = 640;
++ vinfo.yres = 480;
++ vinfo.yres_virtual = 480;
++ qteRotation=0;
++ }else {
++ vinfo.xres = 480;
++ vinfo.xres_virtual = 480;
++ vinfo.yres = 640;
++ vinfo.yres_virtual = 640;
++ }
++
++ if ( ioctl(console_fd, FBIOPUT_VSCREENINFO, &vinfo) < 0 ) {
++ SDL_SetError("Couldn't set console screen info");
++ return(NULL);
++ }
++
++ if (isW100patch_kernel) {
++ qteSize.setWidth(vinfo.xres);
++ qteSize.setHeight(vinfo.yres);
++ qteRotation=0;
++ fb_direct=1;
++ }else if(vinfo.xres == 320){
++ qteSize.setWidth(vinfo.xres);
++ qteSize.setHeight(vinfo.yres);
++ qteRotation=2;
++ }else {
++ qteSize.setWidth(vinfo.yres);
++ qteSize.setHeight(vinfo.xres);
++ qteRotation=3;
++ }
++
++ if (isW100patch_kernel && (vinfo.xres == 320) && (vinfo.yres == 240)) {
++ tmp_ioctl_data=121;
++ ioctl(console_fd, W100FB_CONFIG_EX, &tmp_ioctl_data);
++ fb_hwrot=1;
++ qteRotation=0;
++ }
++
++ LOG("FBVideoMode: %dx%d%c\n", vinfo.xres, vinfo.yres,fb_size_fix );
++ }
++ }
++
++ // direct paint setting
++ const char *envFb_Direct = getenv("SDL_FB_DIRECT");
++ if (envFb_Direct !=NULL)
++ fb_direct = envFb_Direct ? atoi(envFb_Direct) : -1;
++
++ if (fb_direct == 1){
++ if ( ioctl(console_fd, FBIOGET_FSCREENINFO, &finfo) < 0 ) {
++ SDL_SetError("Couldn't get console hardware info");
++ QT_VideoQuit(_this);
++ return(NULL);
++ }
++ if ( ioctl(console_fd, FBIOGET_VSCREENINFO, &vinfo) < 0 ) {
++ SDL_SetError("Couldn't get console pixel format");
++ QT_VideoQuit(_this);
++ return(NULL);
++ }
++ LOG("Direct paint mode\n");
++ }
++
++ // hack for SL-5500
++ if (machine == MACHINE_SHARP_SL5500)
++ qteRotation = 3;
++
++ // SL-B500 Íѥϥå¯(€È€ê€¢€š€º¡¢€Í)
++ if (machine == MACHINE_SHARP_SLB500)
++ qteRotation = 3;
++
++ // Àž¥Õ¥ì¡Œ¥à¥Ð¥Ã¥Õ¥¡€Î¥µ¥€¥º€òÆÀ€ë
++ if (qteRotation & 1) {
++ fbSize.setWidth(qteSize.height());
++ fbSize.setHeight(qteSize.width());
++ } else {
++ fbSize = qteSize;
++ }
++
++ //
++ const char *envRotStr = getenv(SDL_QT_ROTATION_ENV_NAME);
++ userRotation = envRotStr ? atoi(envRotStr) : -1;
++ if ((userRotation >= 0 ? userRotation : qteRotation) & 1) {
++ userSize.setWidth(fbSize.height());
++ userSize.setHeight(fbSize.width());
++ } else {
++ userSize = fbSize;
++ }
++
++ if (width <= userSize.width() && height <= userSize.height()) {
++ // ŽÄ¶­ÊÑ¿ô€Ç²óÅŸ³ÑÅÙ€¬»ØÄꀵ€ì€Æ€€€ì€Ð¡¢€œ€ì€òºÇÍ¥À耹€ë
++ if (userRotation >= 0)
++ sdlRotation = userRotation;
++ else {
++ // €Ç¡¢€œ€Î»ØÄꀬ̵€€€Î€Ç€¢€ì€Ð qte €Î²óÅŸ³ÑÅـ˹ç€ï€»€ë€À€±
++ // €Ê€ó€À€±€É¡¢SL-C700 €Ç€Ï€Á€ç€€Ê£»š¡£
++ if (is_VGA_machine && (fbSize.width() == 320) && (fbSize.height() == 240)) {
++ if (isInputStyle)
++ sdlRotation = 2;
++ else
++ sdlRotation = qteRotation;
++ } else {
++ sdlRotation = qteRotation;
++ }
++ }
++ } else if (width <= fbSize.width() && height <= fbSize.height()) {
++ sdlRotation = 0;
++ if (is_VGA_machine && (fbSize.width() == 320) && (fbSize.height() == 240) && isInputStyle)
++ sdlRotation = 2;
++ } else if (width <= fbSize.height() && height <= fbSize.width()) {
++ sdlRotation = 1;
+ } else {
+ SDL_SetError("Unsupported resolution, %dx%d\n", width, height);
++ return NULL;
+ }
++
++ if (fb_hwrot == 1)
++ sdlRotation = 0;
++
++ if (getenv(SDL_QT_INVERT_ROTATION_ENV_NAME) != NULL) {
++ sdlRotation = (sdlRotation + 2) & 3;
++ }
++
++ LOG("QT_SetVideoMode: argSize=%dx%d\n", width, height);
++ LOG("QT_SetVideoMode: qteSize=%dx%d\n",
++ qteSize.width(), qteSize.height());
++ LOG("QT_SetVideoMode: fbSize=%dx%d\n",
++ fbSize.width(), fbSize.height());
++ LOG("QT_SetVideoMode: qteRotation=%d\n", qteRotation);
++ LOG("QT_SetVideoMode: userRotation=%d\n", userRotation);
++ LOG("QT_SetVideoMode: sdlRotation=%d\n", sdlRotation);
++
++ current->flags = 0;//SDL_FULLSCREEN; // We always run fullscreen.
++ current->w = width;
++ current->h = height;
++ SDL_Win->setScreenRotation(sdlRotation, qteRotation);
++ SDL_Win->setFBSize(fbSize);
++
++ if (machine == MACHINE_SHARP_SLA300)
++ SDL_Win->setSLA300InputFix(true);
++
++ // keyboard rotation
++ qteKeyRotation = qteRotation;
++// fprintf(stderr, "%d\n", (machine == MACHINE_SHARP_SLC700));
++// fprintf(stderr, "%d\n", isQteQvga);
++ if (isQteQvga && is_VGA_machine)
++ qteKeyRotation = 3;
++ else if (machine == MACHINE_SHARP_SLB500)
++ qteKeyRotation = 3;
++
++ if (isQteQvga && fb_hwrot == 1)
++ qteKeyRotation = 1;
++
++ sdlKeyRotation = sdlRotation;
++
++ SDL_Win->setKeyRotation(sdlKeyRotation, qteKeyRotation);
++
++ LOG("QT_SetVideoMode: qteKeyRotation=%d\n", qteKeyRotation);
++ LOG("QT_SetVideoMode: sdlKeyRotation=%d\n", sdlKeyRotation);
++
+ if ( flags & SDL_OPENGL ) {
+ SDL_SetError("OpenGL not supported");
+ return(NULL);
+- }
++ }
+ /* Create the QImage framebuffer */
+- qimage = new QImage(current->w, current->h, bpp);
+- if (qimage->isNull()) {
+- SDL_SetError("Couldn't create screen bitmap");
+- delete qimage;
+- return(NULL);
++
++ // frame buffer memory mapping
++ if (fb_direct == 1) {
++ current->pitch = finfo.line_length;
++ current->flags = (SDL_FULLSCREEN|SDL_HWSURFACE);
++ mapped_offset = (((long)finfo.smem_start) -
++ (((long)finfo.smem_start)&~(PAGE_SIZE-1)));
++ mapped_memlen = finfo.smem_len+mapped_offset;
++ if(console_fd >0 ) {
++ mapped_mem = mmap(NULL, mapped_memlen,PROT_READ|PROT_WRITE, MAP_SHARED, console_fd, 0);
++ fb_offset=(vinfo.xres-width)+(vinfo.yres-height)*vinfo.xres;
++ current->pixels = (void *)((int )mapped_mem+fb_offset);
++ _this->UpdateRects = QT_DirectUpdate;
++ } else {
++ qimage = new QImage(current->w, current->h, bpp);
++ if (qimage->isNull()) {
++ SDL_SetError("Couldn't create screen bitmap");
++ delete qimage;
++ return(NULL);
++ }
++ current->pixels = (void *)qimage->bits();
++ _this->UpdateRects = QT_NormalUpdate;
++ SDL_Win->setImage(qimage);
++// SDL_Win->setFullscreen(true); //comment to non update taskbar
++ }
++ } else {
++ qimage = new QImage(current->w, current->h, bpp);
++ if (qimage->isNull()) {
++ SDL_SetError("Couldn't create screen bitmap");
++ delete qimage;
++ return(NULL);
++ }
++ current->pitch = qimage->bytesPerLine();
++ current->pixels = (void *)qimage->bits();
++ _this->UpdateRects = QT_NormalUpdate;
++ SDL_Win->setImage(qimage);
++// SDL_Win->setFullscreen(true); //comment to non update taskbar
++
+ }
+- current->pitch = qimage->bytesPerLine();
+- current->pixels = (void *)qimage->bits();
+- SDL_Win->setImage(qimage);
+- _this->UpdateRects = QT_NormalUpdate;
+- SDL_Win->setFullscreen(true);
++
++
++ // fprintf(stderr,"QT_SetVideoMode() qImage:%dx%d %d\n",
++ // qimage->width(), qimage->height(), qimage->bytesPerLine());
+ /* We're done */
+ return(current);
+ }
+@@ -361,13 +864,19 @@
+ {
+ if(SDL_Win->lockScreen()) {
+ for(int i=0; i<numrects; ++i ) {
+- QRect rect(rects[i].x, rects[i].y,
+- rects[i].w, rects[i].h);
+- SDL_Win->repaintRect(rect);
++ QRect rect(rects[i].x, rects[i].y,
++ rects[i].w, rects[i].h);
++ SDL_Win->repaintRect(rect);
+ }
+ SDL_Win->unlockScreen();
+ }
+ }
++
++ static void QT_DirectUpdate(_THIS, int numrects, SDL_Rect *rects)
++ {
++
++ }
++
+ /* Is the system palette settable? */
+ int QT_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors)
+ {
+@@ -383,10 +892,36 @@
+ // -- David Hedbor
+ // delete SDL_Win;
+ // SDL_Win = 0;
++
++ if ( console_fd > 0 ) {
++ /* Restore the original video mode and palette */
++ if (fb_hwrot == 1) {
++ int tmp_ioctl_data=120;
++ ioctl(console_fd, W100FB_CONFIG_EX, &tmp_ioctl_data);
++ }
++
++ ioctl(console_fd, FBIOPUT_VSCREENINFO, &saved_vinfo);
++
++ /* We're all done with the framebuffer */
++ close(console_fd);
++ console_fd = -1;
++ }
++
+ _this->screen->pixels = NULL;
+ QT_GrabInput(_this, SDL_GRAB_OFF);
++/*
++ {
++ QCopEnvelope e("QPE/KeyHelper", "repeater(int)");
++ e << 1;
++ }
++*/
++ if (isKHloaded)
++ system("qcop QPE/KeyHelper \"reload()\""); //QcopEnvelope can't use.
++
+ }
+
++
++
+ static int QT_IconifyWindow(_THIS) {
+ SDL_Win->hide();
+
+Index: SDL-1.2.7/src/video/fbcon/SDL_fbvideo.c
+===================================================================
+--- SDL-1.2.7.orig/src/video/fbcon/SDL_fbvideo.c 2005-03-02 22:24:43.458491481 +0100
++++ SDL-1.2.7/src/video/fbcon/SDL_fbvideo.c 2005-03-02 22:24:46.875008802 +0100
+@@ -51,7 +51,7 @@
+ #include "SDL_fbmatrox.h"
+ #include "SDL_fbriva.h"
+
+-
++/* #define FBCON_DEBUG 1 */
+ #if defined(i386) && defined(FB_TYPE_VGA_PLANES)
+ #define VGA16_FBCON_SUPPORT
+ #ifndef FB_AUX_VGA_PLANES_VGA4
+@@ -76,9 +76,11 @@
+ { 0, 0, 720, 576 }, /* PAL */
+ { 0, 0, 720, 480 }, /* NTSC */
+ { 0, 0, 640, 480 }, /* 16 bpp: 0x111, or 273 */
++ { 0, 0, 480, 640 },
+ { 0, 0, 640, 400 }, /* 8 bpp: 0x100, or 256 */
+ { 0, 0, 512, 384 },
+ { 0, 0, 320, 240 },
++ { 0, 0, 240, 320 },
+ { 0, 0, 320, 200 }
+ };
+ static const struct {
+@@ -112,9 +114,11 @@
+ */
+ { 320, 200, 79440, 16, 16, 20, 4, 48, 1, 0, 2 }, /* 70 Hz */
+ { 320, 240, 63492, 16, 16, 16, 4, 48, 2, 0, 2 }, /* 72 Hz */
++ { 240, 320, 63492, 16, 16, 16, 4, 48, 3, 0, 2 }, /* 72 Hz */
+ { 512, 384, 49603, 48, 16, 16, 1, 64, 3, 0, 0 }, /* 78 Hz */
+ { 640, 400, 31746, 96, 32, 41, 1, 64, 3, 2, 0 }, /* 85 Hz */
+ { 640, 480, 31746, 120, 16, 16, 1, 64, 3, 0, 0 }, /* 75 Hz */
++ { 480, 640, 31746, 120, 16, 16, 1, 64, 4, 0, 0 }, /* 75 Hz */
+ { 768, 576, 26101, 144, 16, 28, 6, 112, 4, 0, 0 }, /* 60 Hz */
+ { 800, 600, 20000, 64, 56, 23, 37, 120, 6, 3, 0 }, /* 72 Hz */
+ { 960, 720, 17686, 144, 24, 28, 8, 112, 4, 0, 0 }, /* 60 Hz */
+@@ -152,6 +156,10 @@
+ struct fb_var_screeninfo *vinfo);
+ static void FB_RestorePalette(_THIS);
+
++static char *console_fd_buf;
++static char *mapped_mem_fb;
++static int rotation_flag;
++
+ /* FB driver bootstrap functions */
+
+ static int FB_Available(void)
+@@ -241,18 +249,30 @@
+
+ mode_okay = 0;
+ vinfo->bits_per_pixel = (index+1)*8;
+- vinfo->xres = *w;
+- vinfo->xres_virtual = *w;
+- vinfo->yres = *h;
+- vinfo->yres_virtual = *h;
++ if ((rotation_flag == 0) || (rotation_flag == 2)) {
++ vinfo->xres = *w;
++ vinfo->xres_virtual = *w;
++ vinfo->yres = *h;
++ vinfo->yres_virtual = *h;
++ } else {
++ vinfo->xres = *h;
++ vinfo->xres_virtual = *h;
++ vinfo->yres = *w;
++ vinfo->yres_virtual = *w;
++ }
+ vinfo->activate = FB_ACTIVATE_TEST;
+ if ( ioctl(console_fd, FBIOPUT_VSCREENINFO, vinfo) == 0 ) {
+ #ifdef FBCON_DEBUG
+ fprintf(stderr, "Checked mode %dx%d at %d bpp, got mode %dx%d at %d bpp\n", *w, *h, (index+1)*8, vinfo->xres, vinfo->yres, vinfo->bits_per_pixel);
+ #endif
+ if ( (((vinfo->bits_per_pixel+7)/8)-1) == index ) {
+- *w = vinfo->xres;
+- *h = vinfo->yres;
++ if ((rotation_flag == 0) || (rotation_flag == 2)) {
++ *w = vinfo->xres;
++ *h = vinfo->yres;
++ } else {
++ *h = vinfo->xres;
++ *w = vinfo->yres;
++ }
+ mode_okay = 1;
+ }
+ }
+@@ -332,6 +352,7 @@
+ unsigned int current_w;
+ unsigned int current_h;
+ const char *SDL_fbdev;
++ const char *SDL_rot_flag;
+
+ /* Initialize the library */
+ SDL_fbdev = getenv("SDL_FBDEV");
+@@ -344,6 +365,14 @@
+ return(-1);
+ }
+
++ SDL_rot_flag = getenv("SDL_FBROT");
++ if ( SDL_rot_flag == NULL ) {
++ rotation_flag = 0;
++ } else {
++ rotation_flag = atoi(SDL_rot_flag);
++ }
++
++
+ #ifndef DISABLE_THREADS
+ /* Create the hardware surface lock mutex */
+ hw_lock = SDL_CreateMutex();
+@@ -407,13 +436,33 @@
+ mapped_offset = (((long)finfo.smem_start) -
+ (((long)finfo.smem_start)&~(PAGE_SIZE-1)));
+ mapped_memlen = finfo.smem_len+mapped_offset;
+- mapped_mem = mmap(NULL, mapped_memlen,
+- PROT_READ|PROT_WRITE, MAP_SHARED, console_fd, 0);
+- if ( mapped_mem == (char *)-1 ) {
+- SDL_SetError("Unable to memory map the video hardware");
+- mapped_mem = NULL;
+- FB_VideoQuit(this);
+- return(-1);
++ if (rotation_flag == 0) {
++ mapped_mem = mmap(NULL, mapped_memlen,
++ PROT_READ|PROT_WRITE, MAP_SHARED, console_fd, 0);
++ if ( mapped_mem == (char *)-1 ) {
++ SDL_SetError("Unable to memory map the video hardware");
++ mapped_mem = NULL;
++ FB_VideoQuit(this);
++ return(-1);
++ }
++ } else {
++
++ console_fd_buf = (char *)malloc(640*480*2);
++
++ if (console_fd_buf == NULL){
++ SDL_SetError("Unable to memory for buffer");
++ return(-1);
++ }
++
++ mapped_mem_fb = mmap(NULL, mapped_memlen,
++ PROT_READ|PROT_WRITE, MAP_SHARED, console_fd, 0);
++ if ( mapped_mem_fb == (char *)-1 ) {
++ SDL_SetError("Unable to memory map the video hardware");
++ mapped_mem_fb = NULL;
++ FB_VideoQuit(this);
++ return(-1);
++ }
++ mapped_mem = console_fd_buf;
+ }
+
+ /* Determine the current screen depth */
+@@ -555,6 +604,7 @@
+
+ /* Various screen update functions available */
+ static void FB_DirectUpdate(_THIS, int numrects, SDL_Rect *rects);
++static void FB_RotationUpdate(_THIS, int numrects, SDL_Rect *rects);
+ #ifdef VGA16_FBCON_SUPPORT
+ static void FB_VGA16Update(_THIS, int numrects, SDL_Rect *rects);
+ #endif
+@@ -725,7 +775,7 @@
+ Uint32 Bmask;
+ char *surfaces_mem;
+ int surfaces_len;
+-
++
+ /* Set the terminal into graphics mode */
+ if ( FB_EnterGraphicsMode(this) < 0 ) {
+ return(NULL);
+@@ -734,6 +784,8 @@
+ /* Restore the original palette */
+ FB_RestorePalette(this);
+
++ flags &= ~SDL_DOUBLEBUF;
++
+ /* Set the video mode and get the final screen format */
+ if ( ioctl(console_fd, FBIOGET_VSCREENINFO, &vinfo) < 0 ) {
+ SDL_SetError("Couldn't get console screen info");
+@@ -748,13 +800,24 @@
+ vinfo.activate = FB_ACTIVATE_NOW;
+ vinfo.accel_flags = 0;
+ vinfo.bits_per_pixel = bpp;
+- vinfo.xres = width;
+- vinfo.xres_virtual = width;
+- vinfo.yres = height;
+- if ( flags & SDL_DOUBLEBUF ) {
+- vinfo.yres_virtual = height*2;
++ if ((rotation_flag == 0) || (rotation_flag == 2)) {
++ vinfo.xres = width;
++ vinfo.xres_virtual = width;
++ vinfo.yres = height;
++ if ( flags & SDL_DOUBLEBUF ) {
++ vinfo.yres_virtual = height*2;
++ } else {
++ vinfo.yres_virtual = height;
++ }
+ } else {
+- vinfo.yres_virtual = height;
++ vinfo.xres = height;
++ vinfo.xres_virtual = height;
++ vinfo.yres = width;
++ if ( flags & SDL_DOUBLEBUF ) {
++ vinfo.yres_virtual = width*2;
++ } else {
++ vinfo.yres_virtual = width;
++ }
+ }
+ vinfo.xoffset = 0;
+ vinfo.yoffset = 0;
+@@ -776,6 +839,15 @@
+ return(NULL);
+ }
+ }
++ vinfo.xres = width;
++ vinfo.xres_virtual = width;
++ vinfo.yres = height;
++ if ( flags & SDL_DOUBLEBUF ) {
++ vinfo.yres_virtual = height*2;
++ } else {
++ vinfo.yres_virtual = height;
++ }
++
+ } else {
+ int maxheight;
+
+@@ -821,7 +893,9 @@
+ SDL_SetError("Couldn't get console hardware info");
+ return(NULL);
+ }
+-
++#ifdef FBCON_DEBUG
++ print_finfo(&finfo);
++#endif
+ /* Save hardware palette, if needed */
+ FB_SavePalette(this, &finfo, &vinfo);
+
+@@ -829,7 +903,11 @@
+ current->flags = (SDL_FULLSCREEN|SDL_HWSURFACE);
+ current->w = vinfo.xres;
+ current->h = vinfo.yres;
+- current->pitch = finfo.line_length;
++ if ((rotation_flag == 0) || (rotation_flag == 2) ) {
++ current->pitch = finfo.line_length;
++ } else {
++ current->pitch = vinfo.xres*2;
++ }
+ current->pixels = mapped_mem+mapped_offset;
+
+ /* Set up the information for hardware surfaces */
+@@ -863,7 +941,7 @@
+ }
+
+ /* Set the update rectangle function */
+- this->UpdateRects = FB_DirectUpdate;
++ this->UpdateRects = FB_RotationUpdate;
+
+ /* We're done */
+ return(current);
+@@ -1123,6 +1201,89 @@
+ return;
+ }
+
++static void FB_RotationUpdate(_THIS, int numrects, SDL_Rect *rects)
++{
++ unsigned short *pDst;
++ unsigned short *pSrc;
++ unsigned int width;
++ unsigned int height;
++ unsigned int srcYAdd;
++ unsigned int dstXAdd;
++ unsigned int dstYSub;
++ unsigned int i;
++ unsigned int dstH;
++ unsigned int dstW;
++
++#ifdef FBCON_DEBUG
++ fprintf(stderr,"rotation_flag = %d \n",rotation_flag);
++#endif
++ switch (rotation_flag) {
++ case 0:
++ break;
++ case 1:
++ memcpy(mapped_mem_fb,mapped_mem,640*480*2);
++ break;
++ case 2:
++ memcpy(mapped_mem_fb,mapped_mem,640*480*2);
++ break;
++ case 3:
++ dstW=cache_vinfo.xres;
++ dstH=cache_vinfo.yres;
++#ifdef FBCON_DEBUG
++ fprintf(stderr,"dstH = %d : dstW = %d : rects->x = %d : rects->y = %d\n",dstH,dstW);
++ fprintf(stderr,"rects->x = %d : rects->y = %d : rects->w = %d : rects->h = %d\n",rects->x,rects->y,rects->w,rects->h);
++#endif
++ while (numrects) {
++ if (rects->w != dstW || rects->h != dstH) {
++ pSrc = mapped_mem + (rects->x + rects->y * dstW)*2;
++ pDst = mapped_mem_fb + (dstH-1+rects->x * dstH - rects->y)*2;
++
++ width = rects->w;
++ height = rects->h;
++
++ srcYAdd = dstW - rects->w;
++ dstXAdd = dstH;
++ dstYSub = (dstH * rects->w) + 1;
++
++ while (height--) {
++ i = width;
++ while (i--) {
++ *pDst = *pSrc ++;
++ pDst += dstXAdd;
++ }
++ pSrc += srcYAdd;
++ pDst -= dstYSub;
++ }
++
++ } else {
++ pDst=mapped_mem_fb+dstH*2-2;
++ pSrc=mapped_mem;
++ height=dstH;
++ width=dstW;
++ dstXAdd=height;
++ dstYSub=dstW*dstH+1;
++
++ while (height--) {
++ i = width;
++ while (i--) {
++ *pDst = *pSrc ++;
++ pDst += dstXAdd;
++ }
++ pDst -= dstYSub;
++ }
++ }
++ numrects--;
++ rects++;
++ }
++ break;
++ default:
++ break;
++ }
++
++
++
++}
++
+ #ifdef VGA16_FBCON_SUPPORT
+ /* Code adapted with thanks from the XFree86 VGA16 driver! :) */
+ #define writeGr(index, value) \
+Index: SDL-1.2.7/src/video/fbcon/SDL_fbevents.c
+===================================================================
+--- SDL-1.2.7.orig/src/video/fbcon/SDL_fbevents.c 2005-03-02 22:24:43.458491481 +0100
++++ SDL-1.2.7/src/video/fbcon/SDL_fbevents.c 2005-03-02 22:24:46.876008660 +0100
+@@ -60,7 +60,13 @@
+ #ifndef GPM_NODE_FIFO
+ #define GPM_NODE_FIFO "/dev/gpmdata"
+ #endif
++#define POINTERCAL "/etc/pointercal"
+
++static struct SDL_cal {
++ long ok;
++ long a, b, c, d, e, f, s;
++ long rotate;
++} cal = { 0 };
+
+ /* The translation tables from a console scancode to a SDL keysym */
+ #define NUM_VGAKEYMAPS (1<<KG_CAPSSHIFT)
+@@ -317,6 +323,7 @@
+ MOUSE_MS,
+ MOUSE_BM,
+ MOUSE_ELO,
++ TS_SLC7X0,
+ NUM_MOUSE_DRVS
+ } mouse_drv = MOUSE_NONE;
+
+@@ -500,6 +507,9 @@
+ mousedev = getenv("SDL_MOUSEDEV");
+ mouse_fd = -1;
+
++ const char *sdl_rot_flag;
++ sdl_rot_flag = getenv("SDL_FBROT");
++
+ /* ELO TOUCHSCREEN SUPPORT */
+
+ if( (mousedrv != NULL) && (strcmp(mousedrv, "ELO") == 0) ) {
+@@ -601,9 +611,39 @@
+ mouse_drv = MOUSE_MS;
+ }
+ }
++ /* Default to a SLC7X0 touch screen */
++ if ( mouse_fd < 0 ) {
++ mousedev = "/dev/ts";
++ mouse_fd = open(mousedev, O_RDONLY, 0);
++ if ( mouse_fd >= 0 ) {
++ FILE *pcal;
++ cal.ok = 0;
++ pcal = fopen(POINTERCAL, "r");
++ if(pcal == NULL){
++ fprintf(stderr, "Warning: cannot open " POINTERCAL ".\n");
++ }else{
++ int n;
++ n = fscanf(pcal, "%d %d %d %d %d %d %d",
++ &cal.a, &cal.b, &cal.c, &cal.d, &cal.e, &cal.f, &cal.s);
++ if(n != 7){
++ fprintf(stderr, "Warning: " POINTERCAL " is unknown format.\n");
++ }else{
++ cal.ok = 1;
++ }
++ fclose(pcal);
++ }
++ if ( sdl_rot_flag == NULL ) {
++ cal.rotate = 0;
++ } else {
++ cal.rotate = atoi(sdl_rot_flag);
++ }
++ mouse_drv = TS_SLC7X0;
++ }
++ }
+ if ( mouse_fd < 0 ) {
+ mouse_drv = MOUSE_NONE;
+ }
++
+ return(mouse_fd);
+ }
+
+@@ -678,6 +718,10 @@
+ packetsize = ELO_PACKET_SIZE;
+ relative = 0;
+ break;
++ case TS_SLC7X0:
++ packetsize = 8;
++ relative = 0;
++ break;
+ case NUM_MOUSE_DRVS:
+ /* Uh oh.. */
+ packetsize = 0;
+@@ -810,6 +854,25 @@
+ */
+
+ case MOUSE_ELO:
++ case TS_SLC7X0:
++ /* Get current mouse state */
++ button = ((mousebuf[i+1] << 8)+mousebuf[i])/500;
++ dx = (mousebuf[i+3] << 8)+mousebuf[i+2];
++ dy = (mousebuf[i+5] << 8)+mousebuf[i+4];
++ if(cal.ok){
++ long X, Y;
++ X = (cal.a * dx + cal.b * dy + cal.c) / cal.s;
++ Y = (cal.d * dx + cal.e * dy + cal.f) / cal.s;
++ dx = X;
++ dy = Y;
++ }
++ if(cal.rotate == 3){
++ int tmp;
++ tmp=dx;
++ dx = dy;
++ dy = 480-tmp;
++ }
++ break;
+ case NUM_MOUSE_DRVS:
+ /* Uh oh.. */
+ dx = 0;
diff --git a/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/fixlibs.patch b/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/fixlibs.patch
new file mode 100644
index 0000000000..899e31482c
--- /dev/null
+++ b/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/fixlibs.patch
@@ -0,0 +1,25 @@
+--- SDL-1.2.7/configure.in~fixlibs 2005-10-06 10:27:59.025396872 +0200
++++ SDL-1.2.7/configure.in 2005-10-06 10:30:16.963087411 +0200
+@@ -1508,8 +1508,8 @@
+ AC_MSG_RESULT($video_qtopia)
+ if test x$video_qtopia = xyes; then
+ CFLAGS="$CFLAGS -DENABLE_QTOPIA -DQT_QWS_EBX -DQT_QWS_CUSTOM -DQWS -I${QPEDIR}/include -I${QTDIR}/include/ -DNO_DEBUG -fno-rtti -fno-exceptions"
+- SDL_LIBS="$SDL_LIBS -L${QPEDIR}/lib -L${QTDIR}/lib/ -lqpe -lqte"
+- SDL_CFLAGS="$SDL_CFLAGS -DQWS"
++ SDL_LIBS="$SDL_LIBS -Wl,-rpath-link -Wl,${QPEDIR}/lib -Wl,-rpath-link -Wl,${QTDIR}/lib"
++ SYSTEM_LIBS="$SYSTEM_LIBS -L${QPEDIR}/lib -L${QTDIR}/lib/ -lqpe -lqte"
+ VIDEO_SUBDIRS="$VIDEO_SUBDIRS qtopia"
+ VIDEO_DRIVERS="$VIDEO_DRIVERS qtopia/libvideo_qtopia.la"
+ else
+@@ -1803,11 +1803,6 @@
+ CheckPTHREAD
+ CheckSIGACTION
+ CheckAltivec
+- # Set up files for the main() stub
+- if test "x$video_qtopia" = "xyes"; then
+- SDL_CFLAGS="$SDL_CFLAGS -Dmain=SDL_main"
+-
+- fi
+ # Set up files for the audio library
+ # We use the OSS and ALSA API's, not the Sun audio API
+ #if test x$enable_audio = xyes; then
diff --git a/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/gcc34.patch b/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/gcc34.patch
new file mode 100644
index 0000000000..e3738e961e
--- /dev/null
+++ b/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/gcc34.patch
@@ -0,0 +1,176 @@
+diff -ru SDL-1.2.7/src/audio/SDL_mixer_MMX.c SDL-1.2.7.mod/src/audio/SDL_mixer_MMX.c
+--- SDL-1.2.7/src/audio/SDL_mixer_MMX.c 2002-11-09 07:13:28.000000000 +0100
++++ SDL-1.2.7.mod/src/audio/SDL_mixer_MMX.c 2004-04-25 18:15:46.335228624 +0200
+@@ -19,9 +19,9 @@
+ " movl %1,%%esi\n" // esi = src
+ " movl %3,%%eax\n" // eax = volume
+
+-" movl %2,%%ebx\n" // ebx = size
++" movl %2,%%edx\n" // edx = size
+
+-" shrl $4,%%ebx\n" // process 16 bytes per iteration = 8 samples
++" shrl $4,%%edx\n" // process 16 bytes per iteration = 8 samples
+
+ " jz .endS16\n"
+
+@@ -95,7 +95,7 @@
+
+ " addl $16,%%edi\n"
+
+-" dec %%ebx\n"
++" dec %%edx\n"
+
+ " jnz .mixloopS16\n"
+
+@@ -105,7 +105,7 @@
+ :
+ : "m" (dst), "m"(src),"m"(size),
+ "m"(volume)
+- : "eax","ebx", "esi", "edi","memory"
++ : "eax","edx", "esi", "edi","memory"
+ );
+ }
+
+@@ -123,7 +123,7 @@
+ " movl %1,%%esi\n" // esi = src
+ " movl %3,%%eax\n" // eax = volume
+
+-" movd %%ebx,%%mm0\n"
++" movd %%edx,%%mm0\n"
+ " movq %%mm0,%%mm1\n"
+ " psllq $16,%%mm0\n"
+ " por %%mm1,%%mm0\n"
+@@ -132,10 +132,10 @@
+ " psllq $16,%%mm0\n"
+ " por %%mm1,%%mm0\n"
+
+-" movl %2,%%ebx\n" // ebx = size
+-" shr $3,%%ebx\n" // process 8 bytes per iteration = 8 samples
++" movl %2,%%edx\n" // edx = size
++" shr $3,%%edx\n" // process 8 bytes per iteration = 8 samples
+
+-" cmp $0,%%ebx\n"
++" cmp $0,%%edx\n"
+ " je .endS8\n"
+
+ ".align 16\n"
+@@ -169,7 +169,7 @@
+ " movq %%mm3,(%%edi)\n" // store back to ram
+ " addl $8,%%edi\n"
+
+-" dec %%ebx\n"
++" dec %%edx\n"
+
+ " jnz .mixloopS8\n"
+
+@@ -178,7 +178,7 @@
+ :
+ : "m" (dst), "m"(src),"m"(size),
+ "m"(volume)
+- : "eax","ebx", "esi", "edi","memory"
++ : "eax","edx", "esi", "edi","memory"
+ );
+ }
+ #endif
+diff -ru SDL-1.2.7/src/cpuinfo/SDL_cpuinfo.c SDL-1.2.7.mod/src/cpuinfo/SDL_cpuinfo.c
+--- SDL-1.2.7/src/cpuinfo/SDL_cpuinfo.c 2004-02-10 16:31:35.000000000 +0100
++++ SDL-1.2.7.mod/src/cpuinfo/SDL_cpuinfo.c 2004-04-25 18:15:46.336228472 +0200
+@@ -118,7 +118,7 @@
+ " movl %%edi,%%ebx\n"
+ : "=m" (features)
+ :
+- : "%eax", "%ebx", "%ecx", "%edx", "%edi"
++ : "%eax", "%ecx", "%edx", "%edi"
+ );
+ #elif defined(_MSC_VER)
+ __asm {
+@@ -153,7 +153,7 @@
+ " movl %%edi,%%ebx\n"
+ : "=m" (features)
+ :
+- : "%eax", "%ebx", "%ecx", "%edx", "%edi"
++ : "%eax", "%ecx", "%edx", "%edi"
+ );
+ #elif defined(_MSC_VER)
+ __asm {
+diff -ru SDL-1.2.7/src/video/SDL_yuv_mmx.c SDL-1.2.7.mod/src/video/SDL_yuv_mmx.c
+--- SDL-1.2.7/src/video/SDL_yuv_mmx.c 2004-02-18 18:22:04.000000000 +0100
++++ SDL-1.2.7.mod/src/video/SDL_yuv_mmx.c 2004-04-25 18:15:46.337228320 +0200
+@@ -120,12 +120,12 @@
+ "movd (%2), %%mm2\n" // 0 0 0 0 l3 l2 l1 l0
+ "punpcklbw %%mm7,%%mm1\n" // 0 v3 0 v2 00 v1 00 v0
+ "punpckldq %%mm1,%%mm1\n" // 00 v1 00 v0 00 v1 00 v0
+- "psubw _MMX_0080w,%%mm1\n" // mm1-128:r1 r1 r0 r0 r1 r1 r0 r0
++ "psubw %[_MMX_0080w],%%mm1\n" // mm1-128:r1 r1 r0 r0 r1 r1 r0 r0
+
+ // create Cr_g (result in mm0)
+ "movq %%mm1,%%mm0\n" // r1 r1 r0 r0 r1 r1 r0 r0
+- "pmullw _MMX_VgrnRGB,%%mm0\n"// red*-46dec=0.7136*64
+- "pmullw _MMX_VredRGB,%%mm1\n"// red*89dec=1.4013*64
++ "pmullw %[_MMX_VgrnRGB],%%mm0\n"// red*-46dec=0.7136*64
++ "pmullw %[_MMX_VredRGB],%%mm1\n"// red*89dec=1.4013*64
+ "psraw $6, %%mm0\n" // red=red/64
+ "psraw $6, %%mm1\n" // red=red/64
+
+@@ -134,8 +134,8 @@
+ "movq (%2,%4),%%mm3\n" // 0 0 0 0 L3 L2 L1 L0
+ "punpckldq %%mm3,%%mm2\n" // L3 L2 L1 L0 l3 l2 l1 l0
+ "movq %%mm2,%%mm4\n" // L3 L2 L1 L0 l3 l2 l1 l0
+- "pand _MMX_FF00w,%%mm2\n" // L3 0 L1 0 l3 0 l1 0
+- "pand _MMX_00FFw,%%mm4\n" // 0 L2 0 L0 0 l2 0 l0
++ "pand %[_MMX_FF00w],%%mm2\n" // L3 0 L1 0 l3 0 l1 0
++ "pand %[_MMX_00FFw],%%mm4\n" // 0 L2 0 L0 0 l2 0 l0
+ "psrlw $8,%%mm2\n" // 0 L3 0 L1 0 l3 0 l1
+
+ // create R (result in mm6)
+@@ -152,11 +152,11 @@
+ "movd (%1), %%mm1\n" // 0 0 0 0 u3 u2 u1 u0
+ "punpcklbw %%mm7,%%mm1\n" // 0 u3 0 u2 00 u1 00 u0
+ "punpckldq %%mm1,%%mm1\n" // 00 u1 00 u0 00 u1 00 u0
+- "psubw _MMX_0080w,%%mm1\n" // mm1-128:u1 u1 u0 u0 u1 u1 u0 u0
++ "psubw %[_MMX_0080w],%%mm1\n" // mm1-128:u1 u1 u0 u0 u1 u1 u0 u0
+ // create Cb_g (result in mm5)
+ "movq %%mm1,%%mm5\n" // u1 u1 u0 u0 u1 u1 u0 u0
+- "pmullw _MMX_UgrnRGB,%%mm5\n" // blue*-109dec=1.7129*64
+- "pmullw _MMX_UbluRGB,%%mm1\n" // blue*114dec=1.78125*64
++ "pmullw %[_MMX_UgrnRGB],%%mm5\n" // blue*-109dec=1.7129*64
++ "pmullw %[_MMX_UbluRGB],%%mm1\n" // blue*114dec=1.78125*64
+ "psraw $6, %%mm5\n" // blue=red/64
+ "psraw $6, %%mm1\n" // blue=blue/64
+
+@@ -238,8 +238,14 @@
+ "popl %%ebx\n"
+ :
+ : "m" (cr), "r"(cb),"r"(lum),
+- "r"(row1),"r"(cols),"r"(row2),"m"(x),"m"(y),"m"(mod)
+- : "%ebx"
++ "r"(row1),"r"(cols),"r"(row2),"m"(x),"m"(y),"m"(mod),
++ [_MMX_0080w] "m" (*_MMX_0080w),
++ [_MMX_00FFw] "m" (*_MMX_00FFw),
++ [_MMX_FF00w] "m" (*_MMX_FF00w),
++ [_MMX_VgrnRGB] "m" (*_MMX_VgrnRGB),
++ [_MMX_VredRGB] "m" (*_MMX_VredRGB),
++ [_MMX_UgrnRGB] "m" (*_MMX_UgrnRGB),
++ [_MMX_UbluRGB] "m" (*_MMX_UbluRGB)
+ );
+ }
+
+@@ -413,8 +419,16 @@
+ "popl %%ebx\n"
+ :
+ :"m" (cr), "r"(cb),"r"(lum),
+- "r"(row1),"r"(cols),"r"(row2),"m"(x),"m"(y),"m"(mod)
+- : "%ebx"
++ "r"(row1),"r"(cols),"r"(row2),"m"(x),"m"(y),"m"(mod),
++ [_MMX_0080w] "m" (*_MMX_0080w),
++ [_MMX_Ugrn565] "m" (*_MMX_Ugrn565),
++ [_MMX_Ublu5x5] "m" (*_MMX_Ublu5x5),
++ [_MMX_00FFw] "m" (*_MMX_00FFw),
++ [_MMX_Vgrn565] "m" (*_MMX_Vgrn565),
++ [_MMX_Vred5x5] "m" (*_MMX_Vred5x5),
++ [_MMX_Ycoeff] "m" (*_MMX_Ycoeff),
++ [_MMX_red565] "m" (*_MMX_red565),
++ [_MMX_grn565] "m" (*_MMX_grn565)
+ );
+ }
+
diff --git a/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/ipaq.patch b/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/ipaq.patch
new file mode 100644
index 0000000000..bf57953c08
--- /dev/null
+++ b/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/ipaq.patch
@@ -0,0 +1,143 @@
+Index: SDL-1.2.7/src/video/qtopia/Makefile.am
+===================================================================
+--- SDL-1.2.7.orig/src/video/qtopia/Makefile.am 2005-05-16 14:21:01.000000000 +0200
++++ SDL-1.2.7/src/video/qtopia/Makefile.am 2005-05-16 14:24:02.000000000 +0200
+@@ -22,4 +22,4 @@
+ # overwrite USER variables
+ CXXLD = $(CC)
+ CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
+- $(AM_LDFLAGS) $(LDFLAGS) -lsupc++ -o $@
++ $(AM_LDFLAGS) $(LDFLAGS) -lopiecore2 -lsupc++ -o $@
+Index: SDL-1.2.7/src/video/qtopia/SDL_QWin.cc
+===================================================================
+--- SDL-1.2.7.orig/src/video/qtopia/SDL_QWin.cc 2005-05-16 14:21:01.000000000 +0200
++++ SDL-1.2.7/src/video/qtopia/SDL_QWin.cc 2005-05-16 14:24:02.000000000 +0200
+@@ -29,8 +29,11 @@
+ #include "SDL_QWin.h"
+ #include <qapplication.h>
+ #include <qpe/qpeapplication.h>
++#include <opie2/odevice.h>
+ #include <qdirectpainter_qws.h>
+
++using namespace Opie::Core;
++
+ extern int fb_hwrot;
+ extern int fb_direct;
+ extern bool is_VGA_machine;
+@@ -545,18 +548,32 @@
+ case Qt::Key_F7: scancode = SDLK_F7; break;
+ case Qt::Key_F8: scancode = SDLK_F8; break;
+ case Qt::Key_F9:
+- scancode = SDLK_F9;
+- mouse_button_mode=1;
++ if ( ODevice::inst ( )-> series ( ) == Model_iPAQ ) {
++ scancode = SDLK_y; }
++ else {
++ scancode = SDLK_F9;
++ mouse_button_mode=1; }
+ break;
+ case Qt::Key_F10:
+- scancode = SDLK_F10;
+- mouse_button_mode=2;
++ if ( ODevice::inst ( )-> series ( ) == Model_iPAQ ) {
++ scancode = SDLK_LALT; }
++ else {
++ scancode = SDLK_F10;
++ mouse_button_mode=2; }
+ break;
+ case Qt::Key_F11: scancode = SDLK_F11; break;
+- case Qt::Key_F12: scancode = SDLK_F12; break;
++ case Qt::Key_F12:
++ if ( ODevice::inst ( )-> series ( ) == Model_iPAQ ) {
++ scancode = SDLK_RETURN; }
++ else {
++ scancode = SDLK_F12; }
++ break;
+ case Qt::Key_F13:
+- scancode = SDLK_F13;
+- mouse_button_mode=3;
++ if ( ODevice::inst ( )-> series ( ) == Model_iPAQ ) {
++ scancode = SDLK_ESCAPE; }
++ else {
++ scancode = SDLK_F13;
++ mouse_button_mode=3; }
+ break;
+ case Qt::Key_F14: scancode = SDLK_F14; break;
+ case Qt::Key_F15: scancode = SDLK_F15; break;
+@@ -573,6 +590,9 @@
+ scancode = SDLK_RETURN;
+ break;
+
++ // To use record button on ipaq
++ case Qt::Key_F24: scancode = SDLK_LSHIFT; break;
++
+ default:
+ scancode = SDLK_UNKNOWN;
+ break;
+Index: SDL-1.2.7/src/video/qtopia/SDL_sysvideo.cc
+===================================================================
+--- SDL-1.2.7.orig/src/video/qtopia/SDL_sysvideo.cc 2005-05-16 14:21:00.000000000 +0200
++++ SDL-1.2.7/src/video/qtopia/SDL_sysvideo.cc 2005-05-16 14:24:02.000000000 +0200
+@@ -45,6 +45,7 @@
+ #include <qapplication.h>
+ #include <qpe/qpeapplication.h>
+ #include <qpe/qcopenvelope_qws.h>
++#include <opie2/odevice.h>
+ #include <qgfx_qws.h>
+ #include <qwindowsystem_qws.h>
+ #include <qwidget.h>
+@@ -66,6 +67,8 @@
+ #include "SDL_syswm_c.h"
+ #include "SDL_lowvideo.h"
+
++using namespace Opie::Core;
++
+ //#define QTOPIA_DEBUG
+ #define QTOPIA_LOG
+ #define QT_HIDDEN_SIZE 32 /* starting hidden window size */
+@@ -106,6 +109,7 @@
+ MACHINE_SHARP_SLC760,
+ MACHINE_SHARP_SLC860,
+ MACHINE_SHARP_SL6000,
++ MACHINE_IPAQ,
+ MACHINE_MAX
+ } machine_t;
+
+@@ -119,6 +123,7 @@
+ { "Sharp", "SL-C760", 0 },
+ { "Sharp", "SL-C860", 0 },
+ { "Sharp", "SL-6000", 0 },
++ { "HP", "HP IPAQ", 0 },
+ };
+
+ /* Name of the environment variable used to invert the screen rotation or not:
+@@ -423,6 +428,13 @@
+ machine = MACHINE_SHARP_SLC760;
+ else if (strstr(buf, "SHARP Boxer") != NULL)
+ machine = MACHINE_SHARP_SLC860;
++ else if ( ODevice::inst ( )-> series ( ) == Model_iPAQ )
++ machine = MACHINE_IPAQ;
++ else
++ {
++ machine = MACHINE_SHARP_SL5000D;
++ LOG("Can't detect machine defaulting to SL5000D");
++ }
+ }
+ fclose(fp);
+ } else {
+@@ -679,6 +691,15 @@
+ if (machine == MACHINE_SHARP_SL5500)
+ qteRotation = 3;
+
++ // HP IPaq
++ if ( ODevice::inst( )-> series ( ) == Model_iPAQ ) {
++ qteRotation = 3;
++ }
++ if ( ODevice::inst ( )-> model ( ) == Model_iPAQ_H38xx ) {
++ qteRotation = 1;
++ }
++
++
+ // SL-B500 Íѥϥå¯(€È€ê€¢€š€º¡¢€Í)
+ if (machine == MACHINE_SHARP_SLB500)
+ qteRotation = 3;
diff --git a/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/kill-stdc++.patch b/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/kill-stdc++.patch
new file mode 100644
index 0000000000..9629583f9b
--- /dev/null
+++ b/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/kill-stdc++.patch
@@ -0,0 +1,408 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+Index: SDL-1.2.7/src/main/Makefile.am
+===================================================================
+--- SDL-1.2.7.orig/src/main/Makefile.am 2005-03-02 22:24:52.592201093 +0100
++++ SDL-1.2.7/src/main/Makefile.am 2005-03-02 22:24:56.658626603 +0100
+@@ -46,3 +46,9 @@
+ (cd $(distdir) && rm -f $(BUILT_SOURCES))
+ cp -rp $(ARCH_SUBDIRS) $(distdir)
+ (cd $(distdir) && rm -rf `find . -name CVS`)
++
++# overwrite USER variables
++CXXLD = $(CC)
++CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
++ $(AM_LDFLAGS) $(LDFLAGS) -lsupc++ -o $@
++
+Index: SDL-1.2.7/src/video/qtopia/Makefile.am
+===================================================================
+--- SDL-1.2.7.orig/src/video/qtopia/Makefile.am 2005-03-02 22:24:52.592201093 +0100
++++ SDL-1.2.7/src/video/qtopia/Makefile.am 2005-03-02 22:24:56.658626603 +0100
+@@ -17,3 +17,9 @@
+ SDL_sysevents.cc \
+ SDL_sysevents_c.h \
+ SDL_qmain.cc
++
++
++# overwrite USER variables
++CXXLD = $(CC)
++CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
++ $(AM_LDFLAGS) $(LDFLAGS) -lsupc++ -o $@
+Index: SDL-1.2.7/acinclude.m4
+===================================================================
+--- SDL-1.2.7.orig/acinclude.m4 2005-03-02 22:24:41.232805923 +0100
++++ SDL-1.2.7/acinclude.m4 2005-03-02 22:24:56.667625332 +0100
+@@ -1305,11 +1305,11 @@
+ case $host_os in
+ aix3*)
+ version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
++ library_names_spec='${libname}${release}${shrext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+- soname_spec='${libname}${release}${shared_ext}$major'
++ soname_spec='${libname}${release}${shrext}$major'
+ ;;
+
+ aix4* | aix5*)
+@@ -1319,7 +1319,7 @@
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
++ library_names_spec='${libname}${release}${shrext}$major ${libname}${release}${shrext}$versuffix $libname${shrext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+@@ -1345,12 +1345,12 @@
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ soname_spec='${libname}${release}${shrext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+@@ -1363,7 +1363,7 @@
+ ;;
+
+ beos*)
+- library_names_spec='${libname}${shared_ext}'
++ library_names_spec='${libname}${shrext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+@@ -1371,8 +1371,8 @@
+ bsdi4*)
+ version_type=linux
+ need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+@@ -1405,14 +1405,14 @@
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+- #soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+- soname_spec='`echo ${libname} | sed -e 's/^lib//'`${shared_ext}'
++ #soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shrext}'
++ soname_spec='`echo ${libname} | sed -e 's/^lib//'`${shrext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+- #soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+- soname_spec='`echo ${libname} | sed -e 's/^lib//'`${shared_ext}'
++ #soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shrext}'
++ soname_spec='`echo ${libname} | sed -e 's/^lib//'`${shrext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then
+ # It is most probably a Windows format PATH printed by
+@@ -1428,13 +1428,13 @@
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shrext}'
+ ;;
+ esac
+ ;;
+
+ *)
+- library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shrext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+@@ -1450,8 +1450,8 @@
+ # FIXME: Relying on posixy $() will cause problems for
+ # cross-compilation, but unfortunately the echo tests do not
+ # yet detect zsh echo's removal of \ escapes.
+- library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+- soname_spec='${libname}${release}${major}$shared_ext'
++ library_names_spec='${libname}${release}${versuffix}$shrext ${libname}${release}${major}$shrext ${libname}$shrext'
++ soname_spec='${libname}${release}${major}$shrext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext='$(test .$module = .yes && echo .so || echo .dylib)'
+@@ -1466,8 +1466,8 @@
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname$shrext'
++ soname_spec='${libname}${release}${shrext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+@@ -1480,12 +1480,12 @@
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext} $libname${shrext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
++ library_names_spec='${libname}${release}${shrext}$versuffix $libname${shrext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+@@ -1509,8 +1509,8 @@
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}${major} ${libname}${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+@@ -1528,8 +1528,8 @@
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+@@ -1543,8 +1543,8 @@
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+@@ -1553,8 +1553,8 @@
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+@@ -1573,8 +1573,8 @@
+ esac
+ need_lib_prefix=no
+ need_version=no
+- soname_spec='${libname}${release}${shared_ext}$major'
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
++ soname_spec='${libname}${release}${shrext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major ${libname}${release}${shrext} $libname${shrext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+@@ -1608,8 +1608,8 @@
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+@@ -1632,12 +1632,12 @@
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${shrext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major ${libname}${release}${shrext} ${libname}${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+@@ -1647,7 +1647,7 @@
+
+ newsos6)
+ version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+@@ -1656,8 +1656,8 @@
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+@@ -1666,7 +1666,7 @@
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${shrext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+@@ -1687,7 +1687,7 @@
+ libname_spec='$name'
+ shrext=".dll"
+ need_lib_prefix=no
+- library_names_spec='$libname${shared_ext} $libname.a'
++ library_names_spec='$libname${shrext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+@@ -1696,8 +1696,8 @@
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+- soname_spec='${libname}${release}${shared_ext}$major'
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shrext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+@@ -1705,8 +1705,8 @@
+
+ sco3.2v5*)
+ version_type=osf
+- soname_spec='${libname}${release}${shared_ext}$major'
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shrext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+@@ -1714,8 +1714,8 @@
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+@@ -1725,7 +1725,7 @@
+
+ sunos4*)
+ version_type=sunos
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${shrext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+@@ -1737,8 +1737,8 @@
+
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+@@ -1762,16 +1762,16 @@
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+- soname_spec='$libname${shared_ext}.$major'
++ library_names_spec='$libname${shrext}.$versuffix $libname${shrext}.$major $libname${shrext}'
++ soname_spec='$libname${shrext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+ uts4*)
+ version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+@@ -3278,8 +3278,8 @@
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+- _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shrext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shrext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+@@ -3288,7 +3288,7 @@
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+- output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
++ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shrext 2>&1 | grep "ld"`; rm -f libconftest$shrext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+@@ -3367,7 +3367,7 @@
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+- _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shrext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+@@ -3427,7 +3427,7 @@
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+- _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shrext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+@@ -4376,7 +4376,7 @@
+ # Whether we need a single -rpath flag with a separated argument.
+ hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1)
+
+-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
++# Set to yes if using DIR/libNAME${shrext} during linking hardcodes DIR into the
+ # resulting binary.
+ hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1)
+
diff --git a/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/mouse.patch b/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/mouse.patch
new file mode 100644
index 0000000000..99320fad0d
--- /dev/null
+++ b/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/mouse.patch
@@ -0,0 +1,47 @@
+--- ./src/video/qtopia/SDL_QWin.cc.old 2004-05-16 20:28:36.000000000 +0930
++++ ./src/video/qtopia/SDL_QWin.cc 2004-05-16 20:31:39.000000000 +0930
+@@ -169,7 +169,12 @@
+ Qt::ButtonState button = e->button();
+ int sdlstate = 0;
+ if( (button & Qt::LeftButton)) {
+- sdlstate |= SDL_BUTTON_LMASK;
++ if (mouse_button_mode == 3)
++ sdlstate |= SDL_BUTTON_RMASK;
++ else if (mouse_button_mode == 2)
++ sdlstate |= SDL_BUTTON_MMASK;
++ else
++ sdlstate |= SDL_BUTTON_LMASK;
+ }
+ if( (button & Qt::RightButton)) {
+ sdlstate |= SDL_BUTTON_RMASK;
+@@ -539,20 +544,20 @@
+ case Qt::Key_F6: scancode = SDLK_F6; break;
+ case Qt::Key_F7: scancode = SDLK_F7; break;
+ case Qt::Key_F8: scancode = SDLK_F8; break;
+- case Qt::Key_F9: scancode = SDLK_F9; break;
+- case Qt::Key_F10:
+- scancode = SDLK_F10;
++ case Qt::Key_F9:
++ scancode = SDLK_F9;
+ mouse_button_mode=1;
+ break;
+- case Qt::Key_F11:
+- scancode = SDLK_F11;
+- mouse_button_mode=3;
+- break;
+- case Qt::Key_F12:
+- scancode = SDLK_F12;
++ case Qt::Key_F10:
++ scancode = SDLK_F10;
+ mouse_button_mode=2;
+ break;
+- case Qt::Key_F13: scancode = SDLK_F13; break;
++ case Qt::Key_F11: scancode = SDLK_F11; break;
++ case Qt::Key_F12: scancode = SDLK_F12; break;
++ case Qt::Key_F13:
++ scancode = SDLK_F13;
++ mouse_button_mode=3;
++ break;
+ case Qt::Key_F14: scancode = SDLK_F14; break;
+ case Qt::Key_F15: scancode = SDLK_F15; break;
+ case Qt::Key_Super_L: scancode = SDLK_LSUPER; break;
diff --git a/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/pygame.patch b/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/pygame.patch
new file mode 100644
index 0000000000..4b39267a8a
--- /dev/null
+++ b/recipes/obsolete/libsdl/libsdl-qpe-1.2.7/pygame.patch
@@ -0,0 +1,196 @@
+Index: SDL-1.2.7/src/main/qtopia/SDL_qtopia_main.cc
+===================================================================
+--- SDL-1.2.7.orig/src/main/qtopia/SDL_qtopia_main.cc 2003-12-14 07:25:53.000000000 +0100
++++ /dev/null 1970-01-01 00:00:00.000000000 +0000
+@@ -1,47 +0,0 @@
+-
+-/* Include the SDL main definition header */
+-#include "SDL_main.h"
+-#include <stdlib.h>
+-#include <unistd.h>
+-#ifdef main
+-#undef main
+-#endif
+-#ifdef QWS
+-#include <qpe/qpeapplication.h>
+-#include <qapplication.h>
+-#include <qpe/qpeapplication.h>
+-#include <stdlib.h>
+-
+-// Workaround for OPIE to remove taskbar icon. Also fixes
+-// some issues in Qtopia where there are left-over qcop files in /tmp/.
+-// I'm guessing this will also clean up the taskbar in the Sharp version
+-// of Qtopia.
+-static inline void cleanupQCop() {
+- QString appname(qApp->argv()[0]);
+- int slash = appname.findRev("/");
+- if(slash != -1) { appname = appname.mid(slash+1); }
+- QString cmd = QPEApplication::qpeDir() + "bin/qcop QPE/System 'closing(QString)' '"+appname+"'";
+- system(cmd.latin1());
+- cmd = "/tmp/qcop-msg-"+appname;
+- unlink(cmd.latin1());
+-}
+-
+-static QPEApplication *app;
+-#endif
+-
+-extern int SDL_main(int argc, char *argv[]);
+-
+-int main(int argc, char *argv[])
+-{
+-#ifdef QWS
+- // This initializes the Qtopia application. It needs to be done here
+- // because it parses command line options.
+- app = new QPEApplication(argc, argv);
+- QWidget dummy;
+- app->showMainWidget(&dummy);
+- atexit(cleanupQCop);
+-#endif
+- // Exit here because if return is used, the application
+- // doesn't seem to quit correctly.
+- exit(SDL_main(argc, argv));
+-}
+Index: SDL-1.2.7/src/video/qtopia/SDL_qmain.cc
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ SDL-1.2.7/src/video/qtopia/SDL_qmain.cc 2005-09-24 19:55:14.000000000 +0200
+@@ -0,0 +1,99 @@
++/* Include the SDL main definition header */
++#include "SDL_main.h"
++#include <stdlib.h>
++
++#include <sys/types.h>
++#include <fcntl.h>
++#include <unistd.h>
++
++
++#ifdef QWS
++#include <qpe/qpeapplication.h>
++#include <stdlib.h>
++#include <string.h>
++
++
++
++static QWidget *dummyW = 0;
++static QPEApplication *theApp = 0;
++static char **cmdline= 0;
++static int size = 0;
++
++static void parse_cmd_line() {
++ /*
++ * find the number
++ */
++ char buf[1024];
++ int available = 0;
++ char *string_start = 0;
++ int fd = ::open( "/proc/self/cmdline", O_RDONLY );
++ if ( fd < 0 ) {
++ qWarning( "Error getting the cmdline, can't be" );
++ goto error_out;
++ }
++
++ available = ::read( fd, &buf, sizeof(buf) );
++ if ( available <= 0 )
++ goto error_out;
++
++ /*
++ * find out the number of arguments
++ */
++ size = 0;
++ for (int i = 0; i < available; ++i )
++ if ( buf[i] == '\0' )
++ ++size;
++
++ /* now create a the cmdline */
++ cmdline = new char*[size+1];
++ cmdline[size] = '\0'; // parnoid...
++
++ string_start = &buf[0];
++ for ( int i = 0; i < size; ++i ) {
++ /*
++ * find the end of the string
++ */
++ size_t sz = ::strlen(string_start);
++ cmdline[i] = new char[sz+1];
++ memcpy( cmdline[i], string_start, sz+1 );
++ string_start += (sz+1); // +1 for '\0' +1 to set it beyond
++ }
++
++ ::close(fd);
++
++ return;
++
++/* error code */
++error_out:
++ cmdline = new char*[2];
++ cmdline[0] = "unknown_app";
++ cmdline[1] = '\0';
++ size = 1;
++}
++
++static void free_cmd_line() {
++ /*
++ * free each string and then free the array
++ */
++ for ( int i = 0; i < size; ++i )
++ delete [] cmdline[i];
++
++ delete [] cmdline;
++}
++
++static void __attribute__((constructor)) initialize_qpe_app() {
++ parse_cmd_line();
++
++ theApp = new QPEApplication( size, cmdline );
++ dummyW = new QWidget;
++ theApp->showMainWidget(dummyW);
++}
++
++static void __attribute__((destructor)) deinitialize_qpe_app() {
++ free_cmd_line();
++ delete dummyW;
++ delete theApp;
++}
++
++
++#endif
+Index: SDL-1.2.7/src/main/Makefile.am
+===================================================================
+--- SDL-1.2.7.orig/src/main/Makefile.am 2004-02-18 18:22:01.000000000 +0100
++++ SDL-1.2.7/src/main/Makefile.am 2005-09-24 19:56:40.000000000 +0200
+@@ -21,11 +21,7 @@
+ if TARGET_MACOSX
+ MAINLIB_ARCH_SRCS = macosx/SDLMain.m macosx/SDLMain.h
+ else
+-if TARGET_QTOPIA
+-MAINLIB_ARCH_SRCS = qtopia/SDL_qtopia_main.cc
+-else
+ MAINLIB_ARCH_SRCS = dummy/SDL_dummy_main.c
+-endif # !TARGET_QTOPIA
+ endif # !TARGET_MACOSX
+ endif # !TARGET_WIN32
+ libSDLmain_a_SOURCES = $(MAINLIB_ARCH_SRCS)
+Index: SDL-1.2.7/src/video/qtopia/Makefile.am
+===================================================================
+--- SDL-1.2.7.orig/src/video/qtopia/Makefile.am 2002-05-28 21:24:11.000000000 +0200
++++ SDL-1.2.7/src/video/qtopia/Makefile.am 2005-09-24 19:56:40.000000000 +0200
+@@ -15,4 +15,5 @@
+ SDL_syswm.cc \
+ SDL_syswm_c.h \
+ SDL_sysevents.cc \
+- SDL_sysevents_c.h
++ SDL_sysevents_c.h \
++ SDL_qmain.cc
+Index: SDL-1.2.7/configure.in
+===================================================================
+--- SDL-1.2.7.orig/configure.in 2004-02-22 22:31:47.000000000 +0100
++++ SDL-1.2.7/configure.in 2005-09-24 19:58:30.000000000 +0200
+@@ -1806,7 +1806,7 @@
+ # Set up files for the main() stub
+ if test "x$video_qtopia" = "xyes"; then
+ SDL_CFLAGS="$SDL_CFLAGS -Dmain=SDL_main"
+- SDL_LIBS="-lSDLmain $SDL_LIBS"
++
+ fi
+ # Set up files for the audio library
+ # We use the OSS and ALSA API's, not the Sun audio API
diff --git a/recipes/obsolete/libsdl/libsdl-qpe_1.2.7.bb b/recipes/obsolete/libsdl/libsdl-qpe_1.2.7.bb
new file mode 100644
index 0000000000..60c2a9d385
--- /dev/null
+++ b/recipes/obsolete/libsdl/libsdl-qpe_1.2.7.bb
@@ -0,0 +1,57 @@
+DESCRIPTION = "Simple DirectMedia Layer - QtE-based Palmtop Environments Edition"
+SECTION = "opie/libs"
+PRIORITY = "optional"
+DEPENDS = "virtual/libqpe1 libopie2"
+PROVIDES = "virtual/libsdl"
+LICENSE = "LGPL"
+
+# NOTE: make sure to keep PR in sync with libsdl-x11
+PR = "r9"
+
+SRC_URI = "http://www.libsdl.org/release/SDL-${PV}.tar.gz \
+ file://agawa-piro-mickey.patch;patch=1 \
+ file://pygame.patch;patch=1 \
+ file://gcc34.patch;patch=1 \
+ file://mouse.patch;patch=1 \
+ file://kill-stdc++.patch;patch=1 \
+ file://ipaq.patch;patch=1 \
+ file://SDL-Akita.patch;patch=1 \
+ file://fixlibs.patch;patch=1"
+S = "${WORKDIR}/SDL-${PV}"
+
+inherit autotools binconfig
+
+EXTRA_OECONF = "--disable-static --disable-debug --enable-cdrom --enable-threads --enable-timers --enable-endian \
+ --enable-file --enable-oss --disable-alsa --disable-esd --disable-arts \
+ --disable-diskaudio --disable-nas --disable-esd-shared --disable-esdtest \
+ --disable-mintaudio --disable-nasm --disable-video-x11 --disable-video-dga \
+ --disable-video-fbcon --disable-video-directfb --disable-video-ps2gs \
+ --disable-video-xbios --disable-video-gem --disable-video-dummy \
+ --disable-video-opengl --enable-input-events --enable-pthreads \
+ --disable-video-picogui --enable-video-qtopia --enable-dlopen"
+
+FILES_${PN} = "${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${bindir}/*config"
+
+do_compile_prepend() {
+ if [ "${PALMTOP_USE_MULTITHREADED_QT}" == "yes" ]
+ then
+ sed -i s,-lqte,-lqte-mt, src/Makefile
+ fi
+}
+
+do_stage() {
+ oe_libinstall -so -C src libSDL ${STAGING_LIBDIR}
+ rm ${STAGING_LIBDIR}/libSDL.la
+ ln -sf libSDL.so ${STAGING_LIBDIR}/libSDL-1.2.so
+ install -m 0655 src/main/libSDLmain.a src/main/.libs/
+ oe_libinstall -a -C src/main libSDLmain ${STAGING_LIBDIR}
+
+ install -d ${STAGING_INCDIR}/SDL
+ for f in include/*.h
+ do
+ install -m 0644 $f ${STAGING_INCDIR}/SDL/
+ done
+
+ install -m 0644 *.m4 ${STAGING_DATADIR}/aclocal/
+}
diff --git a/recipes/obsolete/maemo/osso-gnome-vfs2/gconftool-lossage.patch b/recipes/obsolete/maemo/osso-gnome-vfs2/gconftool-lossage.patch
new file mode 100644
index 0000000000..3dbc130ddc
--- /dev/null
+++ b/recipes/obsolete/maemo/osso-gnome-vfs2/gconftool-lossage.patch
@@ -0,0 +1,11 @@
+--- gnome-vfs-2.6.0/configure.in~ 2004-03-22 12:36:23.000000000 +0000
++++ gnome-vfs-2.6.0/configure.in 2004-06-07 16:04:34.000000000 +0100
+@@ -154,7 +154,7 @@
+ AC_PATH_PROG(GCONFTOOL, gconftool-2, no)
+
+ if test x"$GCONFTOOL" = xno; then
+- AC_MSG_ERROR([gconftool-2 executable not found in your path - should be installed with GConf])
++ AC_MSG_WARN([gconftool-2 executable not found in your path - should be installed with GConf])
+ fi
+
+ AM_GCONF_SOURCE_2
diff --git a/recipes/obsolete/maemo/osso-gnome-vfs2_2.8.4.4-1.bb b/recipes/obsolete/maemo/osso-gnome-vfs2_2.8.4.4-1.bb
new file mode 100644
index 0000000000..e0f258decd
--- /dev/null
+++ b/recipes/obsolete/maemo/osso-gnome-vfs2_2.8.4.4-1.bb
@@ -0,0 +1,92 @@
+DESCRIPTION = "The Gnome Virtual File System - OSSO Version"
+LICENSE = "GPL"
+SECTION = "x11/gnome"
+PR = "r4"
+PROVIDES = "virtual/gnome-vfs"
+RPROVIDES = "gnome-vfs"
+
+inherit gnome pkgconfig
+
+DEPENDS = "libxml2 gconf-osso dbus-0.23.1-osso5 bzip2 gnome-mime-data zlib samba osso-gwconnect"
+RRECOMMENDS = "gnome-vfs-plugin-file shared-mime-info"
+
+SRC_URI = "http://repository.maemo.org/pool/maemo/ossw/source/o/${PN}/${PN}_${PV}.tar.gz \
+ file://gconftool-lossage.patch;patch=1;pnum=1"
+
+EXTRA_OECONF = "--with-ipc=dbus --enable-ext-dbus-daemon --disable-orbit"
+
+S = "${WORKDIR}/${PN}-2.8.4.4"
+
+FILES_${PN} += " ${libdir}/vfs"
+FILES_${PN}-dev += " ${libdir}/gnome-vfs-2.0/modules/*.a ${libdir}/gnome-vfs-2.0/modules/*.la ${libdir}/gnome-vfs-2.0/include"
+FILES_${PN}-doc += " ${datadir}/gtk-doc"
+
+GNOME_VFS_HEADERS = " \
+gnome-vfs-utils.h \
+gnome-vfs-application-registry.h \
+gnome-vfs-async-ops.h \
+gnome-vfs-ops.h \
+gnome-vfs-uri.h \
+gnome-vfs-standard-callbacks.h \
+gnome-vfs-module-callback.h \
+gnome-vfs-context.h \
+gnome-vfs-file-info.h \
+gnome-vfs-directory.h \
+gnome-vfs-mime-monitor.h \
+gnome-vfs-mime-handlers.h \
+gnome-vfs-result.h \
+gnome-vfs-job-limit.h \
+gnome-vfs-file-size.h \
+gnome-vfs-mime-utils.h \
+gnome-vfs-find-directory.h \
+gnome-vfs-init.h \
+gnome-vfs-handle.h \
+gnome-vfs.h \
+gnome-vfs-cancellation.h \
+gnome-vfs-xfer.h \
+gnome-vfs-monitor.h \
+gnome-vfs-types.h \
+gnome-vfs-volume-monitor.h \
+gnome-vfs-drive.h \
+gnome-vfs-volume.h \
+gnome-vfs-enum-types.h \
+gnome-vfs-address.h \
+gnome-vfs-dns-sd.h \
+gnome-vfs-mime-info-cache.h \
+gnome-vfs-resolve.h"
+
+GNOME_VFS_MODULE_HEADERS = " \
+gnome-vfs-mime-info.h \
+gnome-vfs-transform.h \
+gnome-vfs-ssl.h \
+gnome-vfs-inet-connection.h \
+gnome-vfs-socket.h \
+gnome-vfs-parse-ls.h \
+gnome-vfs-method.h \
+gnome-vfs-cancellable-ops.h \
+gnome-vfs-module.h \
+gnome-vfs-module-shared.h \
+gnome-vfs-module-callback-module-api.h \
+gnome-vfs-mime.h \
+gnome-vfs-socket-buffer.h"
+
+do_stage() {
+ oe_libinstall -so -C libgnomevfs libgnomevfs-2 ${STAGING_LIBDIR}
+ install -d ${STAGING_INCDIR}/gnome-vfs-2.0/libgnomevfs
+ for i in ${GNOME_VFS_HEADERS}; do install -m 0644 libgnomevfs/$i ${STAGING_INCDIR}/gnome-vfs-2.0/libgnomevfs/; done
+ install -d ${STAGING_INCDIR}/gnome-vfs-module-2.0/libgnomevfs
+ for i in ${GNOME_VFS_MODULE_HEADERS}; do install -m 0644 libgnomevfs/$i ${STAGING_INCDIR}/gnome-vfs-module-2.0/libgnomevfs/; done
+}
+
+do_install() {
+ oe_runmake ORBIT_IDL="${ORBIT_IDL_SRC}" DESTDIR="${D}" install
+}
+
+PACKAGES_DYNAMIC = "gnome-vfs-plugin-*"
+
+python populate_packages_prepend () {
+ print bb.data.getVar('FILES_gnome-vfs', d, 1)
+
+ plugindir = bb.data.expand('${libdir}/gnome-vfs-2.0/modules/', d)
+ do_split_packages(d, plugindir, '^lib(.*)\.so$', 'gnome-vfs-plugin-%s', 'GNOME VFS plugin for %s')
+}
diff --git a/recipes/obsolete/olsr/files/0.4.9-httpinfo-makefile.diff b/recipes/obsolete/olsr/files/0.4.9-httpinfo-makefile.diff
new file mode 100644
index 0000000000..d4058f5b30
--- /dev/null
+++ b/recipes/obsolete/olsr/files/0.4.9-httpinfo-makefile.diff
@@ -0,0 +1,296 @@
+--- olsrd-0.4.9/lib/httpinfo/Makefile.orig 2005-03-31 19:11:52.000000000 +0200
++++ olsrd-0.4.9/lib/httpinfo/Makefile 2005-04-25 13:42:11.000000000 +0200
+@@ -1,103 +1,223 @@
+-#######################################
+-# HTTPINFO PLUGIN BY ANDREAS TØNNESEN #
+-#######################################
++# The olsr.org Optimized Link-State Routing daemon(olsrd)
++# Copyright (c) 2004, Andreas Tønnesen(andreto@olsr.org)
++# All rights reserved.
++#
++# Redistribution and use in source and binary forms, with or without
++# modification, are permitted provided that the following conditions
++# are met:
++#
++# * Redistributions of source code must retain the above copyright
++# notice, this list of conditions and the following disclaimer.
++# * Redistributions in binary form must reproduce the above copyright
++# notice, this list of conditions and the following disclaimer in
++# the documentation and/or other materials provided with the
++# distribution.
++# * Neither the name of olsr.org, olsrd nor the names of its
++# contributors may be used to endorse or promote products derived
++# from this software without specific prior written permission.
++#
++# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
++# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
++# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
++# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
++# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
++# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
++# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
++# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
++# POSSIBILITY OF SUCH DAMAGE.
++#
++# Visit http://www.olsr.org for more information.
++#
++# If you find this software useful feel free to make a donation
++# to the project. For more information see the website or contact
++# the copyright holders.
++#
++# $Id: Makefile,v 1.20 2005/04/25 11:36:23 br1 Exp $
+
++PLUGIN_NAME = olsrd_httpinfo
++PLUGIN_VER = 0.1
+
+ CC ?= gcc
+ STRIP ?= strip
+-LIBDIR ?= $(INSTALL_PREFIX)/usr/lib
+-PLUGINFLAGS = -fPIC -DOLSR_PLUGIN -I../../src
++
++# default CFLAGS and LDFLAGS, used if not externally set
++
++# used for compilation: yes
++# used for dependency file generation: no
++
++CFLAGS_SET = -g -O2 -Wall -Wmissing-prototypes -Wstrict-prototypes
++LDFLAGS_SET = -g
++
++# always appended to default or externally set CFLAGS and LDFLAGS
++
++# used for compilation: yes
++# used for dependency file generation: yes
++
++CFLAGS_ADD = -DOLSR_PLUGIN -I../../src
++LDFLAGS_ADD = -Wall -shared -Wl,--version-script=version-script.txt
++
++# same as CFLAGS_ADD, but not used for dependency file generation
++
++# used for compilation: yes
++# used for dependency file generation: no
++
++CFLAGS_ADD2 = # nothing
++
++DEPFILE = .depend
++
++SRCS = $(wildcard src/*.c)
++OBJS = $(patsubst %.c,%.o,$(SRCS))
++HDRS = $(wildcard src/*.c)
++
++ifndef OS
++all: help
++install: help
++clean: help
++endif
+
+ ifeq ($(OS), linux)
+-NAME ?= olsrd_httpinfo.so.0.1
+-NAMEFLAGS ?= -Wl,-soname,$(NAME)
+-CFLAGS ?= -g -O2 -fPIC -DOLSR_PLUGIN -Dlinux -Wall -Wmissing-prototypes -Wstrict-prototypes
+-LDFLAGS ?= -g -fPIC -shared
++
++NAME ?= $(PLUGIN_NAME).so.$(PLUGIN_VER)
++
++CFLAGS_ADD += -Dlinux
++CFLAGS_ADD2 += -fPIC
++LDFLAGS_ADD += -fPIC -Wl,-soname,$(NAME)
++
++CFLAGS_SET += # nothing
++LDFLAGS_SET += # nothing
++
+ LIBS ?= -lc -lm
+-INSTALL_LIB = install -D -m 755 $(NAME) $(LIBDIR)/$(NAME);\
++
++LIBDIR ?= $(INSTALL_PREFIX)/usr/lib
++
++INSTALL_LIB = install -D -m 755 $(NAME) $(LIBDIR)/$(NAME); \
+ /sbin/ldconfig -n $(LIBDIR)
+-all: plugin
+-install: install_olsrd
+-else
+-ifeq ($(OS), win32)
+-NAME ?= olsrd_httpinfo.dll
+-NAMEFLAGS ?= -o $(NAME)
+-CFLAGS ?= -g -O2 -fPIC -DWIN32 -mno-cygwin -I../../src/win32 -Wall -Wmissing-prototypes -Wstrict-prototypes
+-LDFLAGS ?= -mno-cygwin -shared
+-LIBS ?= -lws2_32
+-COMPATOBJ = ../../src/win32/compat.o
+-INSTALL_LIB = cp $(NAME) ../..
+-all: plugin
+-install: install_olsrd
++
++EXTRA_OBJS = # nothing
++
++MAKEDEPEND = makedepend -f $(DEPFILE) $(CFLAGS_ADD) -Y $(INCLUDES) \
++ $(SRCS) >/dev/null 2>&1
++
++all: all2
++install: install2
++clean: clean2
++
+ else
+ ifeq ($(OS), fbsd)
+-NAME ?= olsrd_httpinfo.so.0.1
+-NAMEFLAGS ?= -Wl,-soname,$(NAME)
+-CFLAGS ?= -g -O2 -fPIC -Wall -Wmissing-prototypes -Wstrict-prototypes
+-LDFLAGS ?= -g -fPIC -shared
++
++NAME ?= $(PLUGIN_NAME).so.$(PLUGIN_VER)
++
++CFLAGS_ADD += # nothing
++CFLAGS_ADD2 += -fPIC
++LDFLAGS_ADD += -fPIC -Wl,-soname,$(NAME)
++
++CFLAGS_SET += # nothing
++LDFLAGS_SET += # nothing
++
+ LIBS ?= -lc -lm
+-INSTALL_LIB = install -m 755 $(NAME) $(LIBDIR)/$(NAME);\
++
++LIBDIR ?= $(INSTALL_PREFIX)/usr/lib
++
++INSTALL_LIB = install -m 755 $(NAME) $(LIBDIR)/$(NAME); \
+ /sbin/ldconfig
+-all: plugin
+-install: install_olsrd
++
++EXTRA_OBJS = # nothing
++
++MAKEDEPEND = makedepend -f $(DEPFILE) $(CFLAGS_ADD) $(INCLUDES) $(SRCS)
++
++all: all2
++install: install2
++clean: clean2
++
+ else
++ifeq ($(OS), win32)
++
++NAME ?= $(PLUGIN_NAME).dll
++
++CFLAGS_ADD += -mno-cygwin -I../../src/win32 -DWIN32
++CFLAGS_ADD2 += # nothing
++LDFLAGS_ADD += -mno-cygwin -Wl,-soname,$(NAME)
++
++CFLAGS_SET += # nothing
++LDFLAGS_SET += # nothing
++
++LIBS ?= -lws2_32
++
++INSTALL_LIB = cp $(NAME) ../..
++
++EXTRA_OBJS = ../../src/win32/compat.o
++
++MAKEDEPEND = makedepend -f $(DEPFILE) $(CFLAGS_ADD) $(INCLUDES) $(SRCS)
++
++all: all2
++install: install2
++clean: clean2
++
++else
++
+ all: help
+-install:help
++install: help
++clean: help
++
+ endif
+ endif
+ endif
+
++EXTRA_OBJS += ../../src/cfgparser/cfgfile_gen.o
++
+ ifneq ($(ADMIN_INTERFACE), )
+ @echo 'WARNING - BUILDING WITH ADMIN INTERFACE!'
+-CFLAGS += -DADMIN_INTERFACE
++CFLAGS_ADD += -DADMIN_INTERFACE
+ endif
+
+-CFLAGS += $(PLUGINFLAGS)
+-
+-#Sourcefiles
+-SRCS= src/olsrd_plugin.c src/olsrd_httpinfo.c src/admin_interface.c \
+- ../../src/cfgparser/cfgfile_gen.c
+-
+-#Objectfiles
+-OBJS= src/olsrd_plugin.o src/olsrd_httpinfo.o src/admin_interface.o \
+- ../../src/cfgparser/cfgfile_gen.o
++CFLAGS ?= $(CFLAGS_SET)
++LDFLAGS ?= $(LDFLAGS_SET)
+
+-#Headerfiles
+-HDRS= src/olsrd_plugin.h src/olsrd_httpinfo.h \
+- src/gfx.h src/html.h src/admin_interface.h src/admin_html.h
++CFLAGS += $(CFLAGS_ADD) $(CFLAGS_ADD2)
++LDFLAGS += $(LDFLAGS_ADD)
+
++all2: $(NAME)
+
+-plugin: $(OBJS)
+- $(CC) $(LDFLAGS) $(NAMEFLAGS) \
+- -Wl,--version-script=version-script.txt \
+- -o $(NAME) $(OBJS) $(COMPATOBJ) $(LIBS)
++$(NAME): $(OBJS) $(EXTRA_OBJS)
++ $(CC) $(LDFLAGS) -o $(NAME) $(OBJS) $(EXTRA_OBJS) $(LIBS)
+
+-
+-install_olsrd:
++install2: $(NAME)
+ $(STRIP) $(NAME)
+ $(INSTALL_LIB)
+
++clean2:
++ rm -f $(OBJS) $(NAME) $(DEPFILE)
++
++$(DEPFILE): $(SRCS) $(HDRS)
++ifdef MAKEDEPEND
++ echo "# Generated automatically. DO NOT EDIT." >$(DEPFILE)
++ $(MAKEDEPEND)
++endif
++
+ help:
+ @echo
+- @echo '***** olsr.org HTTP plugin Make ****'
+- @echo ' You must provide a valid target OS '
+- @echo ' by setting the OS variable! Valid '
+- @echo ' target OSes are: '
+- @echo ' --------------------------------- '
+- @echo ' linux - GNU/Linux '
+- @echo ' win32 - MS Windows '
+- @echo ' fbsd - FreeBSD '
+- @echo ' --------------------------------- '
+- @echo ' Example - build for windows: '
+- @echo ' make OS=win32 '
+- @echo '************************************'
++ @echo ' * * * * olsr.org Plugin Make * * * *'
++ @echo
++ @echo ' Plugin: $(PLUGIN_NAME), version $(PLUGIN_VER)'
++ @echo
++ @echo ' You must provide a valid target OS by setting the OS variable.'
++ @echo
++ @echo ' Valid settings are:'
++ @echo
++ @echo ' linux - GNU/Linux'
++ @echo ' win32 - Microsoft Windows'
++ @echo ' fbsd - FreeBSD'
++ @echo
++ @echo ' Example - Build on Windows:'
++ @echo
++ @echo ' make OS=win32'
++ @echo
++ @echo ' Example - Build and install on Linux:'
++ @echo
++ @echo ' make OS=linux install '
+ @echo
+
+-clean:
+- rm -f $(OBJS) $(NAME)
+-
+-src/olsrd_plugin.o: $(HDRS)
+-
+-src/olsrd_httpinfo.o: $(HDRS)
+-
+-src/admin_interface.o: $(HDRS)
++sinclude $(DEPFILE)
diff --git a/recipes/obsolete/olsr/files/lib.diff b/recipes/obsolete/olsr/files/lib.diff
new file mode 100644
index 0000000000..f3935cc53d
--- /dev/null
+++ b/recipes/obsolete/olsr/files/lib.diff
@@ -0,0 +1,23 @@
+diff -Nurb olsrd-0.4.7/Makefile olsrd-0.4.7.ver/Makefile
+--- olsrd-0.4.7/Makefile 2004-09-07 18:10:24.000000000 +0200
++++ olsrd-0.4.7.ver/Makefile 2004-11-05 13:12:34.253350872 +0100
+@@ -57,7 +57,7 @@
+
+ libs:
+ for i in lib/*; do \
+- $(MAKE) -C $$i; \
++ $(MAKE) LDFLAGS+=-Wl,--version-script=../../version.txt -C $$i; \
+ done;
+
+ clean_libs:
+diff -Nurb olsrd-0.4.7/version.txt olsrd-0.4.7.ver/version.txt
+--- olsrd-0.4.7/version.txt 1970-01-01 01:00:00.000000000 +0100
++++ olsrd-0.4.7.ver/version.txt 2004-11-05 13:10:24.731041256 +0100
+@@ -0,0 +1,7 @@
++VERS_1.0 {
++ global:
++ plugin_interface_version;
++ plugin_io;
++ register_olsr_data;
++ local: *;
++};
diff --git a/recipes/obsolete/olsr/olsr_0.3-1.bb b/recipes/obsolete/olsr/olsr_0.3-1.bb
new file mode 100644
index 0000000000..276e7b489d
--- /dev/null
+++ b/recipes/obsolete/olsr/olsr_0.3-1.bb
@@ -0,0 +1,8 @@
+LICENSE = "GPL"
+SECTION = "console/network"
+DESCRIPTION = "OLSR - routing protocol for wireless network"
+PRIORITY = "optional"
+
+SRC_URI = "ftp://ftp.tcweb.org/pub/tom/olsr-${PV}.tar.gz"
+
+inherit autotools
diff --git a/recipes/obsolete/olsr/olsrd_0.4.10.bb b/recipes/obsolete/olsr/olsrd_0.4.10.bb
new file mode 100644
index 0000000000..9722ca7d8d
--- /dev/null
+++ b/recipes/obsolete/olsr/olsrd_0.4.10.bb
@@ -0,0 +1,2 @@
+require olsrd.inc
+PR = "r1"
diff --git a/recipes/obsolete/olsr/olsrd_0.4.8.bb b/recipes/obsolete/olsr/olsrd_0.4.8.bb
new file mode 100644
index 0000000000..c2b9c825b6
--- /dev/null
+++ b/recipes/obsolete/olsr/olsrd_0.4.8.bb
@@ -0,0 +1,36 @@
+DESCRIPTION = "OLSR mesh routing daemon"
+HOMEPAGE = "http://www.olsr.org"
+DESCRIPTION_olsrd-libs = "OLSR mesh routing daemon - optional libraries"
+SECTION = "console/network"
+PRIORITY = "optional"
+LICENSE = "BSD"
+
+MAJ_VER = "${@bb.data.getVar('PV',d,1).split('.')[0]}.${@bb.data.getVar('PV',d,1).split('.')[1]}"
+SRC_URI="http://www.olsr.org/releases/${MAJ_VER}/olsrd-${PV}.tar.bz2 \
+ file://init \
+ file://olsrd.conf"
+
+PACKAGES =+ "olsrd-libs"
+FILES_olsrd-libs = "${libdir}"
+
+S = "${WORKDIR}/olsrd-${PV}"
+
+inherit update-rc.d
+
+INITSCRIPT_NAME = "olsrd"
+INITSCRIPT_PARAMS = "defaults"
+
+do_compile() {
+ touch .depend
+ touch src/cfgparser/.depend
+ oe_runmake OS=linux all libs
+}
+
+do_install () {
+ oe_runmake INSTALL_PREFIX=${D} install install_libs
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/olsrd
+ install -m 644 ${WORKDIR}/olsrd.conf ${D}${sysconfdir}
+}
+
+CONFFILES_${PN} = "${sysconfdir}/olsrd.conf"
diff --git a/recipes/obsolete/olsr/olsrd_0.4.9.bb b/recipes/obsolete/olsr/olsrd_0.4.9.bb
new file mode 100644
index 0000000000..1f186f4bbb
--- /dev/null
+++ b/recipes/obsolete/olsr/olsrd_0.4.9.bb
@@ -0,0 +1,11 @@
+require olsrd.inc
+PR = "r2"
+
+SRC_URI += "file://0.4.9-httpinfo-makefile.diff;patch=1"
+
+do_compile() {
+ oe_runmake OS=linux clean
+ touch .depend
+ touch src/cfgparser/.depend
+ oe_runmake OS=linux all libs
+}
diff --git a/recipes/obsolete/olsr/olsrd_cvs.bb b/recipes/obsolete/olsr/olsrd_cvs.bb
new file mode 100644
index 0000000000..a6d2ff7657
--- /dev/null
+++ b/recipes/obsolete/olsr/olsrd_cvs.bb
@@ -0,0 +1,39 @@
+DESCRIPTION = "OLSR mesh routing daemon"
+HOMEPAGE = "http://www.olsr.org"
+DESCRIPTION_olsrd-libs = "OLSR mesh routing daemon - optional libraries"
+SECTION = "console/network"
+PRIORITY = "optional"
+LICENSE = "BSD"
+SRCDATE = "20051020"
+PV = "0.4.9+cvs${SRCDATE}"
+
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI="cvs://anonymous@olsrd.cvs.sourceforge.net/cvsroot/olsrd;module=olsrd-current \
+ file://init \
+ file://olsrd.conf"
+
+PACKAGES =+ "olsrd-libs"
+FILES_olsrd-libs = "${libdir}"
+
+S = "${WORKDIR}/olsrd-current"
+
+inherit update-rc.d
+
+INITSCRIPT_NAME = "olsrd"
+INITSCRIPT_PARAMS = "defaults"
+
+do_compile() {
+ touch .depend
+ touch src/cfgparser/.depend
+ oe_runmake OS=linux clean all libs
+}
+
+do_install () {
+ oe_runmake OS=linux INSTALL_PREFIX=${D} install install_libs
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/olsrd
+ install -m 644 ${WORKDIR}/olsrd.conf ${D}${sysconfdir}
+}
+
+CONFFILES_${PN} = "${sysconfdir}/olsrd.conf"
diff --git a/recipes/obsolete/quilt/quilt-0.39/non-gnu.patch b/recipes/obsolete/quilt/quilt-0.39/non-gnu.patch
new file mode 100644
index 0000000000..8b07bc2923
--- /dev/null
+++ b/recipes/obsolete/quilt/quilt-0.39/non-gnu.patch
@@ -0,0 +1,13 @@
+Index: quilt/Makefile.in
+===================================================================
+--- quilt.orig/Makefile.in
++++ quilt/Makefile.in
+@@ -216,7 +216,7 @@
+ -e 's:@LOCALEDIR''@:$(localedir):g' \
+ -e 's:@DOCSUBDIR''@:$(docdir)/$(PACKAGE)-$(VERSION):g' \
+ $< > $@
+- @chmod --reference=$< $@
++ @chmod `stat -f "%p" $<` $@
+
+ Makefile : Makefile.in
+ @echo "Please run ./configure by hand"
diff --git a/recipes/obsolete/quilt/quilt-0.39/nostrip.patch b/recipes/obsolete/quilt/quilt-0.39/nostrip.patch
new file mode 100644
index 0000000000..4dedad96d4
--- /dev/null
+++ b/recipes/obsolete/quilt/quilt-0.39/nostrip.patch
@@ -0,0 +1,16 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- quilt-0.32/Makefile.in~nostrip
++++ quilt-0.32/Makefile.in
+@@ -240,7 +240,7 @@
+ @INSTALL@ -m 644 scripts/patchfns $(BUILD_ROOT)$(SCRIPTS_DIR)
+
+ @INSTALL@ -d $(BUILD_ROOT)$(LIB_DIR)
+- @INSTALL@ -m 755 -s $(LIB:%=lib/%) $(BUILD_ROOT)$(LIB_DIR)/
++ @INSTALL@ -m 755 $(LIB:%=lib/%) $(BUILD_ROOT)$(LIB_DIR)/
+
+ @INSTALL@ -d $(BUILD_ROOT)$(docdir)/$(PACKAGE)-$(VERSION)/
+ @INSTALL@ -m 644 doc/README \
diff --git a/recipes/obsolete/quilt/quilt-native_0.39.bb b/recipes/obsolete/quilt/quilt-native_0.39.bb
new file mode 100644
index 0000000000..7caa9f620c
--- /dev/null
+++ b/recipes/obsolete/quilt/quilt-native_0.39.bb
@@ -0,0 +1,2 @@
+PV="0.39"
+require quilt-native.inc
diff --git a/recipes/obsolete/quilt/quilt_0.39.bb b/recipes/obsolete/quilt/quilt_0.39.bb
new file mode 100644
index 0000000000..5d8ae086c2
--- /dev/null
+++ b/recipes/obsolete/quilt/quilt_0.39.bb
@@ -0,0 +1,7 @@
+RDEPENDS_${PN} += "patch diffstat bzip2 util-linux"
+
+require quilt_${PV}.inc
+
+inherit autotools gettext
+
+require quilt-package.inc
diff --git a/recipes/obsolete/quilt/quilt_0.39.inc b/recipes/obsolete/quilt/quilt_0.39.inc
new file mode 100644
index 0000000000..4fbbb03316
--- /dev/null
+++ b/recipes/obsolete/quilt/quilt_0.39.inc
@@ -0,0 +1,5 @@
+require quilt.inc
+
+SRC_URI += "file://install.patch;patch=1 \
+ file://nostrip.patch;patch=1"
+
diff --git a/recipes/obsolete/tasks/task-bootstrap-unionroot.bb b/recipes/obsolete/tasks/task-bootstrap-unionroot.bb
new file mode 100644
index 0000000000..a4340eb4e8
--- /dev/null
+++ b/recipes/obsolete/tasks/task-bootstrap-unionroot.bb
@@ -0,0 +1,33 @@
+DESCRIPTION = "Core packages required for a basic installation with unionroot"
+PROVIDES = "task-bootstrap"
+RPROVIDES = "task-bootstrap"
+PR = "r2"
+DEFAULT_PREFERENCE = "-1"
+
+# The BOOTSTRAP_EXTRA_ variables are often manipulated by the
+# MACHINE .conf files, so adjust PACKAGE_ARCH accordingly.
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+ALLOW_EMPTY = "1"
+
+MODUTILS ?= "24 26"
+
+require task-bootstrap.inc
+
+HOTPLUG ?= "linux-hotplug"
+
+RDEPENDS = 'base-files base-passwd busybox \
+ initscripts \
+ netbase sysvinit sysvinit-pidof tinylogin \
+ modutils-initscripts \
+ ${HOTPLUG} \
+ ${BOOTSTRAP_EXTRA_RDEPENDS} \
+ ${@bootstrap_modutils_rdepends(d)} \
+ unionfs-modules \
+ unionfs-utils \
+ unionroot \
+ unionroot-utils'
+
+RRECOMMENDS = 'dropbear portmap \
+ ${BOOTSTRAP_EXTRA_RRECOMMENDS}'
+LICENSE = "MIT"
diff --git a/recipes/obsolete/tasks/task-bootstrap.bb b/recipes/obsolete/tasks/task-bootstrap.bb
new file mode 100644
index 0000000000..ebe78058b2
--- /dev/null
+++ b/recipes/obsolete/tasks/task-bootstrap.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "Core packages required for a basic installation"
+PR = "r25"
+
+# The BOOTSTRAP_EXTRA_ variables are often manipulated by the
+# MACHINE .conf files, so adjust PACKAGE_ARCH accordingly.
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+ALLOW_EMPTY = "1"
+
+MODUTILS ?= "24 26"
+
+require task-bootstrap.inc
+
+HOTPLUG ?= "linux-hotplug"
+
+RDEPENDS = 'base-files base-passwd busybox \
+ initscripts \
+ netbase sysvinit sysvinit-pidof tinylogin \
+ modutils-initscripts fuser setserial\
+ ${HOTPLUG} \
+ ${BOOTSTRAP_EXTRA_RDEPENDS} \
+ ${@bootstrap_modutils_rdepends(d)}'
+
+RRECOMMENDS = 'dropbear portmap \
+ ${BOOTSTRAP_EXTRA_RRECOMMENDS}'
+LICENSE = "MIT"
diff --git a/recipes/obsolete/tasks/task-bootstrap.inc b/recipes/obsolete/tasks/task-bootstrap.inc
new file mode 100644
index 0000000000..073da7055f
--- /dev/null
+++ b/recipes/obsolete/tasks/task-bootstrap.inc
@@ -0,0 +1,9 @@
+def bootstrap_modutils_rdepends(d):
+ import bb
+ m = bb.data.getVar('MODUTILS', d, 1)
+ r = []
+ if '24' in m:
+ r.append('modutils-depmod')
+ if '26' in m:
+ r.append('module-init-tools-depmod')
+ return ' '.join(r)
diff --git a/recipes/obsolete/wesnoth_svn.bb b/recipes/obsolete/wesnoth_svn.bb
new file mode 100644
index 0000000000..430abe7d0f
--- /dev/null
+++ b/recipes/obsolete/wesnoth_svn.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "fantasy turn-based strategy game"
+PV = "0.01+svnr${SRCREV}"
+PR = "r1"
+SECTION = "games"
+LICENSE = "GPL"
+DEPENDS += "libsdl-image libsdl-mixer libsdl-net"
+SRC_URI = "svn://svn.gna.org/svn/wesnoth;module=trunk;proto=http"
+
+EXTRA_OECONF += " --enable-tinygui --disable-python --enable-lite --enable-lowmem"
+
+S = "${WORKDIR}/trunk"
+
+inherit autotools
+
+addtask autogen after do_patch before do_configure
+
+do_autogen() {
+ cd ${WORKDIR}/trunk/ && ./autogen.sh --host=armv4t-angstrom-linux-gnueabi
+}