Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Kitware
GitHub Repository: Kitware/CMake
Path: blob/master/Utilities/cmcurl/include/curl/system.h
3158 views
1
#ifndef CURLINC_SYSTEM_H
2
#define CURLINC_SYSTEM_H
3
/***************************************************************************
4
* _ _ ____ _
5
* Project ___| | | | _ \| |
6
* / __| | | | |_) | |
7
* | (__| |_| | _ <| |___
8
* \___|\___/|_| \_\_____|
9
*
10
* Copyright (C) Daniel Stenberg, <[email protected]>, et al.
11
*
12
* This software is licensed as described in the file COPYING, which
13
* you should have received as part of this distribution. The terms
14
* are also available at https://curl.se/docs/copyright.html.
15
*
16
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
17
* copies of the Software, and permit persons to whom the Software is
18
* furnished to do so, under the terms of the COPYING file.
19
*
20
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
21
* KIND, either express or implied.
22
*
23
* SPDX-License-Identifier: curl
24
*
25
***************************************************************************/
26
27
/*
28
* Try to keep one section per platform, compiler and architecture, otherwise,
29
* if an existing section is reused for a different one and later on the
30
* original is adjusted, probably the piggybacking one can be adversely
31
* changed.
32
*
33
* In order to differentiate between platforms/compilers/architectures use
34
* only compiler built-in predefined preprocessor symbols.
35
*
36
* curl_off_t
37
* ----------
38
*
39
* For any given platform/compiler curl_off_t MUST be typedef'ed to a 64-bit
40
* wide signed integral data type. The width of this data type must remain
41
* constant and independent of any possible large file support settings.
42
*
43
* As a general rule, curl_off_t shall not be mapped to off_t. This rule shall
44
* only be violated if off_t is the only 64-bit data type available and the
45
* size of off_t is independent of large file support settings. Keep your
46
* build on the safe side avoiding an off_t gating. If you have a 64-bit
47
* off_t then take for sure that another 64-bit data type exists, dig deeper
48
* and you will find it.
49
*
50
*/
51
52
#ifdef __DJGPP__
53
# define CURL_TYPEOF_CURL_OFF_T long long
54
# define CURL_FORMAT_CURL_OFF_T "lld"
55
# define CURL_FORMAT_CURL_OFF_TU "llu"
56
# define CURL_SUFFIX_CURL_OFF_T LL
57
# define CURL_SUFFIX_CURL_OFF_TU ULL
58
# define CURL_TYPEOF_CURL_SOCKLEN_T int
59
60
#elif defined(__BORLANDC__)
61
# define CURL_TYPEOF_CURL_OFF_T __int64
62
# define CURL_FORMAT_CURL_OFF_T "I64d"
63
# define CURL_FORMAT_CURL_OFF_TU "I64u"
64
# define CURL_SUFFIX_CURL_OFF_T i64
65
# define CURL_SUFFIX_CURL_OFF_TU ui64
66
# define CURL_TYPEOF_CURL_SOCKLEN_T int
67
68
#elif defined(__POCC__)
69
# if defined(_MSC_VER)
70
# define CURL_TYPEOF_CURL_OFF_T __int64
71
# define CURL_FORMAT_CURL_OFF_T "I64d"
72
# define CURL_FORMAT_CURL_OFF_TU "I64u"
73
# define CURL_SUFFIX_CURL_OFF_T i64
74
# define CURL_SUFFIX_CURL_OFF_TU ui64
75
# else
76
# define CURL_TYPEOF_CURL_OFF_T long long
77
# define CURL_FORMAT_CURL_OFF_T "lld"
78
# define CURL_FORMAT_CURL_OFF_TU "llu"
79
# define CURL_SUFFIX_CURL_OFF_T LL
80
# define CURL_SUFFIX_CURL_OFF_TU ULL
81
# endif
82
# define CURL_TYPEOF_CURL_SOCKLEN_T int
83
84
#elif defined(__LCC__)
85
# if defined(__MCST__) /* MCST eLbrus Compiler Collection */
86
# define CURL_TYPEOF_CURL_OFF_T long
87
# define CURL_FORMAT_CURL_OFF_T "ld"
88
# define CURL_FORMAT_CURL_OFF_TU "lu"
89
# define CURL_SUFFIX_CURL_OFF_T L
90
# define CURL_SUFFIX_CURL_OFF_TU UL
91
# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
92
# define CURL_PULL_SYS_TYPES_H 1
93
# define CURL_PULL_SYS_SOCKET_H 1
94
# else /* Local (or Little) C Compiler */
95
# define CURL_TYPEOF_CURL_OFF_T long
96
# define CURL_FORMAT_CURL_OFF_T "ld"
97
# define CURL_FORMAT_CURL_OFF_TU "lu"
98
# define CURL_SUFFIX_CURL_OFF_T L
99
# define CURL_SUFFIX_CURL_OFF_TU UL
100
# define CURL_TYPEOF_CURL_SOCKLEN_T int
101
# endif
102
103
#elif defined(macintosh)
104
# include <ConditionalMacros.h>
105
# if TYPE_LONGLONG
106
# define CURL_TYPEOF_CURL_OFF_T long long
107
# define CURL_FORMAT_CURL_OFF_T "lld"
108
# define CURL_FORMAT_CURL_OFF_TU "llu"
109
# define CURL_SUFFIX_CURL_OFF_T LL
110
# define CURL_SUFFIX_CURL_OFF_TU ULL
111
# else
112
# define CURL_TYPEOF_CURL_OFF_T long
113
# define CURL_FORMAT_CURL_OFF_T "ld"
114
# define CURL_FORMAT_CURL_OFF_TU "lu"
115
# define CURL_SUFFIX_CURL_OFF_T L
116
# define CURL_SUFFIX_CURL_OFF_TU UL
117
# endif
118
# define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int
119
120
#elif defined(__TANDEM)
121
# if !defined(__LP64)
122
# define CURL_TYPEOF_CURL_OFF_T long long
123
# define CURL_FORMAT_CURL_OFF_T "lld"
124
# define CURL_FORMAT_CURL_OFF_TU "llu"
125
# define CURL_SUFFIX_CURL_OFF_T LL
126
# define CURL_SUFFIX_CURL_OFF_TU ULL
127
# define CURL_TYPEOF_CURL_SOCKLEN_T int
128
# else
129
# define CURL_TYPEOF_CURL_OFF_T long
130
# define CURL_FORMAT_CURL_OFF_T "ld"
131
# define CURL_FORMAT_CURL_OFF_TU "lu"
132
# define CURL_SUFFIX_CURL_OFF_T L
133
# define CURL_SUFFIX_CURL_OFF_TU UL
134
# define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int
135
# endif
136
137
#elif defined(UNDER_CE)
138
# if defined(__MINGW32CE__)
139
# define CURL_TYPEOF_CURL_OFF_T long long
140
# define CURL_FORMAT_CURL_OFF_T "lld"
141
# define CURL_FORMAT_CURL_OFF_TU "llu"
142
# define CURL_SUFFIX_CURL_OFF_T LL
143
# define CURL_SUFFIX_CURL_OFF_TU ULL
144
# define CURL_TYPEOF_CURL_SOCKLEN_T int
145
# else
146
# define CURL_TYPEOF_CURL_OFF_T __int64
147
# define CURL_FORMAT_CURL_OFF_T "I64d"
148
# define CURL_FORMAT_CURL_OFF_TU "I64u"
149
# define CURL_SUFFIX_CURL_OFF_T i64
150
# define CURL_SUFFIX_CURL_OFF_TU ui64
151
# define CURL_TYPEOF_CURL_SOCKLEN_T int
152
# endif
153
154
#elif defined(__MINGW32__)
155
# include <inttypes.h>
156
# define CURL_TYPEOF_CURL_OFF_T long long
157
# define CURL_FORMAT_CURL_OFF_T PRId64
158
# define CURL_FORMAT_CURL_OFF_TU PRIu64
159
# define CURL_SUFFIX_CURL_OFF_T LL
160
# define CURL_SUFFIX_CURL_OFF_TU ULL
161
# define CURL_TYPEOF_CURL_SOCKLEN_T int
162
# define CURL_PULL_SYS_TYPES_H 1
163
164
#elif defined(__VMS)
165
# if defined(__VAX)
166
# define CURL_TYPEOF_CURL_OFF_T long
167
# define CURL_FORMAT_CURL_OFF_T "ld"
168
# define CURL_FORMAT_CURL_OFF_TU "lu"
169
# define CURL_SUFFIX_CURL_OFF_T L
170
# define CURL_SUFFIX_CURL_OFF_TU UL
171
# else
172
# define CURL_TYPEOF_CURL_OFF_T long long
173
# define CURL_FORMAT_CURL_OFF_T "lld"
174
# define CURL_FORMAT_CURL_OFF_TU "llu"
175
# define CURL_SUFFIX_CURL_OFF_T LL
176
# define CURL_SUFFIX_CURL_OFF_TU ULL
177
# endif
178
# define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int
179
180
#elif defined(__OS400__)
181
# define CURL_TYPEOF_CURL_OFF_T long long
182
# define CURL_FORMAT_CURL_OFF_T "lld"
183
# define CURL_FORMAT_CURL_OFF_TU "llu"
184
# define CURL_SUFFIX_CURL_OFF_T LL
185
# define CURL_SUFFIX_CURL_OFF_TU ULL
186
# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
187
# define CURL_PULL_SYS_TYPES_H 1
188
# define CURL_PULL_SYS_SOCKET_H 1
189
190
#elif defined(__MVS__)
191
# if defined(_LONG_LONG)
192
# define CURL_TYPEOF_CURL_OFF_T long long
193
# define CURL_FORMAT_CURL_OFF_T "lld"
194
# define CURL_FORMAT_CURL_OFF_TU "llu"
195
# define CURL_SUFFIX_CURL_OFF_T LL
196
# define CURL_SUFFIX_CURL_OFF_TU ULL
197
# else /* _LP64 and default */
198
# define CURL_TYPEOF_CURL_OFF_T long
199
# define CURL_FORMAT_CURL_OFF_T "ld"
200
# define CURL_FORMAT_CURL_OFF_TU "lu"
201
# define CURL_SUFFIX_CURL_OFF_T L
202
# define CURL_SUFFIX_CURL_OFF_TU UL
203
# endif
204
# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
205
# define CURL_PULL_SYS_TYPES_H 1
206
# define CURL_PULL_SYS_SOCKET_H 1
207
208
#elif defined(__370__)
209
# if defined(__IBMC__) || defined(__IBMCPP__)
210
# if defined(_LONG_LONG)
211
# define CURL_TYPEOF_CURL_OFF_T long long
212
# define CURL_FORMAT_CURL_OFF_T "lld"
213
# define CURL_FORMAT_CURL_OFF_TU "llu"
214
# define CURL_SUFFIX_CURL_OFF_T LL
215
# define CURL_SUFFIX_CURL_OFF_TU ULL
216
# else /* _LP64 and default */
217
# define CURL_TYPEOF_CURL_OFF_T long
218
# define CURL_FORMAT_CURL_OFF_T "ld"
219
# define CURL_FORMAT_CURL_OFF_TU "lu"
220
# define CURL_SUFFIX_CURL_OFF_T L
221
# define CURL_SUFFIX_CURL_OFF_TU UL
222
# endif
223
# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
224
# define CURL_PULL_SYS_TYPES_H 1
225
# define CURL_PULL_SYS_SOCKET_H 1
226
# endif
227
228
#elif defined(TPF)
229
# define CURL_TYPEOF_CURL_OFF_T long
230
# define CURL_FORMAT_CURL_OFF_T "ld"
231
# define CURL_FORMAT_CURL_OFF_TU "lu"
232
# define CURL_SUFFIX_CURL_OFF_T L
233
# define CURL_SUFFIX_CURL_OFF_TU UL
234
# define CURL_TYPEOF_CURL_SOCKLEN_T int
235
236
#elif defined(__TINYC__) /* also known as tcc */
237
# define CURL_TYPEOF_CURL_OFF_T long long
238
# define CURL_FORMAT_CURL_OFF_T "lld"
239
# define CURL_FORMAT_CURL_OFF_TU "llu"
240
# define CURL_SUFFIX_CURL_OFF_T LL
241
# define CURL_SUFFIX_CURL_OFF_TU ULL
242
# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
243
# define CURL_PULL_SYS_TYPES_H 1
244
# define CURL_PULL_SYS_SOCKET_H 1
245
246
#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) /* Oracle Solaris Studio */
247
# if !defined(__LP64) && (defined(__ILP32) || \
248
defined(__i386) || \
249
defined(__sparcv8) || \
250
defined(__sparcv8plus))
251
# define CURL_TYPEOF_CURL_OFF_T long long
252
# define CURL_FORMAT_CURL_OFF_T "lld"
253
# define CURL_FORMAT_CURL_OFF_TU "llu"
254
# define CURL_SUFFIX_CURL_OFF_T LL
255
# define CURL_SUFFIX_CURL_OFF_TU ULL
256
# elif defined(__LP64) || \
257
defined(__amd64) || defined(__sparcv9)
258
# define CURL_TYPEOF_CURL_OFF_T long
259
# define CURL_FORMAT_CURL_OFF_T "ld"
260
# define CURL_FORMAT_CURL_OFF_TU "lu"
261
# define CURL_SUFFIX_CURL_OFF_T L
262
# define CURL_SUFFIX_CURL_OFF_TU UL
263
# endif
264
# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
265
# define CURL_PULL_SYS_TYPES_H 1
266
# define CURL_PULL_SYS_SOCKET_H 1
267
268
#elif defined(__xlc__) /* IBM xlc compiler */
269
# if !defined(_LP64)
270
# define CURL_TYPEOF_CURL_OFF_T long long
271
# define CURL_FORMAT_CURL_OFF_T "lld"
272
# define CURL_FORMAT_CURL_OFF_TU "llu"
273
# define CURL_SUFFIX_CURL_OFF_T LL
274
# define CURL_SUFFIX_CURL_OFF_TU ULL
275
# else
276
# define CURL_TYPEOF_CURL_OFF_T long
277
# define CURL_FORMAT_CURL_OFF_T "ld"
278
# define CURL_FORMAT_CURL_OFF_TU "lu"
279
# define CURL_SUFFIX_CURL_OFF_T L
280
# define CURL_SUFFIX_CURL_OFF_TU UL
281
# endif
282
# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
283
# define CURL_PULL_SYS_TYPES_H 1
284
# define CURL_PULL_SYS_SOCKET_H 1
285
286
#elif defined(__hpux) /* HP aCC compiler */
287
# if !defined(_LP64)
288
# define CURL_TYPEOF_CURL_OFF_T long long
289
# define CURL_FORMAT_CURL_OFF_T "lld"
290
# define CURL_FORMAT_CURL_OFF_TU "llu"
291
# define CURL_SUFFIX_CURL_OFF_T LL
292
# define CURL_SUFFIX_CURL_OFF_TU ULL
293
# else
294
# define CURL_TYPEOF_CURL_OFF_T long
295
# define CURL_FORMAT_CURL_OFF_T "ld"
296
# define CURL_FORMAT_CURL_OFF_TU "lu"
297
# define CURL_SUFFIX_CURL_OFF_T L
298
# define CURL_SUFFIX_CURL_OFF_TU UL
299
# endif
300
# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
301
# define CURL_PULL_SYS_TYPES_H 1
302
# define CURL_PULL_SYS_SOCKET_H 1
303
304
/* ===================================== */
305
/* KEEP MSVC THE PENULTIMATE ENTRY */
306
/* ===================================== */
307
308
#elif defined(_MSC_VER)
309
# if (_MSC_VER >= 1800)
310
# include <inttypes.h>
311
# define CURL_FORMAT_CURL_OFF_T PRId64
312
# define CURL_FORMAT_CURL_OFF_TU PRIu64
313
# else
314
# define CURL_FORMAT_CURL_OFF_T "I64d"
315
# define CURL_FORMAT_CURL_OFF_TU "I64u"
316
# endif
317
# define CURL_TYPEOF_CURL_OFF_T __int64
318
# define CURL_SUFFIX_CURL_OFF_T i64
319
# define CURL_SUFFIX_CURL_OFF_TU ui64
320
# define CURL_TYPEOF_CURL_SOCKLEN_T int
321
322
/* ===================================== */
323
/* KEEP GENERIC GCC THE LAST ENTRY */
324
/* ===================================== */
325
326
#elif defined(__GNUC__) && !defined(_SCO_DS)
327
# if !defined(__LP64__) && \
328
(defined(__ILP32__) || defined(__i386__) || defined(__hppa__) || \
329
defined(__ppc__) || defined(__powerpc__) || defined(__arm__) || \
330
defined(__sparc__) || defined(__mips__) || defined(__sh__) || \
331
defined(__XTENSA__) || \
332
(defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 4) || \
333
(defined(__LONG_MAX__) && __LONG_MAX__ == 2147483647L))
334
# define CURL_TYPEOF_CURL_OFF_T long long
335
# define CURL_FORMAT_CURL_OFF_T "lld"
336
# define CURL_FORMAT_CURL_OFF_TU "llu"
337
# define CURL_SUFFIX_CURL_OFF_T LL
338
# define CURL_SUFFIX_CURL_OFF_TU ULL
339
# define CURL_POPCOUNT64(x) __builtin_popcountll(x)
340
# define CURL_CTZ64(x) __builtin_ctzll(x)
341
# elif defined(__LP64__) || \
342
defined(__x86_64__) || defined(__ppc64__) || defined(__sparc64__) || \
343
defined(__e2k__) || \
344
(defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 8) || \
345
(defined(__LONG_MAX__) && __LONG_MAX__ == 9223372036854775807L)
346
# define CURL_TYPEOF_CURL_OFF_T long
347
# define CURL_FORMAT_CURL_OFF_T "ld"
348
# define CURL_FORMAT_CURL_OFF_TU "lu"
349
# define CURL_SUFFIX_CURL_OFF_T L
350
# define CURL_SUFFIX_CURL_OFF_TU UL
351
# define CURL_POPCOUNT64(x) __builtin_popcountl(x)
352
# define CURL_CTZ64(x) __builtin_ctzl(x)
353
# endif
354
# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
355
# define CURL_PULL_SYS_TYPES_H 1
356
# define CURL_PULL_SYS_SOCKET_H 1
357
358
#else
359
/* generic "safe guess" on old 32-bit style */
360
# define CURL_TYPEOF_CURL_OFF_T long long
361
# define CURL_FORMAT_CURL_OFF_T "lld"
362
# define CURL_FORMAT_CURL_OFF_TU "llu"
363
# define CURL_SUFFIX_CURL_OFF_T LL
364
# define CURL_SUFFIX_CURL_OFF_TU ULL
365
# define CURL_TYPEOF_CURL_SOCKLEN_T int
366
#endif
367
368
#ifdef _AIX
369
/* AIX needs <sys/poll.h> */
370
#define CURL_PULL_SYS_POLL_H
371
#endif
372
373
/* CURL_PULL_SYS_TYPES_H is defined above when inclusion of header file */
374
/* sys/types.h is required here to properly make type definitions below. */
375
#ifdef CURL_PULL_SYS_TYPES_H
376
# include <sys/types.h>
377
#endif
378
379
/* CURL_PULL_SYS_SOCKET_H is defined above when inclusion of header file */
380
/* sys/socket.h is required here to properly make type definitions below. */
381
#ifdef CURL_PULL_SYS_SOCKET_H
382
# include <sys/socket.h>
383
#endif
384
385
/* CURL_PULL_SYS_POLL_H is defined above when inclusion of header file */
386
/* sys/poll.h is required here to properly make type definitions below. */
387
#ifdef CURL_PULL_SYS_POLL_H
388
# include <sys/poll.h>
389
#endif
390
391
/* Data type definition of curl_socklen_t. */
392
#ifdef CURL_TYPEOF_CURL_SOCKLEN_T
393
typedef CURL_TYPEOF_CURL_SOCKLEN_T curl_socklen_t;
394
#endif
395
396
/* Data type definition of curl_off_t. */
397
398
#ifdef CURL_TYPEOF_CURL_OFF_T
399
typedef CURL_TYPEOF_CURL_OFF_T curl_off_t;
400
#endif
401
402
#endif /* CURLINC_SYSTEM_H */
403
404