Remove src/s/darwin.h
[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 /* On AIX 3 this must be included before any other include file. */
31 #include <alloca.h>
32 #if ! HAVE_ALLOCA
33 # error "alloca not available on this machine"
34 #endif
35
36 #ifdef SIGNAL_H_AHB
37 #undef SIGNAL_H_AHB
38 #include <signal.h>
39 #endif
40
41 /* This silences a few compilation warnings on FreeBSD. */
42 #ifdef BSD_SYSTEM_AHB
43 #undef BSD_SYSTEM_AHB
44 #undef BSD_SYSTEM
45 #if __FreeBSD__ == 1
46 #define BSD_SYSTEM 199103
47 #elif __FreeBSD__ == 2
48 #define BSD_SYSTEM 199306
49 #elif __FreeBSD__ >= 3
50 #define BSD_SYSTEM 199506
51 #endif
52 #endif
53
54 #ifdef DARWIN_OS
55 #ifdef emacs
56 #define malloc unexec_malloc
57 #define realloc unexec_realloc
58 #define free unexec_free
59 /* Don't use posix_memalign because it is not compatible with unexmacosx.c. */
60 #undef HAVE_POSIX_MEMALIGN
61 #endif
62 /* The following solves the problem that Emacs hangs when evaluating
63 (make-comint "test0" "/nodir/nofile" nil "") when /nodir/nofile
64 does not exist. Also, setsid is not allowed in the vfork child's
65 context as of Darwin 9/Mac OS X 10.5. */
66 #undef HAVE_WORKING_VFORK
67 #define vfork fork
68 #endif /* DARWIN_OS */
69
70 /* We have to go this route, rather than the old hpux9 approach of
71 renaming the functions via macros. The system's stdlib.h has fully
72 prototyped declarations, which yields a conflicting definition of
73 srand48; it tries to redeclare what was once srandom to be srand48.
74 So we go with HAVE_LRAND48 being defined. Note we also undef
75 HAVE_RANDOM via configure. */
76 #ifdef HPUX
77 #undef srandom
78 #undef random
79 #endif
80
81 /* Define AMPERSAND_FULL_NAME if you use the convention
82 that & in the full name stands for the login id. */
83 /* Turned on June 1996 supposing nobody will mind it. */
84 #define AMPERSAND_FULL_NAME
85
86 /* `subprocesses' should be defined if you want to
87 have code for asynchronous subprocesses
88 (as used in M-x compile and M-x shell).
89 Only MSDOS does not support this (it overrides
90 this in its config_opsysfile below). */
91
92 #define subprocesses
93
94 /* Include the os dependent file. */
95 #ifdef config_opsysfile
96 # include config_opsysfile
97 #endif
98
99 /* Mac OS X / GNUstep need a bit more pure memory. Of the existing knobs,
100 SYSTEM_PURESIZE_EXTRA seems like the least likely to cause problems. */
101 #ifdef HAVE_NS
102 #if defined NS_IMPL_GNUSTEP
103 # define SYSTEM_PURESIZE_EXTRA 30000
104 #elif defined DARWIN_OS
105 # define SYSTEM_PURESIZE_EXTRA 200000
106 #endif
107 #endif
108
109 #ifdef emacs /* Don't do this for lib-src. */
110 /* Tell regex.c to use a type compatible with Emacs. */
111 #define RE_TRANSLATE_TYPE Lisp_Object
112 #define RE_TRANSLATE(TBL, C) CHAR_TABLE_TRANSLATE (TBL, C)
113 #ifdef make_number
114 /* If make_number is a macro, use it. */
115 #define RE_TRANSLATE_P(TBL) (!EQ (TBL, make_number (0)))
116 #else
117 /* If make_number is a function, avoid it. */
118 #define RE_TRANSLATE_P(TBL) (!(INTEGERP (TBL) && XINT (TBL) == 0))
119 #endif
120 #endif
121
122 #include <string.h>
123 #include <stdlib.h>
124
125 #if __GNUC__ >= 3 /* On GCC 3.0 we might get a warning. */
126 #define NO_INLINE __attribute__((noinline))
127 #else
128 #define NO_INLINE
129 #endif
130
131 #if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1))
132 #define EXTERNALLY_VISIBLE __attribute__((externally_visible))
133 #else
134 #define EXTERNALLY_VISIBLE
135 #endif
136
137 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
138 # define ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
139 #else
140 # define ATTRIBUTE_FORMAT(spec) /* empty */
141 #endif
142
143 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
144 # define ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
145 ATTRIBUTE_FORMAT ((__gnu_printf__, formatstring_parameter, first_argument))
146 #else
147 # define ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
148 ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument))
149 #endif
150
151 #define ATTRIBUTE_CONST _GL_ATTRIBUTE_CONST
152
153 /* Some versions of GNU/Linux define noinline in their headers. */
154 #ifdef noinline
155 #undef noinline
156 #endif
157
158 /* conf_post.h ends here */