summaryrefslogtreecommitdiff
path: root/libcurl/libcurl/curl_config.h
blob: 868a3279e84eaedd4ce84ce28e5dd24b8bb88f1a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
/* file      : libcurl/curl_config.h -*- C -*-
 * license   : curl License; see accompanying COPYING file
 */

#ifndef LIBCURL_CURL_CONFIG_H
#define LIBCURL_CURL_CONFIG_H

/* For the semantics of the following macros refer to upstream's configure.ac,
 * .m4, lib/curl_config.h.cmake and lib/config-win32.h files.
 *
 * Note that we will explicitly undefine macros that should not be defined.
 * While this is not technically required, it simplifies the change tracking
 * (see ../README-DEV). As a bonus we also make sure that they are not get
 * eventually defined by some system headers.
 */

/* These macros are defined via the -D preprocessor option. Keep them listed
 * (in this exact form) for the change tracking.

#define OS
#define VERSION
#define BUILDING_LIBCURL
#define CURL_STATICLIB

  */

/* See the ../../README-DEV for the SSL backend and CA information lookup
 * configuration.
 */
#define USE_OPENSSL 1
#define USE_TLS_SRP 1

#if (defined(__APPLE__) && defined(__clang__)) || defined(_WIN32)
#  define CURL_WITH_MULTI_SSL        1
#  if defined(__APPLE__)
#    define USE_SECTRANSP            1
#    define CURL_DEFAULT_SSL_BACKEND "secure-transport"
#  else
#    define USE_SCHANNEL             1
#    define CURL_DEFAULT_SSL_BACKEND "schannel"
#  endif
#endif

#undef  CURL_CA_BUNDLE
#undef  CURL_CA_PATH
#define CURL_CA_FALLBACK 1

#define CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG 1

#undef  HAVE_BORINGSSL
#undef  USE_WOLFSSL

/* Enabled features.
 */
#define ENABLE_IPV6 1
#define HAVE_ZLIB_H 1
#define HAVE_LIBZ   1

#undef CURL_DISABLE_COOKIES
#undef CURL_DISABLE_CRYPTO_AUTH
#undef CURL_DISABLE_DICT
#undef CURL_DISABLE_DOH
#undef CURL_DISABLE_FILE
#undef CURL_DISABLE_FTP
#undef CURL_DISABLE_GOPHER
#undef CURL_DISABLE_HTTP
#undef CURL_DISABLE_HTTP_AUTH
#undef CURL_DISABLE_IMAP
#undef CURL_DISABLE_MIME
#undef CURL_DISABLE_LIBCURL_OPTION
#undef CURL_DISABLE_NETRC
#undef CURL_DISABLE_PARSEDATE
#undef CURL_DISABLE_POP3
#undef CURL_DISABLE_PROGRESS_METER
#undef CURL_DISABLE_PROXY
#undef CURL_DISABLE_RTSP
#undef CURL_DISABLE_SHUFFLE_DNS
#undef CURL_DISABLE_SMB
#undef CURL_DISABLE_SMTP
#undef CURL_DISABLE_TELNET
#undef CURL_DISABLE_TFTP
#undef CURL_DISABLE_VERBOSE_STRINGS
#undef CURL_DISABLE_ALTSVC
#undef CURL_DISABLE_GETOPTIONS
#undef CURL_DISABLE_MQTT
#undef CURL_DISABLE_SOCKETPAIR
#undef CURL_DISABLE_HEADERS_API
#undef CURL_DISABLE_HSTS
#undef CURL_DISABLE_NTLM

/* Diabled features.
 */
#define CURL_DISABLE_LDAP  1
#define CURL_DISABLE_LDAPS 1

