A command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and
Go to file
Viktor Szakats 10fbd8b4e3
Makefile.m32: major rework [ci skip]
This patch overhauls `Makefile.m32` scripts, fixing a list of quirks,
making its behaviour and customization envvars align better with other
build systems, aiming for less code, that is easier to read, use and
maintain.

Details:
- Rename customization envvars:
  `CURL_CC` -> `CC`
  `CURL_RC` -> `RC`
  `CURL_AR` -> `AR`
  `CURL_LDFLAG_EXTRAS_DLL` -> `CURL_LDFLAGS_LIB`
  `CURL_LDFLAG_EXTRAS_EXE` -> `CURL_LDFLAGS_BIN`
- Drop `CURL_STRIP` and `CURL_RANLIB`. These tools are no longer used.
- Accept `CFLAGS`, `CPPFLAGS`, `RCFLAGS`, `LDFLAGS` and `LIBS` envvars.
- Drop `CURL_CFLAG_EXTRAS`, `CURL_LDFLAG_EXTRAS`, `CURL_RCFLAG_EXTRAS` in
  favor of the above.
- Do not automatically enable `zlib` with `libssh2`. `zlib` is optional
  with `libssh2`.
- Omit unnecessary `CPPFLAGS` options when building `curl.exe` and
  examples.
- Drop support for deprecated `-winssl` `CFG` option. Use `-schannel`
  instead.
- Avoid late evaluation where not necessary (`=` -> `:=`).
- Drop support for `CURL_DLL_A_SUFFIX` to override the implib suffix.
  Instead, use the standard naming scheme by default: `libcurl.dll.a`.
  The toolchain recognizes the name, and selects it automatically when
  asking for a `-shared` vs. `-static` build.
- Stop applying `strip` to `libcurl.a`. Follow-up from
  16a58e9f93. There was no debug info to
  strip since then.
- Stop setting `-O3`, `-W`, `-Wall` options. You can add these to
  `CFLAGS` as desired.
- Always enable `-DCURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG` with OpenSSL,
  to avoid that vulnerability on Windows.
- Add `-lbrotlicommon` to `LIBS` when using `brotli`.
- Do not enable `-nghttp3` without `-ngtcp2`.
- `-ssh2` and `-rtmp` options no longer try to auto-select a TLS-backend.
  You need to set the backend explicitly. This scales better and avoids
  issues with certain combinations (e.g. `libssh2` + `wolfssl` with no
  `schannel`).
- Default to OpenSSL TLS-backend with `ngtcp2`. Possible to override via
  `NGTCP2_LIBS`.
- Old, alternate method of enabling components (e.g. `SSH2=1`) no longer
  supported.
- Delete `SPNEGO` references. They were no-ops.
- Drop support for Win9x environments.
- Allow setting `OPENSSL_LIBS` independently from `OPENSSL_LIBPATH`.
- Support autotools/CMake `libssh2` builds by default.
- Respect `CURL_DLL_SUFFIX` in `-dyn` mode when building `curl.exe` and
  examples.
- Assume standard directory layout with `LIBCARES_PATH`. (Instead of the
  long gone embedded one.)
- Stop static linking with c-ares by default. Add
  `CPPFLAGS=-DCARES_STATICLIB` to enable it.
- Reorganize internal layout to avoid redundancy and emit clean diffs
  between src/lib and example make files.
- Delete unused variables.
- Code cleanups/rework.
- Comment and indentation fixes.

