-/* This file is the configuration file for the Linux operating system.
- Copyright (C) 1985, 1986, 1992 Free Software Foundation, Inc.
+/* This file is the configuration file for Linux-based GNU systems
+ Copyright (C) 1985, 1986, 1992, 1994, 1996 Free Software Foundation, Inc.
This file is part of GNU Emacs.
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, 675 Mass Ave, Cambridge, MA 02139, USA. */
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
/* This file was put together by Michael K. Johnson and Rik Faith. */
/* SYSTEM_TYPE should indicate the kind of system you are using.
It sets the Lisp variable system-type. */
-#define SYSTEM_TYPE "linux" /* All the best software is free. */
+#define SYSTEM_TYPE "gnu/linux" /* All the best software is free. */
-/* Emacs can read input using SIGIO and buffering characters itself,
- or using CBREAK mode and making C-g cause SIGINT.
- The choice is controlled by the variable interrupt_input.
- Define INTERRUPT_INPUT to make interrupt_input = 1 the default (use SIGIO)
-
- SIGIO can be used only on systems that implement it (4.2 and 4.3).
- CBREAK mode has two disadvantages
- 1) At least in 4.2, it is impossible to handle the Meta key properly.
- I hear that in system V this problem does not exist.
- 2) Control-G causes output to be discarded.
- I do not know whether this can be fixed in system V.
-
- Another method of doing input is planned but not implemented.
- It would have Emacs fork off a separate process
- to read the input and send it to the true Emacs process
- through a pipe.
-*/
-
-/* There have been suggestions made to add SIGIO to Linux. If this
- is done, you may, at your discretion, uncomment the line below.
-*/
+/* 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>
-/* #define INTERRUPT_INPUT */
+#if LINUX_VERSION_CODE > 0x10200
+#define LINUX_SIGIO_DOES_WORK
+#endif /* LINUX_VERSION_CODE > 0x10200 */
+#endif /* HAVE_LINUX_VERSION_H */
+#endif /* emacs */
+#endif /* NOT_C_CODE */
/* Letter to use in finding device name of first pty,
if system supports pty's. 'p' means it is /dev/ptyp0 */
#define HAVE_TERMIOS
-/*
- * Define HAVE_TIMEVAL if the system supports the BSD style clock values.
- * Look in <sys/time.h> for a timeval structure.
- */
-
-#define HAVE_TIMEVAL
-
-/*
- * Define HAVE_SELECT if the system supports the `select' system call.
- */
-
-#define HAVE_SELECT
-
/*
* Define HAVE_PTYS if the system supports pty devices.
*/
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
so that Emacs can tell instantly when you try to modify
a file that someone else has modified in his Emacs. */
-/* #define CLASH_DETECTION */
+#define CLASH_DETECTION
/* Here, on a separate page, add any special hacks needed
to make Emacs work on this system. For example,
/* #define LINUX_LDAV_FILE "/proc/loadavg" */
-/* This is needed for disknew.c:update_frame() */
+/* This is needed for dispnew.c:update_frame */
#ifdef emacs
-#include <stdio.h>
-#ifdef _IO_STDIO_H
+#include <stdio.h> /* Get the definition of _IO_STDIO_H. */
+#if defined(_IO_STDIO_H) || defined(_STDIO_USES_IOSTREAM)
/* new C libio names */
-#define PENDING_OUTPUT_COUNT(FILE) \
+#define GNU_LIBRARY_PENDING_OUTPUT_COUNT(FILE) \
((FILE)->_IO_write_ptr - (FILE)->_IO_write_base)
#else /* !_IO_STDIO_H */
/* old C++ iostream names */
-#define PENDING_OUTPUT_COUNT(FILE) \
+#define GNU_LIBRARY_PENDING_OUTPUT_COUNT(FILE) \
((FILE)->_pptr - (FILE)->_pbase)
#endif /* !_IO_STDIO_H */
#endif /* emacs */
-/* Linux has crt0.o in a non-standard place */
+/* 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
-/* Linux has SIGIO defined, but not implemented, as of version 0.99.8
- * What an ugly kludge! This will not be necessary if the
- * INTERRUPT_INPUT define gets fully implemented.
- */
+#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. */
+
+#define LD_SWITCH_SYSTEM LD_SWITCH_X_SITE_AUX
+#endif /* __ELF__ */
+
+/* As of version 1.1.51, Linux did not actually implement SIGIO.
+ But it works in newer versions. */
+/* Here we assume that signal.h is already included. */
#ifdef emacs
-#include <signal.h>
+#ifdef LINUX_SIGIO_DOES_WORK
+#define INTERRUPT_INPUT
+#else
#undef SIGIO
-#undef signal
-#define signal sys_signal
-#include <values.h>
+/* Some versions of Linux define SIGURG and SIGPOLL as aliases for SIGIO.
+ This prevents lossage in process.c. */
+#undef SIGURG
+#undef SIGPOLL
+#endif
#endif
-
-#define HAVE_SETSID
/* This is needed for sysdep.c */
#define NO_SIOCTL_H /* don't have sioctl.h */
-#if 0 /* autoconf should take care of this. */
-#define HAVE_UNISTD_H /* for getpagesize.h */
-#define HAVE_RANDOM /* is builtin */
-#endif
-#define HAVE_GETPAGESIZE
#define HAVE_VFORK
#define HAVE_SYS_SIGLIST
#define HAVE_GETWD /* cure conflict with getcwd? */
+#define HAVE_WAIT_HEADER
-#define USE_UTIME /* don't have utimes */
#define SYSV_SYSTEM_DIR /* use dirent.h */
-#define USG_SYS_TIME /* use sys/time.h, not time.h */
#define POSIX /* affects getpagesize.h and systty.h */
#define POSIX_SIGNALS
-/* libc-linux/sysdeps/linux/i386/ulimit.c says that due to shared library, */
-/* we cannot get the maximum address for brk */
-#define ULIMIT_BREAK_VALUE (32*1024*1024)
-
/* Best not to include -lg, unless it is last on the command line */
#define LIBS_DEBUG
-#define LIBS_TERMCAP -ltermcap -lcurses /* save some space with shared libs*/
+#ifndef __ELF__
#define LIB_STANDARD -lc /* avoid -lPW */
-#define C_OPTIMIZE_SWITCH /* configure can guess this just fine */
-#ifdef HAVE_X11
-#define LD_SWITCH_SYSTEM -L/usr/X386/lib
+#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
+ that are used when linking temacs. */
+#ifdef THIS_IS_CONFIGURE
+#define C_DEBUG_SWITCH
#endif
/* Let's try this out, just in case.
and is a very common addition to previous versions. */
#ifdef TERM
-#define LIBS_MACHINE -lclient
+#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_MACHINE
+#define LIBS_SYSTEM
#define C_SWITCH_SYSTEM -D_BSD_SOURCE
#endif
+/* Paul Abrahams <abrahams@equinox.shaysnet.com> says this is needed. */
+#define LIB_MOTIF -lXm -lXpm
+
+#ifdef HAVE_LIBNCURSES
+#define TERMINFO
+#define LIBS_TERMCAP -lncurses
+#endif
+
#define HAVE_SYSVIPC
+#ifdef __ELF__
+#define UNEXEC unexelf.o
+#define UNEXEC_USE_MAP_PRIVATE
+#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;
+ therefore, this should remain permanently. */
+#ifndef HAVE_XRMSETDATABASE
+#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. */
+
+#define BSD_PGRPS
+#define setpgrp(pid,pgid) setpgid((pid),(pgid))