#undef USE_WIN32_LDAP
#undef HAVE_LDAP_SSL
#undef HAVE_LDAP_SSL_H
#undef HAVE_LDAP_URL_PARSE
#undef USE_LIBSSH
#undef USE_LIBSSH2
#undef HAVE_LIBSSH2_H
#undef HAVE_LIBSSH_LIBSSH_H
#undef USE_AMISSL
#undef USE_GNUTLS
#undef USE_ARES
#undef USE_LIBPSL
#undef USE_MANUAL
#undef USE_MBEDTLS
#undef USE_NGHTTP2
#undef USE_NGHTTP3
#undef USE_NGTCP2
#undef USE_NSS
#undef USE_OPENLDAP
#undef USE_LIBRTMP
#undef USE_QUICHE
#undef USE_BEARSSL
#undef USE_GSASL
#undef USE_HYPER
#undef USE_RUSTLS
#undef USE_WOLFSSH
#undef USE_MSH3

/* Specific for (non-) Linux.
 */
#ifdef __linux__
#  define HAVE_FSETXATTR_5 1
#  define HAVE_LINUX_TCP_H 1
#else
#  define HAVE_SETMODE 1
#endif

/* Specific FreeBSD.
 */
#ifdef __FreeBSD__
#  define HAVE_MEMRCHR 1
#endif

/* Specific for MacOS.
 */
#ifdef __APPLE__
#  define HAVE_FSETXATTR_6         1
#  define HAVE_MACH_ABSOLUTE_TIME  1
#  define _DARWIN_USE_64_BIT_INODE 1
#endif

/* Specific for FreeBSD and Linux.
 */
#if defined(__FreeBSD__) || defined(__linux__)
#  define HAVE_MSG_NOSIGNAL 1
#  define HAVE_POLL_FINE    1
#endif

/* Specific for FreeBSD and Mac OS.
 */
#if defined(__FreeBSD__) || defined(__APPLE__)
#  define HAVE_SYS_SOCKIO_H 1
#endif

/* Specific for Linux and Mac OS.
 */
#if defined(__linux__) || defined(__APPLE__)
#  define HAVE_FSETXATTR 1
#endif

/* Specific for POSIX.
 */
#ifndef _WIN32
#  define USE_UNIX_SOCKETS       1

#  define HAVE_ARPA_INET_H       1
#  define HAVE_IFADDRS_H         1
#  define HAVE_NETDB_H           1
#  define HAVE_NETINET_IN_H      1
#  define HAVE_NETINET_TCP_H     1
#  define HAVE_NET_IF_H          1
#  define HAVE_POLL_H            1
#  define HAVE_PWD_H             1
#  define HAVE_ALARM             1
#  define HAVE_FCNTL_O_NONBLOCK  1
#  define HAVE_FNMATCH           1
#  define HAVE_GETEUID           1
#  define HAVE_GETIFADDRS        1
#  define HAVE_GETPWUID          1
#  define HAVE_GETPWUID_R        1
#  define HAVE_GETTIMEOFDAY      1
#  define HAVE_GMTIME_R          1
#  define HAVE_IF_NAMETOINDEX    1
#  define HAVE_IOCTL_FIONBIO     1
#  define HAVE_IOCTL_SIOCGIFADDR 1
#  define HAVE_PIPE              1
#  define HAVE_POSIX_STRERROR_R  1
#  define HAVE_SIGACTION         1
#  define HAVE_SIGSETJMP         1
#  define HAVE_SOCKETPAIR        1
#  define HAVE_STRERROR_R        1
#  define HAVE_SYS_IOCTL_H       1
#  define HAVE_SYS_POLL_H        1
#  define HAVE_SYS_SELECT_H      1
#  define HAVE_SYS_SOCKET_H      1
#  define HAVE_SYS_UN_H          1
#  define HAVE_SYS_WAIT_H        1
#  define HAVE_TERMIOS_H         1
#  define HAVE_UTIMES            1
#  define HAVE_SUSECONDS_T       1
#  define HAVE_FCHMOD            1
#  define HAVE_NETINET_UDP_H     1
#  define HAVE_SENDMSG           1

#  define CURL_SA_FAMILY_T      sa_family_t
#  define GETHOSTNAME_TYPE_ARG2 size_t