Closes #9632
2022-10-03 19:46:56 +00:00
.circleci CI: skip make, do make install at once for dependencies 2022-09-13 15:42:10 +02:00
.github GHA: build tests in a separate step from the running of them 2022-09-29 23:37:25 +02:00
.lift copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
.reuse reuse/dep5: adjusted to parse better 2022-06-14 14:07:02 +02:00
CMake functypes: provide the recv and send arg and return types 2022-09-28 09:06:11 +02:00
docs Makefile.m32: major rework [ci skip] 2022-10-03 19:46:56 +00:00
include curl.h: fix mention of wrong error code in comment 2022-09-22 09:43:39 +02:00
lib Makefile.m32: major rework [ci skip] 2022-10-03 19:46:56 +00:00
LICENSES examples/curlx.c: remove 2022-08-18 00:00:12 +02:00
m4 autotools: allow --enable-symbol-hiding with windows 2022-09-25 22:19:13 +00:00
packages docs: spelling nits 2022-09-29 21:29:04 +00:00
plan9 copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
projects docs: spellfixes 2022-09-21 15:20:08 +02:00
scripts scripts/release-notes.pl: strip ci skip tag [ci skip] 2022-10-02 22:15:21 +00:00
src Makefile.m32: major rework [ci skip] 2022-10-03 19:46:56 +00:00
tests lib: sanitize conditional exclusion around MIME 2022-09-29 10:51:04 +02:00
winbuild docs: spellfixes 2022-09-21 15:20:08 +02:00
zuul.d zuul: remove the clang-tidy job 2022-08-30 15:40:03 +02:00
.azure-pipelines.yml test972: verify the output without using external tool 2022-09-22 13:46:40 +02:00
.cirrus.yml cirrus-ci: add macOS build with m1 2022-09-29 10:56:14 +02:00
.dcignore copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
.dir-locals.el copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
.git-blame-ignore-revs git: ignore large commit making the curl REUSE compliant 2022-06-13 09:14:07 +02:00
.gitattributes copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
.gitignore copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
.lgtm.yml copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
.mailmap mailmap: merge Philip Heiduck's two addresses into one 2022-09-16 16:46:32 +02:00
acinclude.m4 functypes: provide the recv and send arg and return types 2022-09-28 09:06:11 +02:00
appveyor.yml appveyor: enable websockets 2022-09-09 15:11:15 +02:00
buildconf copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
buildconf.bat buildconf.bat: update copyright year range 2022-06-14 14:06:55 +02:00
CHANGES curl.se: new home 2020-11-04 23:59:47 +01:00
CMakeLists.txt functypes: provide the recv and send arg and return types 2022-09-28 09:06:11 +02:00
configure.ac configure: deprecate builds with small curl_off_t 2022-09-28 08:19:06 +02:00
COPYING COPYING: bump copyright year range 2022-01-05 23:14:15 +01:00
curl-config.in curl-config: quote directories with potential space 2022-08-10 14:35:40 +02:00
GIT-INFO GIT-INFO: rephrase to adapt to s/buildconf/autoreconf 2021-09-24 13:14:52 +02:00
libcurl.pc.in copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
MacOSX-Framework scripts: use grep -E instead of egrep 2022-09-13 10:18:50 +02:00
Makefile.am copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
Makefile.dist copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
maketgz copyright: make repository REUSE compliant 2022-06-13 09:13:00 +02:00
mlc_config.json mlc: curl.zuul.vexxhost.dev is reachable again 2022-04-24 23:29:38 +02:00
README docs: minor grammar fixes 2022-09-29 10:44:12 +02:00
README.md docs: minor grammar fixes 2022-09-29 10:44:12 +02:00
RELEASE-NOTES RELEASE-NOTES: synced 2022-09-30 10:46:12 +02:00
SECURITY.md docs: spellfixes 2022-09-21 15:20:08 +02:00

curl logo

OpenSSF Best Practices Coverity passed AppVeyor Build Status Azure DevOps Build Status Cirrus Build Status GitHub Actions Linux Build Status GitHub Actions macOS Build Status Backers on Open Collective Sponsors on Open Collective Language Grade: C/C++ Fuzzing Status REUSE status

Curl is a command-line tool for transferring data specified with URL syntax. Find out how to use curl by reading the curl.1 man page or the MANUAL document. Find out how to install Curl by reading the INSTALL document.

libcurl is the library curl is using to do its job. It is readily available to be used by your software. Read the libcurl.3 man page to learn how.

You can find answers to the most frequent questions we get in the FAQ document.

Study the COPYING file for distribution terms.

Contact

If you have problems, questions, ideas or suggestions, please contact us by posting to a suitable mailing list.

All contributors to the project are listed in the THANKS document.

Commercial support

For commercial support, maybe private and dedicated help with your problems or applications using (lib)curl visit the support page.

Website

Visit the curl website for the latest news and downloads.

Git

To download the latest source from the Git server, do this:

git clone https://github.com/curl/curl.git

(you will get a directory named curl created, filled with the source code)

Security problems

Report suspected security problems via our HackerOne page and not in public.

Notice

Curl contains pieces of source code that is Copyright (c) 1998, 1999 Kungliga Tekniska Högskolan. This notice is included here to comply with the distribution terms.

Backers

Thank you to all our backers! 🙏 [Become a backer]

Open Collective Backers

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

Open Collective Sponsor 0 Open Collective Sponsor 1 Open Collective Sponsor 2 Open Collective Sponsor 3 Open Collective Sponsor 4 Open Collective Sponsor 5 Open Collective Sponsor 6 Open Collective Sponsor 7 Open Collective Sponsor 8 Open Collective Sponsor 9