diff src/s/linux.h @ 0:376386a54a3c r19-14

Import from CVS: tag r19-14
author cvs
date Mon, 13 Aug 2007 08:45:50 +0200
parents
children ac2d302a0011
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s/linux.h	Mon Aug 13 08:45:50 2007 +0200
@@ -0,0 +1,284 @@
+/* This file is the configuration file for the GNU/Linux operating system,
+   prior to version 1.1.56.
+   Copyright (C) 1985, 1986, 1992, 1994 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 XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Synched up with: FSF 19.31 (called, ahem ... lignux.h in FSF). */
+
+/* This file was put together by Michael K. Johnson and Rik Faith.  */
+
+
+/*
+ *	Define symbols to identify the version of Unix this is.
+ *	Define all the symbols that apply correctly.
+ */
+
+/* #define UNIPLUS */
+/* #define USG5 */
+#define USG
+/* #define BSD */
+#define LINUX
+
+/* 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. */
+
+/* Letter to use in finding device name of first pty,
+  if system supports pty's.  'p' means it is /dev/ptyp0  */
+
+#define FIRST_PTY_LETTER 'p'
+
+/*
+ *	Define HAVE_PTYS if the system supports pty devices.
+ */
+
+#define HAVE_PTYS
+
+/* define MAIL_USE_FLOCK if the mailer uses flock
+   to interlock access to /usr/spool/mail/$USER.
+   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. */
+
+#define MAIL_USE_FLOCK
+
+/* Here, on a separate page, add any special hacks needed
+   to make Emacs work on this system.  For example,
+   you might define certain system call names that don't
+   exist on your system, or that do different things on
+   your system and must be used only through an encapsulation
+   (Which you should place, by convention, in sysdep.c).  */
+
+/* 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 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 LINUX_LDAV_FILE "/proc/loadavg" */
+
+/* XEmacs change: The realpath() in linux's libc (4.6.27) sometimes
+ * fails with ELOOP erroneously.  For example, create a file
+ * thirty-five or so directories deep and call realpath on it.  You
+ * get ELOOP even if no symlinks at all are involved.
+ * -dkindred@cs.cmu.edu */
+#undef HAVE_REALPATH
+
+/* This is needed for dispnew.c:update_frame */
+
+#ifdef emacs
+#include <stdio.h>  /* Get the definition of _IO_STDIO_H.  */
+#if defined(_IO_STDIO_H) || defined(_STDIO_USES_IOSTREAM)
+/* new C libio names */
+#define GNU_LIBRARY_PENDING_OUTPUT_COUNT(FILE) \
+  ((FILE)->_IO_write_ptr - (FILE)->_IO_write_base)
+#else /* !_IO_STDIO_H */
+/* old C++ iostream names */
+#define GNU_LIBRARY_PENDING_OUTPUT_COUNT(FILE) \
+  ((FILE)->_pptr - (FILE)->_pbase)
+#endif /* !_IO_STDIO_H */
+#endif /* emacs */
+
+/* Ask GCC where to find libgcc.a.  */
+#define LIB_GCC `$(CC) $(C_SWITCH_X_SITE) -print-libgcc-file-name`
+
+#ifndef __ELF__
+/* Linux 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
+
+/* Check the version number of Linux--if it is at least 1.1.56,
+   it is safe to use SIGIO.  If we can't find version.h (could happen
+   if the user did a `make distclean' or something similar on the
+   kernel distribution) just assume that SIGIO works, because nearly
+   everybody should be running Linux 1.2 or later by now. */
+#ifndef NOT_C_CODE
+#ifdef emacs
+#ifdef HAVE_LINUX_VERSION_H
+#include <linux/version.h>
+
+#if LINUX_VERSION_CODE < 0x10138
+#define BROKEN_SIGIO
+#endif /* LINUX_VERSION_CODE < 0x10138 */
+#endif /* HAVE_LINUX_VERSION_H */
+#endif /* emacs */
+#endif /* NOT_C_CODE */
+
+/* This is needed for sysdep.c */
+
+#define NO_SIOCTL_H           /* don't have sioctl.h */
+
+#define HAVE_SYS_SIGLIST
+#define HAVE_WAIT_HEADER
+
+#define POSIX                 /* affects getpagesize.h and systty.h */
+
+/* Best not to include -lg, unless it is last on the command line */
+#define LIBS_DEBUG
+#ifndef HAVE_NCURSES /* XEmacs change */
+#define LIBS_TERMCAP -ltermcap -lcurses /* save some space with shared libs*/
+#endif
+#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
+   that are used when linking temacs.  */
+#ifdef THIS_IS_CONFIGURE
+#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 */
+
+#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
+
+/* XFree86 is built with -DFUNCPROTO=11 -DNARROWPROTO so we better build
+   XEmacs with these switches too so that X functions get called correctly.
+   At least XawScrollbarSetThumb needs this. */ 
+#define C_SWITCH_SYSTEM -DFUNCPROTO=11 -DNARROWPROTO -D_BSD_SOURCE
+#endif
+
+/* Paul Abrahams <abrahams@equinox.shaysnet.com> says this is needed.  */
+#define LIB_MOTIF -lXm -lXpm
+
+/* XEmacs change: configure doesn't find this because math.h aliases
+   rint to __rint so that it's not found. */
+#define HAVE_RINT 1
+
+#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
+
+/* XEmacs addition: */
+/* Linux defines these in <values.h>, but they can't be used in #if's
+   Include values.h now so that we don't get complaints if it's included later. */
+
+#include <values.h>
+#undef  SHORTBITS
+#undef  INTBITS
+#undef  LONGBITS
+
+/* 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.  */
+/* XEmacs: in any case, Mule uses different regex routines. */
+/* #define REGEXP_IN_LIBC */
+
+/* XEmacs change: the standard linux libc includes regex routines in
+   it.  We have to use our own and have to avoid name conflicts. */
+
+#define re_compile_pattern sys_re_compile_pattern
+#define re_search sys_re_search
+#define re_search_2 sys_re_search_2
+#define re_match_2 sys_re_match_2
+#define re_max_failures sys_re_max_failures
+#define re_set_syntax sys_re_set_syntax
+#define re_set_registers sys_re_set_registers
+#define re_compile_fastmap sys_re_compile_fastmap
+#define re_match sys_re_match
+#define regcomp sys_regcomp
+#define regexec sys_regexec
+#define regerror sys_regerror
+#define regfree sys_regfree
+
+/* XEmacs: Damon Lipparelli says that he incorrectly gets this
+   defined on his system */
+#undef GETTIMEOFDAY_ONE_ARGUMENT
+
+/* Use BSD process groups, but use setpgid() instead of setpgrp() to
+   actually set a process group. */
+
+/* Formerly "BSD_PGRPS" */
+
+#if 0 /* XEmacs (ben): I'm not convinced this is necessary and it has
+	 lots of possibility of fuckup. */
+#define SIGIO_REQUIRES_SEPARATE_PROCESS_GROUP
+#endif
+/* XEmacs: removed setpgrp() definition because we use setpgid() when
+   it's available, and autodetect it. */