1 /******************************************************************************
2 *  Filename:       sw_ecrypt-config.h
3 ******************************************************************************/
4 /* ecrypt-config.h */
5 
6 /* *** Normally, it should not be necessary to edit this file. *** */
7 
8 #ifndef ECRYPT_CONFIG
9 #define ECRYPT_CONFIG
10 
11 /* ------------------------------------------------------------------------- */
12 
13 /* Guess the endianness of the target architecture. */
14 
15 /*
16  * The LITTLE endian machines:
17  */
18 #if ( ! defined(ECRYPT_LITTLE_ENDIAN))
19 #if defined(__ultrix)           /* Older MIPS */
20 #define ECRYPT_LITTLE_ENDIAN
21 #elif defined(__alpha)          /* Alpha */
22 #define ECRYPT_LITTLE_ENDIAN
23 #elif defined(i386)             /* x86 (gcc) */
24 #define ECRYPT_LITTLE_ENDIAN
25 #elif defined(__i386)           /* x86 (gcc) */
26 #define ECRYPT_LITTLE_ENDIAN
27 #elif defined(_M_IX86)          /* x86 (MSC, Borland) */
28 #define ECRYPT_LITTLE_ENDIAN
29 #elif defined(_MSC_VER)         /* x86 (surely MSC) */
30 #define ECRYPT_LITTLE_ENDIAN
31 #elif defined(__INTEL_COMPILER) /* x86 (surely Intel compiler icl.exe) */
32 #define ECRYPT_LITTLE_ENDIAN
33 
34 /*
35  * The BIG endian machines:
36  */
37 #elif defined(sun)              /* Newer Sparc's */
38 #define ECRYPT_BIG_ENDIAN
39 #elif defined(__ppc__)          /* PowerPC */
40 #define ECRYPT_BIG_ENDIAN
41 
42 /*
43  * Finally machines with UNKNOWN endianness:
44  */
45 #elif defined (_AIX)            /* RS6000 */
46 #define ECRYPT_UNKNOWN
47 #elif defined(__hpux)           /* HP-PA */
48 #define ECRYPT_UNKNOWN
49 #elif defined(__aux)            /* 68K */
50 #define ECRYPT_UNKNOWN
51 #elif defined(__dgux)           /* 88K (but P6 in latest boxes) */
52 #define ECRYPT_UNKNOWN
53 #elif defined(__sgi)            /* Newer MIPS */
54 #define ECRYPT_UNKNOWN
55 #else	                        /* Any other processor */
56 #define ECRYPT_UNKNOWN
57 #endif
58 #endif
59 
60 /* ------------------------------------------------------------------------- */
61 
62 /*
63  * Find minimal-width types to store 8-bit, 16-bit, 32-bit, and 64-bit
64  * integers.
65  *
66  * Note: to enable 64-bit types on 32-bit compilers, it might be
67  * necessary to switch from ISO C90 mode to ISO C99 mode (e.g., gcc
68  * -std=c99).
69  */
70 
71 #include <limits.h>
72 
73 /* --- check char --- */
74 
75 #if (UCHAR_MAX / 0xFU > 0xFU)
76 #ifndef I8T
77 #define I8T char
78 #define U8C(v) (v##U)
79 
80 #if (UCHAR_MAX == 0xFFU)
81 #define ECRYPT_I8T_IS_BYTE
82 #endif
83 
84 #endif
85 
86 #if (UCHAR_MAX / 0xFFU > 0xFFU)
87 #ifndef I16T
88 #define I16T char
89 #define U16C(v) (v##U)
90 #endif
91 
92 #if (UCHAR_MAX / 0xFFFFU > 0xFFFFU)
93 #ifndef I32T
94 #define I32T char
95 #define U32C(v) (v##U)
96 #endif
97 
98 #if (UCHAR_MAX / 0xFFFFFFFFU > 0xFFFFFFFFU)
99 #ifndef I64T
100 #define I64T char
101 #define U64C(v) (v##U)
102 #define ECRYPT_NATIVE64
103 #endif
104 
105 #endif
106 #endif
107 #endif
108 #endif
109 
110 /* --- check short --- */
111 
112 #if (USHRT_MAX / 0xFU > 0xFU)
113 #ifndef I8T
114 #define I8T short
115 #define U8C(v) (v##U)
116 
117 #if (USHRT_MAX == 0xFFU)
118 #define ECRYPT_I8T_IS_BYTE
119 #endif
120 
121 #endif
122 
123 #if (USHRT_MAX / 0xFFU > 0xFFU)
124 #ifndef I16T
125 #define I16T short
126 #define U16C(v) (v##U)
127 #endif
128 
129 #if (USHRT_MAX / 0xFFFFU > 0xFFFFU)
130 #ifndef I32T
131 #define I32T short
132 #define U32C(v) (v##U)
133 #endif
134 
135 #if (USHRT_MAX / 0xFFFFFFFFU > 0xFFFFFFFFU)
136 #ifndef I64T
137 #define I64T short
138 #define U64C(v) (v##U)
139 #define ECRYPT_NATIVE64
140 #endif
141 
142 #endif
143 #endif
144 #endif
145 #endif
146 
147 /* --- check int --- */
148 
149 #if (UINT_MAX / 0xFU > 0xFU)
150 #ifndef I8T
151 #define I8T int
152 #define U8C(v) (v##U)
153 
154 #if (ULONG_MAX == 0xFFU)
155 #define ECRYPT_I8T_IS_BYTE
156 #endif
157 
158 #endif
159 
160 #if (UINT_MAX / 0xFFU > 0xFFU)
161 #ifndef I16T
162 #define I16T int
163 #define U16C(v) (v##U)
164 #endif
165 
166 #if (UINT_MAX / 0xFFFFU > 0xFFFFU)
167 #ifndef I32T
168 #define I32T int
169 #define U32C(v) (v##U)
170 #endif
171 
172 #if (UINT_MAX / 0xFFFFFFFFU > 0xFFFFFFFFU)
173 #ifndef I64T
174 #define I64T int
175 #define U64C(v) (v##U)
176 #define ECRYPT_NATIVE64
177 #endif
178 
179 #endif
180 #endif
181 #endif
182 #endif
183 
184 /* --- check long --- */
185 
186 #if (ULONG_MAX / 0xFUL > 0xFUL)
187 #ifndef I8T
188 #define I8T long
189 #define U8C(v) (v##UL)
190 
191 #if (ULONG_MAX == 0xFFUL)
192 #define ECRYPT_I8T_IS_BYTE
193 #endif
194 
195 #endif
196 
197 #if (ULONG_MAX / 0xFFUL > 0xFFUL)
198 #ifndef I16T
199 #define I16T long
200 #define U16C(v) (v##UL)
201 #endif
202 
203 #if (ULONG_MAX / 0xFFFFUL > 0xFFFFUL)
204 #ifndef I32T
205 #define I32T long
206 #define U32C(v) (v##UL)
207 #endif
208 
209 #if (ULONG_MAX / 0xFFFFFFFFUL > 0xFFFFFFFFUL)
210 #ifndef I64T
211 #define I64T long
212 #define U64C(v) (v##UL)
213 #define ECRYPT_NATIVE64
214 #endif
215 
216 #endif
217 #endif
218 #endif
219 #endif
220 
221 /* --- check long long --- */
222 
223 #ifdef ULLONG_MAX
224 
225 #if (ULLONG_MAX / 0xFULL > 0xFULL)
226 #ifndef I8T
227 #define I8T long long
228 #define U8C(v) (v##ULL)
229 
230 #if (ULLONG_MAX == 0xFFULL)
231 #define ECRYPT_I8T_IS_BYTE
232 #endif
233 
234 #endif
235 
236 #if (ULLONG_MAX / 0xFFULL > 0xFFULL)
237 #ifndef I16T
238 #define I16T long long
239 #define U16C(v) (v##ULL)
240 #endif
241 
242 #if (ULLONG_MAX / 0xFFFFULL > 0xFFFFULL)
243 #ifndef I32T
244 #define I32T long long
245 #define U32C(v) (v##ULL)
246 #endif
247 
248 #if (ULLONG_MAX / 0xFFFFFFFFULL > 0xFFFFFFFFULL)
249 #ifndef I64T
250 #define I64T long long
251 #define U64C(v) (v##ULL)
252 #endif
253 
254 #endif
255 #endif
256 #endif
257 #endif
258 
259 #endif
260 
261 /* --- check __int64 --- */
262 
263 #ifdef _UI64_MAX
264 
265 #if (_UI64_MAX / 0xFFFFFFFFui64 > 0xFFFFFFFFui64)
266 #ifndef I64T
267 #define I64T __int64
268 #define U64C(v) (v##ui64)
269 #endif
270 
271 #endif
272 
273 #endif
274 
275 /* ------------------------------------------------------------------------- */
276 
277 #endif
278