]> code.delx.au - gnu-emacs/blobdiff - src/s/gnu-linux.h
* s/usg5-4.h (LIBS_SYSTEM): Remove, system for which this was
[gnu-emacs] / src / s / gnu-linux.h
index ac0ad0b014d27f8df7a1c5bab2cdd5f9706b031e..7501cd602f384280697d55ad5a2b97b5c75e27fc 100644 (file)
@@ -1,12 +1,13 @@
 /* This file is the configuration file for Linux-based GNU systems
-   Copyright (C) 1985, 86, 92, 94, 96, 1999, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1985, 1986, 1992, 1994, 1996, 1999, 2001, 2002, 2003, 2004,
+                 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
-GNU Emacs is free software; you can redistribute it and/or modify
+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.
+the Free Software Foundation, either version 3 of the License, 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
@@ -14,9 +15,7 @@ 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.  */
+along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* This file was put together by Michael K. Johnson and Rik Faith.  */
 
@@ -26,11 +25,7 @@ Boston, MA 02111-1307, USA.  */
  *     Define all the symbols that apply correctly.
  */
 
-/* #define UNIPLUS */
-/* #define USG5 */
 #define USG
-/* #define BSD_SYSTEM */
-#define LINUX
 #define GNU_LINUX
 
 /* SYSTEM_TYPE should indicate the kind of system you are using.
@@ -38,19 +33,15 @@ Boston, MA 02111-1307, USA.  */
 
 #define SYSTEM_TYPE "gnu/linux"                /* All the best software is free. */
 
-/* Check the version number of Linux--if it is at least 1.2.0,
-   it is safe to use SIGIO.  */
 #ifndef NOT_C_CODE
 #ifdef emacs
 #ifdef HAVE_LINUX_VERSION_H
 #include <linux/version.h>
 
-#if LINUX_VERSION_CODE > 0x10200
-#define LINUX_SIGIO_DOES_WORK
-#endif /* LINUX_VERSION_CODE > 0x10200 */
-#if LINUX_VERSION_CODE >= 0x20000
-#define LINUX_MAP_SHARED_DOES_WORK
-#endif /* LINUX_VERSION_CODE >= 0x20000 */
+#if LINUX_VERSION_CODE >= 0x20400
+/* 21 Jun 06: Eric Hanchrow <offby1@blarg.net> says this works.  */
+#define SIGNALS_VIA_CHARACTERS
+#endif /* LINUX_VERSION_CODE >= 0x20400 */
 #endif /* HAVE_LINUX_VERSION_H */
 #endif /* emacs */
 #endif /* NOT_C_CODE */
@@ -97,7 +88,7 @@ Boston, MA 02111-1307, USA.  */
 
 #define FIRST_PTY_LETTER 'p'
 
-#endif  /* not HAVE_GRANDPT */
+#endif  /* not HAVE_GRANTPT */
 
 /*  Define HAVE_TERMIOS if the system provides POSIX-style
     functions and macros for terminal control.  */