#  define NTLM_WB_ENABLED        1
#  define NTLM_WB_FILE          "/usr/bin/ntlm_auth"

#  define RANDOM_FILE           "/dev/urandom"

#  define CURL_EXTERN_SYMBOL    __attribute__ ((__visibility__ ("default")))

/* Specific for Windows.
 */
#else
#  define USE_WIN32_CRYPTO         1
#  define USE_WIN32_IDN            1
#  define USE_WIN32_LARGE_FILES    1
#  define USE_WINDOWS_SSPI         1

#  define WANT_IDN_PROTOTYPES      1

#  define HAVE_PROCESS_H           1
#  define HAVE_CLOSESOCKET         1
#  define HAVE_IOCTLSOCKET_FIONBIO 1
#  define HAVE_IO_H                1
#  define HAVE_SYS_UTIME_H         1
#  define HAVE_WINDOWS_H           1
#  define HAVE_WINSOCK2_H          1

#  undef _UNICODE
#  undef UNICODE

#  undef SOCKET
#  undef USE_LWIPSOCK
#  undef USE_WIN32_SMALL_FILES

/* The upstream's logic of defining the macro is quite hairy. Let's not
 * reproduce it here and see how it goes.
 */
#  undef _WIN32_WINNT

/* For these ones sensible defaults are defined in lib/curl_setup.h.
 */
#  undef CURL_SA_FAMILY_T
#  undef GETHOSTNAME_TYPE_ARG2
#  undef USE_WINSOCK
#  undef WIN32_LEAN_AND_MEAN

/* Unused on Windows (see include/curl/curl.h for details).
 */
#  undef CURL_EXTERN_SYMBOL
#endif

/* Specific for GNU C Library.
 */
#ifdef __GLIBC__
#  define HAVE_GETHOSTBYNAME_R   1
#  define HAVE_GETHOSTBYNAME_R_6 1
#  undef HAVE_GETHOSTBYNAME_R_3
#  undef HAVE_GETHOSTBYNAME_R_5
#endif

/* Specific for (non-) VC.
 */
#ifndef _MSC_VER
#  define USE_THREADS_POSIX            1
#  undef  USE_THREADS_WIN32

#  define HAVE_BASENAME                1
#  define HAVE_CLOCK_GETTIME_MONOTONIC 1
#  define HAVE_INET_NTOP               1
#  define HAVE_INET_PTON               1
#  define HAVE_LIBGEN_H                1
#  define HAVE_PTHREAD_H               1
#  define HAVE_SETJMP_H                1
#  define HAVE_SIGNAL                  1
#  define HAVE_STRCASECMP              1
#  define HAVE_STRINGS_H               1
#  define HAVE_STRING_H                1
#  define HAVE_STRTOK_R                1
#  define HAVE_SYS_PARAM_H             1
#  define HAVE_SYS_TIME_H              1
#  define HAVE_UNISTD_H                1
#  define HAVE_UTIME_H                 1
#  define HAVE_VARIADIC_MACROS_GCC     1
#  define HAVE_OPENSSL_SRP             1
#  define HAVE_FTRUNCATE               1
#  define HAVE_SCHED_YIELD             1

#  define TIME_WITH_SYS_TIME           1
#else
#  define USE_THREADS_WIN32 1
#  undef  USE_THREADS_POSIX

#  define NEED_MALLOC_H     1
#endif

/* Common for all supported OSes/compilers.
 */
