c4a27c10d8551471e8a2f185dd8e4034f52193db
[bpt/emacs.git] / src / conf_post.h
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
30 /* Include any platform specific configuration file. */
31 #ifdef config_opsysfile
32 # include config_opsysfile
33 #endif
34
35 #ifndef WINDOWSNT
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
41 #endif
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
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
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
92
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
101 #ifdef USG5_4
102 /* Get FIONREAD from <sys/filio.h>. Get <sys/ttold.h> to get struct tchars.
103 But get <termio.h> first to make sure ttold.h doesn't interfere. */
104 #include <sys/wait.h>
105
106 #ifdef emacs
107 #include <sys/filio.h>
108 #include <termio.h>
109 #include <sys/ttold.h>
110 #include <signal.h>
111 #include <sys/stream.h>
112 #include <sys/stropts.h>
113 #include <sys/termios.h>
114 #endif
115 #endif /* USG5_4 */
116
117 /* Mac OS X / GNUstep need a bit more pure memory. Of the existing knobs,
118 SYSTEM_PURESIZE_EXTRA seems like the least likely to cause problems. */
119 #ifdef HAVE_NS
120 #if defined NS_IMPL_GNUSTEP
121 # define SYSTEM_PURESIZE_EXTRA 30000
122 #elif defined DARWIN_OS
123 # define SYSTEM_PURESIZE_EXTRA 200000
124 #endif
125 #endif
126
127 #ifdef emacs /* Don't do this for lib-src. */
128 /* Tell regex.c to use a type compatible with Emacs. */
129 #define RE_TRANSLATE_TYPE Lisp_Object
130 #define RE_TRANSLATE(TBL, C) CHAR_TABLE_TRANSLATE (TBL, C)
131 #ifdef make_number
132 /* If make_number is a macro, use it. */
133 #define RE_TRANSLATE_P(TBL) (!EQ (TBL, make_number (0)))
134 #else
135 /* If make_number is a function, avoid it. */
136 #define RE_TRANSLATE_P(TBL) (!(INTEGERP (TBL) && XINT (TBL) == 0))
137 #endif
138 #endif
139
140 #include <string.h>
141 #include <stdlib.h>
142
143 #if __GNUC__ >= 3 /* On GCC 3.0 we might get a warning. */
144 #define NO_INLINE __attribute__((noinline))
145 #else
146 #define NO_INLINE
147 #endif
148
149 #if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1))
150 #define EXTERNALLY_VISIBLE __attribute__((externally_visible))
151 #else
152 #define EXTERNALLY_VISIBLE
153 #endif
154
155 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
156 # define ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
157 #else
158 # define ATTRIBUTE_FORMAT(spec) /* empty */
159 #endif
160
161 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
162 # define ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
163 ATTRIBUTE_FORMAT ((__gnu_printf__, formatstring_parameter, first_argument))
164 #else
165 # define ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
166 ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument))
167 #endif
168
169 #define ATTRIBUTE_CONST _GL_ATTRIBUTE_CONST
170
171 /* Some versions of GNU/Linux define noinline in their headers. */
172 #ifdef noinline
173 #undef noinline
174 #endif
175
176 /* conf_post.h ends here */