Skip to content

ci: add curl-for-win builds: Linux MUSL, macOS, Windows - #13335

Closed
vszakats wants to merge 4 commits into
curl:masterfrom
vszakats:ci-curl-for-win
Closed

ci: add curl-for-win builds: Linux MUSL, macOS, Windows#13335
vszakats wants to merge 4 commits into
curl:masterfrom
vszakats:ci-curl-for-win

Conversation

@vszakats

@vszakats vszakats commented Apr 10, 2024

Copy link
Copy Markdown
Member

Linux MUSL (llvm/clang), macOS Apple clang, Windows (llvm/clang).

Configured with HTTP/2 and HTTP/3 and other dependencies (the default
curl-for-win) for a comprehensive build test.

curl 8.8.0-DEV (x86_64-unknown-linux-musl) libcurl/8.8.0-DEV LibreSSL/3.9.1 zlib/1.3.1 brotli/1.1.0 zstd/1.5.6 libpsl/0.21.5 libssh2/1.11.0 nghttp2/1.61.0 ngtcp2/1.4.0 nghttp3/1.2.0
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss
Features: alt-svc AsynchDNS brotli HSTS HTTP2 HTTP3 HTTPS-proxy IPv6 Largefile libz NTLM PSL SSL threadsafe UnixSockets zstd

curl 8.8.0-DEV (x86_64-apple-darwin) libcurl/8.8.0-DEV LibreSSL/3.9.1 zlib/1.3.1 brotli/1.1.0 zstd/1.5.6 libpsl/0.21.5 libssh2/1.11.0 nghttp2/1.61.0 ngtcp2/1.4.0 nghttp3/1.2.0
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss
Features: alt-svc AsynchDNS brotli HSTS HTTP2 HTTP3 HTTPS-proxy IPv6 Largefile libz NTLM PSL SSL threadsafe UnixSockets zstd

curl 8.8.0-DEV (x86_64-w64-mingw32) libcurl/8.8.0-DEV LibreSSL/3.9.1 zlib/1.3.1 brotli/1.1.0 zstd/1.5.6 WinIDN libpsl/0.21.5 libssh2/1.11.0 nghttp2/1.61.0 ngtcp2/1.4.0 nghttp3/1.2.0
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss
Features: alt-svc AsynchDNS brotli HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM PSL SPNEGO SSL SSPI threadsafe UnixSockets zstd

Limited to x64, because for build testing the additional CPUs don't add
much value compared to the extra build time. They can be enabled easily
if deemed useful.

To the extent of curl-for-win configuration options, it's trivial to add
further build combinations.

Closes #13335

@vszakats vszakats added the CI Continuous Integration label Apr 10, 2024
@vszakats vszakats changed the title ci: add curl-for-win builds ci: add curl-for-win builds: linux MUSL, macOS, Windows Apr 10, 2024
@vszakats vszakats added build appleOS specific to an Apple operating system HTTP/2 HTTP/3 h3 or quic related cmake and removed appleOS specific to an Apple operating system labels Apr 10, 2024
@vszakats vszakats changed the title ci: add curl-for-win builds: linux MUSL, macOS, Windows ci: add curl-for-win builds: Linux MUSL, macOS, Windows Apr 10, 2024
Linux MUSL, macOS Apple clang, Windows LLVM.

Configured with HTTP/2 and HTTP/3 and other dependencies (the default
curl-for-win) for a comprehensive build test.

Limited to x64, because for build testing the additional CPUs don't
add much value. They can be enabled easily if deemed useful.

```
curl 8.8.0-DEV (x86_64-unknown-linux-musl) libcurl/8.8.0-DEV LibreSSL/3.9.1 zlib/1.3.1 brotli/1.1.0 zstd/1.5.6 libpsl/0.21.5 libssh2/1.11.1_DEV nghttp2/1.61.0 ngtcp2/1.4.0 nghttp3/1.2.0
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss
Features: alt-svc AsynchDNS brotli HSTS HTTP2 HTTP3 HTTPS-proxy IPv6 Largefile libz NTLM PSL SSL threadsafe UnixSockets zstd

curl 8.8.0-DEV (x86_64-apple-darwin) libcurl/8.8.0-DEV LibreSSL/3.9.1 zlib/1.3.1 brotli/1.1.0 zstd/1.5.6 libpsl/0.21.5 libssh2/1.11.0 nghttp2/1.61.0 ngtcp2/1.4.0 nghttp3/1.2.0
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss
Features: alt-svc AsynchDNS brotli HSTS HTTP2 HTTP3 HTTPS-proxy IPv6 Largefile libz NTLM PSL SSL threadsafe UnixSockets zstd

curl 8.8.0-DEV (x86_64-w64-mingw32) libcurl/8.8.0-DEV LibreSSL/3.9.1 zlib/1.3.1 brotli/1.1.0 zstd/1.5.6 WinIDN libpsl/0.21.5 libssh2/1.11.1_DEV nghttp2/1.61.0 ngtcp2/1.4.0 nghttp3/1.2.0
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss
Features: alt-svc AsynchDNS brotli HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM PSL SPNEGO SSL SSPI threadsafe UnixSockets zstd
```

Closes curl#13335
@vszakats

Copy link
Copy Markdown
Member Author

To the extent of curl-for-win build options, it's trivial to add further build combinations.

E.g. for gcc, with debug, with GLIBC, SecureChannel or Schannel, without H3, without H2,
without zlib, zstd, brotli, IDN, SSH, or with libssh instead of libssh2. quictls, OpenSSL 3 + QUIC.
It's also possible to do non-TLS builds, or minimal builds with almost no options. Alpine
images are also supported. In theory also MSYS2, but I haven't tried those for a long time.
MultiSSL is also supported.

Supported CPUs: arm64 (Linux, macOS, Windows), riscv64 (Linux) and x86 (Windows).

Complete list of options:
https://github.com/curl/curl-for-win/blob/80bd09bcdcff618babe9befd930e1016eca6367e/_build.sh#L34-L78

All builds use CMake, they are all out-of-tree and does cross-build when necessary.

It shows curl's commit hash in the curl-for-win line and also
misses all of the dependencies due to the CW_NOPKG=1 setting.
@vszakats vszakats closed this in e14daeb Apr 11, 2024
@vszakats
vszakats deleted the ci-curl-for-win branch April 11, 2024 07:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

build CI Continuous Integration cmake HTTP/2 HTTP/3 h3 or quic related

Development

Successfully merging this pull request may close these issues.

2 participants