#
0aece8f6 |
| 26-Aug-2024 |
Viktor Szakats |
tidy-up: indent, whitespace, `#error` in make files Replace invalid C with `#error`. Cherry-picked from #14692 Closes #14997
|
#
60c3d044 |
| 06-Sep-2024 |
Viktor Szakats |
autotools: add support for 'unity' builds, enable in CI Implement the "unity" builds as known from CMake, but for autotools. It's limited to `lib` and `src` (CMake also supports it in `t
autotools: add support for 'unity' builds, enable in CI Implement the "unity" builds as known from CMake, but for autotools. It's limited to `lib` and `src` (CMake also supports it in `tests`). Enable with: `--enable-unity` (disabled by default) Unity builds speed up builds significantly. Cygwin and Windows builds in particular, but the effect is noticeable on most systems. It also allows discovering unity issues with autotools, benefitting also CMake when building the same combination. In CI it makes turnaround times quicker. This closes build performance with CMake. autotools still lags behind because it builds shared and static libcurl in two, separate passes. CMake does it in one. Manpage compilation isn't batched, it is in CMake. After unity and test bundle support the slowest parts of the build are the configuration phase (which is effectively a tedious, non-parallel, compilation and/or linking of 300+ tiny programs. The next bottleneck is compiling individual examples and finally test servers (only slow with autotools). The autotools implementation is slightly less efficient than CMake, because 3 sources are permanently excluded while in CMake this isn't necessary and solved more efficiently while building libtests. There is also no 'unity' support for tests, making them a less efficient also. Enable it in CI for most `configure` jobs. Except in GHA/dist (though it works fine there too), to use the default config there. Also skip for the Linux AWC-LC job where it made builds time a few seconds longer (reason undiscovered.) Autotools test suite builds compared between master -> `--enable-unity`: - GHA/Linux: 32s -> 12s https://github.com/curl/curl/actions/runs/10705668823/job/29681617374 https://github.com/curl/curl/actions/runs/10742978889/job/29796766297 - GHA/macOS: 37s -> 10s https://github.com/curl/curl/actions/runs/10705668813/job/29681632885 https://github.com/curl/curl/actions/runs/10742978699/job/29796768875 - GHA/FreeBSD: 15m25 -> 10m58 (full workflow time, ~qemu) https://github.com/curl/curl/actions/runs/10705668811/job/29681607915 https://github.com/curl/curl/actions/runs/10742978937/job/29796766115 - GHA/Cygwin: 3m32 -> 1m21 https://github.com/curl/curl/actions/runs/10705668809/job/29681609965 https://github.com/curl/curl/actions/runs/10742978645/job/29796756933 - GHA/MSYS2: 2m42 -> 50s https://github.com/curl/curl/actions/runs/10705668808/job/29681621166 https://github.com/curl/curl/actions/runs/10742978662/job/29799739289 - GHA/mingw-w64: 5m32 -> 1m23 https://github.com/curl/curl/actions/runs/10705668808/job/29681628787 https://github.com/curl/curl/actions/runs/10742978662/job/29799741568 Closes #14815
show more ...
|
#
fdb8b40f |
| 06-Sep-2024 |
Viktor Szakats |
autotools: tidy-ups in `src/Makefile.inc` - move `EXTRA_DIST` to the top of file. - move `checksrc` init next to use. - use variable `HUGE` instead of repeating a literal. C
autotools: tidy-ups in `src/Makefile.inc` - move `EXTRA_DIST` to the top of file. - move `checksrc` init next to use. - use variable `HUGE` instead of repeating a literal. Cherry-picked from #14815 Closes #14933
show more ...
|
#
28fa417b |
| 12-Sep-2024 |
Viktor Szakats |
autotools: fix `--with-ca-embed` build rule Add missing rule dependency on the user-specified CA bundle. This fixes including it when using the curl distro tarball, and other cases.
autotools: fix `--with-ca-embed` build rule Add missing rule dependency on the user-specified CA bundle. This fixes including it when using the curl distro tarball, and other cases. Also: - fix the internal name of the CA bundle to avoid nested quotes. It broke broke the rule dependency for the make tool. - exclude the generated (empty) `tool_ca_embed.c` file from the distro tarball. Patch-by: Daniel Stenberg Follow-up to 8a3740bc8e558b9a9d4a652b74cf27a0961d7010 #14059 Reported-by: rampageX on github Fixes #14879 Closes #14882
show more ...
|
#
4a8be913 |
| 06-Sep-2024 |
Viktor Szakats |
build: drop unused `NROFF` reference Closes #14812
|
#
3af75e18 |
| 26-Aug-2024 |
Daniel Stenberg |
configure: remove USE_EXPLICIT_LIB_DEPS Added a long time ago for something that libtool should handle for us. Closes #14697
|
#
aaacd024 |
| 25-Aug-2024 |
Viktor Szakats |
GHA/configure-vs-cmake: add Windows build, fix issues - configure: disable pthreads by default on Windows. - configure: disable detecting `fseeko()` on Windows. (It exists in mingw
GHA/configure-vs-cmake: add Windows build, fix issues - configure: disable pthreads by default on Windows. - configure: disable detecting `fseeko()` on Windows. (It exists in mingw-w64 2.0.0 and newer, but it's permanently ignored in CMake, as this function is never necessary on Windows.) - extend existing exceptions with their Windows variants. - `lib/formdata.c`: prioritize `_fseeki64()` over `fseeko()`. To reduce the difference between Windows builds, which now all use `_fseeki64()`. - cmake: perm-enable `HAVE_DIRENT_H` and `HAVE_OPENDIR` for mingw-w64, to match configure. Follow-up to bfe54b0e88239da542493321e795cd71c14af9cc #13137 This in theory could make the dir listing feature work in mingw-w64 build, but in my tests (on WINE) it failed at the preceding `open()` call. - cmake: perm-enable `HAVE_STRINGS_H` and `HAVE_UTIME_H` for mingw-w64, to match configure. (They are wrappers and make no difference in the build.) Also: - configure: sync `USE_MANUAL` macro with cmake, by only setting it for `src`. Drop checker exception. - CI: use `--disable-dependency-tracking` in existing jobs. - CI: install packages before git checkout, in existing jobs. Closes #14678
show more ...
|
#
d222dbe7 |
| 09-Aug-2024 |
Viktor Szakats |
build: tidy up internal macro names for `libcurl.pc` Rename internal macros to match their `libcurl.pc` metadata counterpart. Also apply these to the `curl-config.in` template.
build: tidy up internal macro names for `libcurl.pc` Rename internal macros to match their `libcurl.pc` metadata counterpart. Also apply these to the `curl-config.in` template. - `CPPFLAG_CURL_STATICLIB` -> `LIBCURL_PC_CFLAGS` - `LIBCURL_LIBS` -> `LIBCURL_PC_LIBS_PRIVATE` - `LIBCURL_NO_SHARED` -> `LIBCURL_PC_LIBS` Closes #14476
show more ...
|
#
9e4a2187 |
| 09-Aug-2024 |
Viktor Szakats |
autotools: add `--with-windows-unicode` option - add `--with-windows-unicode` and `--without-windows-unicode` (default) options. - enable it in a CI job. Fixes #7229
autotools: add `--with-windows-unicode` option - add `--with-windows-unicode` and `--without-windows-unicode` (default) options. - enable it in a CI job. Fixes #7229 Closes #14478
show more ...
|
#
8a3740bc |
| 29-Jun-2024 |
Viktor Szakats |
curl: support embedding a CA bundle Add the ability to embed a CA bundle into the curl binary. It is used when no other runtime or build-time option set one. This helps curl-for
curl: support embedding a CA bundle Add the ability to embed a CA bundle into the curl binary. It is used when no other runtime or build-time option set one. This helps curl-for-win macOS and Linux builds to run standalone, and also helps Windows builds to avoid picking up the CA bundle from an arbitrary (possibly world-writable) location (though this behaviour is not currently disablable). Usage: - cmake: `-DCURL_CA_EMBED=/path/to/curl-ca-bundle.crt` - autotools: `--with-ca-embed=/path/to/curl-ca-bundle.crt` - Makefile.mk: `CURL_CA_EMBED=/path/to/curl-ca-bundle.crt` Also add new command-line option `--dump-ca-embed` to dump the embedded CA bundle to standard output. Closes #14059
show more ...
|
#
5c873da9 |
| 28-Jun-2024 |
Daniel Stenberg |
src/Makefile.am: remove SUBDIRS assignment It was once used to continue into ../docs but is just leftovers now. Closes #14054
|
#
59dc9f7e |
| 20-May-2024 |
Viktor Szakats |
build: untangle `CURLDEBUG` and `DEBUGBUILD` macros `CURLDEBUG` is meant to enable memory tracking, but in a bunch of cases, it was protecting debug features that were supposed to be gua
build: untangle `CURLDEBUG` and `DEBUGBUILD` macros `CURLDEBUG` is meant to enable memory tracking, but in a bunch of cases, it was protecting debug features that were supposed to be guarded with `DEBUGBUILD`. Replace these uses with `DEBUGBUILD`. This leaves `CURLDEBUG` uses solely for its intended purpose: to enable the memory tracking debug feature. Also: - autotools: rely on `DEBUGBUILD` to enable `checksrc`. Instead of `CURLDEBUG`, which worked in most cases because debug builds enable `CURLDEBUG` by default, but it's not accurate. - include `lib/easyif.h` instead of keeping a copy of a declaration. - add CI test jobs for the build issues discovered. Ref: https://github.com/curl/curl/pull/13694#issuecomment-2120311894 Closes #13718
show more ...
|
#
b4e8183f |
| 08-Apr-2024 |
Daniel Stenberg |
src/Makefile.am: access curl.txt using a relative path, not abs ... to make it work when mounted using different mount points. Like when generated/used inside and outside of a docker ima
src/Makefile.am: access curl.txt using a relative path, not abs ... to make it work when mounted using different mount points. Like when generated/used inside and outside of a docker image. Closes #13320
show more ...
|
#
f03c8563 |
| 04-Mar-2024 |
Daniel Stenberg |
docs: ascii version of manpage without nroff Create ASCII version of manpage without nroff - build src/tool_hugegelp.c from the ascii manpage - move the the manpage and the as
docs: ascii version of manpage without nroff Create ASCII version of manpage without nroff - build src/tool_hugegelp.c from the ascii manpage - move the the manpage and the ascii version build to docs/cmdline-opts - remove all use of nroff from the build process - should make the build entirely reproducible (by avoiding nroff) - partly reverts 2620aa9 to build libcurl option man pages one by one in cmake because the appveyor builds got all crazy until I did The ASCII version of the manpage - is built with gen.pl, just like the manpage is - has a right-justified column making the appearance similar to the previous version - uses a 4-space indent per level (instead of the old version's 7) - does not do hyphenation of words (which nroff does) History We first made the curl build use nroff for building the hugehelp file in December 1998, for curl 5.2. Closes #13047
show more ...
|
#
54132150 |
| 03-Feb-2024 |
Chris Webb |
configure: add --disable-docs flag Building man pages from curldown sources now requires perl. Add a --disable-docs flag to configure to enable building and installing without docume
configure: add --disable-docs flag Building man pages from curldown sources now requires perl. Add a --disable-docs flag to configure to enable building and installing without documentation where perl is not available or man pages are not required. This is selected automatically (with a warning) when perl is not found by configure. Fixes #12832 Closes #12857
show more ...
|
#
52c4d8d3 |
| 25-Jan-2024 |
Daniel Stenberg |
tool: fix the listhelp generation command The previous command line to generate the tool_listhelp.c source file broke with 2494b8dd5175cee7. Make 'make listhelp' invoked in src/
tool: fix the listhelp generation command The previous command line to generate the tool_listhelp.c source file broke with 2494b8dd5175cee7. Make 'make listhelp' invoked in src/ generate it. Also update the comment in the file to mention the right procedure. Closes #12786
show more ...
|
#
b365a34c |
| 13-Nov-2023 |
Viktor Szakats |
autotools: accept linker flags via `CURL_LDFLAGS_{LIB,BIN}` To allow passing `LDFLAGS` specific to libcurl (`CURL_LDFLAGS_LIB`) and curl tool (`CURL_LDFLAGS_BIN`). This makes it
autotools: accept linker flags via `CURL_LDFLAGS_{LIB,BIN}` To allow passing `LDFLAGS` specific to libcurl (`CURL_LDFLAGS_LIB`) and curl tool (`CURL_LDFLAGS_BIN`). This makes it possible to build libcurl and curl with a single invocation with lib- and tool-specific custom linker flags. Such flag can be enabling `.map` files, a `.def` file for libcurl DLL, controlling static/shared, incl. requesting a static curl tool (with `-static-libtool-libs`) while building both shared and static libcurl. curl-for-win uses the above and some more. These options are already supported in `Makefile.mk`. CMake has built-in variables for this. Closes #12312
show more ...
|
#
fac90bd5 |
| 11-Oct-2023 |
Viktor Szakats |
build: add `src/.checksrc` to source tarball Regression from e5bb88b8f824ed87620bd923552534c83c2a516e #11958 Bug: https://github.com/curl/curl/pull/11958#issuecomment-1757079071
build: add `src/.checksrc` to source tarball Regression from e5bb88b8f824ed87620bd923552534c83c2a516e #11958 Bug: https://github.com/curl/curl/pull/11958#issuecomment-1757079071 Reported-by: Romain Geissler Fixes #12084 Closes #12085
show more ...
|
#
3ef3eaa2 |
| 02-Oct-2023 |
Daniel Stenberg |
base64: also build for curl Since the tool itself now uses the base64 code using the curlx way, it needs to build also when the tool needs it. Starting now, the tool build defines BU
base64: also build for curl Since the tool itself now uses the base64 code using the curlx way, it needs to build also when the tool needs it. Starting now, the tool build defines BULDING_CURL to allow lib-side code to use it. Follow-up to 2e160c9c6525 Closes #12010
show more ...
|
#
7c8bae0d |
| 29-Jul-2023 |
Daniel Stenberg |
nss: remove support for this TLS library Closes #11459
|
#
934da11c |
| 25-Jul-2023 |
Daniel Stenberg |
docs: provide more see also for cipher options More cross references. Hide nroff errors. Closes #11513
|
#
2bc1d775 |
| 02-Jan-2023 |
Daniel Stenberg |
copyright: update all copyright lines and remove year ranges - they are mostly pointless in all major jurisdictions - many big corporations and projects already don't use them - save
copyright: update all copyright lines and remove year ranges - they are mostly pointless in all major jurisdictions - many big corporations and projects already don't use them - saves us from pointless churn - git keeps history for us - the year range is kept in COPYING checksrc is updated to allow non-year using copyright statements Closes #10205
show more ...
|
#
a8861b6c |
| 22-Nov-2022 |
Viktor Szakats |
Makefile.mk: portable Makefile.m32 Update bare GNU Make `Makefile.m32` to: - Move objects into a subdirectory. - Add support for MS-DOS. Tested with DJGPP. - Add support for
Makefile.mk: portable Makefile.m32 Update bare GNU Make `Makefile.m32` to: - Move objects into a subdirectory. - Add support for MS-DOS. Tested with DJGPP. - Add support for Watt-32 (on MS-DOS). - Add support for AmigaOS. - Rename `Makefile.m32` to `Makefile.mk` - Replace `ARCH` with `TRIPLET`. - Build `tool_hugehelp.c` proper (when tools are available). - Drop MS-DOS compatibility macro `USE_ZLIB` (replaced by `HAVE_LIBZ`) - Add support for `ZLIB_LIBS` to override `-lz`. - Omit object files when building examples. - Default `CC` to `gcc` once again, for convenience. (Caveat: compiler name `cc` cannot be set now.) - Set `-DCURL_NO_OLDIES` for examples, like autotools does. - Delete `makefile.dj` files. Notice the configuration details and defaults are not retained with the new method. - Delete `makefile.amiga` files. A successful build needs a few custom options. We're also not retaining all build details from the existing Amiga make files. - Rename `Makefile.m32` to `Makefile.mk` to reflect that they are not Windows/MinGW32-specific anymore. - Add support for new `CFG` options: `-map`, `-debug`, `-trackmem` - Set `-DNDEBUG` by default. - Allow using `-DOS=...` in all `lib/config-*.h` headers, syncing this with `config-win32.h`. - Look for zlib parts in `ZLIB_PATH/include` and `ZLIB_PATH/lib` instead of bare `ZLIB_PATH`. Note that existing build configurations for MS-DOS and AmigaOS likely become incompatible with this change. Example AmigaOS configuration: ``` export CROSSPREFIX=/opt/amiga/bin/m68k-amigaos- export CC=gcc export CPPFLAGS='-DHAVE_PROTO_BSDSOCKET_H' export CFLAGS='-mcrt=clib2' export LDFLAGS="${CFLAGS}" export LIBS='-lnet -lm' make -C lib -f Makefile.mk make -C src -f Makefile.mk ``` Example MS-DOS configuration: ``` export CROSSPREFIX=/opt/djgpp/bin/i586-pc-msdosdjgpp- export WATT_PATH=/opt/djgpp/net/watt export ZLIB_PATH=/opt/djgpp export OPENSSL_PATH=/opt/djgpp export OPENSSL_LIBS='-lssl -lcrypt' export CFG=-zlib-ssl make -C lib -f Makefile.mk make -C src -f Makefile.mk ``` Closes #9764
show more ...
|
#
3390ef0a |
| 01-Nov-2022 |
Viktor Szakats |
windows: fail early with a missing windres in autotools `windres` is not always auto-detected by autotools when building for Windows. When this happened, the build failed with a confusin
windows: fail early with a missing windres in autotools `windres` is not always auto-detected by autotools when building for Windows. When this happened, the build failed with a confusing error due to the empty `RC` command: ``` /bin/bash ../libtool --tag=RC --mode=compile -I../include -DCURL_EMBED_MANIFEST -i curl.rc -o curl.o [...] Usage: /sandbox/curl/libtool [OPTION]... [MODE-ARG]... Try 'libtool --help' for more information. libtool: error: unrecognised option: '-I../include' ``` Improve this by verifying if `RC` is set, and fail with a clear error otherwise. Follow-up to 6de7322c03d5b4d91576a7d9fc893e03cc9d1057 Ref: https://curl.se/mail/lib-2022-10/0049.html Reported-by: Thomas Glanzmann Closes #9781
show more ...
|
#
b7260c4f |
| 27-Oct-2022 |
Viktor Szakats |
windows: fix linking .rc to shared curl with autotools `./configure --enable-shared --disable-static` fails when trying to link a shared `curl.exe`, due to `libtool` magically changing t
windows: fix linking .rc to shared curl with autotools `./configure --enable-shared --disable-static` fails when trying to link a shared `curl.exe`, due to `libtool` magically changing the output filename of `windres` to one that it doesn't find when linking: ``` /bin/sh ../libtool --tag=RC --mode=compile windres -I../../curl/include -DCURL_EMBED_MANIFEST -i ../../curl/src/curl.rc -o curl.o libtool: compile: windres -I../../curl/include -DCURL_EMBED_MANIFEST -i ../../curl/src/curl.rc -o .libs/curl.o [...] CCLD curl.exe clang: error: no such file or directory: 'curl.o' ``` Let's resolve this by skipping `libtool` and calling `windres` directly when building `src` (aka `curl.exe`). Leave `lib` unchanged, as it does need the `libtool` magic. This solution is compatible with building a static `curl.exe`. This build scenario is not CI-tested. While here, delete an obsolete comment about a permanent `libtool` warning that we've resolved earlier. Regression from 6de7322c03d5b4d91576a7d9fc893e03cc9d1057 Reported-by: Christoph Reiter Fixes #9803 Closes #9805
show more ...
|