-/* This file is the configuration file for Lignux systems
- (that is, Linux-based GNU operating systems.)
- Copyright (C) 1985, 1986, 1992, 1994, 1996 Free Software Foundation, Inc.
+/* This file is the configuration file for Linux-based GNU systems
+ Copyright (C) 1985, 86, 92, 94, 96, 1999, 2002 Free Software Foundation, Inc.
This file is part of GNU Emacs.
/* #define UNIPLUS */
/* #define USG5 */
#define USG
-/* #define BSD */
+/* #define BSD_SYSTEM */
#define LINUX
+#define GNU_LINUX
/* SYSTEM_TYPE should indicate the kind of system you are using.
It sets the Lisp variable system-type. */
-#define SYSTEM_TYPE "lignux" /* All the best software is free. */
+#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. */
#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 */
#endif /* HAVE_LINUX_VERSION_H */
#endif /* emacs */
#endif /* NOT_C_CODE */
+#if defined HAVE_GRANTPT
+#define UNIX98_PTYS
+
+/* Run only once. We need a `for'-loop because the code uses
+ `continue'. */
+
+#define PTY_ITERATION for (i = 0; i < 1; i++)
+
+#ifdef HAVE_GETPT
+#define PTY_NAME_SPRINTF
+#define PTY_OPEN fd = getpt ()
+#else /* not HAVE_GETPT */
+#define PTY_NAME_SPRINTF strcpy (pty_name, "/dev/ptmx");
+#endif /* not HAVE_GETPT */
+
+/* Note that grantpt and unlockpt may fork. We must block SIGCHLD to
+ prevent sigchld_handler from intercepting the child's death. */
+
+#define PTY_TTY_NAME_SPRINTF \
+ { \
+ char *ptyname; \
+ \
+ sigblock (sigmask (SIGCHLD)); \
+ if (grantpt (fd) == -1 || unlockpt (fd) == -1 \
+ || !(ptyname = ptsname(fd))) \
+ { \
+ sigunblock (sigmask (SIGCHLD)); \
+ close (fd); \
+ return -1; \
+ } \
+ strncpy (pty_name, ptyname, sizeof (pty_name)); \
+ pty_name[sizeof (pty_name) - 1] = 0; \
+ sigunblock (sigmask (SIGCHLD)); \
+ }
+
+#else /* not HAVE_GRANTPT */
+
/* Letter to use in finding device name of first pty,
- if system supports pty's. 'p' means it is /dev/ptyp0 */
+ if system supports pty's. 'p' means it is /dev/ptyp0 */
#define FIRST_PTY_LETTER 'p'
-/*
- * Define HAVE_TERMIOS if the system provides POSIX-style
- * functions and macros for terminal control.
- */
+#endif /* not HAVE_GRANDPT */
+
+/* Define HAVE_TERMIOS if the system provides POSIX-style
+ functions and macros for terminal control. */
#define HAVE_TERMIOS
-/*
- * Define HAVE_PTYS if the system supports pty devices.
- */
+/* Define HAVE_PTYS if the system supports pty devices. */
#define HAVE_PTYS
-/* Uncomment this later when other problems are dealt with -mkj */
-
#define HAVE_SOCKETS
/* Define this symbol if your system has the functions bcopy, etc. */
The alternative is that a lock file named
/usr/spool/mail/$USER.lock. */
-/* Both are used in Linux by different mail programs. I assume that most
- people are using newer mailers that have heard of flock. Change this
- if you need to. */
+/* On GNU/Linux systems, both methods are used by various mail
+ programs. I assume that most people are using newer mailers that
+ have heard of flock. Change this if you need to. */
#define MAIL_USE_FLOCK
your system and must be used only through an encapsulation
(Which you should place, by convention, in sysdep.c). */
\f
-/* On POSIX systems the system calls are interruptible by signals
- that the user program has elected to catch. Thus the system call
- must be retried in these cases. To handle this without massive
- changes in the source code, we remap the standard system call names
- to names for our own functions in sysdep.c that do the system call
- with retries. */
-
-#define read sys_read
-#define write sys_write
-#define open sys_open
-#define close sys_close
-
-#define INTERRUPTIBLE_OPEN
-#define INTERRUPTIBLE_CLOSE
-#define INTERRUPTIBLE_IO
-
/* If you mount the proc file system somewhere other than /proc
you will have to uncomment the following and make the proper
changes */
#define LIB_GCC `$(CC) $(C_SWITCH_X_SITE) -print-libgcc-file-name`
#ifndef __ELF__
-/* Linux has crt0.o in a non-standard place */
+/* 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
-/* As of version 1.1.51, Linux does not actually implement SIGIO. */
-/* Here we assume that signal.h is already included. */
+#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. */
+
+#ifdef __mips__
+#define LD_SWITCH_SYSTEM -G 0 LD_SWITCH_X_SITE_AUX
+#else
+#define LD_SWITCH_SYSTEM LD_SWITCH_X_SITE_AUX
+#endif /* __mips__ */
+
+/* Link temacs with -z nocombreloc so that unexec works right, whether or
+ not -z combreloc is the default. GNU ld ignores unknown -z KEYWORD
+ 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
-#undef SIGIO
+#define BROKEN_SIGIO
/* Some versions of Linux define SIGURG and SIGPOLL as aliases for SIGIO.
This prevents lossage in process.c. */
-#undef SIGURG
-#undef SIGPOLL
+#define BROKEN_SIGURG
+#define BROKEN_SIGPOLL
#endif
#endif
#define NO_SIOCTL_H /* don't have sioctl.h */
-#define HAVE_VFORK
-#define HAVE_SYS_SIGLIST
-#define HAVE_GETWD /* cure conflict with getcwd? */
+#define HAVE_WAIT_HEADER
#define SYSV_SYSTEM_DIR /* use dirent.h */
/* alane@wozzle.linet.org says that -lipc is not a separate library,
since libc-4.4.1. So -lipc was deleted. */
#define LIBS_SYSTEM
+/* _BSD_SOURCE is redundant, at least in glibc2, since we define
+ _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
#ifdef __ELF__
#define UNEXEC unexelf.o
+#ifndef LINUX_MAP_SHARED_DOES_WORK
#define UNEXEC_USE_MAP_PRIVATE
#endif
+#endif
#ifdef LINUX_QMAGIC
actually set a process group. */
#define BSD_PGRPS
-#define setpgrp(pid,pgid) setpgid((pid),(pgid))
+
+#define NARROWPROTO 1
+
+/* Use mmap directly for allocating larger buffers. */
+#ifdef DOUG_LEA_MALLOC
+#undef REL_ALLOC
+#endif
+
+/* Tell that garbage collector that setjmp is known to save all
+ registers relevant for conservative garbage collection in the
+ jmp_buf. */
+/* Not all the architectures are tested, but there are Debian packages
+ for SCM and/or Guile on them, so the technique must work. See also
+ comments in alloc.c concerning setjmp and gcc. Fixme: it's
+ probably safe to make this conditional just on GCC, except for ia64
+ register window-flushing. */
+/* Don't use #cpu here since in newest development versions of GCC,
+ we must call cpp with -traditional, and that disables #cpu. */
+
+#if defined __i386__ || defined __sparc__ || defined __mc68000__ \
+ || defined __alpha__ || defined __mips__ || defined __s390__ \
+ || defined __arm__ || defined __powerpc__
+#define GC_SETJMP_WORKS 1
+#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
+#ifdef __mc68000__
+#define GC_LISP_OBJECT_ALIGNMENT 2
+#endif
+#endif