#define HAVE_ASSERT_H                   1
#define HAVE_STDBOOL_H                  1
#define HAVE_BOOL_T                     1
#define HAVE_ERRNO_H                    1
#define HAVE_FCNTL_H                    1
#define HAVE_WS2TCPIP_H                 1
#define HAVE_SIGNAL_H                   1
#define HAVE_LOCALE_H                   1
#define HAVE_SETLOCALE                  1
#define HAVE_GETADDRINFO                1
#define HAVE_FREEADDRINFO               1
#define HAVE_GETADDRINFO_THREADSAFE     1
#define HAVE_GETHOSTBYNAME              1
#define HAVE_GETHOSTNAME                1
#define HAVE_GETPEERNAME                1
#define HAVE_GETSOCKNAME                1
#define HAVE_LONGLONG                   1
#define HAVE_SOCKET                     1
#define HAVE_SELECT                     1
#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1
#define HAVE_STRDUP                     1
#define HAVE_STRTOLL                    1
#define HAVE_STRUCT_SOCKADDR_STORAGE    1
#define HAVE_STRUCT_TIMEVAL             1
#define HAVE_SYS_STAT_H                 1
#define HAVE_SYS_TYPES_H                1
#define HAVE_TIME_H                     1
#define HAVE_UTIME                      1
#define HAVE_VARIADIC_MACROS_C99        1
#define HAVE_STRICMP                    1

/* <stdatomic.h>, _Atomic, atomic_*, etc
 *
 * @@ TMP Note that upstream's package version 7.84.0 fails to compile with
 *        older versions of Clang with the 'unknown builtin' error (trying to
 *        use __builtin_ia32_pause()). At the time of this writing this issue
 *        is fixed but the fixed version is not released yet. When it is
 *        released, drop the check and define HAVE_ATOMIC
 *        unconditionally. Until then the curl_global_*() functions will be
 *        thread-unsafe for Clang versions prior to 6.0 (as they are for
 *        libcurl versions prior to 7.84.0).
 */
#if !defined(__STDC_NO_ATOMICS__) && \
    (!defined(__clang__) || __clang_major__ >= 6)
#  define HAVE_ATOMIC 1
#endif

#define STDC_HEADERS 1

#undef _ALL_SOURCE
#undef _LARGE_FILES
#undef _FILE_OFFSET_BITS

#undef HAVE_LBER_H
#undef HAVE_NETINET_IN6_H
#undef HAVE_GSSAPI_GSSAPI_GENERIC_H
#undef HAVE_GSSAPI_GSSAPI_H
#undef HAVE_IDN2_H
#undef HAVE_LIBIDN2
#undef HAVE_BROTLI
#undef HAVE_STRUCT_POLLFD
#undef HAVE_DECL_GETPWUID_R_MISSING
#undef HAVE_GETPASS_R
#undef HAVE_GSSAPI
#undef HAVE_GSSGNU
#undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO
#undef HAVE_OLD_GSSMIT
#undef HAVE_PK11_CREATEMANAGEDGENERICOBJECT
#undef HAVE_PROTO_BSDSOCKET_H
#undef HAVE_RAND_EGD
#undef HAVE_SETSOCKOPT_SO_NONBLOCK
#undef HAVE_STRCMPI
#undef HAVE_STROPTS_H
#undef HAVE_TERMIO_H
#undef HAVE_TIME_T_UNSIGNED
#undef HAVE_WOLFSSL_GET_PEER_CERTIFICATE
#undef HAVE_WOLFSSL_USEALPN
#undef HAVE_WRITABLE_ARGV
#undef HAVE_CLOSESOCKET_CAMEL
#undef HAVE_GLIBC_STRERROR_R
#undef HAVE_GNUTLS_SRP
#undef HAVE_QUICHE_CONN_SET_QLOG_FD
#undef HAVE_WOLFSSL_DES_ECB_ENCRYPT
#undef HAVE_ZSTD
#undef HAVE_CLOSE_S
#undef HAVE_EXTRA_STRDUP_H
#undef HAVE_EXTRA_STRICMP_H
#undef HAVE_SSL_GET_SHUTDOWN
#undef RECVFROM_TYPE_ARG6_IS_VOID

#undef HAVE_RECVFROM
#undef RECVFROM_TYPE_ARG1
#undef RECVFROM_TYPE_ARG2
#undef RECVFROM_TYPE_ARG3
#undef RECVFROM_TYPE_ARG4
#undef RECVFROM_TYPE_ARG5
#undef RECVFROM_TYPE_ARG6
#undef RECVFROM_TYPE_RETV

