You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

377 lines
12 KiB

Index: configure
--- configure.orig 2003-03-18 15:19:12 +0100
+++ configure 2006-10-03 09:22:00 +0200
@@ -822,9 +822,13 @@
sparc*-*-netbsd*) machine=sparc ;;
vax-*-netbsd*) machine=vax ;;
arm-*-netbsd*) machine=arm ;;
+ x86_64-*-netbsd*) machine=amd64 ;;
esac
;;
+ ## Darwin / Mac OS X
+ powerpc-apple-darwin* )
+ machine=powermac opsys=darwin ;;
## OpenBSD ports
*-*-openbsd* )
opsys=openbsd
@@ -1212,7 +1216,7 @@
rs6000-ibm-aix4.2* | powerpc-ibm-aix4.2* )
machine=ibmrs6000 opsys=aix4-2
;;
- rs6000-ibm-aix5.1* | powerpc-ibm-aix5.1* )
+ rs6000-ibm-aix5.* | powerpc-ibm-aix5.* )
machine=ibmrs6000 opsys=aix4-2
;;
rs6000-ibm-aix4.0* | powerpc-ibm-aix4.0* )
@@ -1628,8 +1632,20 @@
;;
## IA-64
- ia64*-*-linux* )
- machine=ia64 opsys=gnu-linux
+ ia64*-*-* )
+ machine=ia64
+ case "${canonical}" in
+ *-linux-gnu* ) opsys=gnu-linux ;;
+ *-freebsd* ) opsys=freebsd ;;
+ esac
+ ;;
+
+ amd64*-*-* )
+ machine=amd64
+ case "${canonical}" in
+ *-linux-gnu* ) opsys=gnu-linux ;;
+ *-freebsd* ) opsys=freebsd ;;
+ esac
;;
## Intel 386 machines where we don't care about the manufacturer
@@ -1659,6 +1675,7 @@
*-sysv4.2uw* ) opsys=unixware; NON_GNU_CPP=/lib/cpp ;;
*-386bsd* ) opsys=386bsd ;;
*-freebsd* ) opsys=freebsd ;;
+ *-dragonfly* ) opsys=freebsd ;;
*-nextstep* ) opsys=nextstep ;;
## Otherwise, we'll fall through to the generic opsys code at the bottom.
esac
@@ -9124,6 +9141,22 @@
fi
+# NETBSD: NetBSD's newer run-time linker fix.
+if test $opsys = netbsd; then
+ if test -f /usr/lib/crti.o; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_NETBSD_CRTI 1
+EOF
+
+ fi
+ if test -f /usr/lib/crtn.o; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_NETBSD_CRTN 1
+EOF
+
+ fi
+fi
+
# Set up the CFLAGS for real compilation, so we can substitute it.
CFLAGS="$REAL_CFLAGS"
CPPFLAGS="$REAL_CPPFLAGS"
Index: src/Makefile.in
--- src/Makefile.in.orig 2003-01-23 11:34:06 +0100
+++ src/Makefile.in 2006-10-03 09:21:20 +0200
@@ -155,8 +155,12 @@
/* This holds special options for linking temacs
that should be used for linking anything else. */
#ifndef LD_SWITCH_SYSTEM_TEMACS
+#if defined(__FreeBSD_version) && (__FreeBSD_version >= 500042)
+#define LD_SWITCH_SYSTEM_TEMACS -znocombreloc
+#else
#define LD_SWITCH_SYSTEM_TEMACS
#endif
+#endif
/* Some m/MACHINE.h files define this to request special switches in ld. */
#ifndef LD_SWITCH_MACHINE
Index: src/alloc.c
--- src/alloc.c.orig 2003-01-17 14:45:13 +0100
+++ src/alloc.c 2006-10-03 09:21:20 +0200
@@ -3723,8 +3723,12 @@
/* This trick flushes the register windows so that all the state of
the process is contained in the stack. */
#ifdef sparc
+#ifdef __sparc64__
+ asm ("flushw");
+#else
asm ("ta 3");
#endif
+#endif
/* Save registers that we need to see on the stack. We need to see
registers used to hold register variables and registers used to
Index: src/config.in
--- src/config.in.orig 2002-07-09 00:23:31 +0200
+++ src/config.in 2006-10-03 09:21:20 +0200
@@ -354,6 +354,12 @@
/* Define for large files, on AIX-style hosts. */
#undef _LARGE_FILES
+/* On NetBSD, Define HAVE_NETBSD_CRT{I,N} if a given system has crt{i,n}.o
+ installed under /usr/lib. These should be linked against temacs,
+ or it won't boot. */
+#undef HAVE_NETBSD_CRTI
+#undef HAVE_NETBSD_CRTN
+
#undef EMACS_CONFIGURATION
#undef EMACS_CONFIG_OPTIONS
Index: src/m/alpha.h
--- src/m/alpha.h.orig 2000-10-02 16:30:39 +0200
+++ src/m/alpha.h 2006-10-03 09:21:20 +0200
@@ -198,7 +198,7 @@
#ifndef NOT_C_CODE
/* We need these because pointers are larger than the default ints. */
-#if !defined(__NetBSD__) && !defined(__OpenBSD__)
+#if !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__FreeBSD__)
#include <alloca.h>
#endif
Index: src/m/amd64.h
--- /dev/null 2006-10-03 09:22:09 +0200
+++ src/m/amd64.h 2006-10-03 09:21:20 +0200
@@ -0,0 +1,131 @@
+/* machine description file for AMD x86-64.
+ Copyright (C) 2002 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="linux" */
+
+#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 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. */
+
+/* #define 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. */
+
+#define VIRT_ADDR_VARIES /* XXX */
+
+/* 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 C_ALLOCA */ /* XXX */
+#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. */
+
+#define NO_REMAP /* XXX */
+
+#define PNTR_COMPARISON_TYPE unsigned long
+
+/* On the 64 bit architecture, we can use 60 bits for addresses */
+
+#define VALBITS 60
+
+/* This definition of MARKBIT is necessary because of the comparison of
+ ARRAY_MARK_FLAG and MARKBIT in an #if in lisp.h, which cpp doesn't like. */
+
+#define MARKBIT 0x8000000000000000L
+
+/* 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)
+
+/* Define XPNTR to avoid or'ing with DATA_SEG_BITS */
+
+#define XPNTR(a) XUINT (a)
+
+/* #undef START_FILES */ /* XXX */
+/* #define START_FILES pre-crt0.o /usr/lib64/crt1.o /usr/lib64/crti.o */ /* XXX */
+
+/* #undef LIB_STANDARD */ /* XXX */
+/* #define LIB_STANDARD -lgcc -lc -lgcc /usr/lib64/crtn.o */ /* XXX */
Index: src/m/ia64.h
--- src/m/ia64.h.orig 2000-09-29 15:00:37 +0200
+++ src/m/ia64.h 2006-10-03 09:21:20 +0200
@@ -147,7 +147,7 @@
#ifndef NOT_C_CODE
/* We need these because pointers are larger than the default ints. */
-# if !defined(__NetBSD__) && !defined(__OpenBSD__)
+# if !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__FreeBSD__)
# include <alloca.h>
# else
# include <stdlib.h>
@@ -178,6 +178,6 @@
#endif /* not NOT_C_CODE */
-#define DATA_SEG_BITS 0x6000000000000000
+#define DATA_SEG_BITS 0x2000000000000000
#define HAVE_TEXT_START
Index: src/m/sparc.h
--- src/m/sparc.h.orig 2000-09-26 15:02:21 +0200
+++ src/m/sparc.h 2006-10-03 09:21:20 +0200
@@ -89,7 +89,7 @@
#define PURESIZE 130000
#endif
-#if !defined (__NetBSD__) && !defined (__linux__) && !defined (__OpenBSD__)
+#if !defined (__NetBSD__) && !defined (__linux__) && !defined (__OpenBSD__) && !defined(__FreeBSD__)
/* This really belongs in s/sun.h. */
/* Say that the text segment of a.out includes the header;
Index: src/s/freebsd.h
--- src/s/freebsd.h.orig 2001-02-20 11:52:17 +0100
+++ src/s/freebsd.h 2006-10-03 09:21:20 +0200
@@ -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
Index: src/s/netbsd.h
--- src/s/netbsd.h.orig 2002-05-31 18:29:02 +0200
+++ src/s/netbsd.h 2006-10-03 09:21:20 +0200
@@ -60,9 +60,17 @@
#endif /* not NO_SHARED_LIBS and not ELF */
#if !defined (NO_SHARED_LIBS) && defined (__ELF__)
+#if defined(HAVE_NETBSD_CRTI)
+#define START_FILES pre-crt0.o /usr/lib/crt0.o /usr/lib/crti.o /usr/lib/crtbegin.o
+#else
#define START_FILES pre-crt0.o /usr/lib/crt0.o /usr/lib/crtbegin.o
+#endif
#define UNEXEC unexelf.o
+#if defined(HAVE_NETBSD_CRTN)
+#define LIB_STANDARD -lgcc -lc -lgcc /usr/lib/crtend.o /usr/lib/crtn.o
+#else
#define LIB_STANDARD -lgcc -lc -lgcc /usr/lib/crtend.o
+#endif
#undef LIB_GCC
#define LIB_GCC
#endif
@@ -123,3 +131,7 @@
#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
+/* Use sigprocmask(2) and friends instead of sigblock(2); the man page
+ of sigblock says it is obsolete. */
+
+#define POSIX_SIGNALS 1
Index: src/s/sol2-4.h
--- src/s/sol2-4.h.orig 1998-08-29 01:38:20 +0200
+++ src/s/sol2-4.h 2006-10-03 09:21:20 +0200
@@ -24,7 +24,7 @@
/* We use ./prefix-args because we don't know whether LD_SWITCH_X_SITE_AUX
has anything in it. It can be empty.
This works ok in temacs. */
-#define LD_SWITCH_SYSTEM_TEMACS -L/usr/ccs/lib \
+#define LD_SWITCH_SYSTEM_TEMACS -z nocombreloc -L/usr/ccs/lib \
`./prefix-args -Xlinker LD_SWITCH_X_SITE_AUX` \
`NOT_USING_MOTIF || echo ' -R/usr/dt/lib -L/usr/dt/lib'`
#endif /* GCC */
Index: src/s/sol2-8.h
--- /dev/null 2006-10-03 09:22:09 +0200
+++ src/s/sol2-8.h 2006-10-03 09:21:20 +0200
@@ -0,0 +1,10 @@
+/* Handle Solaris 2.8 and 2.9 */
+
+#include "sol2-5.h"
+
+/* Avoid conflict between strings.h and iso/string_iso.h */
+
+#undef bcmp
+#undef bcopy
+#undef bzero
+