Requirements for Fil-C: - not to accidentally pick up system headers. E.g. from `/usr/include` on Linux. It can happen when any dependency is auto-detected on this header path. This makes Fil-C find the wrong system headers, which in turn breaks the configuration step in subtle ways (with CMake) and less subtle ways (autotools). Then CMake ends up running into an error while compiling. - build all dependencies with Fil-C too. (this patch doesn't build any dependencies yet.) - "unity" mode disabled. It should work, but needs a lot of memory and slower than a standard compiler, or a Fil-C non-unity build. - x86_64 Linux host platform when using the pre-built toolchain. Observations on a minimal, static build made with no dependencies and Fil-C 0.674 (based on clang 20.1.8). - curl tool sizes: - cmake, default, w/o -O: 30 MB (gcc 14.2.0: 1.7 MB) - cmake, default, w/o -O, stripped: 29.6 MB (gcc: 1.4 MB) - cmake, Release, -O3: 7.2 MB (gcc: 1 MB) - cmake, Release, -O3, stripped: 6.8 MB (gcc: 0.93 MB) - autotools, default, -O2: 7 MB - libcurl.a size is 32 MB (cmake, default, w/o -O) (gcc: 2.7 MB) - build times 3-3.5x longer (compared to system gcc 14.2.0): - all runtests available pass OK. - all pytests skipped due to missing features/dependencies. - shared libcurl builds also work (cmake, default: 25 MB libcurl.so and 5.75 MB (5.6 stripped) curl tool) - autotools works fine too, with dependencies disabled or set to avoid `/usr/include`. Closes #19391 |
||
|---|---|---|
| .circleci | ||
| .github | ||
| CMake | ||
| docs | ||
| include | ||
| lib | ||
| LICENSES | ||
| m4 | ||
| packages | ||
| plan9 | ||
| projects | ||
| scripts | ||
| src | ||
| tests | ||
| .dir-locals.el | ||
| .editorconfig | ||
| .git-blame-ignore-revs | ||
| .gitattributes | ||
| .gitignore | ||
| .mailmap | ||
| acinclude.m4 | ||
| appveyor.sh | ||
| appveyor.yml | ||
| buildconf | ||
| CHANGES.md | ||
| CMakeLists.txt | ||
| configure.ac | ||
| COPYING | ||
| curl-config.in | ||
| Dockerfile | ||
| GIT-INFO.md | ||
| libcurl.pc.in | ||
| Makefile.am | ||
| README | ||
| README.md | ||
| RELEASE-NOTES | ||
| renovate.json | ||
| REUSE.toml | ||
| SECURITY.md | ||
curl is a command-line tool for transferring data from or to a server using URLs. It supports these protocols: 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 WSS.
Learn how to use curl by reading the manpage or everything curl.
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 manpage to learn how.
Open Source
curl is Open Source and is distributed under an MIT-like license.
Contact
Contact us on a suitable mailing list or use GitHub issues/ pull requests/ discussions.
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.
Source code
Download the latest source from the Git server:
git clone https://github.com/curl/curl.git
Security problems
Report suspected security problems via our HackerOne page and not in public.
Backers
Thank you to all our backers 🙏 Become a backer.
Sponsors
Support this project by becoming a sponsor.