@@ -138,8 +129,12 @@ Boston, MA 02111-1307, USA.  */
    movemail.c will use `maillock' when MAILDIR, HAVE_LIBMAIL and
    HAVE_MAILLOCK_H are defined, so the following appears to be the
    correct logic.  -- fx */
+/* We must check for HAVE_LIBLOCKFILE too, as movemail does.
+   liblockfile is a Free Software replacement for libmail, used on
+   Debian systems and elsewhere. -rfr */
 
-#if !(defined (HAVE_LIBMAIL) && defined (HAVE_MAILLOCK_H))
+#if !((defined (HAVE_LIBMAIL) || defined (HAVE_LIBLOCKFILE)) &&        \
+      defined (HAVE_MAILLOCK_H))
 #define MAIL_USE_FLOCK
 #endif
 
@@ -156,12 +151,6 @@ Boston, MA 02111-1307, USA.  */
    your system and must be used only through an encapsulation
    (Which you should place, by convention, in sysdep.c).  */
 \f
-/* If you mount the proc file system somewhere other than /proc
-   you will have to uncomment the following and make the proper
-   changes */
-
-/* #define LINUX_LDAV_FILE "/proc/loadavg" */
-
 /* This is needed for dispnew.c:update_frame */
 
 #ifdef emacs
@@ -180,14 +169,8 @@ Boston, MA 02111-1307, USA.  */
 /* Ask GCC where to find libgcc.a.  */
 #define LIB_GCC `$(CC) $(C_SWITCH_X_SITE) -print-libgcc-file-name`
 
-#ifndef __ELF__
-/* GNU/Linux usually has crt0.o in a non-standard place */
-#define START_FILES pre-crt0.o /usr/lib/crt0.o
-#else
 #define START_FILES pre-crt0.o /usr/lib/crt1.o /usr/lib/crti.o
-#endif
 
-#ifdef __ELF__
 /* Here is how to find X Windows.  LD_SWITCH_X_SITE_AUX gives an -R option
    says where to find X windows at run time.  */
 
@@ -202,28 +185,11 @@ Boston, MA 02111-1307, USA.  */
    switches, so this also works with older versions that don't implement
    -z combreloc.  */
 #define LD_SWITCH_SYSTEM_TEMACS -z nocombreloc
-#endif /* __ELF__ */
 
-/* As of version 1.1.51, Linux did not actually implement SIGIO.
-   But it works in newer versions.  */
 #ifdef emacs
-#ifdef LINUX_SIGIO_DOES_WORK
 #define INTERRUPT_INPUT
-#else
-#define BROKEN_SIGIO
-/* Some versions of Linux define SIGURG and SIGPOLL as aliases for SIGIO.
-   This prevents lossage in process.c.  */
-#define BROKEN_SIGURG
-#define BROKEN_SIGPOLL
-#endif
 #endif
 
-/* This is needed for sysdep.c */
-
-#define NO_SIOCTL_H           /* don't have sioctl.h */
-
-#define HAVE_WAIT_HEADER
-
 #define SYSV_SYSTEM_DIR       /* use dirent.h */
 
 #define POSIX                 /* affects getpagesize.h and systty.h */
@@ -231,13 +197,9 @@ Boston, MA 02111-1307, USA.  */
 
 /* Best not to include -lg, unless it is last on the command line */
 #define LIBS_DEBUG
-#ifndef __ELF__
-#define LIB_STANDARD -lc /* avoid -lPW */
-#else
 #undef LIB_GCC
 #define LIB_GCC
 #define LIB_STANDARD -lgcc -lc -lgcc /usr/lib/crtn.o
-#endif
 
 /* Don't use -g in test compiles in configure.
    This is so we will use the same shared libs for that linking
@@ -246,18 +208,6 @@ Boston, MA 02111-1307, USA.  */
 #define C_DEBUG_SWITCH
 #endif
 
-/* Let's try this out, just in case.
-   Nah.  Rik Faith <faith@cs.unc.edu> says it doesn't work well.  */
-/* #define SIGNALS_VIA_CHARACTERS */
-
-/* Rob Malouf <malouf@csli.stanford.edu> says:
-   SYSV IPC is standard a standard part of Linux since version 0.99pl10,
-   and is a very common addition to previous versions.  */
-
-#ifdef TERM
-#define LIBS_SYSTEM -lclient
-#define C_SWITCH_SYSTEM -D_BSD_SOURCE -I/usr/src/term
-#else
 /* alane@wozzle.linet.org says that -lipc is not a separate library,
    since libc-4.4.1.  So -lipc was deleted.  */
 #define LIBS_SYSTEM
@@ -265,7 +215,6 @@ Boston, MA 02111-1307, USA.  */
    _GNU_SOURCE.  Left in in case it's relevant to libc5 systems and
    anyone's still using Emacs on those.  --fx 2002-12-14  */
 #define C_SWITCH_SYSTEM -D_BSD_SOURCE
-#endif
 
 /* Paul Abrahams <abrahams@equinox.shaysnet.com> says this is needed.  */
 #define LIB_MOTIF -lXm -lXpm
@@ -275,47 +224,7 @@ Boston, MA 02111-1307, USA.  */
 #define LIBS_TERMCAP -lncurses
 #endif
 
-#define HAVE_SYSVIPC
-
-#ifdef __ELF__
 #define UNEXEC unexelf.o
-#ifndef LINUX_MAP_SHARED_DOES_WORK
-#define UNEXEC_USE_MAP_PRIVATE
-#endif
-#endif
-
-#ifdef LINUX_QMAGIC
-
-#define HAVE_TEXT_START
-#define UNEXEC unexsunos4.o
-#define N_PAGSIZ(x) PAGE_SIZE
-
-#else /* not LINUX_QMAGIC */
-
-#define A_TEXT_OFFSET(hdr) (N_MAGIC(hdr) == QMAGIC ? sizeof (struct exec) : 0)
-#define A_TEXT_SEEK(hdr) (N_TXTOFF(hdr) + A_TEXT_OFFSET(hdr))
-#define ADJUST_EXEC_HEADER \
-  unexec_text_start = N_TXTADDR(ohdr) + A_TEXT_OFFSET(ohdr)
-
-#endif /* not LINUX_QMAGIC */
-
-#if 0
-/* In 19.23 and 19.24, configure sometimes fails to define these.
-   It has to do with the fact that configure uses CFLAGS when linking
-   while Makefile.in.in (erroneously) fails to do so when linking temacs.  */
-#ifndef HAVE_GETTIMEOFDAY
-#define HAVE_GETTIMEOFDAY
-#endif
-#ifndef HAVE_MKDIR
-#define HAVE_MKDIR
-#endif
-#ifndef HAVE_RMDIR
-#define HAVE_RMDIR
-#endif
-#ifndef HAVE_XSCREENNUMBEROFSCREEN
-#define HAVE_XSCREENNUMBEROFSCREEN
-#endif
-#endif /* 0 */
 
 /* This is to work around mysterious gcc failures in some system versions.
    It is unlikely that Emacs changes will work around this problem;
@@ -324,12 +233,6 @@ Boston, MA 02111-1307, USA.  */
 #define HAVE_XRMSETDATABASE
 #endif
 
-/* The regex.o routines are a part of the GNU C-library used with Linux.  */
-/* However, sometimes they disagree with the src/regex.h that comes with Emacs,
-   and that can make trouble in etags.c because it gets the regex.h from Emacs
-   and the function definitions in libc.  So turn this off.  */
-/* #define REGEXP_IN_LIBC */
-
 /* Use BSD process groups, but use setpgid() instead of setpgrp() to
    actually set a process group. */
 
@@ -355,10 +258,23 @@ Boston, MA 02111-1307, USA.  */
 
 #if defined __i386__ || defined __sparc__ || defined __mc68000__ \
     || defined __alpha__ || defined __mips__ || defined __s390__ \
-    || defined __arm__ || defined __powerpc__
+    || defined __arm__ || defined __powerpc__ || defined __amd64__ \
+    || defined __ia64__
 #define GC_SETJMP_WORKS 1
 #define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
 #ifdef __mc68000__
 #define GC_LISP_OBJECT_ALIGNMENT 2
 #endif
+#ifdef __ia64__
+#define GC_MARK_SECONDARY_STACK()                              \
+  do {                                                         \
+    extern void *__libc_ia64_register_backing_store_base;      \
+    __builtin_ia64_flushrs ();                                 \
+    mark_memory (__libc_ia64_register_backing_store_base,      \
+                __builtin_ia64_bsp (), 0);                     \
+  } while (0)
+#endif
 #endif
+
+/* arch-tag: 6244ea2a-abd0-44ec-abec-ff3dcc9afea9
+   (do not change this comment) */