xref: /aosp_15_r20/external/curl/docs/INTERNALS.md (revision 6236dae45794135f37c4eb022389c904c8b0090d)
1*6236dae4SAndroid Build Coastguard Worker<!--
2*6236dae4SAndroid Build Coastguard WorkerCopyright (C) Daniel Stenberg, <[email protected]>, et al.
3*6236dae4SAndroid Build Coastguard Worker
4*6236dae4SAndroid Build Coastguard WorkerSPDX-License-Identifier: curl
5*6236dae4SAndroid Build Coastguard Worker-->
6*6236dae4SAndroid Build Coastguard Worker
7*6236dae4SAndroid Build Coastguard Worker# curl internals
8*6236dae4SAndroid Build Coastguard Worker
9*6236dae4SAndroid Build Coastguard WorkerThe canonical libcurl internals documentation is now in the [everything
10*6236dae4SAndroid Build Coastguard Workercurl](https://everything.curl.dev/internals) book. This file lists supported
11*6236dae4SAndroid Build Coastguard Workerversions of libs and build tools.
12*6236dae4SAndroid Build Coastguard Worker
13*6236dae4SAndroid Build Coastguard Worker## Portability
14*6236dae4SAndroid Build Coastguard Worker
15*6236dae4SAndroid Build Coastguard Worker We write curl and libcurl to compile with C89 compilers on 32-bit and up
16*6236dae4SAndroid Build Coastguard Worker machines. Most of libcurl assumes more or less POSIX compliance but that is
17*6236dae4SAndroid Build Coastguard Worker not a requirement.
18*6236dae4SAndroid Build Coastguard Worker
19*6236dae4SAndroid Build Coastguard Worker We write libcurl to build and work with lots of third party tools, and we
20*6236dae4SAndroid Build Coastguard Worker want it to remain functional and buildable with these and later versions
21*6236dae4SAndroid Build Coastguard Worker (older versions may still work but is not what we work hard to maintain):
22*6236dae4SAndroid Build Coastguard Worker
23*6236dae4SAndroid Build Coastguard Worker## Dependencies
24*6236dae4SAndroid Build Coastguard Worker
25*6236dae4SAndroid Build Coastguard Worker We aim to support these or later versions.
26*6236dae4SAndroid Build Coastguard Worker
27*6236dae4SAndroid Build Coastguard Worker - OpenSSL      0.9.7
28*6236dae4SAndroid Build Coastguard Worker - GnuTLS       3.1.10
29*6236dae4SAndroid Build Coastguard Worker - zlib         1.1.4
30*6236dae4SAndroid Build Coastguard Worker - libssh2      1.0
31*6236dae4SAndroid Build Coastguard Worker - c-ares       1.16.0
32*6236dae4SAndroid Build Coastguard Worker - libidn2      2.0.0
33*6236dae4SAndroid Build Coastguard Worker - wolfSSL      2.0.0
34*6236dae4SAndroid Build Coastguard Worker - OpenLDAP     2.0
35*6236dae4SAndroid Build Coastguard Worker - MIT Kerberos 1.2.4
36*6236dae4SAndroid Build Coastguard Worker - Heimdal      ?
37*6236dae4SAndroid Build Coastguard Worker - nghttp2      1.15.0
38*6236dae4SAndroid Build Coastguard Worker - Winsock      2.2 (on Windows 95+ and Windows CE .NET 4.1+)
39*6236dae4SAndroid Build Coastguard Worker
40*6236dae4SAndroid Build Coastguard Worker## Build tools
41*6236dae4SAndroid Build Coastguard Worker
42*6236dae4SAndroid Build Coastguard Worker When writing code (mostly for generating stuff included in release tarballs)
43*6236dae4SAndroid Build Coastguard Worker we use a few "build tools" and we make sure that we remain functional with
44*6236dae4SAndroid Build Coastguard Worker these versions:
45*6236dae4SAndroid Build Coastguard Worker
46*6236dae4SAndroid Build Coastguard Worker - GNU Libtool  1.4.2
47*6236dae4SAndroid Build Coastguard Worker - GNU Autoconf 2.59
48*6236dae4SAndroid Build Coastguard Worker - GNU Automake 1.7
49*6236dae4SAndroid Build Coastguard Worker - GNU M4       1.4
50*6236dae4SAndroid Build Coastguard Worker - perl         5.8
51*6236dae4SAndroid Build Coastguard Worker - roffit       0.5
52*6236dae4SAndroid Build Coastguard Worker - cmake        3.7
53*6236dae4SAndroid Build Coastguard Worker
54*6236dae4SAndroid Build Coastguard WorkerLibrary Symbols
55*6236dae4SAndroid Build Coastguard Worker===============
56*6236dae4SAndroid Build Coastguard Worker
57*6236dae4SAndroid Build Coastguard Worker All symbols used internally in libcurl must use a `Curl_` prefix if they are
58*6236dae4SAndroid Build Coastguard Worker used in more than a single file. Single-file symbols must be made static.
59*6236dae4SAndroid Build Coastguard Worker Public ("exported") symbols must use a `curl_` prefix. Public API functions
60*6236dae4SAndroid Build Coastguard Worker are marked with `CURL_EXTERN` in the public header files so that all others
61*6236dae4SAndroid Build Coastguard Worker can be hidden on platforms where this is possible.
62