#undef NEED_MEMORY_H
#undef NEED_REENTRANT
#undef NEED_THREAD_SAFE

#undef USE_GSKIT
#undef USE_OS400CRYPTO

#undef BSD
#undef EGD_SOCKET
#undef CURLDEBUG
#undef DEBUGBUILD
#undef ENABLE_QUIC

/* While upstream defines the macro for Clang, it fails to build for older
 * version of Clang on Mac OS. Thus, we never define it.
 */
#undef HAVE_BUILTIN_AVAILABLE

/* send()
 */
#define HAVE_SEND        1
#ifndef _WIN32
#  define SEND_TYPE_ARG1 int
#  define SEND_TYPE_ARG2 void *
#  define SEND_TYPE_ARG3 size_t
#  define SEND_TYPE_ARG4 int
#  define SEND_TYPE_RETV ssize_t
#else
#  define SEND_TYPE_ARG1 SOCKET
#  define SEND_TYPE_ARG2 char *
#  define SEND_TYPE_ARG3 int
#  define SEND_TYPE_ARG4 int
#  define SEND_TYPE_RETV int
#endif

/* recv()
 */
#define HAVE_RECV        1
#ifndef _WIN32
#  define RECV_TYPE_ARG1 int
#  define RECV_TYPE_ARG2 void *
#  define RECV_TYPE_ARG3 size_t
#  define RECV_TYPE_ARG4 int
#  define RECV_TYPE_RETV ssize_t
#else
#  define RECV_TYPE_ARG1 SOCKET
#  define RECV_TYPE_ARG2 char *
#  define RECV_TYPE_ARG3 int
#  define RECV_TYPE_ARG4 int
#  define RECV_TYPE_RETV int
#endif

/* Types and type sizes.
 */
#ifndef _WIN32
#  define SIZEOF_SHORT  __SIZEOF_SHORT__
#  define SIZEOF_INT    __SIZEOF_INT__
#  define SIZEOF_LONG   __SIZEOF_LONG__
#  define SIZEOF_SIZE_T __SIZEOF_SIZE_T__

/* There is no way to exactly tell these type sizes at the preprocessing time,
 * so we define them as the most probable ones. We check this assumption at
 * the compile time using _Static_assert() in assert.c.
 */
#  define SIZEOF_OFF_T  __SIZEOF_LONG__
#  define SIZEOF_TIME_T __SIZEOF_LONG__
#else
#  define SIZEOF_SHORT    2
#  define SIZEOF_INT      4
#  define SIZEOF_LONG     4
#  define SIZEOF_OFF_T    4
#  ifdef _WIN64
#    define SIZEOF_TIME_T 8
#    define SIZEOF_SIZE_T 8
#  else
#    define SIZEOF_TIME_T 8
#    define SIZEOF_SIZE_T 4
#  endif
#  define in_addr_t unsigned long

/* Inspired by lib/config-win32.h.
 */
#  if defined(_MSC_VER) && !defined(_SSIZE_T_DEFINED)
#    if defined(_WIN64)
#      define ssize_t __int64
#    else
#      define ssize_t int
#    endif
#    define _SSIZE_T_DEFINED
#  endif
#endif

/* Is always 8 bytes for any platform that provides a 64-bit signed integral
 * data type (see include/curl/system.h for details) and we can parobably
 * assume that's the case for the platforms we build for. We also check this
 * at the compile time using _Static_assert() in assert.c.
 */
#define SIZEOF_CURL_OFF_T 8

#define SEND_QUAL_ARG2 const

/* We can probably assume that on platforms we build for, these keywords,
 * types, and macros do not require definition.

#undef const
#undef inline
#undef size_t
#undef ssize_t

#undef EAGAIN
#undef ENOMEM
#undef ENOSPC

#undef F_OK
#undef O_RDONLY

#undef LONG_MAX
#undef LONG_MIN

 */

#endif /* LIBCURL_CURL_CONFIG_H */