Commit | Line | Data |
---|---|---|
b429a4ee GM |
1 | /* conf_post.h --- configure.ac includes this via AH_BOTTOM |
2 | ||
3 | Copyright (C) 1988, 1993-1994, 1999-2002, 2004-2012 | |
4 | Free Software Foundation, Inc. | |
5 | ||
6 | This file is part of GNU Emacs. | |
7 | ||
8 | GNU Emacs is free software: you can redistribute it and/or modify | |
9 | it under the terms of the GNU General Public License as published by | |
10 | the Free Software Foundation, either version 3 of the License, or | |
11 | (at your option) any later version. | |
12 | ||
13 | GNU Emacs is distributed in the hope that it will be useful, | |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | GNU General Public License for more details. | |
17 | ||
18 | You should have received a copy of the GNU General Public License | |
19 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |
20 | ||
21 | /* Commentary: | |
22 | ||
23 | Rather than writing this code directly in AH_BOTTOM, we include it | |
24 | via this file. This is so that it does not get processed by | |
25 | autoheader. Eg, any undefs here would otherwise be commented out. | |
26 | */ | |
27 | ||
28 | /* Code: */ | |
29 | ||
476b1b2d GM |
30 | /* Include any platform specific configuration file. */ |
31 | #ifdef config_opsysfile | |
32 | # include config_opsysfile | |
33 | #endif | |
34 | ||
35 | #ifndef WINDOWSNT | |
b429a4ee GM |
36 | /* On AIX 3 this must be included before any other include file. */ |
37 | #include <alloca.h> | |
38 | #if ! HAVE_ALLOCA | |
39 | # error "alloca not available on this machine" | |
40 | #endif | |
476b1b2d | 41 | #endif |
b429a4ee GM |
42 | |
43 | #ifdef SIGNAL_H_AHB | |
44 | #undef SIGNAL_H_AHB | |
45 | #include <signal.h> | |
46 | #endif | |
47 | ||
48 | /* This silences a few compilation warnings on FreeBSD. */ | |
49 | #ifdef BSD_SYSTEM_AHB | |
50 | #undef BSD_SYSTEM_AHB | |
51 | #undef BSD_SYSTEM | |
52 | #if __FreeBSD__ == 1 | |
53 | #define BSD_SYSTEM 199103 | |
54 | #elif __FreeBSD__ == 2 | |
55 | #define BSD_SYSTEM 199306 | |
56 | #elif __FreeBSD__ >= 3 | |
57 | #define BSD_SYSTEM 199506 | |
58 | #endif | |
59 | #endif | |
60 | ||
6a381852 GM |
61 | #ifdef DARWIN_OS |
62 | #ifdef emacs | |
63 | #define malloc unexec_malloc | |
64 | #define realloc unexec_realloc | |
65 | #define free unexec_free | |
66 | /* Don't use posix_memalign because it is not compatible with unexmacosx.c. */ | |
67 | #undef HAVE_POSIX_MEMALIGN | |
68 | #endif | |
69 | /* The following solves the problem that Emacs hangs when evaluating | |
70 | (make-comint "test0" "/nodir/nofile" nil "") when /nodir/nofile | |
71 | does not exist. Also, setsid is not allowed in the vfork child's | |
72 | context as of Darwin 9/Mac OS X 10.5. */ | |
73 | #undef HAVE_WORKING_VFORK | |
74 | #define vfork fork | |
75 | #endif /* DARWIN_OS */ | |
76 | ||
aac1c9ac GM |
77 | /* We have to go this route, rather than the old hpux9 approach of |
78 | renaming the functions via macros. The system's stdlib.h has fully | |
79 | prototyped declarations, which yields a conflicting definition of | |
80 | srand48; it tries to redeclare what was once srandom to be srand48. | |
81 | So we go with HAVE_LRAND48 being defined. */ | |
82 | #ifdef HPUX | |
83 | #undef srandom | |
84 | #undef random | |
85 | /* We try to avoid checking for random and rint on hpux in | |
86 | configure.ac, but some other configure test might check for them as | |
87 | a dependency, so to be safe we also undefine them here. | |
88 | */ | |
89 | #undef HAVE_RANDOM | |
90 | #undef HAVE_RINT | |
91 | #endif /* HPUX */ | |
92 | ||
bb2e3a6e GM |
93 | #ifdef IRIX6_5 |
94 | #ifdef emacs | |
95 | char *_getpty(); | |
96 | #endif | |
97 | ||
98 | #undef SA_RESTART /* not the same as defining BROKEN_SA_RESTART */ | |
99 | #endif /* IRIX6_5 */ | |
100 | ||
fe3cc771 GM |
101 | #ifdef MSDOS |
102 | #ifndef __DJGPP__ | |
103 | You lose; /* Emacs for DOS must be compiled with DJGPP */ | |
104 | #endif | |
105 | #define _NAIVE_DOS_REGS | |
106 | ||
107 | /* Start of gnulib-related stuff */ | |
108 | ||
109 | /* lib/ftoastr.c wants strtold, but DJGPP only has _strtold. DJGPP > | |
110 | 2.03 has it, but it also has _strtold as a stub that jumps to | |
111 | strtold, so use _strtold in all versions. */ | |
112 | #define strtold _strtold | |
113 | ||
114 | #if __DJGPP__ > 2 || __DJGPP_MINOR__ > 3 | |
115 | # define HAVE_LSTAT 1 | |
116 | #else | |
117 | # define lstat stat | |
118 | #endif | |
119 | /* End of gnulib-related stuff. */ | |
120 | ||
121 | /* Define one of these for easier conditionals. */ | |
122 | #ifdef HAVE_X_WINDOWS | |
123 | /* We need a little extra space, see ../../lisp/loadup.el and the | |
124 | commentary below, in the non-X branch. The 140KB number was | |
125 | measured on GNU/Linux and on MS-Windows. */ | |
126 | #define SYSTEM_PURESIZE_EXTRA (-170000+140000) | |
127 | #else | |
128 | /* We need a little extra space, see ../../lisp/loadup.el. | |
129 | As of 20091024, DOS-specific files use up 62KB of pure space. But | |
130 | overall, we end up wasting 130KB of pure space, because | |
131 | BASE_PURESIZE starts at 1.47MB, while we need only 1.3MB (including | |
132 | non-DOS specific files and load history; the latter is about 55K, | |
133 | but depends on the depth of the top-level Emacs directory in the | |
134 | directory tree). Given the unknown policy of different DPMI | |
135 | hosts regarding loading of untouched pages, I'm not going to risk | |
136 | enlarging Emacs footprint by another 100+ KBytes. */ | |
137 | #define SYSTEM_PURESIZE_EXTRA (-170000+65000) | |
138 | #endif | |
2e415bb7 | 139 | #endif /* MSDOS */ |
fe3cc771 | 140 | |
268e2432 GM |
141 | #ifdef USG5_4 |
142 | /* Get FIONREAD from <sys/filio.h>. Get <sys/ttold.h> to get struct tchars. | |
143 | But get <termio.h> first to make sure ttold.h doesn't interfere. */ | |
144 | #include <sys/wait.h> | |
145 | ||
146 | #ifdef emacs | |
147 | #include <sys/filio.h> | |
148 | #include <termio.h> | |
149 | #include <sys/ttold.h> | |
150 | #include <signal.h> | |
151 | #include <sys/stream.h> | |
152 | #include <sys/stropts.h> | |
153 | #include <sys/termios.h> | |
7552f3ee | 154 | #endif |
268e2432 | 155 | #endif /* USG5_4 */ |
7552f3ee | 156 | |
b429a4ee GM |
157 | /* Mac OS X / GNUstep need a bit more pure memory. Of the existing knobs, |
158 | SYSTEM_PURESIZE_EXTRA seems like the least likely to cause problems. */ | |
159 | #ifdef HAVE_NS | |
160 | #if defined NS_IMPL_GNUSTEP | |
161 | # define SYSTEM_PURESIZE_EXTRA 30000 | |
162 | #elif defined DARWIN_OS | |
163 | # define SYSTEM_PURESIZE_EXTRA 200000 | |
164 | #endif | |
165 | #endif | |
166 | ||
167 | #ifdef emacs /* Don't do this for lib-src. */ | |
168 | /* Tell regex.c to use a type compatible with Emacs. */ | |
169 | #define RE_TRANSLATE_TYPE Lisp_Object | |
170 | #define RE_TRANSLATE(TBL, C) CHAR_TABLE_TRANSLATE (TBL, C) | |
171 | #ifdef make_number | |
172 | /* If make_number is a macro, use it. */ | |
173 | #define RE_TRANSLATE_P(TBL) (!EQ (TBL, make_number (0))) | |
174 | #else | |
175 | /* If make_number is a function, avoid it. */ | |
176 | #define RE_TRANSLATE_P(TBL) (!(INTEGERP (TBL) && XINT (TBL) == 0)) | |
177 | #endif | |
178 | #endif | |
179 | ||
180 | #include <string.h> | |
181 | #include <stdlib.h> | |
182 | ||
183 | #if __GNUC__ >= 3 /* On GCC 3.0 we might get a warning. */ | |
184 | #define NO_INLINE __attribute__((noinline)) | |
185 | #else | |
186 | #define NO_INLINE | |
187 | #endif | |
188 | ||
189 | #if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)) | |
190 | #define EXTERNALLY_VISIBLE __attribute__((externally_visible)) | |
191 | #else | |
192 | #define EXTERNALLY_VISIBLE | |
193 | #endif | |
194 | ||
195 | #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) | |
196 | # define ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) | |
197 | #else | |
198 | # define ATTRIBUTE_FORMAT(spec) /* empty */ | |
199 | #endif | |
200 | ||
201 | #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) | |
202 | # define ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \ | |
203 | ATTRIBUTE_FORMAT ((__gnu_printf__, formatstring_parameter, first_argument)) | |
204 | #else | |
205 | # define ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \ | |
206 | ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument)) | |
207 | #endif | |
208 | ||
209 | #define ATTRIBUTE_CONST _GL_ATTRIBUTE_CONST | |
210 | ||
211 | /* Some versions of GNU/Linux define noinline in their headers. */ | |
212 | #ifdef noinline | |
213 | #undef noinline | |
214 | #endif | |
215 | ||
f162bcc3 PE |
216 | #define INLINE _GL_INLINE |
217 | #define EXTERN_INLINE _GL_EXTERN_INLINE | |
218 | #define INLINE_HEADER_BEGIN _GL_INLINE_HEADER_BEGIN | |
219 | #define INLINE_HEADER_END _GL_INLINE_HEADER_END | |
220 | ||
25e65510 GM |
221 | /* Use this to suppress gcc's `...may be used before initialized' warnings. */ |
222 | #ifdef lint | |
223 | /* Use CODE only if lint checking is in effect. */ | |
224 | # define IF_LINT(Code) Code | |
225 | /* Assume that the expression COND is true. This differs in intent | |
226 | from 'assert', as it is a message from the programmer to the compiler. */ | |
227 | # define lint_assume(cond) ((cond) ? (void) 0 : abort ()) | |
228 | #else | |
229 | # define IF_LINT(Code) /* empty */ | |
230 | # define lint_assume(cond) ((void) (0 && (cond))) | |
231 | #endif | |
232 | ||
b429a4ee | 233 | /* conf_post.h ends here */ |