1 /* w2c/config.h: All .c files include this first. 2 3 Copyright 1995, 1996, 2006, 2007, 2009, 2010, 2012, 2014, 4 2015 Karl Berry. 5 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. 10 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. 15 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/. */ 18 19 #ifndef WEB2C_CONFIG_H 20 #define WEB2C_CONFIG_H 21 22 /* The stuff from the path searching library. */ 23 #include <kpathsea/config.h> 24 #include <w2c/c-auto.h> 25 #include <stdarg.h> 26 27 /* How to open a binary file. */ 28 #include <kpathsea/c-fopen.h> 29 30 #ifdef __cplusplus 31 extern "C" { 32 #endif 33 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; 48 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'. 55 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 59 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 65 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 */ 75 76 #endif /* not INTEGER_TYPE */ 77 78 typedef INTEGER_TYPE integer; 79 80 /* We need a type that's at least off_t wide */ 81 typedef off_t longinteger; 82 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 96 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 103 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 112 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 119 120 /* Window support on the Amiga is just for the Amiga. */ 121 #ifdef AMIGA 122 #define AMIGAWIN 123 #endif 124 125 /* Window support for WIN32 machines. */ 126 #ifdef WIN32 127 #define WIN32WIN 128 #endif 129 130 #if defined __GNUC__ && __GNUC__ >=3 131 #define WEB2C_NORETURN __attribute__((__noreturn__)) 132 #else 133 #define WEB2C_NORETURN 134 #endif 135 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); 140 141 /* usage.c */ 142 extern void usage (const_string progname); 143 extern void usagehelp (const_string *message, const_string bug_email); 144 145 #ifdef __cplusplus 146 } 147 #endif 148 149 #endif /* not WEB2C_CONFIG_H */ 150