beta-0.89.2
[luatex.git] / source / texk / web2c / w2c / config.h
blobab76a1b5794b4ca562ac7fdb75c93f9d72f7d188
1 /* w2c/config.h: All .c files include this first.
3 Copyright 1995, 1996, 2006, 2007, 2009, 2010, 2012, 2014,
4 2015 Karl Berry.
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, see <http://www.gnu.org/licenses/. */
19 #ifndef WEB2C_CONFIG_H
20 #define WEB2C_CONFIG_H
22 /* The stuff from the path searching library. */
23 #include <kpathsea/config.h>
24 #include <w2c/c-auto.h>
25 #include <stdarg.h>
27 /* How to open a binary file. */
28 #include <kpathsea/c-fopen.h>
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
34 /* The smallest signed type: use `signed char' if ANSI C, `short' if
35 char is unsigned, otherwise `char'. */
36 #ifndef SCHAR_TYPE
37 #if __STDC__
38 #define SCHAR_TYPE signed char
39 #else /* not __STDC */
40 #ifdef __CHAR_UNSIGNED__
41 #define SCHAR_TYPE short
42 #else
43 #define SCHAR_TYPE char
44 #endif
45 #endif /* not __STDC__ */
46 #endif /* not SCHAR_TYPE */
47 typedef SCHAR_TYPE schar;
49 /* The type `integer' must be a signed integer capable of holding at
50 least the range of numbers (-2^31)..(2^31-1). If your compiler goes
51 to great lengths to make programs fail, you might have to change this
52 definition. If this changes, you may have to modify
53 web2c/fixwrites.c, since it generates code to do integer output using
54 "%ld", and casts all integral values to be printed to `long'.
56 If you define your own INTEGER_TYPE, you have to define your own
57 INTEGER_MAX and INTEGER_MIN, too. */
58 #ifndef INTEGER_TYPE
60 #if SIZEOF_LONG > 4 && !defined (NO_DUMP_SHARE)
61 /* If we have 64-bit longs and want to share format files (with 32-bit
62 machines), use `int'. */
63 #define INTEGER_IS_INT
64 #endif
66 #ifdef INTEGER_IS_INT
67 #define INTEGER_TYPE int
68 #define INTEGER_MAX INT_MAX
69 #define INTEGER_MIN INT_MIN
70 #else
71 #define INTEGER_TYPE long
72 #define INTEGER_MAX LONG_MAX
73 #define INTEGER_MIN LONG_MIN
74 #endif /* not INTEGER_IS_INT */
76 #endif /* not INTEGER_TYPE */
78 typedef INTEGER_TYPE integer;
80 /* We need a type that's at least off_t wide */
81 typedef off_t longinteger;
83 /* To print file offsets we cast them to `LONGINTEGER_TYPE' (or
84 `unsigned LONGINTEGER_TYPE') and use the conversion specifier
85 `"%" LONGINTEGER_PRI "d"' (or `"%" LONGINTEGER_PRI "u"'). */
86 #if defined(WIN32)
87 #define LONGINTEGER_TYPE __int64
88 #define LONGINTEGER_PRI "I64"
89 #elif SIZEOF_LONG < SIZEOF_OFF_T
90 #define LONGINTEGER_TYPE long long
91 #define LONGINTEGER_PRI "ll"
92 #else
93 #define LONGINTEGER_TYPE long
94 #define LONGINTEGER_PRI "l"
95 #endif
97 /* We also need a genuine 64-bit integer type. */
98 #if defined(WIN32)
99 typedef __int64 integer64;
100 #else
101 typedef int64_t integer64;
102 #endif
104 /* And we need uintptr_t. */
105 #ifndef HAVE_UINTPTR_T
106 # if SIZEOF_VOID_P == SIZEOF_INT
107 typedef unsigned int uintptr_t;
108 # elif SIZEOF_VOID_P == SIZEOF_LONG
109 typedef unsigned long uintptr_t;
110 # endif
111 #endif
113 /* I don't want to write a configure test for remove when all Unix
114 machines have unlink. But, for the sake of non-Unix machines that
115 support ANSI C... */
116 #if !defined (unix) && !defined (__unix__) && defined (__STDC__) && !defined (unlink)
117 #define unlink remove
118 #endif
120 /* Window support on the Amiga is just for the Amiga. */
121 #ifdef AMIGA
122 #define AMIGAWIN
123 #endif
125 /* Window support for WIN32 machines. */
126 #ifdef WIN32
127 #define WIN32WIN
128 #endif
130 #if defined __GNUC__ && __GNUC__ >=3
131 #define WEB2C_NORETURN __attribute__((__noreturn__))
132 #else
133 #define WEB2C_NORETURN
134 #endif
136 /* From uexit.c. This is here because the lib/ and web2c/ routines
137 themselves can use it, but they don't need cpascal.h. */
138 WEB2C_NORETURN
139 extern void uexit (int status);
141 /* usage.c */
142 extern void usage (const_string progname);
143 extern void usagehelp (const_string *message, const_string bug_email);
145 #ifdef __cplusplus
147 #endif
149 #endif /* not WEB2C_CONFIG_H */