Move wait3, WRETCODE from src/s to configure
[bpt/emacs.git] / src / conf_post.h
CommitLineData
b429a4ee
GM
1/* conf_post.h --- configure.ac includes this via AH_BOTTOM
2
3Copyright (C) 1988, 1993-1994, 1999-2002, 2004-2012
4 Free Software Foundation, Inc.
5
6This file is part of GNU Emacs.
7
8GNU Emacs is free software: you can redistribute it and/or modify
9it under the terms of the GNU General Public License as published by
10the Free Software Foundation, either version 3 of the License, or
11(at your option) any later version.
12
13GNU Emacs is distributed in the hope that it will be useful,
14but WITHOUT ANY WARRANTY; without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16GNU General Public License for more details.
17
18You should have received a copy of the GNU General Public License
19along 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
6a381852
GM
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
c1529ded
GM
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
7552f3ee
GM
81#ifdef IRIX6_5
82#ifdef emacs
83char *_getpty();
84#endif
85
86#undef SA_RESTART /* not the same as defining BROKEN_SA_RESTART */
87#endif
88
b429a4ee
GM
89/* Define AMPERSAND_FULL_NAME if you use the convention
90 that & in the full name stands for the login id. */
91/* Turned on June 1996 supposing nobody will mind it. */
92#define AMPERSAND_FULL_NAME
93
94/* `subprocesses' should be defined if you want to
95 have code for asynchronous subprocesses
96 (as used in M-x compile and M-x shell).
97 Only MSDOS does not support this (it overrides
98 this in its config_opsysfile below). */
99
100#define subprocesses
101
102/* Include the os dependent file. */
103#ifdef config_opsysfile
104# include config_opsysfile
105#endif
106
107/* Mac OS X / GNUstep need a bit more pure memory. Of the existing knobs,
108 SYSTEM_PURESIZE_EXTRA seems like the least likely to cause problems. */
109#ifdef HAVE_NS
110#if defined NS_IMPL_GNUSTEP
111# define SYSTEM_PURESIZE_EXTRA 30000
112#elif defined DARWIN_OS
113# define SYSTEM_PURESIZE_EXTRA 200000
114#endif
115#endif
116
117#ifdef emacs /* Don't do this for lib-src. */
118/* Tell regex.c to use a type compatible with Emacs. */
119#define RE_TRANSLATE_TYPE Lisp_Object
120#define RE_TRANSLATE(TBL, C) CHAR_TABLE_TRANSLATE (TBL, C)
121#ifdef make_number
122/* If make_number is a macro, use it. */
123#define RE_TRANSLATE_P(TBL) (!EQ (TBL, make_number (0)))
124#else
125/* If make_number is a function, avoid it. */
126#define RE_TRANSLATE_P(TBL) (!(INTEGERP (TBL) && XINT (TBL) == 0))
127#endif
128#endif
129
130#include <string.h>
131#include <stdlib.h>
132
133#if __GNUC__ >= 3 /* On GCC 3.0 we might get a warning. */
134#define NO_INLINE __attribute__((noinline))
135#else
136#define NO_INLINE
137#endif
138
139#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1))
140#define EXTERNALLY_VISIBLE __attribute__((externally_visible))
141#else
142#define EXTERNALLY_VISIBLE
143#endif
144
145#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
146# define ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
147#else
148# define ATTRIBUTE_FORMAT(spec) /* empty */
149#endif
150
151#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
152# define ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
153 ATTRIBUTE_FORMAT ((__gnu_printf__, formatstring_parameter, first_argument))
154#else
155# define ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
156 ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument))
157#endif
158
159#define ATTRIBUTE_CONST _GL_ATTRIBUTE_CONST
160
161/* Some versions of GNU/Linux define noinline in their headers. */
162#ifdef noinline
163#undef noinline
164#endif
165
166/* conf_post.h ends here */