(face_before_or_after_it_pos): Pass multibyteness
[bpt/emacs.git] / src / s / freebsd.h
CommitLineData
be210740
KH
1/* s/ file for freebsd system. */
2
62bb752f
RS
3/* Get the correct __FreeBSD_version, even if this is before that was
4 defined. */
7e6c20e8 5#ifndef __FreeBSD_version
62bb752f
RS
6#ifndef __FreeBSD__
7#define __FreeBSD_version 199401
8#elif __FreeBSD__ == 1
9#define __FreeBSD_version 199405
10#else
11#include <osreldate.h>
12#endif
7e6c20e8 13#endif /* !defined __FreeBSD_version */
62bb752f 14
3051bc72 15/* '__FreeBSD__' is defined by the preprocessor on FreeBSD-1.1 and up.
d05c42e4
RS
16 Earlier versions do not have shared libraries, so inhibit them.
17 You can inhibit them on newer systems if you wish
18 by defining NO_SHARED_LIBS. */
3051bc72
RS
19#ifndef __FreeBSD__
20#define NO_SHARED_LIBS
21#endif
be210740 22
c0096c73
RS
23
24#if 0 /* This much, alone, seemed sufficient as of 19.23.
25 But it seems better to be independent of netbsd.h. */
3051bc72 26#include "netbsd.h"
be210740 27
3051bc72
RS
28#undef LIB_GCC
29#define LIB_GCC -lgcc
30#undef NEED_ERRNO
c0096c73
RS
31#endif /* 0 */
32
33
34/* Get most of the stuff from bsd4.3 */
35#include "bsd4-3.h"
36
37/* For mem-limits.h. */
38#define BSD4_2
39
e57d8da0 40/* These aren't needed, since we have getloadavg. */
c0096c73
RS
41#undef KERNEL_FILE
42#undef LDAV_SYMBOL
43
44#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_p - (FILE)->_bf._base)
45
c0096c73
RS
46#define LIBS_DEBUG
47#define LIBS_SYSTEM -lutil
48#define LIBS_TERMCAP -ltermcap
c0096c73 49
c0096c73
RS
50#define SYSV_SYSTEM_DIR
51
52/* freebsd has POSIX-style pgrp behavior. */
53#undef BSD_PGRPS
9f9d7a9a 54#define GETPGRP_NO_ARG
c0096c73 55
62bb752f
RS
56#ifdef __ELF__
57
58#define LD_SWITCH_SYSTEM
59#define START_FILES pre-crt0.o /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtbegin.o
60#define UNEXEC unexelf.o
61#define LIB_STANDARD -lgcc -lc -lgcc /usr/lib/crtend.o /usr/lib/crtn.o
62#undef LIB_GCC
63#define LIB_GCC
64
65#else /* not __ELF__ */
66
c0096c73 67#ifndef NO_SHARED_LIBS
c683d70b 68#define LD_SWITCH_SYSTEM -e start -dc
c0096c73 69#define HAVE_TEXT_START /* No need to define `start_of_text'. */
62bb752f
RS
70#if __FreeBSD_version >= 300002
71#define START_FILES pre-crt0.o /usr/lib/aout/crt0.o
72#else /* __FreeBSD_version < 300002 */
c0096c73 73#define START_FILES pre-crt0.o /usr/lib/crt0.o
62bb752f 74#endif /* __FreeBSD_version < 300002 */
c0096c73
RS
75#define UNEXEC unexsunos4.o
76#define RUN_TIME_REMAP
62bb752f 77#define LIB_GCC -lgcc
c0096c73
RS
78
79#ifndef N_TRELOFF
80#define N_PAGSIZ(x) __LDPGSZ
81#define N_BSSADDR(x) (N_ALIGN(x, N_DATADDR(x)+x.a_data))
82#define N_TRELOFF(x) N_RELOFF(x)
83#endif
d05c42e4
RS
84#else /* NO_SHARED_LIBS */
85#ifdef __FreeBSD__ /* shared libs are available, but the user prefers
86 not to use them. */
87#define LD_SWITCH_SYSTEM -Bstatic
88#define A_TEXT_OFFSET(x) (sizeof (struct exec))
89#define A_TEXT_SEEK(hdr) (N_TXTOFF(hdr) + A_TEXT_OFFSET(hdr))
90#endif /* __FreeBSD__ */
91#endif /* NO_SHARED_LIBS */
c0096c73 92
62bb752f
RS
93#endif /* not __ELF__ */
94
c0096c73 95#define HAVE_WAIT_HEADER
487b10dd 96#define HAVE_GETLOADAVG 1
2327e4a0
GM
97#if 0
98#define HAVE_GETPAGESIZE /* configure now puts this in config.h */
99#endif
c0096c73
RS
100#define HAVE_TERMIOS
101#define NO_TERMIO
d05c42e4 102#define DECLARE_GETPWUID_WITH_UID_T
c0096c73
RS
103
104/* freebsd uses OXTABS instead of the expected TAB3. */
105#define TABDLY OXTABS
106#define TAB3 OXTABS
107
108/* this silences a few compilation warnings */
6df54671 109#undef BSD_SYSTEM
69d87222 110#if __FreeBSD__ == 1
6df54671 111#define BSD_SYSTEM 199103
69d87222 112#elif __FreeBSD__ == 2
6df54671 113#define BSD_SYSTEM 199306
165e2d55 114#elif __FreeBSD__ >= 3
3e7562b1 115#define BSD_SYSTEM 199506
69d87222 116#endif
c0096c73
RS
117
118#define WAITTYPE int
119/* get this since it won't be included if WAITTYPE is defined */
120#ifdef emacs
121#include <sys/wait.h>
122#endif
123#define WRETCODE(w) (_W_INT(w) >> 8)
22fcc83e
RS
124
125/* Needed to avoid hanging when child process writes an error message
126 and exits -- enami tsugutomo <enami@ba2.so-net.or.jp>. */
127#define vfork fork
b68f1a63
RS
128
129/* Don't close pty in process.c to make it as controlling terminal.
130 It is already a controlling terminal of subprocess, because we did
131 ioctl TIOCSCTTY. */
132#define DONT_REOPEN_PTY
145eec6f
RS
133
134/* CLASH_DETECTION is defined in bsd4-3.h.
135 In FreeBSD 2.1.5 (and other 2.1.x), this results useless symbolic links
136 remaining in /tmp or other directories with +t bit.
137 To avoid this problem, you could #undef it to use no file lock. */
138/* #undef CLASH_DETECTION */
2327e4a0
GM
139
140/* If the system's imake configuration file defines `NeedWidePrototypes'
141 as `NO', we must define NARROWPROTO manually. Such a define is
142 generated in the Makefile generated by `xmkmf'. If we don't
143 define NARROWPROTO, we will see the wrong function prototypes
144 for X functions taking float or double parameters. */
145
146#define NARROWPROTO 1
ab5d1ddf 147
ef539202
GM
148/* The following is needed to make `configure' find Xpm, Xaw3d and
149 image include and library files if using /usr/bin/gcc. That
150 compiler seems to be modified to not find headers in
151 /usr/local/include or libs in /usr/local/lib by default. */
ab5d1ddf 152
ef539202 153#define C_SWITCH_SYSTEM -I /usr/X11R6/include -I /usr/local/include -L /usr/local/lib
aace035e
GM
154
155/* Circumvent a bug in FreeBSD. In the following sequence of
156 writes/reads on a PTY, read(2) returns bogus data:
157
158 write(2) 1022 bytes
159 write(2) 954 bytes, get EAGAIN
160 read(2) 1024 bytes in process_read_output
161 read(2) 11 bytes in process_read_output
162
163 That is, read(2) returns more bytes than have ever been written
164 successfully. The 1033 bytes read are the 1022 bytes written
165 successfully after processing (for example with CRs added if the
166 terminal is set up that way which it is here). The same bytes will
167 be seen again in a later read(2), without the CRs. */
168
169#define BROKEN_PTY_READ_AFTER_EAGAIN 1