2022-02-17 17:49:05 +08:00
|
|
|
# curl internals
|
2000-05-23 01:35:35 +08:00
|
|
|
|
2022-02-17 17:49:05 +08:00
|
|
|
The canonical libcurl internals documentation is now in the [everything
|
|
|
|
curl](https://everything.curl.dev/internals) book. This file lists supported
|
|
|
|
versions of libs, tools and operating systems.
|
2015-06-10 05:57:22 +08:00
|
|
|
|
2022-02-17 17:49:05 +08:00
|
|
|
## Portability
|
2008-06-13 05:03:16 +08:00
|
|
|
|
2021-11-26 15:46:59 +08:00
|
|
|
We write curl and libcurl to compile with C89 compilers. On 32-bit and up
|
2021-10-31 23:34:44 +08:00
|
|
|
machines. Most of libcurl assumes more or less POSIX compliance but that is
|
2008-06-13 05:03:16 +08:00
|
|
|
not a requirement.
|
|
|
|
|
|
|
|
We write libcurl to build and work with lots of third party tools, and we
|
|
|
|
want it to remain functional and buildable with these and later versions
|
|
|
|
(older versions may still work but is not what we work hard to maintain):
|
|
|
|
|
2022-02-17 17:49:05 +08:00
|
|
|
## Dependencies
|
|
|
|
|
|
|
|
We aim to support these or later versions.
|
2015-06-10 05:57:22 +08:00
|
|
|
|
|
|
|
- OpenSSL 0.9.7
|
2020-04-21 04:23:48 +08:00
|
|
|
- GnuTLS 3.1.10
|
2015-06-10 05:57:22 +08:00
|
|
|
- zlib 1.1.4
|
2020-10-22 18:29:21 +08:00
|
|
|
- libssh2 1.0
|
2021-09-06 22:00:52 +08:00
|
|
|
- c-ares 1.16.0
|
2017-11-14 19:47:04 +08:00
|
|
|
- libidn2 2.0.0
|
2019-06-02 22:55:05 +08:00
|
|
|
- wolfSSL 2.0.0
|
2015-06-10 05:57:22 +08:00
|
|
|
- openldap 2.0
|
|
|
|
- MIT Kerberos 1.2.4
|
|
|
|
- GSKit V5R3M0
|
|
|
|
- NSS 3.14.x
|
|
|
|
- Heimdal ?
|
2020-02-21 18:30:05 +08:00
|
|
|
- nghttp2 1.12.0
|
2020-08-30 18:21:53 +08:00
|
|
|
- WinSock 2.2 (on Windows 95+ and Windows CE .NET 4.1+)
|
2015-06-10 05:57:22 +08:00
|
|
|
|
2022-02-17 17:49:05 +08:00
|
|
|
## Operating Systems
|
2008-06-13 05:03:16 +08:00
|
|
|
|
|
|
|
On systems where configure runs, we aim at working on them all - if they have
|
2022-02-17 17:49:05 +08:00
|
|
|
a suitable C compiler. On systems that do not run configure, we strive to
|
|
|
|
keep curl running correctly on:
|
2008-06-13 05:03:16 +08:00
|
|
|
|
2015-06-10 05:57:22 +08:00
|
|
|
- Windows 98
|
|
|
|
- AS/400 V5R3M0
|
|
|
|
- Symbian 9.1
|
|
|
|
- Windows CE ?
|
|
|
|
- TPF ?
|
|
|
|
|
2022-02-17 17:49:05 +08:00
|
|
|
## Build tools
|
2008-06-13 05:03:16 +08:00
|
|
|
|
2008-06-13 05:16:00 +08:00
|
|
|
When writing code (mostly for generating stuff included in release tarballs)
|
|
|
|
we use a few "build tools" and we make sure that we remain functional with
|
|
|
|
these versions:
|
|
|
|
|
2015-06-10 05:57:22 +08:00
|
|
|
- GNU Libtool 1.4.2
|
|
|
|
- GNU Autoconf 2.57
|
|
|
|
- GNU Automake 1.7
|
|
|
|
- GNU M4 1.4
|
|
|
|
- perl 5.004
|
|
|
|
- roffit 0.5
|
2019-05-17 06:11:27 +08:00
|
|
|
- groff ? (any version that supports `groff -Tps -man [in] [out]`)
|
2022-06-22 15:40:39 +08:00
|
|
|
|
|
|
|
Library Symbols
|
|
|
|
===============
|
|
|
|
|
|
|
|
All symbols used internally in libcurl must use a `Curl_` prefix if they are
|
|
|
|
used in more than a single file. Single-file symbols must be made static.
|
|
|
|
Public ("exported") symbols must use a `curl_` prefix. (There are exceptions,
|
|
|
|
but they are to be changed to follow this pattern in future versions.) Public
|
|
|
|
API functions are marked with `CURL_EXTERN` in the public header files so
|
|
|
|
that all others can be hidden on platforms where this is possible.
|