Move LIBS_SYSTEM from cpp to configure.
[bpt/emacs.git] / src / s / freebsd.h
1 /* System description header for FreeBSD systems.
2
3 Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
4 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
5 Free Software Foundation, Inc.
6
7 Author: Shawn M. Carey
8 (according to authors.el)
9
10 This file is part of GNU Emacs.
11
12 GNU Emacs is free software: you can redistribute it and/or modify
13 it under the terms of the GNU General Public License as published by
14 the Free Software Foundation, either version 3 of the License, or
15 (at your option) any later version.
16
17 GNU Emacs is distributed in the hope that it will be useful,
18 but WITHOUT ANY WARRANTY; without even the implied warranty of
19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 GNU General Public License for more details.
21
22 You should have received a copy of the GNU General Public License
23 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
24
25 /* Get most of the stuff from bsd-common */
26 #include "bsd-common.h"
27
28 /* For mem-limits.h. */
29 #define BSD4_2
30
31 #define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_p - (FILE)->_bf._base)
32
33 #undef LIB_GCC
34 #define LIB_GCC
35
36 #define HAVE_GETLOADAVG 1
37 #define DECLARE_GETPWUID_WITH_UID_T
38
39 /* this silences a few compilation warnings */
40 #undef BSD_SYSTEM
41 #if __FreeBSD__ == 1
42 #define BSD_SYSTEM 199103
43 #elif __FreeBSD__ == 2
44 #define BSD_SYSTEM 199306
45 #elif __FreeBSD__ >= 3
46 #define BSD_SYSTEM 199506
47 #endif
48
49 /* Don't close pty in process.c to make it as controlling terminal.
50 It is already a controlling terminal of subprocess, because we did
51 ioctl TIOCSCTTY. */
52 #define DONT_REOPEN_PTY
53
54 /* Circumvent a bug in FreeBSD. In the following sequence of
55 writes/reads on a PTY, read(2) returns bogus data:
56
57 write(2) 1022 bytes
58 write(2) 954 bytes, get EAGAIN
59 read(2) 1024 bytes in process_read_output
60 read(2) 11 bytes in process_read_output
61
62 That is, read(2) returns more bytes than have ever been written
63 successfully. The 1033 bytes read are the 1022 bytes written
64 successfully after processing (for example with CRs added if the
65 terminal is set up that way which it is here). The same bytes will
66 be seen again in a later read(2), without the CRs. */
67
68 #define BROKEN_PTY_READ_AFTER_EAGAIN 1
69
70 /* Tell that garbage collector that setjmp is known to save all
71 registers relevant for conservative garbage collection in the
72 jmp_buf. */
73
74 #define GC_SETJMP_WORKS 1
75
76 /* Use the GC_MAKE_GCPROS_NOOPS (see lisp.h) method for marking the
77 stack. */
78
79 #define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
80
81 /* Define USE_MMAP_FOR_BUFFERS to let Emacs use mmap(2) to allocate
82 buffer text. This overrides REL_ALLOC. */
83
84 #define USE_MMAP_FOR_BUFFERS 1
85
86 /* arch-tag: 426529ca-b7c4-448f-b10a-d4dcdc9c78eb
87 (do not change this comment) */