You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Switch from `curl-gnumake.sh` to `curl-cmake.sh` with upcoming curl
release v8.5.0.
cmake builds are now _faster_ for Windows builds than raw gnumake
(aka `Makefile.mk`). They also use 'unity' mode, which makes builds
run fast with the side-effect of also creating potentially more
efficient binaries by allowing better compiler optimizations.
This also makes curl-for-win use the same build system for all target
platforms (`Makefile.mk` is not available for *nix platforms).
Initially on 2022-07-04 cmake was 25% slower than gnumake. By
2022-09-26 this reduced to 20%, by 2023-07-29 to 18% and after the
latest round of updates gnumake came out 7% slower than cmake.
This is for Windows, for a triple x64, arm64 and x86 build. In
absolute times this is 27m22s for cmake and 29m11s for gnumake.
(FWIW autotools builds are 52% slower than cmake unity builds now.)
Making cmake builds fast was a multi-year effort with these major steps:
1. add support for cmake builds in curl-for-win.
420e73c
2. bring it in-line with gnumake and autotools builds and tidy-up
as much as possible. Scattered to a many commits.
3. delete a whole bunch of unused feature detections.
curl/curl@4d73854curl/curl#9044
(and a lot more smaller commits)
4. speed up picky warning option initialization by avoiding brute-force
all options. (first in libssh2, then in curl, then applied also
ngtcp2, nghttp3, nghttp2)
curl/curl@9c543decurl/curl#10973
5. implement single build run for shared and static libcurl + tool
(first in libssh2)
curl/curl@1199308curl/curl#1150553dcd49
6. implement single build pass for shared and static libcurl
(for Windows initially)
curl/curl@2ebc74ccurl/curl#11546
7. extend above to non-Windows (e.g. macOS)
curl/curl@fc9bfb1curl/curl#11627bafa77d (mac)
1b27304 (linux)
8. implement unity builds: single compiler invocation for libcurl + tool
curl/curl@3f8fc25curl/curl#11095curl/curl@f42a279curl/curl#1192867d7fd3
9. speed up 4x the cmake initialization phase (for Windows)
curl/curl@2100d9fcurl/curl#12044
10. speed up cmake initialization even more by pre-filling
detection results for our well-known mingw-w64 environments.
74dd9675a43c61
+1: speed up autotools initialization by mitigating a brute-force
feature detection on Windows. This reduced total build times
by 5 minutes at the time, for the 3 Windows targets in total.
curl/curl@6adcff6curl/curl#9591
Also update build times for cmake-unity and gnumake, based on runs:
cmake-unity: https://ci.appveyor.com/project/curlorg/curl-for-win/builds/48357875
gnumake: https://ci.appveyor.com/project/curlorg/curl-for-win/builds/48358005
0 commit comments