aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--emacs/21.4/01_all_xorg.patch12
-rw-r--r--emacs/21.4/02_all_amd64.patch238
-rw-r--r--emacs/21.4/03_all_hppa.patch98
-rw-r--r--emacs/21.4/04_all_sh.patch175
-rw-r--r--emacs/21.4/05_all_libungif-gif-gentoo.patch34
-rw-r--r--emacs/21.4/06_ppc64_ppc64.patch51
-rw-r--r--emacs/21.4/07_ppc64_fix-unexelf.patch67
-rw-r--r--emacs/21.4/08_all_autosave-tmp.patch12
-rw-r--r--emacs/21.4/09_all_blessmail-build.patch22
-rw-r--r--emacs/21.4/10_all_qa.patch92
-rw-r--r--emacs/21.4/11_all_Xaw3d-headers.patch72
-rw-r--r--emacs/21.4/12_all_freebsd-terminfo.patch16
-rw-r--r--emacs/21.4/13_all_oldxmenu-malloc.patch11
-rw-r--r--emacs/21.4/14_all_gif-image-size.patch34
-rw-r--r--emacs/21.4/15_all_format-int.patch11
15 files changed, 945 insertions, 0 deletions
diff --git a/emacs/21.4/01_all_xorg.patch b/emacs/21.4/01_all_xorg.patch
new file mode 100644
index 0000000..a97bb10
--- /dev/null
+++ b/emacs/21.4/01_all_xorg.patch
@@ -0,0 +1,12 @@
+diff -Naur emacs-21.3-old/src/xterm.h emacs-21.3/src/xterm.h
+--- emacs-21.3-old/src/xterm.h 2002-02-22 11:41:44.000000000 +0100
++++ emacs-21.3/src/xterm.h 2004-10-30 12:33:12.000000000 +0200
+@@ -21,8 +21,8 @@
+
+ #include <X11/Xlib.h>
+ #include <X11/cursorfont.h>
+-#include <X11/Xutil.h>
+ #include <X11/keysym.h>
++#include <X11/Xutil.h>
+ #include <X11/Xatom.h>
+ #include <X11/Xresource.h>
diff --git a/emacs/21.4/02_all_amd64.patch b/emacs/21.4/02_all_amd64.patch
new file mode 100644
index 0000000..9c5f5e2
--- /dev/null
+++ b/emacs/21.4/02_all_amd64.patch
@@ -0,0 +1,238 @@
+diff -Naur emacs-21.3-old/configure emacs-21.3/configure
+--- emacs-21.3-old/configure 2003-12-14 03:34:27.000000000 +0000
++++ emacs-21.3/configure 2003-12-14 03:35:13.000000000 +0000
+@@ -1632,6 +1632,11 @@
+ machine=ia64 opsys=gnu-linux
+ ;;
+
++ ## X86-64
++ x86_64*-*-linux* )
++ machine=x86_64 opsys=gnu-linux
++ ;;
++
+ ## Intel 386 machines where we don't care about the manufacturer
+ i[3456]86-*-* )
+ machine=intel386
+diff -Naur emacs-21.3-old/configure.in emacs-21.3/configure.in
+--- emacs-21.3-old/configure.in 2003-12-14 03:34:27.000000000 +0000
++++ emacs-21.3/configure.in 2003-12-14 03:35:04.000000000 +0000
+@@ -1006,6 +1006,11 @@
+ machine=ia64 opsys=gnu-linux
+ ;;
+
++ ## X86-64
++ x86_64*-*-linux* )
++ machine=x86_64 opsys=gnu-linux
++ ;;
++
+ ## Intel 386 machines where we don't care about the manufacturer
+ i[3456]86-*-* )
+ machine=intel386
+diff -Naur emacs-21.3-old/src/m/x86_64.h emacs-21.3/src/m/x86_64.h
+--- emacs-21.3-old/src/m/x86_64.h 1970-01-01 00:00:00.000000000 +0000
++++ emacs-21.3/src/m/x86_64.h 2003-12-14 03:35:04.000000000 +0000
+@@ -0,0 +1,175 @@
++/* machine description file for the X86-64 architecture.
++ Copyright (C) 2000 Free Software Foundation, Inc.
++
++This file is part of GNU Emacs.
++
++GNU Emacs is free software; you can redistribute it and/or modify
++it under the terms of the GNU General Public License as published by
++the Free Software Foundation; either version 1, or (at your option)
++any later version.
++
++GNU Emacs is distributed in the hope that it will be useful,
++but WITHOUT ANY WARRANTY; without even the implied warranty of
++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++GNU General Public License for more details.
++
++You should have received a copy of the GNU General Public License
++along with GNU Emacs; see the file COPYING. If not, write to
++the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++Boston, MA 02111-1307, USA. */
++
++#define BITS_PER_LONG 64
++#define BITS_PER_EMACS_INT 64
++
++/* Define WORDS_BIG_ENDIAN iff lowest-numbered byte in a word
++ is the most significant byte. */
++
++#undef WORDS_BIG_ENDIAN
++
++/* Define NO_ARG_ARRAY if you cannot take the address of the first of a
++ group of arguments and treat it as an array of the arguments. */
++
++#define NO_ARG_ARRAY
++
++/* Define WORD_MACHINE if addresses and such have
++ to be corrected before they can be used as byte counts. */
++
++/* #define WORD_MACHINE */
++
++/* Now define a symbol for the cpu type, if your compiler
++ does not define it automatically:
++ Ones defined so far include vax, m68000, ns16000, pyramid,
++ orion, tahoe, APOLLO and many others */
++
++/* __x86_64__ defined automatically */
++
++
++/* Use type EMACS_INT rather than a union, to represent Lisp_Object */
++/* This is desirable for most machines. */
++
++#define NO_UNION_TYPE
++
++/* Define the type to use. */
++#define EMACS_INT long
++#define EMACS_UINT unsigned long
++#define SPECIAL_EMACS_INT
++
++/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
++ the 24-bit bit field into an int. In other words, if bit fields
++ are always unsigned.
++
++ If you use NO_UNION_TYPE, this flag does not matter. */
++
++#define EXPLICIT_SIGN_EXTEND
++
++/* Data type of load average, as read out of kmem. */
++
++#define LOAD_AVE_TYPE long
++
++/* Convert that into an integer that is 100 for a load average of 1.0 */
++
++#define LOAD_AVE_CVT(x) (int) (((double) (x)) * 100.0 / FSCALE)
++
++/* Define CANNOT_DUMP on machines where unexec does not work.
++ Then the function dump-emacs will not be defined
++ and temacs will do (load "loadup") automatically unless told otherwise. */
++#if 0
++#define CANNOT_DUMP
++#endif
++
++/* Define VIRT_ADDR_VARIES if the virtual addresses of
++ pure and impure space as loaded can vary, and even their
++ relative order cannot be relied on.
++
++ Otherwise Emacs assumes that text space precedes data space,
++ numerically. */
++
++/* #define VIRT_ADDR_VARIES */
++
++/* Define C_ALLOCA if this machine does not support a true alloca
++ and the one written in C should be used instead.
++ Define HAVE_ALLOCA to say that the system provides a properly
++ working alloca function and it should be used.
++ Define neither one if an assembler-language alloca
++ in the file alloca.s should be used. */
++
++#define HAVE_ALLOCA
++
++/* Define the following if GNU malloc and the relocating allocator do
++ not work together with X. */
++
++/* #define SYSTEM_MALLOC */
++
++/* Define NO_REMAP if memory segmentation makes it not work well
++ to change the boundary between the text section and data section
++ when Emacs is dumped. If you define this, the preloaded Lisp
++ code will not be sharable; but that's better than failing completely. */
++
++/* #define NO_REMAP */
++
++/* Some really obscure 4.2-based systems (like Sequent DYNIX) do not
++ support asynchronous I/O (using SIGIO) on sockets, even though it
++ works fine on tty's. If you have one of these systems, define the
++ following, and then use it in config.h (or elsewhere) to decide
++ when (not) to use SIGIO.
++
++ You'd think this would go in an operating-system description file,
++ but since it only occurs on some, but not all, BSD systems, the
++ reasonable place to select for it is in the machine description
++ file. */
++
++/* #define NO_SOCK_SIGIO */
++
++#ifdef __ELF__
++#undef UNEXEC
++#define UNEXEC unexelf.o
++#endif
++
++#define PNTR_COMPARISON_TYPE unsigned long
++
++/* On the 64 bit architecture, we can use 60 bits for addresses */
++
++#define VALBITS 60
++
++/* Define XINT and XUINT so that they can take arguments of type int */
++
++#define XINT(a) (((long) (a) << (BITS_PER_LONG - VALBITS)) >> (BITS_PER_LONG - VALBITS))
++#define XUINT(a) ((long) (a) & VALMASK)
++
++/* Declare malloc and realloc in a way that is clean.
++ But not in makefiles! */
++
++#ifndef NOT_C_CODE
++/* We need these because pointers are larger than the default ints. */
++# if !defined(__NetBSD__) && !defined(__OpenBSD__)
++# include <alloca.h>
++# else
++# include <stdlib.h>
++# endif
++
++/* We need to prototype these for the lib-src programs even if we don't
++ use the system malloc for the Emacs proper. */
++#ifdef _MALLOC_INTERNAL
++/* These declarations are designed to match the ones in gmalloc.c. */
++#if defined (__STDC__) && __STDC__
++extern void *malloc (), *realloc (), *calloc ();
++#else
++extern char *malloc (), *realloc (), *calloc ();
++#endif
++#else /* not _MALLOC_INTERNAL */
++extern void *malloc (), *realloc (), *calloc ();
++#endif /* not _MALLOC_INTERNAL */
++
++#ifdef REL_ALLOC
++#ifndef _MALLOC_INTERNAL
++/* "char *" because ralloc.c defines it that way. gmalloc.c thinks it
++ is allowed to prototype these as "void *" so we don't prototype in
++ that case. You're right: it stinks! */
++extern char *r_alloc (), *r_re_alloc ();
++extern void r_alloc_free ();
++#endif /* not _MALLOC_INTERNAL */
++#endif /* REL_ALLOC */
++
++#endif /* not NOT_C_CODE */
++
++#define HAVE_TEXT_START
+diff -Naur emacs-21.3-old/src/s/gnu-linux.h emacs-21.3/src/s/gnu-linux.h
+--- emacs-21.3-old/src/s/gnu-linux.h 2003-12-14 03:34:28.000000000 +0000
++++ emacs-21.3/src/s/gnu-linux.h 2003-12-14 03:35:04.000000000 +0000
+@@ -173,8 +173,12 @@
+ /* GNU/Linux usually has crt0.o in a non-standard place */
+ #define START_FILES pre-crt0.o /usr/lib/crt0.o
+ #else
++#if defined(__x86_64)
++#define START_FILES pre-crt0.o /usr/lib64/crt1.o /usr/lib64/crti.o
++#else
+ #define START_FILES pre-crt0.o /usr/lib/crt1.o /usr/lib/crti.o
+ #endif
++#endif
+
+ #ifdef __ELF__
+ /* Here is how to find X Windows. LD_SWITCH_X_SITE_AUX gives an -R option
+@@ -225,8 +229,12 @@
+ #else
+ #undef LIB_GCC
+ #define LIB_GCC
++#if defined(__x86_64)
++#define LIB_STANDARD -lgcc -lc -lgcc /usr/lib64/crtn.o
++#else
+ #define LIB_STANDARD -lgcc -lc -lgcc /usr/lib/crtn.o
+ #endif
++#endif
+
+ /* Don't use -g in test compiles in configure.
+ This is so we will use the same shared libs for that linking
diff --git a/emacs/21.4/03_all_hppa.patch b/emacs/21.4/03_all_hppa.patch
new file mode 100644
index 0000000..6955f93
--- /dev/null
+++ b/emacs/21.4/03_all_hppa.patch
@@ -0,0 +1,98 @@
+diff -uNr emacs-21.3.orig/configure emacs-21.3/configure
+--- emacs-21.3.orig/configure 2003-12-20 15:03:19.622159984 +0000
++++ emacs-21.3/configure 2003-12-20 15:13:56.550332184 +0000
+@@ -1179,6 +1179,10 @@
+ machine=hp800 opsys=nextstep
+ ;;
+
++ hppa*-*-linux-gnu* )
++ machine=hp800 psys=gnu-linux
++ ;;
++
+ ## Orion machines
+ orion-orion-bsd* )
+ machine=orion opsys=bsd4-2
+diff -uNr emacs-21.3.orig/configure.in emacs-21.3/configure.in
+--- emacs-21.3.orig/configure.in 2003-12-20 15:03:19.624159680 +0000
++++ emacs-21.3/configure.in 2003-12-20 15:15:22.825216408 +0000
+@@ -553,6 +553,10 @@
+ machine=hp800 opsys=nextstep
+ ;;
+
++ hppa*-*-linux-gnu* )
++ machine=hp800 opsys=gnu-linux
++ ;;
++
+ ## Orion machines
+ orion-orion-bsd* )
+ machine=orion opsys=bsd4-2
+--- emacs21-21.2.orig/src/m/hp800.h
++++ emacs21-21.2/src/m/hp800.h
+@@ -85,7 +85,7 @@
+ #define bcmp memcmp
+ #endif
+
+-#ifdef __hpux
++#if defined(__hpux) || defined(__linux__)
+ /* Now define a symbol for the cpu type, if your compiler
+ does not define it automatically:
+ Ones defined so far include vax, m68000, ns16000, pyramid,
+@@ -94,6 +94,15 @@
+ # define hp9000s800
+ #endif
+
++#ifdef __linux__
++/* Data type of load average, as read out of kmem. */
++
++#define LOAD_AVE_TYPE long
++
++/* Convert that into an integer that is 100 for a load average of 1.0 */
++
++#define LOAD_AVE_CVT(x) (int) (((double) (x)) * 100.0 / FSCALE)
++#else
+ /* Data type of load average, as read out of kmem. */
+
+ #define LOAD_AVE_TYPE double
+@@ -101,7 +110,7 @@
+ /* Convert that into an integer that is 100 for a load average of 1.0 */
+
+ #define LOAD_AVE_CVT(x) ((int) (x * 100.0))
+-
++#endif
+
+ /* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+@@ -116,6 +125,7 @@
+ Otherwise Emacs assumes that text space precedes data space,
+ numerically. */
+
++#ifdef __hpux
+ #define VIRT_ADDR_VARIES
+
+ /* Define C_ALLOCA if this machine does not support a true alloca
+@@ -134,6 +144,9 @@
+
+ #define DATA_START 0x40000000
+ #define TEXT_START 0x00000000
++#else
++#define HAVE_ALLOCA
++#endif
+
+ #define STACK_DIRECTION 1
+
+@@ -147,6 +160,7 @@
+ /* This machine requires completely different unexec code
+ which lives in a separate file. Specify the file name. */
+
++#ifdef __hpux
+ #define UNEXEC unexhp9k800.o
+
+ #define LIBS_MACHINE
+@@ -179,5 +193,5 @@
+
+ #define index strchr
+ #define rindex strrchr
+-
+-#endif /* __hpux */
++#endif
++#endif
diff --git a/emacs/21.4/04_all_sh.patch b/emacs/21.4/04_all_sh.patch
new file mode 100644
index 0000000..254db24
--- /dev/null
+++ b/emacs/21.4/04_all_sh.patch
@@ -0,0 +1,175 @@
+--- emacs21-21.2.orig/configure.in
++++ emacs21-21.2/configure.in
+@@ -1055,6 +1055,16 @@
+ machine=mipsel opsys=gnu-linux
+ ;;
+
++ ## SuperH (little endian) Linux-based GNU system
++ sh[34]-*-linux-gnu* )
++ machine=sh opsys=gnu-linux
++ ;;
++
++ ## SuperH (big endian) Linux-based GNU system
++ sh[34]eb-*-linux-gnu* )
++ machine=sheb opsys=gnu-linux
++ ;;
++
+ ## UXP/DS
+ sparc-fujitsu-sysv4* )
+ machine=sparc opsys=uxpds
+--- emacs21-21.2.orig/src/m/sh.h
++++ emacs21-21.2/src/m/sh.h
+@@ -0,0 +1,122 @@
++/* machine description file for Hitach SuperH.
++ Copyright (C) 2000 Free Software Foundation, Inc.
++
++This file is part of GNU Emacs.
++
++GNU Emacs is free software; you can redistribute it and/or modify
++it under the terms of the GNU General Public License as published by
++the Free Software Foundation; either version 2, or (at your option)
++any later version.
++
++GNU Emacs is distributed in the hope that it will be useful,
++but WITHOUT ANY WARRANTY; without even the implied warranty of
++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++GNU General Public License for more details.
++
++You should have received a copy of the GNU General Public License
++along with GNU Emacs; see the file COPYING. If not, write to
++the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++Boston, MA 02111-1307, USA. */
++
++
++/* The following line tells the configuration script what sort of
++ operating system this machine is likely to run.
++ USUAL-OPSYS="<name of system .h file here, without the s- or .h>" */
++
++/* Define WORDS_BIG_ENDIAN iff lowest-numbered byte in a word
++ is the most significant byte. */
++
++#undef WORDS_BIG_ENDIAN
++
++/* Define NO_ARG_ARRAY if you cannot take the address of the first of a
++ * group of arguments and treat it as an array of the arguments. */
++
++#define NO_ARG_ARRAY
++
++/* Define WORD_MACHINE if addresses and such have
++ * to be corrected before they can be used as byte counts. */
++
++#undef WORD_MACHINE
++
++/* Now define a symbol for the cpu type, if your compiler
++ does not define it automatically:
++ Ones defined so far include vax, m68000, ns16000, pyramid,
++ orion, tahoe, APOLLO and many others */
++#define SUPERH
++
++/* Use type int rather than a union, to represent Lisp_Object */
++/* This is desirable for most machines. */
++
++#define NO_UNION_TYPE
++
++/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
++ the 24-bit bit field into an int. In other words, if bit fields
++ are always unsigned.
++
++ If you use NO_UNION_TYPE, this flag does not matter. */
++
++#define EXPLICIT_SIGN_EXTEND
++
++/* Data type of load average, as read out of kmem. */
++
++#define LOAD_AVE_TYPE long
++
++/* Convert that into an integer that is 100 for a load average of 1.0 */
++
++#define LOAD_AVE_CVT(x) (int) (((double) (x)) * 100.0 / FSCALE)
++
++/* Define CANNOT_DUMP on machines where unexec does not work.
++ Then the function dump-emacs will not be defined
++ and temacs will do (load "loadup") automatically unless told otherwise. */
++
++#undef CANNOT_DUMP
++
++/* Define VIRT_ADDR_VARIES if the virtual addresses of
++ pure and impure space as loaded can vary, and even their
++ relative order cannot be relied on.
++
++ Otherwise Emacs assumes that text space precedes data space,
++ numerically. */
++
++#undef VIRT_ADDR_VARIES
++
++/* Define C_ALLOCA if this machine does not support a true alloca
++ and the one written in C should be used instead.
++ Define HAVE_ALLOCA to say that the system provides a properly
++ working alloca function and it should be used.
++ Define neither one if an assembler-language alloca
++ in the file alloca.s should be used. */
++
++#undef C_ALLOCA
++#define HAVE_ALLOCA
++
++/* Define NO_REMAP if memory segmentation makes it not work well
++ to change the boundary between the text section and data section
++ when Emacs is dumped. If you define this, the preloaded Lisp
++ code will not be sharable; but that's better than failing completely. */
++
++#undef NO_REMAP
++
++/* Some really obscure 4.2-based systems (like Sequent DYNIX)
++ * do not support asynchronous I/O (using SIGIO) on sockets,
++ * even though it works fine on tty's. If you have one of
++ * these systems, define the following, and then use it in
++ * config.h (or elsewhere) to decide when (not) to use SIGIO.
++ *
++ * You'd think this would go in an operating-system description file,
++ * but since it only occurs on some, but not all, BSD systems, the
++ * reasonable place to select for it is in the machine description
++ * file.
++ */
++
++#undef NO_SOCK_SIGIO
++
++
++/* After adding support for a new system, modify the large case
++ statement in the `configure' script to recognize reasonable
++ configuration names, and add a description of the system to
++ `etc/MACHINES'.
++
++ If you've just fixed a problem in an existing configuration file,
++ you should also check `etc/MACHINES' to make sure its descriptions
++ of known problems in that configuration should be updated. */
+only in patch2:
+--- emacs21-21.2.orig/src/m/sheb.h
++++ emacs21-21.2/src/m/sheb.h
+@@ -0,0 +1,8 @@
++/* machine description file for sheb (SuperH big endian). */
++
++#include "sh.h"
++
++/* Define WORDS_BIG_ENDIAN iff lowest-numbered byte in a word
++ is the most significant byte. */
++
++#define WORDS_BIG_ENDIAN
+--- emacs-21.2.orig/configure Fri Mar 15 21:46:09 2002
++++ emacs-21.2/configure Mon Nov 25 16:30:19 2002
+@@ -1666,6 +1666,16 @@
+ machine=mips opsys=gnu-linux
+ ;;
+
++ ## SuperH (little endian) Linux-based GNU system
++ sh[34]-*-linux-gnu* )
++ machine=sh opsys=gnu-linux
++ ;;
++
++ ## SuperH (big endian) Linux-based GNU system
++ sh[34]eb-*-linux-gnu* )
++ machine=sheb opsys=gnu-linux
++ ;;
++
+ ## UXP/DS
+ sparc-fujitsu-sysv4* )
+ machine=sparc opsys=uxpds
diff --git a/emacs/21.4/05_all_libungif-gif-gentoo.patch b/emacs/21.4/05_all_libungif-gif-gentoo.patch
new file mode 100644
index 0000000..abae185
--- /dev/null
+++ b/emacs/21.4/05_all_libungif-gif-gentoo.patch
@@ -0,0 +1,34 @@
+diff -ur emacs-21.4.orig/configure.in emacs-21.4/configure.in
+--- emacs-21.4.orig/configure.in 2003-03-16 16:06:05.000000000 -0600
++++ emacs-21.4/configure.in 2006-08-12 17:15:44.000000000 -0500
+@@ -1927,7 +1927,7 @@
+ AC_CHECK_HEADER(gif_lib.h,
+ # EGifPutExtensionLast only exists from version libungif-4.1.0b1.
+ # Earlier versions can crash Emacs.
+- AC_CHECK_LIB(ungif, EGifPutExtensionLast, HAVE_GIF=yes))
++ AC_CHECK_LIB(gif, EGifPutExtensionLast, HAVE_GIF=yes))
+ fi
+
+ if test "${HAVE_GIF}" = "yes"; then
+@@ -2283,7 +2283,7 @@
+ echo " Does Emacs use -lXpm? ${HAVE_XPM}"
+ echo " Does Emacs use -ljpeg? ${HAVE_JPEG}"
+ echo " Does Emacs use -ltiff? ${HAVE_TIFF}"
+-echo " Does Emacs use -lungif? ${HAVE_GIF}"
++echo " Does Emacs use -lgif? ${HAVE_GIF}"
+ echo " Does Emacs use -lpng? ${HAVE_PNG}"
+ echo " Does Emacs use X toolkit scroll bars? ${USE_TOOLKIT_SCROLL_BARS}"
+ echo
+diff -ur emacs-21.4.orig/src/Makefile.in emacs-21.4/src/Makefile.in
+--- emacs-21.4.orig/src/Makefile.in 2003-01-23 04:34:06.000000000 -0600
++++ emacs-21.4/src/Makefile.in 2006-08-12 17:23:30.000000000 -0500
+@@ -402,7 +402,7 @@
+
+ #if HAVE_GIF
+ #ifndef LIBGIF
+-#define LIBGIF -lungif
++#define LIBGIF -lgif
+ #endif /* not defined LIBGIF */
+ #else /* not HAVE_GIF */
+ #define LIBGIF
+Only in emacs-21.4/src: Makefile.in~
diff --git a/emacs/21.4/06_ppc64_ppc64.patch b/emacs/21.4/06_ppc64_ppc64.patch
new file mode 100644
index 0000000..7572137
--- /dev/null
+++ b/emacs/21.4/06_ppc64_ppc64.patch
@@ -0,0 +1,51 @@
+--- emacs-21.3/src/m/macppc.h.sopwith 2001-10-23 02:43:33.000000000 -0400
++++ emacs-21.3/src/m/macppc.h 2003-05-02 09:17:37.000000000 -0400
+@@ -95,11 +95,47 @@
+
+ #ifdef LINUX
+ #define LINKER $(CC) -nostdlib
+-#define LD_SWITCH_MACHINE -Xlinker -m -Xlinker elf32ppc
++#ifdef __powerpc64__
++#define LD_SWITCH_MACHINE -m64 -Xlinker -m -Xlinker elf64ppc
++#else
++#define LD_SWITCH_MACHINE -m32 -Xlinker -m -Xlinker elf32ppc
++#endif
+ /* s/gnu-linux.h defines this to `-z nocombreloc' which does not work here
+ because prefix-args is not used. */
+ #undef LD_SWITCH_SYSTEM_TEMACS
+ #define LD_SWITCH_MACHINE_TEMACS -Xlinker -znocombreloc
++
++#ifdef __powerpc64__
++/* Misc 64-bit fixups, patterned after the x86_64 file */
++#undef BITS_PER_LONG
++#undef BITS_PER_EMACS_INT
++#undef VALBITS
++#undef PNTR_COMPARISON_TYPE
++#undef MARKBIT
++#undef XINT
++#undef XUINT
++#undef XPNTR
++#undef START_FILES
++#undef LIB_STANDARD
++#undef EMACS_INT
++#undef EMACS_UINT
++#undef SPECIAL_EMACS_INT
++
++#define BITS_PER_LONG 64
++#define BITS_PER_EMACS_INT 64
++#define VALBITS 60
++#define PNTR_COMPARISON_TYPE unsigned long
++#define MARKBIT 0x8000000000000000L
++
++#define XINT(a) (((long) (a) << (BITS_PER_LONG - VALBITS)) >> (BITS_PER_LONG - VALBITS))
++#define XUINT(a) ((long) (a) & VALMASK)
++#define XPNTR(a) XUINT (a)
++#define START_FILES pre-crt0.o /usr/lib64/crt1.o /usr/lib64/crti.o
++#define LIB_STANDARD -lgcc -lc -lgcc /usr/lib64/crtn.o
++#define EMACS_INT long
++#define EMACS_UINT unsigned long
++#define SPECIAL_EMACS_INT
++#endif
+ #endif
+
+ #if 0 /* This breaks things on PPC GNU/Linux ecept for Yellowdog,
diff --git a/emacs/21.4/07_ppc64_fix-unexelf.patch b/emacs/21.4/07_ppc64_fix-unexelf.patch
new file mode 100644
index 0000000..5a812a9
--- /dev/null
+++ b/emacs/21.4/07_ppc64_fix-unexelf.patch
@@ -0,0 +1,67 @@
+Fix unexelf.c (unexec) on ppc64, backported from Emacs 22 by Chip Coldwell,
+see <http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=183304>
+--- emacs-21.4/src/unexelf.c 2002-10-15 10:21:44.000000000 -0400
++++ emacs-21.4.works/src/unexelf.c 2006-07-26 11:08:05.000000000 -0400
+@@ -697,7 +697,7 @@ unexec (new_name, old_name, data_start,
+ ElfW(Addr) new_data2_addr;
+
+ int n, nn;
+- int old_bss_index, old_sbss_index;
++ int old_bss_index, old_sbss_index, old_plt_index;
+ int old_data_index, new_data2_index;
+ int old_mdebug_index;
+ struct stat stat_buf;
+@@ -759,12 +759,31 @@ unexec (new_name, old_name, data_start,
+ if (OLD_SECTION_H (old_sbss_index).sh_type == SHT_PROGBITS)
+ old_sbss_index = -1;
+
+- if (old_sbss_index == -1)
++ /* PowerPC64 has .plt in the BSS section. */
++ old_plt_index = find_section (".plt", old_section_names,
++ old_name, old_file_h, old_section_h, 1);
++ if (old_plt_index != -1)
++ if (OLD_SECTION_H (old_plt_index).sh_type != SHT_NOBITS)
++ old_plt_index = -1;
++
++ if (old_sbss_index == -1 && old_plt_index == -1)
+ {
+ old_bss_addr = OLD_SECTION_H (old_bss_index).sh_addr;
+ old_bss_size = OLD_SECTION_H (old_bss_index).sh_size;
+ new_data2_index = old_bss_index;
+ }
++ else if (old_plt_index != -1
++ && (old_sbss_index == -1
++ || (OLD_SECTION_H (old_sbss_index).sh_addr
++ > OLD_SECTION_H (old_plt_index).sh_addr)))
++ {
++ old_bss_addr = OLD_SECTION_H (old_plt_index).sh_addr;
++ old_bss_size = OLD_SECTION_H (old_bss_index).sh_size
++ + OLD_SECTION_H (old_plt_index).sh_size;
++ if (old_sbss_index != -1)
++ old_bss_size += OLD_SECTION_H (old_sbss_index).sh_size;
++ new_data2_index = old_plt_index;
++ }
+ else
+ {
+ old_bss_addr = OLD_SECTION_H (old_sbss_index).sh_addr;
+@@ -955,7 +974,7 @@ unexec (new_name, old_name, data_start,
+ if (n == old_bss_index
+ /* The new bss and sbss section's size is zero, and its file offset
+ and virtual address should be off by NEW_DATA2_SIZE. */
+- || n == old_sbss_index
++ || n == old_sbss_index || n == old_plt_index
+ )
+ {
+ /* NN should be `old_s?bss_index + 1' at this point. */
+@@ -986,9 +1005,8 @@ unexec (new_name, old_name, data_start,
+ >= OLD_SECTION_H (old_bss_index-1).sh_offset)
+ NEW_SECTION_H (nn).sh_offset += new_data2_size;
+ #else
+- if (round_up (NEW_SECTION_H (nn).sh_offset,
+- OLD_SECTION_H (old_bss_index).sh_addralign)
+- >= new_data2_offset)
++ if (NEW_SECTION_H (nn).sh_offset + NEW_SECTION_H (nn).sh_size
++ > new_data2_offset)
+ NEW_SECTION_H (nn).sh_offset += new_data2_size;
+ #endif
+ /* Any section that was originally placed after the section
diff --git a/emacs/21.4/08_all_autosave-tmp.patch b/emacs/21.4/08_all_autosave-tmp.patch
new file mode 100644
index 0000000..240439d
--- /dev/null
+++ b/emacs/21.4/08_all_autosave-tmp.patch
@@ -0,0 +1,12 @@
+--- emacs-21.4/lisp/startup.el~ 2003-03-16 23:05:59.000000000 +0100
++++ emacs-21.4/lisp/startup.el 2007-02-16 11:21:18.000000000 +0100
+@@ -629,6 +629,9 @@
+ (setq small-temporary-file-directory
+ (if (eq system-type 'ms-dos)
+ (getenv "TMPDIR")))
++ (setq auto-save-file-name-transforms
++ (list (list (caar auto-save-file-name-transforms)
++ (expand-file-name "\\2" temporary-file-directory))))
+
+ ;; See if we should import version-control from the environment variable.
+ (let ((vc (getenv "VERSION_CONTROL")))
diff --git a/emacs/21.4/09_all_blessmail-build.patch b/emacs/21.4/09_all_blessmail-build.patch
new file mode 100644
index 0000000..03b0723
--- /dev/null
+++ b/emacs/21.4/09_all_blessmail-build.patch
@@ -0,0 +1,22 @@
+--- emacs-22.0.93/lib-src/Makefile.in~ 2007-01-17 16:53:20.000000000 +0100
++++ emacs-22.0.93/lib-src/Makefile.in 2007-02-17 11:29:06.000000000 +0100
+@@ -23,6 +23,10 @@
+ # inherited from the environment.
+ SHELL = /bin/sh
+
++# following two lines taken from ../lisp/Makefile.in
++EMACS = ../src/emacs
++EMACSOPT = -batch --no-site-file --multibyte
++
+ # ==================== Things `configure' will edit ====================
+
+ CC=@CC@
+@@ -279,7 +283,7 @@
+
+ #ifdef MOVEMAIL_NEEDS_BLESSING
+ blessmail:
+- ../src/emacs -batch -l $(srcdir)/../lisp/mail/blessmail.el
++ $(EMACS) $(EMACSOPT) -l $(srcdir)/../lisp/mail/blessmail.el
+ chmod +x blessmail
+ #endif
+
diff --git a/emacs/21.4/10_all_qa.patch b/emacs/21.4/10_all_qa.patch
new file mode 100644
index 0000000..d44ddc4
--- /dev/null
+++ b/emacs/21.4/10_all_qa.patch
@@ -0,0 +1,92 @@
+diff -ur emacs-21.4-orig/lib-src/cvtmail.c emacs-21.4/lib-src/cvtmail.c
+--- emacs-21.4-orig/lib-src/cvtmail.c 2002-02-15 13:06:48.000000000 +0100
++++ emacs-21.4/lib-src/cvtmail.c 2007-03-19 09:02:08.000000000 +0100
+@@ -33,12 +33,15 @@
+ * Author: Larry Kolodney, 1985
+ */
+
++#ifdef HAVE_CONFIG_H
++#include <config.h>
++#endif
+
+ #include <stdio.h>
+
+-char *malloc ();
+-char *realloc ();
++#ifndef HAVE_STDLIB_H
+ char *getenv ();
++#endif
+
+ char *xmalloc ();
+ char *xrealloc ();
+diff -ur emacs-21.4-orig/lib-src/yow.c emacs-21.4/lib-src/yow.c
+--- emacs-21.4-orig/lib-src/yow.c 1999-02-26 12:37:05.000000000 +0100
++++ emacs-21.4/lib-src/yow.c 2007-03-19 09:03:50.000000000 +0100
+@@ -10,6 +10,10 @@
+ * With dynamic memory allocation.
+ */
+
++#ifdef HAVE_CONFIG_H
++#include <config.h>
++#endif
++
+ #include <stdio.h>
+ #include <ctype.h>
+ #include <../src/epaths.h> /* For PATH_DATA. */
+@@ -33,8 +37,6 @@
+ &res;})
+ #endif
+
+-char *malloc(), *realloc();
+-
+ void yow();
+ void setup_yow();
+
+diff -ur emacs-21.4-orig/src/prefix-args.c emacs-21.4/src/prefix-args.c
+--- emacs-21.4-orig/src/prefix-args.c 2001-02-22 02:49:37.000000000 +0100
++++ emacs-21.4/src/prefix-args.c 2007-03-19 09:20:27.000000000 +0100
+@@ -43,6 +43,10 @@
+ If I can't write a completely portable program to do this in C,
+ I'm quitting and taking up gardening. */
+
++#ifdef HAVE_CONFIG_H
++# include <config.h>
++#endif
++
+ #include <stdio.h>
+
+ int
+diff -ur emacs-21.4-orig/src/xterm.c emacs-21.4/src/xterm.c
+--- emacs-21.4-orig/src/xterm.c 2002-10-15 16:21:45.000000000 +0200
++++ emacs-21.4/src/xterm.c 2007-03-19 09:13:01.000000000 +0100
+@@ -10899,7 +10899,7 @@
+ if (!tool_bar_p)
+ if (!dpyinfo->x_focus_frame
+ || f == dpyinfo->x_focus_frame)
+- construct_mouse_click (&emacs_event, &event, f);
++ construct_mouse_click (&emacs_event, &event.xbutton, f);
+ }
+ else
+ {
+diff -ur emacs-21.4-orig/oldXMenu/ChgPane.c emacs-21.4/oldXMenu/ChgPane.c
+--- emacs-21.4-orig/oldXMenu/ChgPane.c 1999-10-03 21:34:53.000000000 +0200
++++ emacs-21.4/oldXMenu/ChgPane.c 2007-03-19 15:10:00.000000000 +0100
+@@ -13,6 +13,7 @@
+ *
+ */
+
++#include <config.h>
+ #include "XMenuInt.h"
+
+ int
+diff -ur emacs-21.4-orig/oldXMenu/ChgSel.c emacs-21.4/oldXMenu/ChgSel.c
+--- emacs-21.4-orig/oldXMenu/ChgSel.c 1999-10-03 21:34:54.000000000 +0200
++++ emacs-21.4/oldXMenu/ChgSel.c 2007-03-19 15:10:02.000000000 +0100
+@@ -13,6 +13,7 @@
+ *
+ */
+
++#include <config.h>
+ #include "XMenuInt.h"
+
+ int
diff --git a/emacs/21.4/11_all_Xaw3d-headers.patch b/emacs/21.4/11_all_Xaw3d-headers.patch
new file mode 100644
index 0000000..26d7a85
--- /dev/null
+++ b/emacs/21.4/11_all_Xaw3d-headers.patch
@@ -0,0 +1,72 @@
+diff -ur emacs-21.4-orig/src/xfns.c emacs-21.4/src/xfns.c
+--- emacs-21.4-orig/src/xfns.c 2002-12-06 18:05:35.000000000 +0100
++++ emacs-21.4/src/xfns.c 2007-04-19 01:56:40.000000000 +0200
+@@ -69,8 +69,13 @@
+ #include <X11/Shell.h>
+
+ #ifndef USE_MOTIF
++#ifdef HAVE_XAW3D
++#include <X11/Xaw3d/Paned.h>
++#include <X11/Xaw3d/Label.h>
++#else /* !HAVE_XAW3D */
+ #include <X11/Xaw/Paned.h>
+ #include <X11/Xaw/Label.h>
++#endif /* HAVE_XAW3D */
+ #endif /* USE_MOTIF */
+
+ #ifdef USG
+diff -ur emacs-21.4-orig/src/xmenu.c emacs-21.4/src/xmenu.c
+--- emacs-21.4-orig/src/xmenu.c 2002-01-06 07:18:19.000000000 +0100
++++ emacs-21.4/src/xmenu.c 2007-04-19 01:56:40.000000000 +0200
+@@ -73,7 +73,11 @@
+ #include <X11/StringDefs.h>
+ #include <X11/Shell.h>
+ #ifdef USE_LUCID
++#ifdef HAVE_XAW3D
++#include <X11/Xaw3d/Paned.h>
++#else /* !HAVE_XAW3D */
+ #include <X11/Xaw/Paned.h>
++#endif /* HAVE_XAW3D */
+ #endif /* USE_LUCID */
+ #include "../lwlib/lwlib.h"
+ #else /* not USE_X_TOOLKIT */
+diff -ur emacs-21.4-orig/lwlib/lwlib.c emacs-21.4/lwlib/lwlib.c
+--- emacs-21.4-orig/lwlib/lwlib.c 2000-09-30 19:03:27.000000000 +0200
++++ emacs-21.4/lwlib/lwlib.c 2007-04-19 01:56:40.000000000 +0200
+@@ -49,7 +49,11 @@
+ #include "lwlib-Xol.h"
+ #endif
+ #if defined (USE_XAW)
++#ifdef HAVE_XAW3D
++#include <X11/Xaw3d/Paned.h>
++#else /* !HAVE_XAW3D */
+ #include <X11/Xaw/Paned.h>
++#endif /* HAVE_XAW3D */
+ #include "lwlib-Xaw.h"
+ #endif
+
+diff -ur emacs-21.4-orig/lwlib/lwlib-Xaw.c emacs-21.4/lwlib/lwlib-Xaw.c
+--- emacs-21.4-orig/lwlib/lwlib-Xaw.c 2001-02-28 15:55:17.000000000 +0100
++++ emacs-21.4/lwlib/lwlib-Xaw.c 2007-04-19 01:56:40.000000000 +0200
+@@ -31,12 +31,21 @@
+ #include <X11/CoreP.h>
+ #include <X11/Shell.h>
+
++#ifdef HAVE_XAW3D
++#include <X11/Xaw3d/Scrollbar.h>
++#include <X11/Xaw3d/Paned.h>
++#include <X11/Xaw3d/Dialog.h>
++#include <X11/Xaw3d/Form.h>
++#include <X11/Xaw3d/Command.h>
++#include <X11/Xaw3d/Label.h>
++#else /* !HAVE_XAW3D */
+ #include <X11/Xaw/Scrollbar.h>
+ #include <X11/Xaw/Paned.h>
+ #include <X11/Xaw/Dialog.h>
+ #include <X11/Xaw/Form.h>
+ #include <X11/Xaw/Command.h>
+ #include <X11/Xaw/Label.h>
++#endif /* HAVE_XAW3D */
+
+ #include <X11/Xatom.h>
+
diff --git a/emacs/21.4/12_all_freebsd-terminfo.patch b/emacs/21.4/12_all_freebsd-terminfo.patch
new file mode 100644
index 0000000..0741dbe
--- /dev/null
+++ b/emacs/21.4/12_all_freebsd-terminfo.patch
@@ -0,0 +1,16 @@
+Taken from FreeBSD Ports
+
+--- src/s/freebsd.h.orig Tue Feb 20 19:52:17 2001
++++ src/s/freebsd.h Mon Feb 18 11:51:50 2002
+@@ -68,6 +68,11 @@
+ #define LIBS_SYSTEM -lutil
+ #if __FreeBSD_version < 400000
+ #define LIBS_TERMCAP -ltermcap
++#else
++#ifdef HAVE_LIBNCURSES
++#define TERMINFO
++#define LIBS_TERMCAP -lncurses
++#endif
+ #endif
+
+ #define SYSV_SYSTEM_DIR
diff --git a/emacs/21.4/13_all_oldxmenu-malloc.patch b/emacs/21.4/13_all_oldxmenu-malloc.patch
new file mode 100644
index 0000000..c7d45e6
--- /dev/null
+++ b/emacs/21.4/13_all_oldxmenu-malloc.patch
@@ -0,0 +1,11 @@
+--- emacs-21.4/oldXMenu/XMakeAssoc.c~ 1999-10-03 21:35:22.000000000 +0200
++++ emacs-21.4/oldXMenu/XMakeAssoc.c 2007-05-28 22:21:57.000000000 +0200
+@@ -91,7 +91,7 @@
+ /* If we are here then the new entry should be inserted just */
+ /* before the current value of "Entry". */
+ /* Create a new XAssoc and load it with new provided data. */
+- new_entry = (XAssoc *) xmalloc(sizeof(XAssoc));
++ new_entry = (XAssoc *) malloc(sizeof(XAssoc));
+ new_entry->display = dpy;
+ new_entry->x_id = x_id;
+ new_entry->data = data;
diff --git a/emacs/21.4/14_all_gif-image-size.patch b/emacs/21.4/14_all_gif-image-size.patch
new file mode 100644
index 0000000..506e310
--- /dev/null
+++ b/emacs/21.4/14_all_gif-image-size.patch
@@ -0,0 +1,34 @@
+--- emacs21-21.4a+1.orig/src/xfns.c
++++ emacs21-21.4a+1/src/xfns.c
+@@ -9805,8 +9805,17 @@
+ return 0;
+ }
+
+- width = img->width = max (gif->SWidth, gif->Image.Left + gif->Image.Width);
+- height = img->height = max (gif->SHeight, gif->Image.Top + gif->Image.Height);
++ image_top = gif->SavedImages[ino].ImageDesc.Top;
++ image_left = gif->SavedImages[ino].ImageDesc.Left;
++ image_width = gif->SavedImages[ino].ImageDesc.Width;
++ image_height = gif->SavedImages[ino].ImageDesc.Height;
++
++ width = img->width = max (gif->SWidth,
++ max (gif->Image.Left + gif->Image.Width,
++ image_left + image_width));
++ height = img->height = max (gif->SHeight,
++ max (gif->Image.Top + gif->Image.Height,
++ image_top + image_height));
+
+ /* Create the X image and pixmap. */
+ if (!x_create_x_image_and_pixmap (f, width, height, 0, &ximg, &img->pixmap))
+@@ -9839,11 +9848,6 @@
+ requires more than can be done here (see the gif89 spec,
+ disposal methods). Let's simply assume that the part
+ not covered by a sub-image is in the frame's background color. */
+- image_top = gif->SavedImages[ino].ImageDesc.Top;
+- image_left = gif->SavedImages[ino].ImageDesc.Left;
+- image_width = gif->SavedImages[ino].ImageDesc.Width;
+- image_height = gif->SavedImages[ino].ImageDesc.Height;
+-
+ for (y = 0; y < image_top; ++y)
+ for (x = 0; x < width; ++x)
+ XPutPixel (ximg, x, y, FRAME_BACKGROUND_PIXEL (f));
diff --git a/emacs/21.4/15_all_format-int.patch b/emacs/21.4/15_all_format-int.patch
new file mode 100644
index 0000000..b825031
--- /dev/null
+++ b/emacs/21.4/15_all_format-int.patch
@@ -0,0 +1,11 @@
+--- emacs-21.4-orig/src/editfns.c 2003-01-20 12:03:33.000000000 +0100
++++ emacs-21.4/src/editfns.c 2007-11-25 17:02:54.000000000 +0100
+@@ -3266,7 +3266,7 @@
+ && *format != 'i' && *format != 'X' && *format != 'c')
+ error ("Invalid format operation %%%c", *format);
+
+- thissize = 30;
++ thissize = 30 + (precision > 0 ? precision : 0);
+ if (*format == 'c'
+ && (! SINGLE_BYTE_CHAR_P (XINT (args[n]))
+ || XINT (args[n]) == 0))