Compare commits
No commits in common. "master" and "curl-8_12_0" have entirely different histories.
master
...
curl-8_12_
6
.github/labeler.yml
vendored
6
.github/labeler.yml
vendored
@ -78,8 +78,7 @@ build:
|
|||||||
plan9/**,\
|
plan9/**,\
|
||||||
projects/**,\
|
projects/**,\
|
||||||
winbuild/**,\
|
winbuild/**,\
|
||||||
lib/libcurl.def,\
|
lib/libcurl.def\
|
||||||
tests/cmake/**\
|
|
||||||
}"
|
}"
|
||||||
|
|
||||||
CI:
|
CI:
|
||||||
@ -101,8 +100,7 @@ cmake:
|
|||||||
**/CMakeLists.txt,\
|
**/CMakeLists.txt,\
|
||||||
CMake/**,\
|
CMake/**,\
|
||||||
docs/INSTALL-CMAKE.md,\
|
docs/INSTALL-CMAKE.md,\
|
||||||
lib/curl_config.h.cmake,\
|
lib/curl_config.h.cmake\
|
||||||
tests/cmake/**\
|
|
||||||
}"
|
}"
|
||||||
|
|
||||||
cmdline tool:
|
cmdline tool:
|
||||||
|
|||||||
1
.github/scripts/binarycheck.sums
vendored
1
.github/scripts/binarycheck.sums
vendored
@ -17,6 +17,7 @@ b967734c9bfe3d7a1a7795f348f0bce4d9ba15ca9590697ef2d4d15b92822db0 ./tests/certs/
|
|||||||
26ee981dcb84b6a2adce601084b78e6b787b54a2a997549582a8bd42087ab51b ./tests/data/test1426
|
26ee981dcb84b6a2adce601084b78e6b787b54a2a997549582a8bd42087ab51b ./tests/data/test1426
|
||||||
d640923e45809a3fe277e0af90459d82d32603aacc7b8db88754fcb335bf98df ./tests/data/test1531
|
d640923e45809a3fe277e0af90459d82d32603aacc7b8db88754fcb335bf98df ./tests/data/test1531
|
||||||
6f51bc318104fb5fe4b6013fc4e8e1c3c8dec1819202e8ea025bdbc4bbc8c02d ./tests/data/test1938
|
6f51bc318104fb5fe4b6013fc4e8e1c3c8dec1819202e8ea025bdbc4bbc8c02d ./tests/data/test1938
|
||||||
|
28a957ec3397881bbafd0d97879cedfd475bcd1ece903e531576affd7aa3865c ./tests/data/test2080
|
||||||
33809cab2442488e5985b4939727bc4ead9fc65150f53008e3e4c93140675a94 ./tests/data/test262
|
33809cab2442488e5985b4939727bc4ead9fc65150f53008e3e4c93140675a94 ./tests/data/test262
|
||||||
2d073a52984bab1f196d80464ea8ab6dafd887bd5fee9ed58603f8510df0c6a5 ./tests/data/test35
|
2d073a52984bab1f196d80464ea8ab6dafd887bd5fee9ed58603f8510df0c6a5 ./tests/data/test35
|
||||||
4cc9fd6f31d0bb4dcb38e1565796e7ec5e48ea5ac9d3c1101de576be618786ba ./tests/data/test463
|
4cc9fd6f31d0bb4dcb38e1565796e7ec5e48ea5ac9d3c1101de576be618786ba ./tests/data/test463
|
||||||
|
|||||||
114
.github/scripts/cleancmd.pl
vendored
114
.github/scripts/cleancmd.pl
vendored
@ -3,117 +3,55 @@
|
|||||||
#
|
#
|
||||||
# SPDX-License-Identifier: curl
|
# SPDX-License-Identifier: curl
|
||||||
#
|
#
|
||||||
# Input: cmdline docs markdown files, they get modified *in place*
|
# Input: a cmdline docs markdown, it gets modified *in place*
|
||||||
#
|
|
||||||
# Strip off the leading meta-data/header part, remove all known curl symbols
|
|
||||||
# and long command line options. Also clean up whatever else the spell checker
|
|
||||||
# might have a problem with that we still deem is fine.
|
|
||||||
#
|
#
|
||||||
|
# The main purpose is to strip off the leading meta-data part, but also to
|
||||||
|
# clean up whatever else the spell checker might have a problem with that we
|
||||||
|
# still deem is fine.
|
||||||
|
|
||||||
open(S, "<./docs/libcurl/symbols-in-versions")
|
my $header = 1;
|
||||||
|| die "can't find symbols-in-versions";
|
while(1) {
|
||||||
while(<S>) {
|
# set this if the markdown has no meta-data header to skip
|
||||||
if(/^([^ ]*) /) {
|
if($ARGV[0] eq "--no-header") {
|
||||||
push @asyms, $1;
|
shift @ARGV;
|
||||||
|
$header = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
last;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
close(S);
|
|
||||||
|
|
||||||
# init the opts table with "special" options not easy to figure out
|
my $f = $ARGV[0];
|
||||||
my @aopts = (
|
|
||||||
'--ftp-ssl-reqd', # old alias
|
|
||||||
);
|
|
||||||
|
|
||||||
open(O, "<./docs/options-in-versions")
|
|
||||||
|| die "can't find options-in-versions";
|
|
||||||
while(<O>) {
|
|
||||||
chomp;
|
|
||||||
if(/^([^ ]+)/) {
|
|
||||||
my $o = $1;
|
|
||||||
push @aopts, $o;
|
|
||||||
if($o =~ /^--no-(.*)/) {
|
|
||||||
# for the --no options, also make one without it
|
|
||||||
push @aopts, "--$1";
|
|
||||||
}
|
|
||||||
elsif($o =~ /^--disable-(.*)/) {
|
|
||||||
# for the --disable options, also make the special ones
|
|
||||||
push @aopts, "--$1";
|
|
||||||
push @aopts, "--no-$1";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
close(O);
|
|
||||||
|
|
||||||
open(C, "<./.github/scripts/spellcheck.curl")
|
|
||||||
|| die "can't find spellcheck.curl";
|
|
||||||
while(<C>) {
|
|
||||||
if(/^\#/) {
|
|
||||||
next;
|
|
||||||
}
|
|
||||||
chomp;
|
|
||||||
if(/^([^ ]+)/) {
|
|
||||||
push @asyms, $1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
close(C);
|
|
||||||
|
|
||||||
# longest symbols first
|
|
||||||
my @syms = sort { length($b) <=> length($a) } @asyms;
|
|
||||||
|
|
||||||
# longest cmdline options first
|
|
||||||
my @opts = sort { length($b) <=> length($a) } @aopts;
|
|
||||||
|
|
||||||
sub process {
|
|
||||||
my ($f) = @_;
|
|
||||||
|
|
||||||
my $ignore = 0;
|
|
||||||
my $sepcount = 0;
|
|
||||||
my $out;
|
|
||||||
my $line = 0;
|
|
||||||
open(F, "<$f") or die;
|
open(F, "<$f") or die;
|
||||||
|
|
||||||
|
my $ignore = $header;
|
||||||
|
my $sepcount = 0;
|
||||||
|
my @out;
|
||||||
while(<F>) {
|
while(<F>) {
|
||||||
$line++;
|
if(/^---/ && $header) {
|
||||||
if(/^---/ && ($line == 1)) {
|
if(++$sepcount == 2) {
|
||||||
$ignore = 1;
|
|
||||||
next;
|
|
||||||
}
|
|
||||||
elsif(/^---/ && $ignore) {
|
|
||||||
$ignore = 0;
|
$ignore = 0;
|
||||||
|
}
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
next if($ignore);
|
next if($ignore);
|
||||||
|
|
||||||
my $l = $_;
|
|
||||||
|
|
||||||
# strip out backticked words
|
# strip out backticked words
|
||||||
$l =~ s/`[^`]+`//g;
|
$_ =~ s/`[^`]+`//g;
|
||||||
|
|
||||||
# **bold**
|
# strip out all long command line options
|
||||||
$l =~ s/\*\*(\S.*?)\*\*//g;
|
$_ =~ s/--[a-z0-9-]+//g;
|
||||||
# *italics*
|
|
||||||
$l =~ s/\*(\S.*?)\*//g;
|
|
||||||
|
|
||||||
# strip out https URLs, we don't want them spellchecked
|
# strip out https URLs, we don't want them spellchecked
|
||||||
$l =~ s!https://[a-z0-9\#_/.-]+!!gi;
|
$_ =~ s!https://[a-z0-9\#_/.-]+!!gi;
|
||||||
|
|
||||||
$out .= $l;
|
push @out, $_;
|
||||||
}
|
}
|
||||||
close(F);
|
close(F);
|
||||||
|
|
||||||
# cut out all known curl cmdline options
|
|
||||||
map { $out =~ s/$_//g; } (@opts);
|
|
||||||
|
|
||||||
# cut out all known curl symbols
|
|
||||||
map { $out =~ s/\b$_\b//g; } (@syms);
|
|
||||||
|
|
||||||
if(!$ignore) {
|
if(!$ignore) {
|
||||||
open(O, ">$f") or die;
|
open(O, ">$f") or die;
|
||||||
print O $out;
|
print O @out;
|
||||||
close(O);
|
close(O);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
for my $f (@ARGV) {
|
|
||||||
process($f);
|
|
||||||
}
|
|
||||||
|
|||||||
86
.github/scripts/cleanspell.pl
vendored
Executable file
86
.github/scripts/cleanspell.pl
vendored
Executable file
@ -0,0 +1,86 @@
|
|||||||
|
#!/usr/bin/env perl
|
||||||
|
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: curl
|
||||||
|
#
|
||||||
|
# Given: a libcurl curldown man page
|
||||||
|
# Outputs: the same file, minus the SYNOPSIS and the EXAMPLE sections
|
||||||
|
#
|
||||||
|
|
||||||
|
my $f = $ARGV[0];
|
||||||
|
|
||||||
|
open(F, "<$f") or die;
|
||||||
|
|
||||||
|
my @out;
|
||||||
|
my $ignore = 0;
|
||||||
|
while(<F>) {
|
||||||
|
if($_ =~ /^# (SYNOPSIS|EXAMPLE)/) {
|
||||||
|
$ignore = 1;
|
||||||
|
}
|
||||||
|
elsif($ignore && ($_ =~ /^# [A-Z]/)) {
|
||||||
|
$ignore = 0;
|
||||||
|
}
|
||||||
|
elsif(!$ignore) {
|
||||||
|
# **bold**
|
||||||
|
$_ =~ s/\*\*(\S.*?)\*\*//g;
|
||||||
|
# *italics*
|
||||||
|
$_ =~ s/\*(\S.*?)\*//g;
|
||||||
|
|
||||||
|
$_ =~ s/CURL(M|SH|U|H)code//g;
|
||||||
|
$_ =~ s/CURL_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLALTSVC_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLAUTH_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLE_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLFORM_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLFTP_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLFTPAUTH_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLFTPMETHOD_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLFTPSSL_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLGSSAPI_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLHEADER_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLINFO_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLM_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLMIMEOPT_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLMOPT_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLOPT_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLPIPE_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLPROTO_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLPROXY_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLPX_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLSHE_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLSHOPT_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLSSLOPT_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLSSH_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLSSLBACKEND_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLU_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLUPART_[A-Z0-9_]*//g;
|
||||||
|
#$_ =~ s/\bCURLU\b//g; # stand-alone CURLU
|
||||||
|
$_ =~ s/CURLUE_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLHE_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLWS_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLKH[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLUPART_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLUSESSL_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLPAUSE_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/CURLHSTS_[A-Z0-9_]*//g;
|
||||||
|
$_ =~ s/curl_global_([a-z_]*)//g;
|
||||||
|
$_ =~ s/curl_(strequal|strnequal|formadd|waitfd|formget|getdate|formfree)//g;
|
||||||
|
$_ =~ s/curl_easy_([a-z]*)//g;
|
||||||
|
$_ =~ s/curl_multi_([a-z_]*)//g;
|
||||||
|
$_ =~ s/curl_mime_(subparts|addpart|filedata|data_cb)//g;
|
||||||
|
$_ =~ s/curl_ws_(send|recv|meta)//g;
|
||||||
|
$_ =~ s/curl_url_(dup)//g;
|
||||||
|
$_ =~ s/curl_pushheader_by(name|num)//g;
|
||||||
|
$_ =~ s/libcurl-(env|ws)//g;
|
||||||
|
$_ =~ s/libcurl\\-(env|ws)//g;
|
||||||
|
$_ =~ s/(^|\W)((tftp|https|http|ftp):\/\/[a-z0-9\-._~%:\/?\#\[\]\@!\$&'()*+,;=\\]+)//gi;
|
||||||
|
push @out, $_;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close(F);
|
||||||
|
|
||||||
|
open(O, ">$f") or die;
|
||||||
|
for my $l (@out) {
|
||||||
|
print O $l;
|
||||||
|
}
|
||||||
|
close(O);
|
||||||
151
.github/scripts/spellcheck.curl
vendored
151
.github/scripts/spellcheck.curl
vendored
@ -1,151 +0,0 @@
|
|||||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: curl
|
|
||||||
#
|
|
||||||
# common variable types + structs
|
|
||||||
# callback typedefs
|
|
||||||
# public functions names
|
|
||||||
# some man page names
|
|
||||||
curl_fileinfo
|
|
||||||
curl_forms
|
|
||||||
curl_hstsentry
|
|
||||||
curl_httppost
|
|
||||||
curl_index
|
|
||||||
curl_khkey
|
|
||||||
curl_pushheaders
|
|
||||||
curl_waitfd
|
|
||||||
CURLcode
|
|
||||||
CURLformoption
|
|
||||||
CURLHcode
|
|
||||||
CURLMcode
|
|
||||||
CURLMsg
|
|
||||||
CURLSHcode
|
|
||||||
CURLUcode
|
|
||||||
curl_calloc_callback
|
|
||||||
curl_chunk_bgn_callback
|
|
||||||
curl_chunk_end_callback
|
|
||||||
curl_conv_callback
|
|
||||||
curl_debug_callback
|
|
||||||
curl_fnmatch_callback
|
|
||||||
curl_formget_callback
|
|
||||||
curl_free_callback
|
|
||||||
curl_hstsread_callback
|
|
||||||
curl_hstswrite_callback
|
|
||||||
curl_ioctl_callback
|
|
||||||
curl_malloc_callback
|
|
||||||
curl_multi_timer_callback
|
|
||||||
curl_opensocket_callback
|
|
||||||
curl_prereq_callback
|
|
||||||
curl_progress_callback
|
|
||||||
curl_push_callback
|
|
||||||
curl_read_callback
|
|
||||||
curl_realloc_callback
|
|
||||||
curl_resolver_start_callback
|
|
||||||
curl_seek_callback
|
|
||||||
curl_socket_callback
|
|
||||||
curl_sockopt_callback
|
|
||||||
curl_ssl_ctx_callback
|
|
||||||
curl_strdup_callback
|
|
||||||
curl_trailer_callback
|
|
||||||
curl_write_callback
|
|
||||||
curl_xferinfo_callback
|
|
||||||
curl_strequal
|
|
||||||
curl_strnequal
|
|
||||||
curl_mime_init
|
|
||||||
curl_mime_free
|
|
||||||
curl_mime_addpart
|
|
||||||
curl_mime_name
|
|
||||||
curl_mime_filename
|
|
||||||
curl_mime_type
|
|
||||||
curl_mime_encoder
|
|
||||||
curl_mime_data
|
|
||||||
curl_mime_filedata
|
|
||||||
curl_mime_data_cb
|
|
||||||
curl_mime_subparts
|
|
||||||
curl_mime_headers
|
|
||||||
curl_formadd
|
|
||||||
curl_formget
|
|
||||||
curl_formfree
|
|
||||||
curl_getdate
|
|
||||||
curl_getenv
|
|
||||||
curl_version
|
|
||||||
curl_easy_escape
|
|
||||||
curl_escape
|
|
||||||
curl_easy_unescape
|
|
||||||
curl_unescape
|
|
||||||
curl_free
|
|
||||||
curl_global_init
|
|
||||||
curl_global_init_mem
|
|
||||||
curl_global_cleanup
|
|
||||||
curl_global_trace
|
|
||||||
curl_global_sslset
|
|
||||||
curl_slist_append
|
|
||||||
curl_slist_free_all
|
|
||||||
curl_getdate
|
|
||||||
curl_share_init
|
|
||||||
curl_share_setopt
|
|
||||||
curl_share_cleanup
|
|
||||||
curl_version_info
|
|
||||||
curl_easy_strerror
|
|
||||||
curl_share_strerror
|
|
||||||
curl_easy_pause
|
|
||||||
curl_easy_ssls_import
|
|
||||||
curl_easy_ssls_export
|
|
||||||
curl_easy_init
|
|
||||||
curl_easy_setopt
|
|
||||||
curl_easy_perform
|
|
||||||
curl_easy_cleanup
|
|
||||||
curl_easy_getinfo
|
|
||||||
curl_easy_duphandle
|
|
||||||
curl_easy_reset
|
|
||||||
curl_easy_recv
|
|
||||||
curl_easy_send
|
|
||||||
curl_easy_upkeep
|
|
||||||
curl_easy_header
|
|
||||||
curl_easy_nextheader
|
|
||||||
curl_mprintf
|
|
||||||
curl_mfprintf
|
|
||||||
curl_msprintf
|
|
||||||
curl_msnprintf
|
|
||||||
curl_mvprintf
|
|
||||||
curl_mvfprintf
|
|
||||||
curl_mvsprintf
|
|
||||||
curl_mvsnprintf
|
|
||||||
curl_maprintf
|
|
||||||
curl_mvaprintf
|
|
||||||
curl_multi_init
|
|
||||||
curl_multi_add_handle
|
|
||||||
curl_multi_remove_handle
|
|
||||||
curl_multi_fdset
|
|
||||||
curl_multi_waitfds
|
|
||||||
curl_multi_wait
|
|
||||||
curl_multi_poll
|
|
||||||
curl_multi_wakeup
|
|
||||||
curl_multi_perform
|
|
||||||
curl_multi_cleanup
|
|
||||||
curl_multi_info_read
|
|
||||||
curl_multi_strerror
|
|
||||||
curl_multi_socket
|
|
||||||
curl_multi_socket_action
|
|
||||||
curl_multi_socket_all
|
|
||||||
curl_multi_timeout
|
|
||||||
curl_multi_setopt
|
|
||||||
curl_multi_assign
|
|
||||||
curl_multi_get_handles
|
|
||||||
curl_pushheader_bynum
|
|
||||||
curl_pushheader_byname
|
|
||||||
curl_multi_waitfds
|
|
||||||
curl_easy_option_by_name
|
|
||||||
curl_easy_option_by_id
|
|
||||||
curl_easy_option_next
|
|
||||||
curl_url
|
|
||||||
curl_url_cleanup
|
|
||||||
curl_url_dup
|
|
||||||
curl_url_get
|
|
||||||
curl_url_set
|
|
||||||
curl_url_strerror
|
|
||||||
curl_ws_recv
|
|
||||||
curl_ws_send
|
|
||||||
curl_ws_meta
|
|
||||||
libcurl-env
|
|
||||||
libcurl-ws
|
|
||||||
3
.github/scripts/spellcheck.words
vendored
3
.github/scripts/spellcheck.words
vendored
@ -251,10 +251,8 @@ Feltzing
|
|||||||
ffi
|
ffi
|
||||||
filesize
|
filesize
|
||||||
filesystem
|
filesystem
|
||||||
FindCURL
|
|
||||||
FLOSS
|
FLOSS
|
||||||
fnmatch
|
fnmatch
|
||||||
footguns
|
|
||||||
formpost
|
formpost
|
||||||
formposts
|
formposts
|
||||||
Fortnite
|
Fortnite
|
||||||
@ -951,6 +949,7 @@ winbuild
|
|||||||
WinIDN
|
WinIDN
|
||||||
WinLDAP
|
WinLDAP
|
||||||
winsock
|
winsock
|
||||||
|
winssl
|
||||||
Wireshark
|
Wireshark
|
||||||
wolfSSH
|
wolfSSH
|
||||||
wolfSSL
|
wolfSSL
|
||||||
|
|||||||
18
.github/workflows/checkdocs.yml
vendored
18
.github/workflows/checkdocs.yml
vendored
@ -107,14 +107,26 @@ jobs:
|
|||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
name: checkout
|
name: checkout
|
||||||
|
|
||||||
- name: trim all *.md files in docs/
|
- name: trim all man page *.md files
|
||||||
run: .github/scripts/cleancmd.pl $(find docs -name "*.md")
|
run: find docs -name "*.md" ! -name "_*" -print0 | xargs -0 -n1 .github/scripts/cleancmd.pl
|
||||||
|
|
||||||
|
- name: trim libcurl man page *.md files
|
||||||
|
run: find docs/libcurl \( -name "curl_*.md" -o -name "libcurl*.md" \) -print0 | xargs -0 -n1 .github/scripts/cleanspell.pl
|
||||||
|
|
||||||
|
- name: trim libcurl option man page *.md files
|
||||||
|
run: find docs/libcurl/opts -name "CURL*.md" -print0 | xargs -0 -n1 .github/scripts/cleanspell.pl
|
||||||
|
|
||||||
|
- name: trim cmdline docs markdown _*.md files
|
||||||
|
run: find docs/cmdline-opts -name "_*.md" -print0 | xargs -0 -n1 .github/scripts/cleancmd.pl --no-header
|
||||||
|
|
||||||
|
- name: trim docs/ markdown _*.md files
|
||||||
|
run: git ls-files docs/*.md docs/internals/*.md | xargs -n1 .github/scripts/cleancmd.pl --no-header
|
||||||
|
|
||||||
- name: setup the custom wordlist
|
- name: setup the custom wordlist
|
||||||
run: grep -v '^#' .github/scripts/spellcheck.words > wordlist.txt
|
run: grep -v '^#' .github/scripts/spellcheck.words > wordlist.txt
|
||||||
|
|
||||||
- name: Check Spelling
|
- name: Check Spelling
|
||||||
uses: rojopolis/spellcheck-github-actions@ed0756273a1658136c36d26e3d0353de35b98c8b # v0
|
uses: rojopolis/spellcheck-github-actions@9e0a5fb25a80b89c84899657949cbd6e17eb376c # v0
|
||||||
with:
|
with:
|
||||||
config_path: .github/scripts/spellcheck.yaml
|
config_path: .github/scripts/spellcheck.yaml
|
||||||
|
|
||||||
|
|||||||
8
.github/workflows/configure-vs-cmake.yml
vendored
8
.github/workflows/configure-vs-cmake.yml
vendored
@ -13,7 +13,6 @@ name: configure-vs-cmake
|
|||||||
- '**/CMakeLists.txt'
|
- '**/CMakeLists.txt'
|
||||||
- 'CMake/**'
|
- 'CMake/**'
|
||||||
- 'lib/curl_config.h.cmake'
|
- 'lib/curl_config.h.cmake'
|
||||||
- 'tests/cmake/**'
|
|
||||||
- '.github/scripts/cmp-config.pl'
|
- '.github/scripts/cmp-config.pl'
|
||||||
- '.github/workflows/configure-vs-cmake.yml'
|
- '.github/workflows/configure-vs-cmake.yml'
|
||||||
|
|
||||||
@ -26,7 +25,6 @@ name: configure-vs-cmake
|
|||||||
- '**/CMakeLists.txt'
|
- '**/CMakeLists.txt'
|
||||||
- 'CMake/**'
|
- 'CMake/**'
|
||||||
- 'lib/curl_config.h.cmake'
|
- 'lib/curl_config.h.cmake'
|
||||||
- 'tests/cmake/**'
|
|
||||||
- '.github/scripts/cmp-config.pl'
|
- '.github/scripts/cmp-config.pl'
|
||||||
- '.github/workflows/configure-vs-cmake.yml'
|
- '.github/workflows/configure-vs-cmake.yml'
|
||||||
|
|
||||||
@ -48,7 +46,7 @@ jobs:
|
|||||||
|
|
||||||
- name: 'run cmake'
|
- name: 'run cmake'
|
||||||
run: |
|
run: |
|
||||||
cmake -B bld-cm -DCURL_WERROR=ON -DCURL_USE_LIBPSL=OFF -DCURL_BROTLI=OFF
|
cmake -B bld-cm -DCURL_USE_LIBPSL=OFF -DCURL_BROTLI=OFF
|
||||||
|
|
||||||
- name: 'configure log'
|
- name: 'configure log'
|
||||||
run: cat bld-am/config.log 2>/dev/null || true
|
run: cat bld-am/config.log 2>/dev/null || true
|
||||||
@ -88,7 +86,7 @@ jobs:
|
|||||||
|
|
||||||
- name: 'run cmake'
|
- name: 'run cmake'
|
||||||
run: |
|
run: |
|
||||||
cmake -B bld-cm -DCURL_WERROR=ON -DCURL_USE_LIBPSL=OFF -DCURL_DISABLE_LDAP=ON \
|
cmake -B bld-cm -DCURL_USE_LIBPSL=OFF -DCURL_DISABLE_LDAP=ON \
|
||||||
-DCMAKE_C_COMPILER_TARGET="$(uname -m | sed 's/arm64/aarch64/')-apple-darwin$(uname -r)" \
|
-DCMAKE_C_COMPILER_TARGET="$(uname -m | sed 's/arm64/aarch64/')-apple-darwin$(uname -r)" \
|
||||||
-DCURL_BROTLI=OFF \
|
-DCURL_BROTLI=OFF \
|
||||||
-DCURL_USE_LIBSSH2=OFF
|
-DCURL_USE_LIBSSH2=OFF
|
||||||
@ -128,7 +126,7 @@ jobs:
|
|||||||
|
|
||||||
- name: 'run cmake'
|
- name: 'run cmake'
|
||||||
run: |
|
run: |
|
||||||
cmake -B bld-cm -DCURL_WERROR=ON -DCURL_USE_SCHANNEL=ON -DCURL_USE_LIBPSL=OFF \
|
cmake -B bld-cm -DCURL_USE_SCHANNEL=ON -DCURL_USE_LIBPSL=OFF \
|
||||||
-DCMAKE_SYSTEM_NAME=Windows \
|
-DCMAKE_SYSTEM_NAME=Windows \
|
||||||
-DCMAKE_C_COMPILER_TARGET="${TRIPLET}" \
|
-DCMAKE_C_COMPILER_TARGET="${TRIPLET}" \
|
||||||
-DCMAKE_C_COMPILER="${TRIPLET}-gcc"
|
-DCMAKE_C_COMPILER="${TRIPLET}-gcc"
|
||||||
|
|||||||
28
.github/workflows/curl-for-win.yml
vendored
28
.github/workflows/curl-for-win.yml
vendored
@ -42,7 +42,7 @@ env:
|
|||||||
CW_NOPKG: '1'
|
CW_NOPKG: '1'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
linux-glibc-gcc:
|
linux-glibc-llvm:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
timeout-minutes: 30
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
@ -55,7 +55,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
git clone --depth 1 https://github.com/curl/curl-for-win
|
git clone --depth 1 https://github.com/curl/curl-for-win
|
||||||
mv curl-for-win/* .
|
mv curl-for-win/* .
|
||||||
export CW_CONFIG='-main-werror-linux-a64-x64-gcc'
|
export CW_CONFIG='-main-werror-linux-a64-x64'
|
||||||
export CW_REVISION='${{ github.sha }}'
|
export CW_REVISION='${{ github.sha }}'
|
||||||
DOCKER_IMAGE='debian:bookworm-slim'
|
DOCKER_IMAGE='debian:bookworm-slim'
|
||||||
export DOCKER_CONTENT_TRUST=1
|
export DOCKER_CONTENT_TRUST=1
|
||||||
@ -137,27 +137,3 @@ jobs:
|
|||||||
'^(CW_|GITHUB_)') \
|
'^(CW_|GITHUB_)') \
|
||||||
"${DOCKER_IMAGE}" \
|
"${DOCKER_IMAGE}" \
|
||||||
sh -c ./_ci-linux-debian.sh
|
sh -c ./_ci-linux-debian.sh
|
||||||
|
|
||||||
win-gcc-libssh-zlibng-x86:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
path: 'curl'
|
|
||||||
fetch-depth: 8
|
|
||||||
- name: 'build'
|
|
||||||
run: |
|
|
||||||
git clone --depth 1 https://github.com/curl/curl-for-win
|
|
||||||
mv curl-for-win/* .
|
|
||||||
export CW_CONFIG='-main-werror-win-x86-gcc-libssh1-zlibng'
|
|
||||||
export CW_REVISION='${{ github.sha }}'
|
|
||||||
. ./_versions.sh
|
|
||||||
docker trust inspect --pretty "${DOCKER_IMAGE}"
|
|
||||||
time docker pull "${DOCKER_IMAGE}"
|
|
||||||
docker images --digests
|
|
||||||
time docker run --volume "$(pwd):$(pwd)" --workdir "$(pwd)" \
|
|
||||||
--env-file <(env | grep -a -E \
|
|
||||||
'^(CW_|GITHUB_)') \
|
|
||||||
"${DOCKER_IMAGE}" \
|
|
||||||
sh -c ./_ci-linux-debian.sh
|
|
||||||
|
|||||||
51
.github/workflows/distcheck.yml
vendored
51
.github/workflows/distcheck.yml
vendored
@ -19,9 +19,6 @@ concurrency:
|
|||||||
|
|
||||||
permissions: {}
|
permissions: {}
|
||||||
|
|
||||||
env:
|
|
||||||
MAKEFLAGS: -j 5
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
maketgz-and-verify-in-tree:
|
maketgz-and-verify-in-tree:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@ -58,9 +55,9 @@ jobs:
|
|||||||
tar xvf curl-99.98.97.tar.gz
|
tar xvf curl-99.98.97.tar.gz
|
||||||
pushd curl-99.98.97
|
pushd curl-99.98.97
|
||||||
./configure --prefix=$HOME/temp --without-ssl --without-libpsl
|
./configure --prefix=$HOME/temp --without-ssl --without-libpsl
|
||||||
make
|
make -j5
|
||||||
make test-ci
|
make -j5 test-ci
|
||||||
make install
|
make -j5 install
|
||||||
popd
|
popd
|
||||||
# basic check of the installed files
|
# basic check of the installed files
|
||||||
bash scripts/installcheck.sh $HOME/temp
|
bash scripts/installcheck.sh $HOME/temp
|
||||||
@ -83,8 +80,8 @@ jobs:
|
|||||||
mkdir build
|
mkdir build
|
||||||
pushd build
|
pushd build
|
||||||
../curl-99.98.97/configure --without-ssl --without-libpsl
|
../curl-99.98.97/configure --without-ssl --without-libpsl
|
||||||
make
|
make -j5
|
||||||
make test-ci
|
make -j5 test-ci
|
||||||
popd
|
popd
|
||||||
rm -rf build
|
rm -rf build
|
||||||
rm -rf curl-99.98.97
|
rm -rf curl-99.98.97
|
||||||
@ -106,9 +103,9 @@ jobs:
|
|||||||
mkdir build
|
mkdir build
|
||||||
pushd build
|
pushd build
|
||||||
../configure --without-ssl --enable-debug "--prefix=${PWD}/pkg" --without-libpsl
|
../configure --without-ssl --enable-debug "--prefix=${PWD}/pkg" --without-libpsl
|
||||||
make
|
make -j5
|
||||||
make test-ci
|
make -j5 test-ci
|
||||||
make install
|
make -j5 install
|
||||||
|
|
||||||
verify-out-of-tree-cmake:
|
verify-out-of-tree-cmake:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@ -125,7 +122,7 @@ jobs:
|
|||||||
tar xvf curl-99.98.97.tar.gz
|
tar xvf curl-99.98.97.tar.gz
|
||||||
pushd curl-99.98.97
|
pushd curl-99.98.97
|
||||||
cmake -B build -DCURL_WERROR=ON -DCURL_USE_LIBPSL=OFF
|
cmake -B build -DCURL_WERROR=ON -DCURL_USE_LIBPSL=OFF
|
||||||
make -C build
|
make -C build -j5
|
||||||
|
|
||||||
missing-files:
|
missing-files:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@ -162,33 +159,3 @@ jobs:
|
|||||||
mv curl-9.10.11.tar.gz _verify
|
mv curl-9.10.11.tar.gz _verify
|
||||||
cd _verify
|
cd _verify
|
||||||
../scripts/verify-release curl-9.10.11.tar.gz
|
../scripts/verify-release curl-9.10.11.tar.gz
|
||||||
|
|
||||||
cmake-integration:
|
|
||||||
name: 'cmake-integration-on-${{ matrix.image }}'
|
|
||||||
runs-on: ${{ matrix.image }}
|
|
||||||
timeout-minutes: 10
|
|
||||||
env:
|
|
||||||
CC: clang
|
|
||||||
CMAKE_GENERATOR: Ninja
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
image: [ubuntu-latest, macos-latest]
|
|
||||||
steps:
|
|
||||||
- name: 'install prereqs'
|
|
||||||
run: |
|
|
||||||
if [[ '${{ matrix.image }}' = *'ubuntu'* ]]; then
|
|
||||||
sudo apt-get -o Dpkg::Use-Pty=0 install ninja-build libpsl-dev libssl-dev
|
|
||||||
else
|
|
||||||
brew install ninja libpsl openssl
|
|
||||||
fi
|
|
||||||
|
|
||||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
- name: 'via FetchContent'
|
|
||||||
run: ./tests/cmake/test.sh FetchContent
|
|
||||||
- name: 'via add_subdirectory'
|
|
||||||
run: ./tests/cmake/test.sh add_subdirectory
|
|
||||||
- name: 'via find_package'
|
|
||||||
run: ./tests/cmake/test.sh find_package
|
|
||||||
|
|||||||
60
.github/workflows/http3-linux.yml
vendored
60
.github/workflows/http3-linux.yml
vendored
@ -39,17 +39,17 @@ permissions: {}
|
|||||||
env:
|
env:
|
||||||
MAKEFLAGS: -j 5
|
MAKEFLAGS: -j 5
|
||||||
# handled in renovate.json
|
# handled in renovate.json
|
||||||
openssl-version: 3.4.1
|
openssl-version: 3.4.0
|
||||||
# handled in renovate.json
|
# handled in renovate.json
|
||||||
quictls-version: 3.3.0
|
quictls-version: 3.3.0
|
||||||
# renovate: datasource=github-tags depName=gnutls/gnutls versioning=semver registryUrl=https://github.com
|
# renovate: datasource=github-tags depName=gnutls/gnutls versioning=semver registryUrl=https://github.com
|
||||||
gnutls-version: 3.8.9
|
gnutls-version: 3.8.8
|
||||||
# renovate: datasource=github-tags depName=wolfSSL/wolfssl versioning=semver extractVersion=^v?(?<version>.+)-stable$ registryUrl=https://github.com
|
# renovate: datasource=github-tags depName=wolfSSL/wolfssl versioning=semver extractVersion=^v?(?<version>.+)-stable$ registryUrl=https://github.com
|
||||||
wolfssl-version: 5.7.6
|
wolfssl-version: 5.7.6
|
||||||
# renovate: datasource=github-tags depName=ngtcp2/nghttp3 versioning=semver registryUrl=https://github.com
|
# renovate: datasource=github-tags depName=ngtcp2/nghttp3 versioning=semver registryUrl=https://github.com
|
||||||
nghttp3-version: 1.8.0
|
nghttp3-version: 1.7.0
|
||||||
# renovate: datasource=github-tags depName=ngtcp2/ngtcp2 versioning=semver registryUrl=https://github.com
|
# renovate: datasource=github-tags depName=ngtcp2/ngtcp2 versioning=semver registryUrl=https://github.com
|
||||||
ngtcp2-version: 1.11.0
|
ngtcp2-version: 1.10.0
|
||||||
# renovate: datasource=github-tags depName=nghttp2/nghttp2 versioning=semver registryUrl=https://github.com
|
# renovate: datasource=github-tags depName=nghttp2/nghttp2 versioning=semver registryUrl=https://github.com
|
||||||
nghttp2-version: 1.64.0
|
nghttp2-version: 1.64.0
|
||||||
# renovate: datasource=github-tags depName=cloudflare/quiche versioning=semver registryUrl=https://github.com
|
# renovate: datasource=github-tags depName=cloudflare/quiche versioning=semver registryUrl=https://github.com
|
||||||
@ -232,7 +232,6 @@ jobs:
|
|||||||
--with-ngtcp2=$HOME/ngtcp2/build --enable-warnings --enable-werror --enable-debug --disable-ntlm
|
--with-ngtcp2=$HOME/ngtcp2/build --enable-warnings --enable-werror --enable-debug --disable-ntlm
|
||||||
--with-test-nghttpx="$HOME/nghttp2/build/bin/nghttpx"
|
--with-test-nghttpx="$HOME/nghttp2/build/bin/nghttpx"
|
||||||
--with-openssl=$HOME/quictls/build --enable-ssls-export
|
--with-openssl=$HOME/quictls/build --enable-ssls-export
|
||||||
--with-libuv
|
|
||||||
|
|
||||||
- name: gnutls
|
- name: gnutls
|
||||||
PKG_CONFIG_PATH: '$HOME/gnutls/build/lib/pkgconfig:$HOME/nghttp3/build/lib/pkgconfig:$HOME/ngtcp2/build/lib/pkgconfig:$HOME/nghttp2/build/lib/pkgconfig'
|
PKG_CONFIG_PATH: '$HOME/gnutls/build/lib/pkgconfig:$HOME/nghttp3/build/lib/pkgconfig:$HOME/ngtcp2/build/lib/pkgconfig:$HOME/nghttp2/build/lib/pkgconfig'
|
||||||
@ -241,7 +240,6 @@ jobs:
|
|||||||
--with-ngtcp2=$HOME/ngtcp2/build --enable-warnings --enable-werror --enable-debug
|
--with-ngtcp2=$HOME/ngtcp2/build --enable-warnings --enable-werror --enable-debug
|
||||||
--with-test-nghttpx="$HOME/nghttp2/build/bin/nghttpx"
|
--with-test-nghttpx="$HOME/nghttp2/build/bin/nghttpx"
|
||||||
--with-gnutls=$HOME/gnutls/build --enable-ssls-export
|
--with-gnutls=$HOME/gnutls/build --enable-ssls-export
|
||||||
--with-libuv
|
|
||||||
|
|
||||||
- name: wolfssl
|
- name: wolfssl
|
||||||
PKG_CONFIG_PATH: '$HOME/wolfssl/build/lib/pkgconfig:$HOME/nghttp3/build/lib/pkgconfig:$HOME/ngtcp2/build/lib/pkgconfig:$HOME/nghttp2/build/lib/pkgconfig'
|
PKG_CONFIG_PATH: '$HOME/wolfssl/build/lib/pkgconfig:$HOME/nghttp3/build/lib/pkgconfig:$HOME/ngtcp2/build/lib/pkgconfig:$HOME/nghttp2/build/lib/pkgconfig'
|
||||||
@ -251,7 +249,6 @@ jobs:
|
|||||||
--with-test-nghttpx="$HOME/nghttp2/build/bin/nghttpx"
|
--with-test-nghttpx="$HOME/nghttp2/build/bin/nghttpx"
|
||||||
--with-wolfssl=$HOME/wolfssl/build
|
--with-wolfssl=$HOME/wolfssl/build
|
||||||
--enable-ech --enable-ssls-export
|
--enable-ech --enable-ssls-export
|
||||||
--with-libuv
|
|
||||||
|
|
||||||
- name: wolfssl
|
- name: wolfssl
|
||||||
PKG_CONFIG_PATH: '$HOME/wolfssl/build/lib/pkgconfig:$HOME/nghttp3/build/lib/pkgconfig:$HOME/ngtcp2/build/lib/pkgconfig:$HOME/nghttp2/build/lib/pkgconfig'
|
PKG_CONFIG_PATH: '$HOME/wolfssl/build/lib/pkgconfig:$HOME/nghttp3/build/lib/pkgconfig:$HOME/ngtcp2/build/lib/pkgconfig:$HOME/nghttp2/build/lib/pkgconfig'
|
||||||
@ -260,7 +257,6 @@ jobs:
|
|||||||
-DTEST_NGHTTPX="$HOME/nghttp2/build/bin/nghttpx"
|
-DTEST_NGHTTPX="$HOME/nghttp2/build/bin/nghttpx"
|
||||||
-DHTTPD_NGHTTPX="$HOME/nghttp2/build/bin/nghttpx"
|
-DHTTPD_NGHTTPX="$HOME/nghttp2/build/bin/nghttpx"
|
||||||
-DUSE_ECH=ON
|
-DUSE_ECH=ON
|
||||||
-DCURL_USE_LIBUV=ON
|
|
||||||
|
|
||||||
- name: openssl-quic
|
- name: openssl-quic
|
||||||
PKG_CONFIG_PATH: '$HOME/openssl/build/lib64/pkgconfig'
|
PKG_CONFIG_PATH: '$HOME/openssl/build/lib64/pkgconfig'
|
||||||
@ -270,7 +266,6 @@ jobs:
|
|||||||
--with-test-nghttpx="$HOME/nghttp2/build/bin/nghttpx"
|
--with-test-nghttpx="$HOME/nghttp2/build/bin/nghttpx"
|
||||||
--with-openssl=$HOME/openssl/build --with-openssl-quic
|
--with-openssl=$HOME/openssl/build --with-openssl-quic
|
||||||
--with-nghttp3=$HOME/nghttp3/build
|
--with-nghttp3=$HOME/nghttp3/build
|
||||||
--with-libuv
|
|
||||||
|
|
||||||
- name: quiche
|
- name: quiche
|
||||||
configure: >-
|
configure: >-
|
||||||
@ -280,7 +275,6 @@ jobs:
|
|||||||
--with-quiche=$HOME/quiche/target/release
|
--with-quiche=$HOME/quiche/target/release
|
||||||
--with-test-nghttpx="$HOME/nghttp2/build/bin/nghttpx"
|
--with-test-nghttpx="$HOME/nghttp2/build/bin/nghttpx"
|
||||||
--with-ca-fallback
|
--with-ca-fallback
|
||||||
--with-libuv
|
|
||||||
|
|
||||||
- name: quiche
|
- name: quiche
|
||||||
PKG_CONFIG_PATH: '$HOME/quiche/target/release'
|
PKG_CONFIG_PATH: '$HOME/quiche/target/release'
|
||||||
@ -290,7 +284,6 @@ jobs:
|
|||||||
-DTEST_NGHTTPX="$HOME/nghttp2/build/bin/nghttpx"
|
-DTEST_NGHTTPX="$HOME/nghttp2/build/bin/nghttpx"
|
||||||
-DHTTPD_NGHTTPX="$HOME/nghttp2/build/bin/nghttpx"
|
-DHTTPD_NGHTTPX="$HOME/nghttp2/build/bin/nghttpx"
|
||||||
-DCURL_CA_FALLBACK=ON
|
-DCURL_CA_FALLBACK=ON
|
||||||
-DCURL_USE_LIBUV=ON
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: 'install prereqs'
|
- name: 'install prereqs'
|
||||||
@ -302,7 +295,7 @@ jobs:
|
|||||||
libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev libev-dev libc-ares-dev \
|
libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev libev-dev libc-ares-dev \
|
||||||
nettle-dev libp11-kit-dev libtspi-dev libunistring-dev guile-2.2-dev libtasn1-bin \
|
nettle-dev libp11-kit-dev libtspi-dev libunistring-dev guile-2.2-dev libtasn1-bin \
|
||||||
libtasn1-6-dev libidn2-0-dev gawk gperf libtss2-dev dns-root-data bison gtk-doc-tools \
|
libtasn1-6-dev libidn2-0-dev gawk gperf libtss2-dev dns-root-data bison gtk-doc-tools \
|
||||||
texinfo texlive texlive-extra-utils autopoint libev-dev libuv1-dev \
|
texinfo texlive texlive-extra-utils autopoint libev-dev \
|
||||||
apache2 apache2-dev libnghttp2-dev vsftpd
|
apache2 apache2-dev libnghttp2-dev vsftpd
|
||||||
python3 -m venv $HOME/venv
|
python3 -m venv $HOME/venv
|
||||||
echo 'CC=gcc-12' >> $GITHUB_ENV
|
echo 'CC=gcc-12' >> $GITHUB_ENV
|
||||||
@ -315,7 +308,7 @@ jobs:
|
|||||||
cache-name: cache-quictls-no-deprecated
|
cache-name: cache-quictls-no-deprecated
|
||||||
with:
|
with:
|
||||||
path: ~/quictls/build
|
path: ~/quictls/build
|
||||||
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.quictls-version }}-quic1
|
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.quictls-version }}
|
||||||
fail-on-cache-miss: true
|
fail-on-cache-miss: true
|
||||||
|
|
||||||
- name: 'cache gnutls'
|
- name: 'cache gnutls'
|
||||||
@ -434,45 +427,46 @@ jobs:
|
|||||||
export PKG_CONFIG_PATH="${{ matrix.build.PKG_CONFIG_PATH }}"
|
export PKG_CONFIG_PATH="${{ matrix.build.PKG_CONFIG_PATH }}"
|
||||||
fi
|
fi
|
||||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||||
cmake -B bld -G Ninja \
|
cmake -B . -G Ninja \
|
||||||
-DCMAKE_C_COMPILER_TARGET=$(uname -m)-pc-linux-gnu -DBUILD_STATIC_LIBS=ON \
|
-DCMAKE_C_COMPILER_TARGET=$(uname -m)-pc-linux-gnu -DBUILD_STATIC_LIBS=ON \
|
||||||
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON -DCURL_WERROR=ON \
|
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON -DCURL_WERROR=ON \
|
||||||
${{ matrix.build.generate }}
|
${{ matrix.build.generate }}
|
||||||
else
|
else
|
||||||
mkdir bld && cd bld && ../configure --enable-unity --enable-test-bundles --enable-warnings --enable-werror \
|
./configure --disable-dependency-tracking --enable-unity --enable-test-bundles --enable-warnings --enable-werror \
|
||||||
--disable-dependency-tracking \
|
|
||||||
${{ matrix.build.configure }}
|
${{ matrix.build.configure }}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'configure log'
|
- name: 'configure log'
|
||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() }}
|
||||||
run: cat bld/config.log bld/CMakeFiles/CMakeConfigureLog.yaml 2>/dev/null || true
|
run: cat config.log CMakeFiles/CMakeConfigureLog.yaml 2>/dev/null || true
|
||||||
|
|
||||||
- name: 'curl_config.h'
|
- name: 'curl_config.h'
|
||||||
run: |
|
run: |
|
||||||
echo '::group::raw'; cat bld/lib/curl_config.h || true; echo '::endgroup::'
|
echo '::group::raw'; cat lib/curl_config.h || true; echo '::endgroup::'
|
||||||
grep -F '#define' bld/lib/curl_config.h | sort || true
|
grep -F '#define' lib/curl_config.h | sort || true
|
||||||
|
|
||||||
- name: 'test configs'
|
- name: 'test configs'
|
||||||
run: grep -H -v '^#' bld/tests/config bld/tests/http/config.ini || true
|
run: |
|
||||||
|
cat tests/config || true
|
||||||
|
cat tests/http/config.ini || true
|
||||||
|
|
||||||
- name: 'build'
|
- name: 'build'
|
||||||
run: |
|
run: |
|
||||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||||
cmake --build bld --verbose
|
cmake --build . --verbose
|
||||||
else
|
else
|
||||||
make -C bld V=1
|
make V=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'check curl -V output'
|
- name: 'check curl -V output'
|
||||||
run: bld/src/curl -V
|
run: ./src/curl -V
|
||||||
|
|
||||||
- name: 'build tests'
|
- name: 'build tests'
|
||||||
run: |
|
run: |
|
||||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||||
cmake --build bld --verbose --target testdeps
|
cmake --build . --verbose --target testdeps
|
||||||
else
|
else
|
||||||
make -C bld V=1 -C tests
|
make V=1 -C tests
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'install test prereqs'
|
- name: 'install test prereqs'
|
||||||
@ -486,9 +480,9 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
source $HOME/venv/bin/activate
|
source $HOME/venv/bin/activate
|
||||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||||
cmake --build bld --verbose --target test-ci
|
cmake --build . --verbose --target test-ci
|
||||||
else
|
else
|
||||||
make -C bld V=1 test-ci
|
make V=1 test-ci
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'install pytest prereqs'
|
- name: 'install pytest prereqs'
|
||||||
@ -496,23 +490,23 @@ jobs:
|
|||||||
source $HOME/venv/bin/activate
|
source $HOME/venv/bin/activate
|
||||||
python3 -m pip install -r tests/http/requirements.txt
|
python3 -m pip install -r tests/http/requirements.txt
|
||||||
|
|
||||||
- name: 'run pytest event based'
|
- name: 'run pytest'
|
||||||
env:
|
env:
|
||||||
CURL_TEST_EVENT: 1
|
TFLAGS: '${{ matrix.build.tflags }}'
|
||||||
CURL_CI: github
|
CURL_CI: github
|
||||||
PYTEST_ADDOPTS: '--color=yes'
|
PYTEST_ADDOPTS: '--color=yes'
|
||||||
run: |
|
run: |
|
||||||
source $HOME/venv/bin/activate
|
source $HOME/venv/bin/activate
|
||||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||||
cmake --build bld --verbose --target curl-pytest-ci
|
cmake --build . --verbose --target curl-pytest-ci
|
||||||
else
|
else
|
||||||
make -C bld V=1 pytest-ci
|
make V=1 pytest-ci
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'build examples'
|
- name: 'build examples'
|
||||||
run: |
|
run: |
|
||||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||||
cmake --build bld --verbose --target curl-examples
|
cmake --build . --verbose --target curl-examples
|
||||||
else
|
else
|
||||||
make -C bld V=1 examples
|
make V=1 examples
|
||||||
fi
|
fi
|
||||||
|
|||||||
10
.github/workflows/linux-old.yml
vendored
10
.github/workflows/linux-old.yml
vendored
@ -91,14 +91,12 @@ jobs:
|
|||||||
echo '::group::raw'; cat bld-1/lib/curl_config.h || true; echo '::endgroup::'
|
echo '::group::raw'; cat bld-1/lib/curl_config.h || true; echo '::endgroup::'
|
||||||
grep -F '#define' bld-1/lib/curl_config.h | sort || true
|
grep -F '#define' bld-1/lib/curl_config.h | sort || true
|
||||||
|
|
||||||
# when this job can get a libssh version 0.9.0 or later, this should get
|
- name: 'cmake generate (out-of-tree, c-ares, libssh, zstd, gssapi)'
|
||||||
# that enabled again
|
|
||||||
- name: 'cmake generate (out-of-tree, c-ares, zstd, gssapi)'
|
|
||||||
run: |
|
run: |
|
||||||
mkdir bld-cares
|
mkdir bld-cares
|
||||||
cd bld-cares
|
cd bld-cares
|
||||||
cmake .. -DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON -DCURL_WERROR=ON -DBUILD_SHARED_LIBS=ON \
|
cmake .. -DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON -DCURL_WERROR=ON -DBUILD_SHARED_LIBS=ON \
|
||||||
-DENABLE_ARES=ON -DCURL_USE_GSSAPI=ON -DCURL_USE_LIBSSH2=OFF -DCURL_USE_LIBSSH=OFF -DUSE_LIBRTMP=ON \
|
-DENABLE_ARES=ON -DCURL_USE_GSSAPI=ON -DCURL_USE_LIBSSH2=OFF -DCURL_USE_LIBSSH=ON -DUSE_LIBRTMP=ON \
|
||||||
-DCURL_LIBCURL_VERSIONED_SYMBOLS=ON
|
-DCURL_LIBCURL_VERSIONED_SYMBOLS=ON
|
||||||
|
|
||||||
- name: 'cmake curl_config.h'
|
- name: 'cmake curl_config.h'
|
||||||
@ -123,12 +121,12 @@ jobs:
|
|||||||
- name: 'autoreconf'
|
- name: 'autoreconf'
|
||||||
run: autoreconf -if
|
run: autoreconf -if
|
||||||
|
|
||||||
- name: 'configure (out-of-tree, c-ares, libssh2, zstd, gssapi)'
|
- name: 'configure (out-of-tree, c-ares, libssh, zstd, gssapi)'
|
||||||
run: |
|
run: |
|
||||||
mkdir bld-am
|
mkdir bld-am
|
||||||
cd bld-am
|
cd bld-am
|
||||||
../configure --disable-dependency-tracking --enable-unity --enable-test-bundles --enable-warnings --enable-werror \
|
../configure --disable-dependency-tracking --enable-unity --enable-test-bundles --enable-warnings --enable-werror \
|
||||||
--with-openssl --enable-ares --with-libssh2 --with-zstd --with-gssapi --with-librtmp \
|
--with-openssl --enable-ares --with-libssh --with-zstd --with-gssapi --with-librtmp \
|
||||||
--prefix="$PWD"/../install-am
|
--prefix="$PWD"/../install-am
|
||||||
|
|
||||||
- name: 'autoconf curl_config.h'
|
- name: 'autoconf curl_config.h'
|
||||||
|
|||||||
91
.github/workflows/linux.yml
vendored
91
.github/workflows/linux.yml
vendored
@ -51,9 +51,9 @@ env:
|
|||||||
# renovate: datasource=github-tags depName=nibanks/msh3 versioning=semver registryUrl=https://github.com
|
# renovate: datasource=github-tags depName=nibanks/msh3 versioning=semver registryUrl=https://github.com
|
||||||
msh3-version: 0.6.0
|
msh3-version: 0.6.0
|
||||||
# renovate: datasource=github-tags depName=awslabs/aws-lc versioning=semver registryUrl=https://github.com
|
# renovate: datasource=github-tags depName=awslabs/aws-lc versioning=semver registryUrl=https://github.com
|
||||||
awslc-version: 1.45.0
|
awslc-version: 1.42.0
|
||||||
# handled in renovate.json
|
# handled in renovate.json
|
||||||
openssl-version: 3.4.1
|
openssl-version: 3.4.0
|
||||||
# handled in renovate.json
|
# handled in renovate.json
|
||||||
quictls-version: 3.3.0
|
quictls-version: 3.3.0
|
||||||
# renovate: datasource=github-tags depName=rustls/rustls-ffi versioning=semver registryUrl=https://github.com
|
# renovate: datasource=github-tags depName=rustls/rustls-ffi versioning=semver registryUrl=https://github.com
|
||||||
@ -164,6 +164,12 @@ jobs:
|
|||||||
install_steps: pytest
|
install_steps: pytest
|
||||||
configure: CFLAGS=-std=gnu89 --with-openssl --enable-debug
|
configure: CFLAGS=-std=gnu89 --with-openssl --enable-debug
|
||||||
|
|
||||||
|
- name: openssl arm
|
||||||
|
install_packages: zlib1g-dev
|
||||||
|
install_steps: pytest
|
||||||
|
configure: CFLAGS=-std=gnu89 --with-openssl --enable-debug
|
||||||
|
image: 'ubuntu-24.04-arm'
|
||||||
|
|
||||||
- name: openssl -O3 valgrind
|
- name: openssl -O3 valgrind
|
||||||
install_packages: zlib1g-dev valgrind
|
install_packages: zlib1g-dev valgrind
|
||||||
configure: CFLAGS=-O3 --with-openssl --enable-debug
|
configure: CFLAGS=-O3 --with-openssl --enable-debug
|
||||||
@ -286,13 +292,9 @@ jobs:
|
|||||||
# Docker Hub image that `container-job` executes in
|
# Docker Hub image that `container-job` executes in
|
||||||
container: 'andy5995/slackware-build-essential:15.0'
|
container: 'andy5995/slackware-build-essential:15.0'
|
||||||
|
|
||||||
- name: Alpine MUSL https-rr
|
- name: Alpine MUSL
|
||||||
configure: --enable-debug --with-ssl --with-libssh2 --with-libidn2 --with-gssapi --enable-ldap --with-libpsl --enable-threaded-resolver --enable-ares --enable-httpsrr
|
configure: --enable-debug --with-ssl --with-libssh2 --with-libidn2 --with-gssapi --enable-ldap --with-libpsl
|
||||||
container: 'alpine:3.20'
|
container: 'alpine:3.18'
|
||||||
|
|
||||||
- name: Alpine MUSL c-ares https-rr
|
|
||||||
configure: --enable-debug --with-ssl --with-libssh2 --with-libidn2 --with-gssapi --enable-ldap --with-libpsl --disable-threaded-resolver --enable-ares --enable-httpsrr --disable-unity
|
|
||||||
container: 'alpine:3.20'
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: 'install prereqs'
|
- name: 'install prereqs'
|
||||||
@ -304,8 +306,7 @@ jobs:
|
|||||||
libtool autoconf automake pkgconf ninja-build \
|
libtool autoconf automake pkgconf ninja-build \
|
||||||
${{ matrix.build.install_steps != 'skipall' && matrix.build.install_steps != 'skiprun' && 'stunnel4' || '' }} \
|
${{ matrix.build.install_steps != 'skipall' && matrix.build.install_steps != 'skiprun' && 'stunnel4' || '' }} \
|
||||||
libpsl-dev libbrotli-dev libzstd-dev \
|
libpsl-dev libbrotli-dev libzstd-dev \
|
||||||
${{ matrix.build.install_packages }} \
|
${{ matrix.build.install_packages }}
|
||||||
${{ contains(matrix.build.install_steps, 'pytest') && 'apache2 apache2-dev libnghttp2-dev vsftpd' || '' }}
|
|
||||||
python3 -m venv $HOME/venv
|
python3 -m venv $HOME/venv
|
||||||
|
|
||||||
- name: 'install prereqs'
|
- name: 'install prereqs'
|
||||||
@ -320,15 +321,27 @@ jobs:
|
|||||||
${{ matrix.build.install_packages }}
|
${{ matrix.build.install_packages }}
|
||||||
python3 -m venv $HOME/venv
|
python3 -m venv $HOME/venv
|
||||||
|
|
||||||
|
- name: 'install prereqs for pytest'
|
||||||
|
if: contains(matrix.build.install_steps, 'pytest')
|
||||||
|
run: |
|
||||||
|
sudo apt-get -o Dpkg::Use-Pty=0 install apache2 apache2-dev libnghttp2-dev vsftpd
|
||||||
|
|
||||||
- name: 'install dependencies'
|
- name: 'install dependencies'
|
||||||
if: startsWith(matrix.build.container, 'alpine')
|
if: startsWith(matrix.build.container, 'alpine')
|
||||||
run: |
|
run: |
|
||||||
apk add --no-cache build-base autoconf automake libtool perl openssl-dev \
|
apk add --no-cache build-base autoconf automake libtool perl openssl-dev libssh2-dev \
|
||||||
libssh2-dev zlib-dev brotli-dev zstd-dev libidn2-dev openldap-dev \
|
zlib-dev brotli-dev zstd-dev libidn2-dev openldap-dev heimdal-dev libpsl-dev \
|
||||||
heimdal-dev libpsl-dev c-ares-dev \
|
|
||||||
py3-impacket py3-asn1 py3-six py3-pycryptodomex \
|
py3-impacket py3-asn1 py3-six py3-pycryptodomex \
|
||||||
perl-time-hires openssh stunnel sudo git
|
perl-time-hires openssh stunnel sudo git
|
||||||
|
|
||||||
|
- name: 'fix kernel mmap rnd bits'
|
||||||
|
# Asan in llvm 14 provided in ubuntu 22.04 is incompatible with
|
||||||
|
# high-entropy ASLR in much newer kernels that GitHub runners are
|
||||||
|
# using leading to random crashes: https://reviews.llvm.org/D148280
|
||||||
|
# See https://github.com/actions/runner-images/issues/9491
|
||||||
|
continue-on-error: true
|
||||||
|
run: sudo sysctl vm.mmap_rnd_bits=28
|
||||||
|
|
||||||
- name: 'cache bearssl'
|
- name: 'cache bearssl'
|
||||||
if: contains(matrix.build.install_steps, 'bearssl')
|
if: contains(matrix.build.install_steps, 'bearssl')
|
||||||
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4
|
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4
|
||||||
@ -556,7 +569,7 @@ jobs:
|
|||||||
cd $HOME
|
cd $HOME
|
||||||
curl -sSf --compressed https://sh.rustup.rs/ | sh -s -- -y
|
curl -sSf --compressed https://sh.rustup.rs/ | sh -s -- -y
|
||||||
source $HOME/.cargo/env
|
source $HOME/.cargo/env
|
||||||
rustup toolchain install stable --profile minimal
|
rustup toolchain install nightly
|
||||||
|
|
||||||
- name: 'build rustls'
|
- name: 'build rustls'
|
||||||
if: contains(matrix.build.install_steps, 'rustls') && steps.cache-rustls.outputs.cache-hit != 'true'
|
if: contains(matrix.build.install_steps, 'rustls') && steps.cache-rustls.outputs.cache-hit != 'true'
|
||||||
@ -584,42 +597,41 @@ jobs:
|
|||||||
|
|
||||||
- name: 'configure'
|
- name: 'configure'
|
||||||
run: |
|
run: |
|
||||||
[[ '${{ matrix.build.install_steps }}' = *'awslc'* ]] && sudo apt-get -o Dpkg::Use-Pty=0 purge libssl-dev
|
[[ '${{ matrix.build.install_steps }}' = *'awslc'* ]] && sudo apt remove --yes libssl-dev
|
||||||
if [ -n '${{ matrix.build.PKG_CONFIG_PATH }}' ]; then
|
if [ -n '${{ matrix.build.PKG_CONFIG_PATH }}' ]; then
|
||||||
export PKG_CONFIG_PATH="${{ matrix.build.PKG_CONFIG_PATH }}"
|
export PKG_CONFIG_PATH="${{ matrix.build.PKG_CONFIG_PATH }}"
|
||||||
fi
|
fi
|
||||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||||
cmake -B bld -G Ninja \
|
cmake -B . -G Ninja \
|
||||||
-DCMAKE_INSTALL_PREFIX="$HOME/curl" \
|
|
||||||
-DCMAKE_C_COMPILER_TARGET=$(uname -m)-pc-linux-gnu -DBUILD_STATIC_LIBS=ON \
|
-DCMAKE_C_COMPILER_TARGET=$(uname -m)-pc-linux-gnu -DBUILD_STATIC_LIBS=ON \
|
||||||
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON -DCURL_WERROR=ON \
|
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON -DCURL_WERROR=ON \
|
||||||
${{ matrix.build.generate }}
|
${{ matrix.build.generate }}
|
||||||
else
|
else
|
||||||
mkdir bld && cd bld && \
|
|
||||||
${{ matrix.build.configure-prefix }} \
|
${{ matrix.build.configure-prefix }} \
|
||||||
../configure --enable-unity --enable-test-bundles --enable-warnings --enable-werror \
|
./configure --disable-dependency-tracking --enable-unity --enable-test-bundles --enable-warnings --enable-werror \
|
||||||
--disable-dependency-tracking \
|
|
||||||
${{ matrix.build.configure }}
|
${{ matrix.build.configure }}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'configure log'
|
- name: 'configure log'
|
||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() }}
|
||||||
run: cat bld/config.log bld/CMakeFiles/CMakeConfigureLog.yaml 2>/dev/null || true
|
run: cat config.log CMakeFiles/CMakeConfigureLog.yaml 2>/dev/null || true
|
||||||
|
|
||||||
- name: 'curl_config.h'
|
- name: 'curl_config.h'
|
||||||
run: |
|
run: |
|
||||||
echo '::group::raw'; cat bld/lib/curl_config.h || true; echo '::endgroup::'
|
echo '::group::raw'; cat lib/curl_config.h || true; echo '::endgroup::'
|
||||||
grep -F '#define' bld/lib/curl_config.h | sort || true
|
grep -F '#define' lib/curl_config.h | sort || true
|
||||||
|
|
||||||
- name: 'test configs'
|
- name: 'test configs'
|
||||||
run: grep -H -v '^#' bld/tests/config bld/tests/http/config.ini || true
|
run: |
|
||||||
|
cat tests/config || true
|
||||||
|
cat tests/http/config.ini || true
|
||||||
|
|
||||||
- name: 'build'
|
- name: 'build'
|
||||||
run: |
|
run: |
|
||||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||||
${{ matrix.build.make-prefix }} cmake --build bld --verbose
|
${{ matrix.build.make-prefix }} cmake --build . --verbose
|
||||||
else
|
else
|
||||||
${{ matrix.build.make-prefix }} make -C bld V=1 ${{ matrix.build.make-custom-target }}
|
${{ matrix.build.make-prefix }} make V=1 ${{ matrix.build.make-custom-target }}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'single-use function check'
|
- name: 'single-use function check'
|
||||||
@ -627,27 +639,27 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
git config --global --add safe.directory "*"
|
git config --global --add safe.directory "*"
|
||||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||||
libcurla=bld/lib/libcurl.a
|
libcurla=lib/libcurl.a
|
||||||
else
|
else
|
||||||
libcurla=bld/lib/.libs/libcurl.a
|
libcurla=lib/.libs/libcurl.a
|
||||||
fi
|
fi
|
||||||
./scripts/singleuse.pl --unit ${libcurla}
|
./scripts/singleuse.pl --unit ${libcurla}
|
||||||
|
|
||||||
- name: 'check curl -V output'
|
- name: 'check curl -V output'
|
||||||
if: ${{ matrix.build.make-custom-target != 'tidy' }}
|
if: ${{ matrix.build.make-custom-target != 'tidy' }}
|
||||||
run: bld/src/curl -V
|
run: ./src/curl -V
|
||||||
|
|
||||||
- name: 'cmake install'
|
- name: 'cmake install'
|
||||||
if: ${{ matrix.build.generate }}
|
if: ${{ matrix.build.generate }}
|
||||||
run: cmake --install bld --strip
|
run: cmake --install . --prefix $HOME/curl --strip
|
||||||
|
|
||||||
- name: 'build tests'
|
- name: 'build tests'
|
||||||
if: ${{ matrix.build.install_steps != 'skipall' }}
|
if: ${{ matrix.build.install_steps != 'skipall' }}
|
||||||
run: |
|
run: |
|
||||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||||
cmake --build bld --verbose --target testdeps
|
cmake --build . --verbose --target testdeps
|
||||||
else
|
else
|
||||||
make -C bld V=1 -C tests
|
make V=1 -C tests
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'install test prereqs'
|
- name: 'install test prereqs'
|
||||||
@ -674,9 +686,9 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
[ -x "$HOME/venv/bin/activate" ] && source $HOME/venv/bin/activate
|
[ -x "$HOME/venv/bin/activate" ] && source $HOME/venv/bin/activate
|
||||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||||
cmake --build bld --verbose --target ${{ matrix.build.torture && 'test-torture' || 'test-ci' }}
|
cmake --build . --verbose --target ${{ matrix.build.torture && 'test-torture' || 'test-ci' }}
|
||||||
else
|
else
|
||||||
make -C bld V=1 ${{ matrix.build.torture && 'test-torture' || 'test-ci' }}
|
make V=1 ${{ matrix.build.torture && 'test-torture' || 'test-ci' }}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'install pytest prereqs'
|
- name: 'install pytest prereqs'
|
||||||
@ -688,21 +700,22 @@ jobs:
|
|||||||
- name: 'run pytest'
|
- name: 'run pytest'
|
||||||
if: contains(matrix.build.install_steps, 'pytest')
|
if: contains(matrix.build.install_steps, 'pytest')
|
||||||
env:
|
env:
|
||||||
|
TFLAGS: '${{ matrix.build.tflags }}'
|
||||||
CURL_CI: github
|
CURL_CI: github
|
||||||
PYTEST_ADDOPTS: '--color=yes'
|
PYTEST_ADDOPTS: '--color=yes'
|
||||||
run: |
|
run: |
|
||||||
[ -x "$HOME/venv/bin/activate" ] && source $HOME/venv/bin/activate
|
[ -x "$HOME/venv/bin/activate" ] && source $HOME/venv/bin/activate
|
||||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||||
cmake --build bld --verbose --target curl-pytest-ci
|
cmake --build . --verbose --target curl-pytest-ci
|
||||||
else
|
else
|
||||||
make -C bld V=1 pytest-ci
|
make V=1 pytest-ci
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'build examples'
|
- name: 'build examples'
|
||||||
if: ${{ matrix.build.make-custom-target != 'tidy' }}
|
if: ${{ matrix.build.make-custom-target != 'tidy' }}
|
||||||
run: |
|
run: |
|
||||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||||
${{ matrix.build.make-prefix }} cmake --build bld --verbose --target curl-examples
|
${{ matrix.build.make-prefix }} cmake --build . --verbose --target curl-examples
|
||||||
else
|
else
|
||||||
${{ matrix.build.make-prefix }} make -C bld V=1 examples
|
${{ matrix.build.make-prefix }} make V=1 examples
|
||||||
fi
|
fi
|
||||||
|
|||||||
40
.github/workflows/macos.yml
vendored
40
.github/workflows/macos.yml
vendored
@ -47,8 +47,8 @@ permissions: {}
|
|||||||
# newer than the 10.8 required by `CFURLCreateDataAndPropertiesFromResource`.
|
# newer than the 10.8 required by `CFURLCreateDataAndPropertiesFromResource`.
|
||||||
|
|
||||||
env:
|
env:
|
||||||
MAKEFLAGS: -j 4
|
|
||||||
LDFLAGS: -w # suppress 'object file was built for newer macOS version than being linked' warnings
|
LDFLAGS: -w # suppress 'object file was built for newer macOS version than being linked' warnings
|
||||||
|
MAKEFLAGS: -j 4
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
macos:
|
macos:
|
||||||
@ -123,10 +123,9 @@ jobs:
|
|||||||
compiler: clang
|
compiler: clang
|
||||||
configure: --enable-debug --with-openssl=$(brew --prefix openssl)
|
configure: --enable-debug --with-openssl=$(brew --prefix openssl)
|
||||||
tflags: --test-event
|
tflags: --test-event
|
||||||
- name: 'quictls libssh2 !ldap 10.15'
|
- name: 'OpenSSL libssh2 !ldap 10.15'
|
||||||
compiler: clang
|
compiler: clang
|
||||||
install: quictls
|
configure: --enable-debug --disable-ldap --with-openssl=$(brew --prefix openssl)
|
||||||
configure: --enable-debug --disable-ldap --with-openssl=$(brew --prefix quictls) LDFLAGS="${LDFLAGS} -L$(brew --prefix quictls)/lib"
|
|
||||||
macos-version-min: '10.15'
|
macos-version-min: '10.15'
|
||||||
# cmake
|
# cmake
|
||||||
- name: 'OpenSSL gsasl rtmp AppleIDN'
|
- name: 'OpenSSL gsasl rtmp AppleIDN'
|
||||||
@ -136,10 +135,9 @@ jobs:
|
|||||||
install: llvm
|
install: llvm
|
||||||
generate: -DOPENSSL_ROOT_DIR=$(brew --prefix openssl) -DUSE_APPLE_IDN=ON -DCURL_CLANG_TIDY=ON -DCLANG_TIDY=$(brew --prefix llvm)/bin/clang-tidy
|
generate: -DOPENSSL_ROOT_DIR=$(brew --prefix openssl) -DUSE_APPLE_IDN=ON -DCURL_CLANG_TIDY=ON -DCLANG_TIDY=$(brew --prefix llvm)/bin/clang-tidy
|
||||||
clang-tidy: true
|
clang-tidy: true
|
||||||
chkprefill: _chkprefill
|
- name: 'OpenSSL +static libssh +examples'
|
||||||
- name: 'quictls +static libssh +examples'
|
install: libssh
|
||||||
install: quictls libssh
|
generate: -DOPENSSL_ROOT_DIR=$(brew --prefix openssl) -DBUILD_STATIC_LIBS=ON -DCURL_USE_LIBSSH2=OFF -DCURL_USE_LIBSSH=ON
|
||||||
generate: -DOPENSSL_ROOT_DIR=$(brew --prefix quictls) -DBUILD_STATIC_LIBS=ON -DCURL_USE_LIBSSH2=OFF -DCURL_USE_LIBSSH=ON
|
|
||||||
- name: 'SecureTransport debug'
|
- name: 'SecureTransport debug'
|
||||||
generate: -DCURL_USE_SECTRANSP=ON -DENABLE_DEBUG=ON
|
generate: -DCURL_USE_SECTRANSP=ON -DENABLE_DEBUG=ON
|
||||||
macos-version-min: '10.8'
|
macos-version-min: '10.8'
|
||||||
@ -149,9 +147,9 @@ jobs:
|
|||||||
- name: 'wolfSSL !ldap brotli zstd'
|
- name: 'wolfSSL !ldap brotli zstd'
|
||||||
install: brotli wolfssl zstd
|
install: brotli wolfssl zstd
|
||||||
generate: -DCURL_USE_WOLFSSL=ON -DCURL_DISABLE_LDAP=ON -DUSE_ECH=ON
|
generate: -DCURL_USE_WOLFSSL=ON -DCURL_DISABLE_LDAP=ON -DUSE_ECH=ON
|
||||||
- name: 'mbedTLS openldap brotli zstd'
|
- name: 'mbedTLS !ldap brotli zstd'
|
||||||
install: brotli mbedtls zstd openldap
|
install: brotli mbedtls zstd
|
||||||
generate: -DCURL_USE_MBEDTLS=ON -DLDAP_INCLUDE_DIR="$(brew --prefix openldap)/include" -DLDAP_LIBRARY="$(brew --prefix openldap)/lib/libldap.dylib" -DLDAP_LBER_LIBRARY="$(brew --prefix openldap)/lib/liblber.dylib"
|
generate: -DCURL_USE_MBEDTLS=ON -DCURL_DISABLE_LDAP=ON
|
||||||
- name: 'GnuTLS !ldap krb5'
|
- name: 'GnuTLS !ldap krb5'
|
||||||
install: gnutls nettle krb5
|
install: gnutls nettle krb5
|
||||||
generate: -DCURL_USE_GNUTLS=ON -DCURL_USE_OPENSSL=OFF -DCURL_USE_GSSAPI=ON -DGSS_ROOT_DIR=$(brew --prefix krb5) -DCURL_DISABLE_LDAP=ON -DUSE_SSLS_EXPORT=ON
|
generate: -DCURL_USE_GNUTLS=ON -DCURL_USE_OPENSSL=OFF -DCURL_USE_GSSAPI=ON -DGSS_ROOT_DIR=$(brew --prefix krb5) -DCURL_DISABLE_LDAP=ON -DUSE_SSLS_EXPORT=ON
|
||||||
@ -185,12 +183,11 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
echo ${{ matrix.build.generate && 'ninja' || 'automake libtool' }} \
|
echo ${{ matrix.build.generate && 'ninja' || 'automake libtool' }} \
|
||||||
pkgconf libpsl libssh2 \
|
pkgconf libpsl libssh2 \
|
||||||
${{ !matrix.build.clang-tidy && 'libnghttp2 stunnel' || '' }} \
|
${{ !matrix.build.clang-tidy && 'nghttp2 stunnel' || '' }} \
|
||||||
${{ matrix.build.install }} | xargs -Ix -n1 echo brew '"x"' > /tmp/Brewfile
|
${{ matrix.build.install }} | xargs -Ix -n1 echo brew '"x"' > /tmp/Brewfile
|
||||||
while [[ $? == 0 ]]; do for i in 1 2 3; do brew update && brew bundle install --no-lock --file /tmp/Brewfile && break 2 || { echo Error: wait to try again; sleep 10; } done; false Too many retries; done
|
while [[ $? == 0 ]]; do for i in 1 2 3; do brew update && brew bundle install --no-lock --file /tmp/Brewfile && break 2 || { echo Error: wait to try again; sleep 10; } done; false Too many retries; done
|
||||||
|
|
||||||
- name: 'brew unlink openssl'
|
- name: 'brew unlink openssl'
|
||||||
if: ${{ contains(matrix.build.install, 'libressl') || contains(matrix.build.install, 'quictls') }}
|
|
||||||
run: |
|
run: |
|
||||||
if test -d $(brew --prefix)/include/openssl; then
|
if test -d $(brew --prefix)/include/openssl; then
|
||||||
brew unlink openssl
|
brew unlink openssl
|
||||||
@ -231,20 +228,11 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||||
for _chkprefill in '' ${{ matrix.build.chkprefill }}; do
|
|
||||||
options=''
|
|
||||||
[ -n '${{ matrix.build.macos-version-min }}' ] && options+=' -DCMAKE_OSX_DEPLOYMENT_TARGET=${{ matrix.build.macos-version-min }}'
|
[ -n '${{ matrix.build.macos-version-min }}' ] && options+=' -DCMAKE_OSX_DEPLOYMENT_TARGET=${{ matrix.build.macos-version-min }}'
|
||||||
[ "${_chkprefill}" = '_chkprefill' ] && options+=' -D_CURL_PREFILL=OFF'
|
cmake -B bld -G Ninja -DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON -DCURL_WERROR=ON \
|
||||||
cmake -B "bld${_chkprefill}" -G Ninja -D_CURL_PREFILL=ON \
|
|
||||||
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON -DCURL_WERROR=ON \
|
|
||||||
-DCMAKE_OSX_SYSROOT="${sysroot}" \
|
-DCMAKE_OSX_SYSROOT="${sysroot}" \
|
||||||
-DCMAKE_C_COMPILER_TARGET="$(uname -m | sed 's/arm64/aarch64/')-apple-darwin$(uname -r)" \
|
-DCMAKE_C_COMPILER_TARGET="$(uname -m | sed 's/arm64/aarch64/')-apple-darwin$(uname -r)" \
|
||||||
${{ matrix.build.generate }} ${options}
|
${{ matrix.build.generate }} ${options}
|
||||||
done
|
|
||||||
if [ -d bld_chkprefill ] && ! diff -u bld/lib/curl_config.h bld_chkprefill/lib/curl_config.h; then
|
|
||||||
echo '::group::reference configure log'; cat bld_chkprefill/CMakeFiles/CMake*.yaml 2>/dev/null || true; echo '::endgroup::'
|
|
||||||
false
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
export CFLAGS
|
export CFLAGS
|
||||||
if [[ '${{ matrix.compiler }}' = 'llvm'* ]]; then
|
if [[ '${{ matrix.compiler }}' = 'llvm'* ]]; then
|
||||||
@ -315,6 +303,7 @@ jobs:
|
|||||||
if [ -z '${{ matrix.build.torture }}' ]; then
|
if [ -z '${{ matrix.build.torture }}' ]; then
|
||||||
TFLAGS+=' ~2037 ~2041' # flaky
|
TFLAGS+=' ~2037 ~2041' # flaky
|
||||||
if [[ '${{ matrix.compiler }}' = 'gcc'* ]]; then
|
if [[ '${{ matrix.compiler }}' = 'gcc'* ]]; then
|
||||||
|
TFLAGS+=' ~RTSP' # 567 568 569 570 571 572 577 689 3100
|
||||||
TFLAGS+=' ~1156 ~1539' # HTTP Content-Range, Content-Length
|
TFLAGS+=' ~1156 ~1539' # HTTP Content-Range, Content-Length
|
||||||
if [[ -n '${{ matrix.build.configure }}' || \
|
if [[ -n '${{ matrix.build.configure }}' || \
|
||||||
'${{ matrix.build.generate }}' = *'-DCURL_USE_SECTRANSP=ON'* ]]; then
|
'${{ matrix.build.generate }}' = *'-DCURL_USE_SECTRANSP=ON'* ]]; then
|
||||||
@ -345,7 +334,7 @@ jobs:
|
|||||||
if: ${{ contains(matrix.build.name, '+examples') }}
|
if: ${{ contains(matrix.build.name, '+examples') }}
|
||||||
run: |
|
run: |
|
||||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||||
cmake --build bld --verbose --target curl-examples
|
cmake --build bld --target curl-examples --verbose
|
||||||
else
|
else
|
||||||
make -C bld examples V=1
|
make -C bld examples V=1
|
||||||
fi
|
fi
|
||||||
@ -454,8 +443,7 @@ jobs:
|
|||||||
[ '${{ matrix.config }}' = 'SecureTransport' ] && options+=' -DCURL_USE_SECTRANSP=ON'
|
[ '${{ matrix.config }}' = 'SecureTransport' ] && options+=' -DCURL_USE_SECTRANSP=ON'
|
||||||
[ -n '${{ matrix.macos-version-min }}' ] && options+=' -DCMAKE_OSX_DEPLOYMENT_TARGET=${{ matrix.macos-version-min }}'
|
[ -n '${{ matrix.macos-version-min }}' ] && options+=' -DCMAKE_OSX_DEPLOYMENT_TARGET=${{ matrix.macos-version-min }}'
|
||||||
# would pick up nghttp2, libidn2, and libssh2
|
# would pick up nghttp2, libidn2, and libssh2
|
||||||
cmake -B bld -D_CURL_PREFILL=ON \
|
cmake -B bld -DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON -DCURL_WERROR=ON \
|
||||||
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON -DCURL_WERROR=ON \
|
|
||||||
-DCMAKE_OSX_SYSROOT="${sysroot}" \
|
-DCMAKE_OSX_SYSROOT="${sysroot}" \
|
||||||
-DCMAKE_C_COMPILER_TARGET="$(uname -m | sed 's/arm64/aarch64/')-apple-darwin$(uname -r)" \
|
-DCMAKE_C_COMPILER_TARGET="$(uname -m | sed 's/arm64/aarch64/')-apple-darwin$(uname -r)" \
|
||||||
-DCMAKE_IGNORE_PREFIX_PATH="$(brew --prefix)" \
|
-DCMAKE_IGNORE_PREFIX_PATH="$(brew --prefix)" \
|
||||||
|
|||||||
108
.github/workflows/non-native.yml
vendored
108
.github/workflows/non-native.yml
vendored
@ -59,21 +59,21 @@ jobs:
|
|||||||
time cmake -B bld -G Ninja \
|
time cmake -B bld -G Ninja \
|
||||||
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON \
|
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON \
|
||||||
-DCURL_WERROR=ON \
|
-DCURL_WERROR=ON \
|
||||||
-DENABLE_DEBUG=ON -DCMAKE_BUILD_TYPE=Debug \
|
-DENABLE_DEBUG=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG= \
|
||||||
-DCURL_USE_OPENSSL=ON \
|
-DCURL_USE_OPENSSL=ON \
|
||||||
-DCURL_USE_GSSAPI=ON \
|
-DCURL_USE_GSSAPI=ON \
|
||||||
|| { cat bld/CMakeFiles/CMake*.yaml; false; }
|
|| { cat bld/CMakeFiles/CMake*.yaml; false; }
|
||||||
echo '::group::curl_config.h (raw)'; cat bld/lib/curl_config.h || true; echo '::endgroup::'
|
echo '::group::curl_config.h (raw)'; cat bld/lib/curl_config.h || true; echo '::endgroup::'
|
||||||
echo '::group::curl_config.h'; grep -F '#define' bld/lib/curl_config.h | sort || true; echo '::endgroup::'
|
echo '::group::curl_config.h'; grep -F '#define' bld/lib/curl_config.h | sort || true; echo '::endgroup::'
|
||||||
time cmake --build bld
|
time cmake --build bld --config Debug
|
||||||
bld/src/curl --disable --version
|
bld/src/curl --disable --version
|
||||||
if [ '${{ matrix.arch }}' = 'x86_64' ]; then # Slow on emulated CPU
|
if [ '${{ matrix.arch }}' = 'x86_64' ]; then # Slow on emulated CPU
|
||||||
time cmake --build bld --target testdeps
|
time cmake --build bld --config Debug --target testdeps
|
||||||
export TFLAGS='-j4'
|
export TFLAGS='-j4'
|
||||||
time cmake --build bld --target test-ci
|
time cmake --build bld --config Debug --target test-ci
|
||||||
fi
|
fi
|
||||||
echo '::group::build examples'
|
echo '::group::build examples'
|
||||||
time cmake --build bld --target curl-examples
|
time cmake --build bld --config Debug --target curl-examples
|
||||||
echo '::endgroup::'
|
echo '::endgroup::'
|
||||||
|
|
||||||
openbsd:
|
openbsd:
|
||||||
@ -100,31 +100,30 @@ jobs:
|
|||||||
time cmake -B bld -G Ninja \
|
time cmake -B bld -G Ninja \
|
||||||
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON \
|
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON \
|
||||||
-DCURL_WERROR=ON \
|
-DCURL_WERROR=ON \
|
||||||
-DENABLE_DEBUG=ON -DCMAKE_BUILD_TYPE=Debug \
|
-DENABLE_DEBUG=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG= \
|
||||||
-DCURL_USE_OPENSSL=ON \
|
-DCURL_USE_OPENSSL=ON \
|
||||||
|| { cat bld/CMakeFiles/CMake*.yaml; false; }
|
|| { cat bld/CMakeFiles/CMake*.yaml; false; }
|
||||||
echo '::group::curl_config.h (raw)'; cat bld/lib/curl_config.h || true; echo '::endgroup::'
|
echo '::group::curl_config.h (raw)'; cat bld/lib/curl_config.h || true; echo '::endgroup::'
|
||||||
echo '::group::curl_config.h'; grep -F '#define' bld/lib/curl_config.h | sort || true; echo '::endgroup::'
|
echo '::group::curl_config.h'; grep -F '#define' bld/lib/curl_config.h | sort || true; echo '::endgroup::'
|
||||||
time cmake --build bld
|
time cmake --build bld --config Debug
|
||||||
bld/src/curl --disable --version
|
bld/src/curl --disable --version
|
||||||
if [ '${{ matrix.arch }}' = 'x86_64' ]; then # Slow on emulated CPU
|
if [ '${{ matrix.arch }}' = 'x86_64' ]; then # Slow on emulated CPU
|
||||||
time cmake --build bld --target testdeps
|
time cmake --build bld --config Debug --target testdeps
|
||||||
export TFLAGS='-j8 ~3017 ~TFTP ~FTP' # FIXME: TFTP requests executed twice? Related: `curl: (69) TFTP: Access Violation`?
|
export TFLAGS='-j8 ~3017 ~TFTP ~FTP' # FIXME: TFTP requests executed twice? Related: `curl: (69) TFTP: Access Violation`?
|
||||||
time cmake --build bld --target test-ci
|
time cmake --build bld --config Debug --target test-ci
|
||||||
fi
|
fi
|
||||||
echo '::group::build examples'
|
echo '::group::build examples'
|
||||||
time cmake --build bld --target curl-examples
|
time cmake --build bld --config Debug --target curl-examples
|
||||||
echo '::endgroup::'
|
echo '::endgroup::'
|
||||||
|
|
||||||
freebsd:
|
freebsd:
|
||||||
name: "FreeBSD, ${{ matrix.build == 'cmake' && 'CM' || 'AM' }} ${{ matrix.compiler }} openssl${{ matrix.desc }} ${{ matrix.arch }}"
|
name: "FreeBSD, ${{ matrix.build == 'cmake' && 'CM' || 'AM' }} ${{ matrix.compiler }} openssl ${{ matrix.arch }}"
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
timeout-minutes: 20
|
timeout-minutes: 20
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- { build: 'autotools', arch: 'x86_64', compiler: 'clang' }
|
- { build: 'autotools', arch: 'x86_64', compiler: 'clang' }
|
||||||
- { build: 'cmake' , arch: 'x86_64', compiler: 'clang', options: '-DCMAKE_UNITY_BUILD=OFF -DCURL_TEST_BUNDLES=OFF', desc: ' !unity !bundle !runtests !examples' }
|
|
||||||
- { build: 'autotools', arch: 'arm64', compiler: 'clang' }
|
- { build: 'autotools', arch: 'arm64', compiler: 'clang' }
|
||||||
- { build: 'cmake' , arch: 'arm64', compiler: 'clang' }
|
- { build: 'cmake' , arch: 'arm64', compiler: 'clang' }
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
@ -140,7 +139,6 @@ jobs:
|
|||||||
version: '14.1'
|
version: '14.1'
|
||||||
architecture: ${{ matrix.arch }}
|
architecture: ${{ matrix.arch }}
|
||||||
run: |
|
run: |
|
||||||
export MAKEFLAGS=-j3
|
|
||||||
# https://ports.freebsd.org/
|
# https://ports.freebsd.org/
|
||||||
time sudo pkg install -y autoconf automake libtool \
|
time sudo pkg install -y autoconf automake libtool \
|
||||||
pkgconf brotli openldap26-client libidn2 libnghttp2 stunnel py311-impacket
|
pkgconf brotli openldap26-client libidn2 libnghttp2 stunnel py311-impacket
|
||||||
@ -150,25 +148,18 @@ jobs:
|
|||||||
--prefix="${HOME}"/install \
|
--prefix="${HOME}"/install \
|
||||||
--with-openssl \
|
--with-openssl \
|
||||||
--with-brotli --enable-ldap --enable-ldaps --with-libidn2 --with-libssh2 --with-nghttp2 --with-gssapi \
|
--with-brotli --enable-ldap --enable-ldaps --with-libidn2 --with-libssh2 --with-nghttp2 --with-gssapi \
|
||||||
--disable-dependency-tracking \
|
--disable-dependency-tracking || { tail -n 1000 config.log; false; }
|
||||||
${{ matrix.options }} \
|
|
||||||
|| { tail -n 1000 config.log; false; }
|
|
||||||
echo '::group::curl_config.h (raw)'; cat lib/curl_config.h || true; echo '::endgroup::'
|
echo '::group::curl_config.h (raw)'; cat lib/curl_config.h || true; echo '::endgroup::'
|
||||||
echo '::group::curl_config.h'; grep -F '#define' lib/curl_config.h | sort || true; echo '::endgroup::'
|
echo '::group::curl_config.h'; grep -F '#define' lib/curl_config.h | sort || true; echo '::endgroup::'
|
||||||
time make install
|
time make -j3 install
|
||||||
src/curl --disable --version
|
src/curl --disable --version
|
||||||
desc='${{ matrix.desc }}'
|
|
||||||
if [ '${{ matrix.arch }}' = 'x86_64' ]; then # Slow on emulated CPU
|
if [ '${{ matrix.arch }}' = 'x86_64' ]; then # Slow on emulated CPU
|
||||||
time make -C tests
|
time make -j3 -C tests
|
||||||
if [ "${desc#*!runtests*}" = "${desc}" ]; then
|
|
||||||
time make test-ci V=1 TFLAGS='-j4'
|
time make test-ci V=1 TFLAGS='-j4'
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
if [ "${desc#*!examples*}" = "${desc}" ]; then
|
|
||||||
echo '::group::build examples'
|
echo '::group::build examples'
|
||||||
time make examples
|
time make -j3 examples
|
||||||
echo '::endgroup::'
|
echo '::endgroup::'
|
||||||
fi
|
|
||||||
|
|
||||||
- name: 'cmake'
|
- name: 'cmake'
|
||||||
if: ${{ matrix.build == 'cmake' }}
|
if: ${{ matrix.build == 'cmake' }}
|
||||||
@ -185,27 +176,21 @@ jobs:
|
|||||||
-DCMAKE_C_COMPILER='${{ matrix.compiler }}' \
|
-DCMAKE_C_COMPILER='${{ matrix.compiler }}' \
|
||||||
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON \
|
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON \
|
||||||
-DCURL_WERROR=ON \
|
-DCURL_WERROR=ON \
|
||||||
-DENABLE_DEBUG=ON -DCMAKE_BUILD_TYPE=Debug \
|
-DENABLE_DEBUG=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG= \
|
||||||
-DCURL_USE_OPENSSL=ON \
|
-DCURL_USE_OPENSSL=ON \
|
||||||
-DCURL_USE_GSSAPI=ON \
|
-DCURL_USE_GSSAPI=ON \
|
||||||
${{ matrix.options }} \
|
|
||||||
|| { cat bld/CMakeFiles/CMake*.yaml; false; }
|
|| { cat bld/CMakeFiles/CMake*.yaml; false; }
|
||||||
echo '::group::curl_config.h (raw)'; cat bld/lib/curl_config.h || true; echo '::endgroup::'
|
echo '::group::curl_config.h (raw)'; cat bld/lib/curl_config.h || true; echo '::endgroup::'
|
||||||
echo '::group::curl_config.h'; grep -F '#define' bld/lib/curl_config.h | sort || true; echo '::endgroup::'
|
echo '::group::curl_config.h'; grep -F '#define' bld/lib/curl_config.h | sort || true; echo '::endgroup::'
|
||||||
time cmake --build bld
|
time cmake --build bld --config Debug
|
||||||
bld/src/curl --disable --version
|
bld/src/curl --disable --version
|
||||||
desc='${{ matrix.desc }}'
|
|
||||||
if [ '${{ matrix.arch }}' = 'x86_64' ]; then # Slow on emulated CPU
|
if [ '${{ matrix.arch }}' = 'x86_64' ]; then # Slow on emulated CPU
|
||||||
time cmake --build bld --target testdeps
|
time cmake --build bld --config Debug --target testdeps
|
||||||
if [ "${desc#*!runtests*}" = "${desc}" ]; then
|
time cmake --build bld --config Debug --target test-ci
|
||||||
time cmake --build bld --target test-ci
|
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
if [ "${desc#*!examples*}" = "${desc}" ]; then
|
|
||||||
echo '::group::build examples'
|
echo '::group::build examples'
|
||||||
time cmake --build bld --target curl-examples
|
time cmake --build bld --config Debug --target curl-examples
|
||||||
echo '::endgroup::'
|
echo '::endgroup::'
|
||||||
fi
|
|
||||||
|
|
||||||
omnios:
|
omnios:
|
||||||
name: 'OmniOS, AM gcc openssl amd64'
|
name: 'OmniOS, AM gcc openssl amd64'
|
||||||
@ -224,21 +209,19 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
set -e
|
set -e
|
||||||
ln -s /usr/bin/gcpp /usr/bin/cpp # Some tests expect `cpp`, which is named `gcpp` in this env.
|
ln -s /usr/bin/gcpp /usr/bin/cpp # Some tests expect `cpp`, which is named `gcpp` in this env.
|
||||||
export MAKEFLAGS=-j3
|
|
||||||
time autoreconf -fi
|
time autoreconf -fi
|
||||||
mkdir bld && cd bld && time ../configure --enable-unity --enable-test-bundles --enable-debug --enable-warnings --enable-werror \
|
mkdir bld && cd bld && time ../configure --enable-unity --enable-test-bundles --enable-debug --enable-warnings --enable-werror \
|
||||||
--prefix="${HOME}"/install \
|
--prefix="${HOME}"/install \
|
||||||
--with-openssl \
|
--with-openssl \
|
||||||
--disable-dependency-tracking \
|
--disable-dependency-tracking || { tail -n 1000 config.log; false; }
|
||||||
|| { tail -n 1000 config.log; false; }
|
|
||||||
echo '::group::curl_config.h (raw)'; cat lib/curl_config.h || true; echo '::endgroup::'
|
echo '::group::curl_config.h (raw)'; cat lib/curl_config.h || true; echo '::endgroup::'
|
||||||
echo '::group::curl_config.h'; grep -F '#define' lib/curl_config.h | sort || true; echo '::endgroup::'
|
echo '::group::curl_config.h'; grep -F '#define' lib/curl_config.h | sort || true; echo '::endgroup::'
|
||||||
time gmake install
|
time gmake -j3 install
|
||||||
src/curl --disable --version
|
src/curl --disable --version
|
||||||
time gmake -C tests
|
time gmake -j3 -C tests
|
||||||
time gmake test-ci V=1
|
time gmake test-ci V=1
|
||||||
echo '::group::build examples'
|
echo '::group::build examples'
|
||||||
time gmake examples
|
time gmake -j3 examples
|
||||||
echo '::endgroup::'
|
echo '::endgroup::'
|
||||||
|
|
||||||
ios:
|
ios:
|
||||||
@ -246,9 +229,9 @@ jobs:
|
|||||||
runs-on: 'macos-latest'
|
runs-on: 'macos-latest'
|
||||||
timeout-minutes: 10
|
timeout-minutes: 10
|
||||||
env:
|
env:
|
||||||
MAKEFLAGS: -j 4
|
|
||||||
DEVELOPER_DIR: "/Applications/Xcode${{ matrix.build.xcode && format('_{0}', matrix.build.xcode) || '' }}.app/Contents/Developer"
|
DEVELOPER_DIR: "/Applications/Xcode${{ matrix.build.xcode && format('_{0}', matrix.build.xcode) || '' }}.app/Contents/Developer"
|
||||||
CC: ${{ matrix.build.compiler || 'clang' }}
|
CC: ${{ matrix.build.compiler || 'clang' }}
|
||||||
|
MAKEFLAGS: -j 4
|
||||||
# renovate: datasource=github-tags depName=libressl-portable/portable versioning=semver registryUrl=https://github.com
|
# renovate: datasource=github-tags depName=libressl-portable/portable versioning=semver registryUrl=https://github.com
|
||||||
libressl-version: 4.0.0
|
libressl-version: 4.0.0
|
||||||
strategy:
|
strategy:
|
||||||
@ -263,7 +246,6 @@ jobs:
|
|||||||
install_steps: libressl
|
install_steps: libressl
|
||||||
# FIXME: Could not make OPENSSL_ROOT_DIR work. CMake seems to prepend sysroot to it.
|
# FIXME: Could not make OPENSSL_ROOT_DIR work. CMake seems to prepend sysroot to it.
|
||||||
generate: >-
|
generate: >-
|
||||||
-DCMAKE_BUILD_TYPE=Release -DCMAKE_UNITY_BUILD_BATCH_SIZE=50
|
|
||||||
-DOPENSSL_INCLUDE_DIR="$HOME/libressl/include"
|
-DOPENSSL_INCLUDE_DIR="$HOME/libressl/include"
|
||||||
-DOPENSSL_SSL_LIBRARY="$HOME/libressl/lib/libssl.a"
|
-DOPENSSL_SSL_LIBRARY="$HOME/libressl/lib/libssl.a"
|
||||||
-DOPENSSL_CRYPTO_LIBRARY="$HOME/libressl/lib/libcrypto.a"
|
-DOPENSSL_CRYPTO_LIBRARY="$HOME/libressl/lib/libcrypto.a"
|
||||||
@ -272,7 +254,6 @@ jobs:
|
|||||||
- name: 'libressl'
|
- name: 'libressl'
|
||||||
install_steps: libressl
|
install_steps: libressl
|
||||||
generator: Xcode
|
generator: Xcode
|
||||||
options: --config Debug
|
|
||||||
generate: >-
|
generate: >-
|
||||||
-DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED=OFF
|
-DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED=OFF
|
||||||
-DMACOSX_BUNDLE_GUI_IDENTIFIER=se.curl
|
-DMACOSX_BUNDLE_GUI_IDENTIFIER=se.curl
|
||||||
@ -315,7 +296,7 @@ jobs:
|
|||||||
https://github.com/libressl/portable/releases/download/v${{ env.libressl-version }}/libressl-${{ env.libressl-version }}.tar.gz | tar -x
|
https://github.com/libressl/portable/releases/download/v${{ env.libressl-version }}/libressl-${{ env.libressl-version }}.tar.gz | tar -x
|
||||||
cd libressl-${{ env.libressl-version }}
|
cd libressl-${{ env.libressl-version }}
|
||||||
# FIXME: on the 4.0.1 release, delete '-DHAVE_ENDIAN_H=0'
|
# FIXME: on the 4.0.1 release, delete '-DHAVE_ENDIAN_H=0'
|
||||||
cmake -B . \
|
cmake . \
|
||||||
-DHAVE_ENDIAN_H=0 \
|
-DHAVE_ENDIAN_H=0 \
|
||||||
-DCMAKE_INSTALL_PREFIX="$HOME/libressl" \
|
-DCMAKE_INSTALL_PREFIX="$HOME/libressl" \
|
||||||
-DCMAKE_SYSTEM_NAME=iOS \
|
-DCMAKE_SYSTEM_NAME=iOS \
|
||||||
@ -339,8 +320,7 @@ jobs:
|
|||||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||||
# https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#cross-compiling-for-ios-tvos-visionos-or-watchos
|
# https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#cross-compiling-for-ios-tvos-visionos-or-watchos
|
||||||
[ -n '${{ matrix.build.generator }}' ] && options='-G ${{ matrix.build.generator }}'
|
[ -n '${{ matrix.build.generator }}' ] && options='-G ${{ matrix.build.generator }}'
|
||||||
cmake -B bld -D_CURL_PREFILL=ON \
|
cmake -B bld -DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON -DCURL_WERROR=ON \
|
||||||
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON -DCURL_WERROR=ON \
|
|
||||||
-DCMAKE_SYSTEM_NAME=iOS \
|
-DCMAKE_SYSTEM_NAME=iOS \
|
||||||
-DUSE_APPLE_IDN=ON \
|
-DUSE_APPLE_IDN=ON \
|
||||||
${{ matrix.build.generate }} ${options}
|
${{ matrix.build.generate }} ${options}
|
||||||
@ -365,7 +345,7 @@ jobs:
|
|||||||
- name: 'build'
|
- name: 'build'
|
||||||
run: |
|
run: |
|
||||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||||
cmake --build bld ${{ matrix.build.options }} --parallel 4 --verbose
|
cmake --build bld --verbose
|
||||||
else
|
else
|
||||||
make -C bld V=1
|
make -C bld V=1
|
||||||
fi
|
fi
|
||||||
@ -376,7 +356,7 @@ jobs:
|
|||||||
- name: 'build tests'
|
- name: 'build tests'
|
||||||
run: |
|
run: |
|
||||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||||
cmake --build bld ${{ matrix.build.options }} --parallel 4 --target testdeps --verbose
|
cmake --build bld --target testdeps --verbose
|
||||||
else
|
else
|
||||||
make -C bld V=1 -C tests
|
make -C bld V=1 -C tests
|
||||||
fi
|
fi
|
||||||
@ -384,7 +364,7 @@ jobs:
|
|||||||
- name: 'build examples'
|
- name: 'build examples'
|
||||||
run: |
|
run: |
|
||||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||||
cmake --build bld ${{ matrix.build.options }} --parallel 4 --target curl-examples --verbose
|
cmake --build bld --target curl-examples --verbose
|
||||||
else
|
else
|
||||||
make -C bld examples V=1
|
make -C bld examples V=1
|
||||||
fi
|
fi
|
||||||
@ -394,9 +374,9 @@ jobs:
|
|||||||
runs-on: 'ubuntu-latest'
|
runs-on: 'ubuntu-latest'
|
||||||
timeout-minutes: 25
|
timeout-minutes: 25
|
||||||
env:
|
env:
|
||||||
MAKEFLAGS: -j 5
|
|
||||||
VCPKG_BINARY_SOURCES: 'clear;x-gha,readwrite'
|
VCPKG_BINARY_SOURCES: 'clear;x-gha,readwrite'
|
||||||
VCPKG_DISABLE_METRICS: '1'
|
VCPKG_DISABLE_METRICS: '1'
|
||||||
|
MAKEFLAGS: -j 5
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
@ -494,7 +474,7 @@ jobs:
|
|||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||||
cmake --build bld --verbose
|
cmake --build bld --verbose
|
||||||
else
|
else
|
||||||
make -C bld V=1
|
make -j5 -C bld V=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'curl info'
|
- name: 'curl info'
|
||||||
@ -505,7 +485,7 @@ jobs:
|
|||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||||
cmake --build bld --target testdeps
|
cmake --build bld --target testdeps
|
||||||
else
|
else
|
||||||
make -C bld -C tests
|
make -j5 -C bld -C tests
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'build examples'
|
- name: 'build examples'
|
||||||
@ -513,7 +493,7 @@ jobs:
|
|||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||||
cmake --build bld --target curl-examples
|
cmake --build bld --target curl-examples
|
||||||
else
|
else
|
||||||
make -C bld examples
|
make -j5 -C bld examples
|
||||||
fi
|
fi
|
||||||
|
|
||||||
amiga:
|
amiga:
|
||||||
@ -521,7 +501,6 @@ jobs:
|
|||||||
runs-on: 'ubuntu-latest'
|
runs-on: 'ubuntu-latest'
|
||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
env:
|
env:
|
||||||
MAKEFLAGS: -j 5
|
|
||||||
amissl-version: 5.18
|
amissl-version: 5.18
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
@ -589,9 +568,9 @@ jobs:
|
|||||||
- name: 'build'
|
- name: 'build'
|
||||||
run: |
|
run: |
|
||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||||
cmake --build bld
|
cmake --build bld --parallel 5
|
||||||
else
|
else
|
||||||
make -C bld
|
make -j5 -C bld
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'curl info'
|
- name: 'curl info'
|
||||||
@ -601,18 +580,18 @@ jobs:
|
|||||||
if: ${{ matrix.build == 'cmake' }} # skip for autotools to save time
|
if: ${{ matrix.build == 'cmake' }} # skip for autotools to save time
|
||||||
run: |
|
run: |
|
||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||||
cmake --build bld --target testdeps
|
cmake --build bld --parallel 5 --target testdeps
|
||||||
else
|
else
|
||||||
make -C bld -C tests
|
make -j5 -C bld -C tests
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'build examples'
|
- name: 'build examples'
|
||||||
if: ${{ matrix.build == 'cmake' }} # skip for autotools to save time
|
if: ${{ matrix.build == 'cmake' }} # skip for autotools to save time
|
||||||
run: |
|
run: |
|
||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||||
cmake --build bld --target curl-examples
|
cmake --build bld --parallel 5 --target curl-examples
|
||||||
else
|
else
|
||||||
make -C bld examples
|
make -j5 -C bld examples
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msdos:
|
msdos:
|
||||||
@ -620,7 +599,6 @@ jobs:
|
|||||||
runs-on: 'ubuntu-latest'
|
runs-on: 'ubuntu-latest'
|
||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
env:
|
env:
|
||||||
MAKEFLAGS: -j 5
|
|
||||||
toolchain-version: '3.4'
|
toolchain-version: '3.4'
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
@ -700,7 +678,7 @@ jobs:
|
|||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||||
cmake --build bld
|
cmake --build bld
|
||||||
else
|
else
|
||||||
make -C bld
|
make -j5 -C bld
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'curl info'
|
- name: 'curl info'
|
||||||
@ -712,7 +690,7 @@ jobs:
|
|||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||||
cmake --build bld --target testdeps
|
cmake --build bld --target testdeps
|
||||||
else
|
else
|
||||||
make -C bld -C tests
|
make -j5 -C bld -C tests
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'build examples'
|
- name: 'build examples'
|
||||||
@ -721,5 +699,5 @@ jobs:
|
|||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||||
cmake --build bld --target curl-examples
|
cmake --build bld --target curl-examples
|
||||||
else
|
else
|
||||||
make -C bld examples
|
make -j5 -C bld examples
|
||||||
fi
|
fi
|
||||||
|
|||||||
273
.github/workflows/windows.yml
vendored
273
.github/workflows/windows.yml
vendored
@ -44,7 +44,6 @@ jobs:
|
|||||||
run:
|
run:
|
||||||
shell: C:\cygwin\bin\bash.exe '{0}'
|
shell: C:\cygwin\bin\bash.exe '{0}'
|
||||||
env:
|
env:
|
||||||
MAKEFLAGS: -j 5
|
|
||||||
SHELLOPTS: 'igncr'
|
SHELLOPTS: 'igncr'
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
@ -84,13 +83,14 @@ jobs:
|
|||||||
- name: 'configure'
|
- name: 'configure'
|
||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
run: |
|
run: |
|
||||||
PATH=/usr/bin
|
|
||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||||
cmake -B bld -G Ninja -D_CURL_PREFILL=ON ${options} \
|
PATH="/usr/bin:$(cygpath "${SYSTEMROOT}")/System32"
|
||||||
-DCMAKE_UNITY_BUILD=ON -DCMAKE_UNITY_BUILD_BATCH_SIZE=30 -DCURL_TEST_BUNDLES=ON \
|
cmake -B bld -G Ninja ${options} \
|
||||||
|
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON \
|
||||||
-DCURL_WERROR=ON \
|
-DCURL_WERROR=ON \
|
||||||
${{ matrix.config }}
|
${{ matrix.config }}
|
||||||
else
|
else
|
||||||
|
PATH="/usr/bin:$(cygpath "${SYSTEMROOT}")/System32"
|
||||||
mkdir bld && cd bld && ../configure --enable-unity --enable-test-bundles --enable-warnings --enable-werror \
|
mkdir bld && cd bld && ../configure --enable-unity --enable-test-bundles --enable-warnings --enable-werror \
|
||||||
--prefix="${HOME}"/install \
|
--prefix="${HOME}"/install \
|
||||||
--with-openssl \
|
--with-openssl \
|
||||||
@ -112,9 +112,9 @@ jobs:
|
|||||||
timeout-minutes: 10
|
timeout-minutes: 10
|
||||||
run: |
|
run: |
|
||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||||
cmake --build bld
|
cmake --build bld --config '${{ matrix.type }}'
|
||||||
else
|
else
|
||||||
make -C bld V=1 install
|
make -C bld -j5 V=1 install
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'curl version'
|
- name: 'curl version'
|
||||||
@ -131,9 +131,9 @@ jobs:
|
|||||||
timeout-minutes: 15
|
timeout-minutes: 15
|
||||||
run: |
|
run: |
|
||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||||
cmake --build bld --target testdeps
|
cmake --build bld --config '${{ matrix.type }}' --target testdeps
|
||||||
else
|
else
|
||||||
make -C bld V=1 -C tests
|
make -C bld -j5 V=1 -C tests
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'run tests'
|
- name: 'run tests'
|
||||||
@ -146,9 +146,9 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||||
PATH="$PWD/bld/lib:$PATH"
|
PATH="$PWD/bld/lib:$PATH"
|
||||||
cmake --build bld --target test-ci
|
cmake --build bld --config '${{ matrix.type }}' --target test-ci
|
||||||
else
|
else
|
||||||
make -C bld V=1 test-ci
|
make -C bld -j5 V=1 test-ci
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'build examples'
|
- name: 'build examples'
|
||||||
@ -156,9 +156,9 @@ jobs:
|
|||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
run: |
|
run: |
|
||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||||
cmake --build bld --target curl-examples
|
cmake --build bld --config '${{ matrix.type }}' --target curl-examples
|
||||||
else
|
else
|
||||||
make -C bld V=1 examples
|
make -C bld -j5 V=1 examples
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msys2: # both msys and mingw-w64
|
msys2: # both msys and mingw-w64
|
||||||
@ -168,8 +168,6 @@ jobs:
|
|||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
shell: msys2 {0}
|
shell: msys2 {0}
|
||||||
env:
|
|
||||||
MAKEFLAGS: -j 5
|
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
@ -182,7 +180,7 @@ jobs:
|
|||||||
# FIXME: WebSockets test results ignored due to frequent failures on native Windows:
|
# FIXME: WebSockets test results ignored due to frequent failures on native Windows:
|
||||||
- { build: 'cmake' , sys: 'mingw64', env: 'x86_64' , tflags: '' , config: '-DENABLE_DEBUG=ON -DBUILD_SHARED_LIBS=OFF -DCURL_USE_SCHANNEL=ON -DENABLE_UNICODE=ON -DENABLE_ARES=ON', type: 'Debug', name: 'schannel c-ares U' }
|
- { build: 'cmake' , sys: 'mingw64', env: 'x86_64' , tflags: '' , config: '-DENABLE_DEBUG=ON -DBUILD_SHARED_LIBS=OFF -DCURL_USE_SCHANNEL=ON -DENABLE_UNICODE=ON -DENABLE_ARES=ON', type: 'Debug', name: 'schannel c-ares U' }
|
||||||
- { build: 'cmake' , sys: 'ucrt64' , env: 'ucrt-x86_64' , tflags: 'skiprun' , config: '-DENABLE_DEBUG=OFF -DBUILD_SHARED_LIBS=ON -DCURL_USE_SCHANNEL=ON -DENABLE_UNICODE=ON -DENABLE_CURLDEBUG=ON', type: 'Release', name: 'schannel R TrackMemory' }
|
- { build: 'cmake' , sys: 'ucrt64' , env: 'ucrt-x86_64' , tflags: 'skiprun' , config: '-DENABLE_DEBUG=OFF -DBUILD_SHARED_LIBS=ON -DCURL_USE_SCHANNEL=ON -DENABLE_UNICODE=ON -DENABLE_CURLDEBUG=ON', type: 'Release', name: 'schannel R TrackMemory' }
|
||||||
- { build: 'cmake' , sys: 'clang64', env: 'clang-x86_64', tflags: 'skiprun' , config: '-DENABLE_DEBUG=ON -DBUILD_SHARED_LIBS=OFF -DCURL_USE_OPENSSL=ON -DENABLE_UNICODE=OFF', type: 'Release', name: 'openssl', chkprefill: '_chkprefill' }
|
- { build: 'cmake' , sys: 'clang64', env: 'clang-x86_64', tflags: 'skiprun' , config: '-DENABLE_DEBUG=ON -DBUILD_SHARED_LIBS=OFF -DCURL_USE_OPENSSL=ON -DENABLE_UNICODE=OFF', type: 'Release', name: 'openssl' }
|
||||||
- { build: 'cmake' , sys: 'ucrt64' , env: 'ucrt-x86_64' , tflags: 'skiprun' , config: '-DENABLE_DEBUG=OFF -DBUILD_SHARED_LIBS=ON -DCURL_USE_SCHANNEL=ON', type: 'Release', test: 'uwp', name: 'schannel' }
|
- { build: 'cmake' , sys: 'ucrt64' , env: 'ucrt-x86_64' , tflags: 'skiprun' , config: '-DENABLE_DEBUG=OFF -DBUILD_SHARED_LIBS=ON -DCURL_USE_SCHANNEL=ON', type: 'Release', test: 'uwp', name: 'schannel' }
|
||||||
# { build: 'autotools', sys: 'ucrt64' , env: 'ucrt-x86_64' , tflags: 'skiprun' , config: '--without-debug --with-schannel --enable-shared', type: 'Release', test: 'uwp', name: 'schannel' }
|
# { build: 'autotools', sys: 'ucrt64' , env: 'ucrt-x86_64' , tflags: 'skiprun' , config: '--without-debug --with-schannel --enable-shared', type: 'Release', test: 'uwp', name: 'schannel' }
|
||||||
- { build: 'cmake' , sys: 'mingw64', env: 'x86_64' , tflags: 'skiprun' , config: '-DENABLE_DEBUG=ON -DBUILD_SHARED_LIBS=ON -DCURL_USE_SCHANNEL=ON -DENABLE_UNICODE=ON -DCMAKE_VERBOSE_MAKEFILE=ON', type: 'Debug', cflags: '-DCURL_SCHANNEL_DEV_DEBUG', name: 'schannel dev debug' }
|
- { build: 'cmake' , sys: 'mingw64', env: 'x86_64' , tflags: 'skiprun' , config: '-DENABLE_DEBUG=ON -DBUILD_SHARED_LIBS=ON -DCURL_USE_SCHANNEL=ON -DENABLE_UNICODE=ON -DCMAKE_VERBOSE_MAKEFILE=ON', type: 'Debug', cflags: '-DCURL_SCHANNEL_DEV_DEBUG', name: 'schannel dev debug' }
|
||||||
@ -207,7 +205,6 @@ jobs:
|
|||||||
libnghttp2-devel
|
libnghttp2-devel
|
||||||
libpsl-devel
|
libpsl-devel
|
||||||
libssh2-devel
|
libssh2-devel
|
||||||
${{ matrix.chkprefill == '_chkprefill' && 'diffutils' || '' }}
|
|
||||||
|
|
||||||
- uses: msys2/setup-msys2@d44ca8e88d8b43d56cf5670f91747359d5537f97 # v2
|
- uses: msys2/setup-msys2@d44ca8e88d8b43d56cf5670f91747359d5537f97 # v2
|
||||||
if: ${{ matrix.sys != 'msys' }}
|
if: ${{ matrix.sys != 'msys' }}
|
||||||
@ -221,7 +218,6 @@ jobs:
|
|||||||
mingw-w64-${{ matrix.env }}-libssh2
|
mingw-w64-${{ matrix.env }}-libssh2
|
||||||
mingw-w64-${{ matrix.env }}-libpsl
|
mingw-w64-${{ matrix.env }}-libpsl
|
||||||
mingw-w64-${{ matrix.env }}-c-ares
|
mingw-w64-${{ matrix.env }}-c-ares
|
||||||
${{ matrix.chkprefill == '_chkprefill' && format('mingw-w64-{0}-diffutils', matrix.env) || '' }}
|
|
||||||
|
|
||||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||||
with:
|
with:
|
||||||
@ -245,26 +241,20 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||||
for _chkprefill in '' ${{ matrix.chkprefill }}; do
|
|
||||||
if [[ '${{ matrix.env }}' = 'clang'* ]]; then
|
if [[ '${{ matrix.env }}' = 'clang'* ]]; then
|
||||||
options='-DCMAKE_C_COMPILER=clang'
|
options='-DCMAKE_C_COMPILER=clang'
|
||||||
else
|
else
|
||||||
options='-DCMAKE_C_COMPILER=gcc'
|
options='-DCMAKE_C_COMPILER=gcc'
|
||||||
fi
|
fi
|
||||||
[ '${{ matrix.sys }}' = 'msys' ] && options+=' -D_CURL_PREFILL=ON'
|
|
||||||
[ '${{ matrix.test }}' = 'uwp' ] && options+=' -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0'
|
[ '${{ matrix.test }}' = 'uwp' ] && options+=' -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0'
|
||||||
[ "${_chkprefill}" = '_chkprefill' ] && options+=' -D_CURL_PREFILL=OFF'
|
[ '${{ matrix.type }}' = 'Debug' ] && options+=' -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG='
|
||||||
cmake -B "bld${_chkprefill}" -G Ninja ${options} \
|
[ '${{ matrix.type }}' = 'Release' ] && options+=' -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE='
|
||||||
|
cmake -B bld -G Ninja ${options} \
|
||||||
-DCMAKE_C_FLAGS="${{ matrix.cflags }} ${CFLAGS_CMAKE} ${CPPFLAGS}" \
|
-DCMAKE_C_FLAGS="${{ matrix.cflags }} ${CFLAGS_CMAKE} ${CPPFLAGS}" \
|
||||||
-DCMAKE_BUILD_TYPE='${{ matrix.type }}' \
|
-DCMAKE_BUILD_TYPE='${{ matrix.type }}' \
|
||||||
-DCMAKE_UNITY_BUILD=ON -DCMAKE_UNITY_BUILD_BATCH_SIZE=30 -DCURL_TEST_BUNDLES=ON \
|
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON \
|
||||||
-DCURL_WERROR=ON \
|
-DCURL_WERROR=ON \
|
||||||
${{ matrix.config }}
|
${{ matrix.config }}
|
||||||
done
|
|
||||||
if [ -d bld_chkprefill ] && ! diff -u bld/lib/curl_config.h bld_chkprefill/lib/curl_config.h; then
|
|
||||||
echo '::group::reference configure log'; cat bld_chkprefill/CMakeFiles/CMake*.yaml 2>/dev/null || true; echo '::endgroup::'
|
|
||||||
false
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
export CFLAGS CPPFLAGS
|
export CFLAGS CPPFLAGS
|
||||||
mkdir bld && cd bld && ../configure --enable-unity --enable-test-bundles --enable-warnings --enable-werror \
|
mkdir bld && cd bld && ../configure --enable-unity --enable-test-bundles --enable-warnings --enable-werror \
|
||||||
@ -287,9 +277,9 @@ jobs:
|
|||||||
timeout-minutes: 10
|
timeout-minutes: 10
|
||||||
run: |
|
run: |
|
||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||||
cmake --build bld
|
cmake --build bld --config '${{ matrix.type }}'
|
||||||
else
|
else
|
||||||
make -C bld V=1 install
|
make -C bld -j5 V=1 install
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'curl version'
|
- name: 'curl version'
|
||||||
@ -312,9 +302,9 @@ jobs:
|
|||||||
timeout-minutes: 10
|
timeout-minutes: 10
|
||||||
run: |
|
run: |
|
||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||||
cmake --build bld --target testdeps
|
cmake --build bld --config '${{ matrix.type }}' --target testdeps
|
||||||
else
|
else
|
||||||
make -C bld V=1 -C tests
|
make -C bld -j5 V=1 -C tests
|
||||||
fi
|
fi
|
||||||
if [ '${{ matrix.build }}' != 'cmake' ]; then
|
if [ '${{ matrix.build }}' != 'cmake' ]; then
|
||||||
# avoid libtool's .exe wrappers
|
# avoid libtool's .exe wrappers
|
||||||
@ -348,10 +338,10 @@ jobs:
|
|||||||
PATH="$PATH:/c/Program Files (x86)/stunnel/bin"
|
PATH="$PATH:/c/Program Files (x86)/stunnel/bin"
|
||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||||
PATH="$PWD/bld/lib:$PATH"
|
PATH="$PWD/bld/lib:$PATH"
|
||||||
cmake --build bld --target test-ci
|
cmake --build bld --config '${{ matrix.type }}' --target test-ci
|
||||||
else
|
else
|
||||||
PATH="$PWD/bld/lib/.libs:$PATH"
|
PATH="$PWD/bld/lib/.libs:$PATH"
|
||||||
make -C bld V=1 test-ci
|
make -C bld -j5 V=1 test-ci
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'build examples'
|
- name: 'build examples'
|
||||||
@ -359,9 +349,9 @@ jobs:
|
|||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
run: |
|
run: |
|
||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||||
cmake --build bld --target curl-examples
|
cmake --build bld --config '${{ matrix.type }}' --target curl-examples
|
||||||
else
|
else
|
||||||
make -C bld V=1 examples
|
make -C bld -j5 V=1 examples
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mingw-w64-standalone-downloads:
|
mingw-w64-standalone-downloads:
|
||||||
@ -371,8 +361,6 @@ jobs:
|
|||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
shell: C:\msys64\usr\bin\bash.exe {0}
|
shell: C:\msys64\usr\bin\bash.exe {0}
|
||||||
env:
|
|
||||||
MAKEFLAGS: -j 5
|
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
@ -429,21 +417,15 @@ jobs:
|
|||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
run: |
|
run: |
|
||||||
PATH="$(cygpath "${USERPROFILE}")/my-cache/${{ matrix.dir }}/bin:/c/msys64/usr/bin:$PATH"
|
PATH="$(cygpath "${USERPROFILE}")/my-cache/${{ matrix.dir }}/bin:/c/msys64/usr/bin:$PATH"
|
||||||
for _chkprefill in '' ${{ matrix.chkprefill }}; do
|
[ '${{ matrix.type }}' = 'Debug' ] && options+=' -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG='
|
||||||
options=''
|
[ '${{ matrix.type }}' = 'Release' ] && options+=' -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE='
|
||||||
[ "${_chkprefill}" = '_chkprefill' ] && options+=' -D_CURL_PREFILL=OFF'
|
cmake -B bld -G 'MSYS Makefiles' ${options} \
|
||||||
cmake -B "bld${_chkprefill}" -G 'MSYS Makefiles' ${options} \
|
|
||||||
-DCMAKE_C_COMPILER=gcc \
|
-DCMAKE_C_COMPILER=gcc \
|
||||||
-DCMAKE_BUILD_TYPE='${{ matrix.type }}' \
|
-DCMAKE_BUILD_TYPE='${{ matrix.type }}' \
|
||||||
-DCMAKE_UNITY_BUILD=ON -DCMAKE_UNITY_BUILD_BATCH_SIZE=30 -DCURL_TEST_BUNDLES=ON \
|
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON \
|
||||||
-DCURL_WERROR=ON \
|
-DCURL_WERROR=ON \
|
||||||
-DCURL_USE_LIBPSL=OFF \
|
-DCURL_USE_LIBPSL=OFF \
|
||||||
${{ matrix.config }}
|
${{ matrix.config }}
|
||||||
done
|
|
||||||
if [ -d bld_chkprefill ] && ! diff -u bld/lib/curl_config.h bld_chkprefill/lib/curl_config.h; then
|
|
||||||
echo '::group::reference configure log'; cat bld_chkprefill/CMakeFiles/CMake*.yaml 2>/dev/null || true; echo '::endgroup::'
|
|
||||||
false
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: 'configure log'
|
- name: 'configure log'
|
||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() }}
|
||||||
@ -458,7 +440,7 @@ jobs:
|
|||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
run: |
|
run: |
|
||||||
PATH="$(cygpath "${USERPROFILE}")/my-cache/${{ matrix.dir }}/bin:/c/msys64/usr/bin:$PATH"
|
PATH="$(cygpath "${USERPROFILE}")/my-cache/${{ matrix.dir }}/bin:/c/msys64/usr/bin:$PATH"
|
||||||
cmake --build bld
|
cmake --build bld --config '${{ matrix.type }}' --parallel 5
|
||||||
|
|
||||||
- name: 'curl version'
|
- name: 'curl version'
|
||||||
timeout-minutes: 1
|
timeout-minutes: 1
|
||||||
@ -472,7 +454,7 @@ jobs:
|
|||||||
timeout-minutes: 10
|
timeout-minutes: 10
|
||||||
run: |
|
run: |
|
||||||
PATH="$(cygpath "${USERPROFILE}")/my-cache/${{ matrix.dir }}/bin:/c/msys64/usr/bin:$PATH"
|
PATH="$(cygpath "${USERPROFILE}")/my-cache/${{ matrix.dir }}/bin:/c/msys64/usr/bin:$PATH"
|
||||||
cmake --build bld --target testdeps
|
cmake --build bld --config '${{ matrix.type }}' --parallel 5 --target testdeps
|
||||||
|
|
||||||
- name: 'install test prereqs'
|
- name: 'install test prereqs'
|
||||||
if: ${{ matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }}
|
if: ${{ matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }}
|
||||||
@ -482,48 +464,37 @@ jobs:
|
|||||||
curl --disable --fail --silent --show-error --connect-timeout 15 --max-time 60 --retry 3 https://live.sysinternals.com/handle64.exe --output /bin/handle64.exe
|
curl --disable --fail --silent --show-error --connect-timeout 15 --max-time 60 --retry 3 https://live.sysinternals.com/handle64.exe --output /bin/handle64.exe
|
||||||
python3 -m pip --disable-pip-version-check --no-input --no-cache-dir install --progress-bar off --prefer-binary impacket
|
python3 -m pip --disable-pip-version-check --no-input --no-cache-dir install --progress-bar off --prefer-binary impacket
|
||||||
|
|
||||||
- name: 'downgrade msys2-runtime'
|
|
||||||
if: ${{ matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }}
|
|
||||||
timeout-minutes: 2
|
|
||||||
# Downgrade to a known good MSYS2 runtime version to avoid the performance regression
|
|
||||||
# causing runtests.pl to run at 2-3x reduced speed.
|
|
||||||
run: |
|
|
||||||
/usr/bin/sed -i 's/^CheckSpace/#CheckSpace/' /etc/pacman.conf
|
|
||||||
exec /usr/bin/pacman --noconfirm --noprogressbar --upgrade https://mirror.msys2.org/msys/x86_64/msys2-runtime-3.5.4-8-x86_64.pkg.tar.zst
|
|
||||||
|
|
||||||
- name: 'run tests'
|
- name: 'run tests'
|
||||||
if: ${{ matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }}
|
if: ${{ matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }}
|
||||||
timeout-minutes: 10
|
timeout-minutes: 10
|
||||||
run: |
|
run: |
|
||||||
PATH="$(cygpath "${USERPROFILE}")/my-cache/${{ matrix.dir }}/bin:/c/msys64/usr/bin:$PATH"
|
PATH="$(cygpath "${USERPROFILE}")/my-cache/${{ matrix.dir }}/bin:/c/msys64/usr/bin:$PATH"
|
||||||
export TFLAGS='-j8 ~WebSockets ${{ matrix.tflags }}'
|
export TFLAGS='-j4 ~WebSockets ${{ matrix.tflags }}'
|
||||||
if [ -x "$(cygpath "${SYSTEMROOT}/System32/curl.exe")" ]; then
|
if [ -x "$(cygpath "${SYSTEMROOT}/System32/curl.exe")" ]; then
|
||||||
TFLAGS+=" -ac $(cygpath "${SYSTEMROOT}/System32/curl.exe")"
|
TFLAGS+=" -ac $(cygpath "${SYSTEMROOT}/System32/curl.exe")"
|
||||||
fi
|
fi
|
||||||
PATH="$PWD/bld/lib:$PATH:/c/Program Files (x86)/stunnel/bin"
|
PATH="$PWD/bld/lib:$PATH:/c/Program Files (x86)/stunnel/bin"
|
||||||
cmake --build bld --target test-ci
|
cmake --build bld --config '${{ matrix.type }}' --target test-ci
|
||||||
|
|
||||||
- name: 'build examples'
|
- name: 'build examples'
|
||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
run: |
|
run: |
|
||||||
PATH="$(cygpath "${USERPROFILE}")/my-cache/${{ matrix.dir }}/bin:/c/msys64/usr/bin:$PATH"
|
PATH="$(cygpath "${USERPROFILE}")/my-cache/${{ matrix.dir }}/bin:/c/msys64/usr/bin:$PATH"
|
||||||
cmake --build bld --target curl-examples
|
cmake --build bld --config '${{ matrix.type }}' --parallel 5 --target curl-examples
|
||||||
|
|
||||||
linux-cross-mingw-w64:
|
linux-cross-mingw-w64:
|
||||||
name: "linux-mingw, ${{ matrix.build == 'cmake' && 'CM' || 'AM' }} ${{ matrix.compiler }}"
|
name: "linux-mingw, ${{ matrix.build == 'cmake' && 'CM' || 'AM' }} ${{ matrix.compiler }}"
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
timeout-minutes: 15
|
timeout-minutes: 15
|
||||||
env:
|
|
||||||
MAKEFLAGS: -j 5
|
|
||||||
TRIPLET: 'x86_64-w64-mingw32'
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
build: [autotools, cmake]
|
build: [autotools, cmake]
|
||||||
compiler: [gcc]
|
compiler: [gcc]
|
||||||
|
env:
|
||||||
|
TRIPLET: 'x86_64-w64-mingw32'
|
||||||
steps:
|
steps:
|
||||||
- name: 'install packages'
|
- name: 'install packages'
|
||||||
timeout-minutes: 5
|
|
||||||
run: sudo apt-get -o Dpkg::Use-Pty=0 install mingw-w64 ${{ matrix.build == 'cmake' && 'ninja-build' || '' }}
|
run: sudo apt-get -o Dpkg::Use-Pty=0 install mingw-w64 ${{ matrix.build == 'cmake' && 'ninja-build' || '' }}
|
||||||
|
|
||||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||||
@ -567,7 +538,7 @@ jobs:
|
|||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||||
cmake --build bld
|
cmake --build bld
|
||||||
else
|
else
|
||||||
make -C bld
|
make -C bld -j5
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'curl info'
|
- name: 'curl info'
|
||||||
@ -579,7 +550,7 @@ jobs:
|
|||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||||
cmake --build bld --target testdeps
|
cmake --build bld --target testdeps
|
||||||
else
|
else
|
||||||
make -C bld -C tests
|
make -C bld -j5 -C tests
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'build examples'
|
- name: 'build examples'
|
||||||
@ -587,114 +558,7 @@ jobs:
|
|||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||||
cmake --build bld --target curl-examples
|
cmake --build bld --target curl-examples
|
||||||
else
|
else
|
||||||
make -C bld examples
|
make -C bld -j5 examples
|
||||||
fi
|
|
||||||
|
|
||||||
wince:
|
|
||||||
name: "mingw32ce, ${{ matrix.build == 'cmake' && 'CM' || 'AM' }} 4.4.0-arm schannel"
|
|
||||||
runs-on: 'macos-latest'
|
|
||||||
timeout-minutes: 10
|
|
||||||
env:
|
|
||||||
MAKEFLAGS: -j 4
|
|
||||||
toolchain-version: '0.59.1'
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
build: [autotools, cmake]
|
|
||||||
fail-fast: false
|
|
||||||
steps:
|
|
||||||
- name: 'install packages'
|
|
||||||
if: ${{ matrix.build == 'autotools' }}
|
|
||||||
timeout-minutes: 5
|
|
||||||
run: |
|
|
||||||
echo automake libtool | xargs -Ix -n1 echo brew '"x"' > /tmp/Brewfile
|
|
||||||
while [[ $? == 0 ]]; do for i in 1 2 3; do brew update && brew bundle install --no-lock --file /tmp/Brewfile && break 2 || { echo Error: wait to try again; sleep 10; } done; false Too many retries; done
|
|
||||||
|
|
||||||
- name: 'cache compiler (mingw32ce)'
|
|
||||||
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4
|
|
||||||
id: cache-compiler
|
|
||||||
with:
|
|
||||||
path: ~/opt/mingw32ce
|
|
||||||
key: ${{ runner.os }}-mingw32ce-${{ env.toolchain-version }}-amd64
|
|
||||||
|
|
||||||
- name: 'install compiler (mingw32ce)'
|
|
||||||
if: ${{ steps.cache-compiler.outputs.cache-hit != 'true' }}
|
|
||||||
timeout-minutes: 5
|
|
||||||
run: |
|
|
||||||
cd "${HOME}" || exit 1
|
|
||||||
curl --disable --fail --silent --show-error --connect-timeout 15 --max-time 120 --retry 3 --retry-connrefused --proto-redir =https \
|
|
||||||
--location 'https://downloads.sourceforge.net/cegcc/cegcc/${{ env.toolchain-version }}/cegcc_mingw32ce_snowleopard_r1397.tar.bz2' | tar -x
|
|
||||||
ls -l
|
|
||||||
|
|
||||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
|
||||||
|
|
||||||
- name: 'configure'
|
|
||||||
run: |
|
|
||||||
PATH="$HOME/opt/mingw32ce/bin:$PATH"
|
|
||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
|
||||||
cmake -B bld \
|
|
||||||
-DCMAKE_SYSTEM_NAME=WindowsCE \
|
|
||||||
-DCMAKE_SYSTEM_VERSION=8.0 \
|
|
||||||
-DCMAKE_SYSTEM_PROCESSOR=arm \
|
|
||||||
-DCMAKE_C_FLAGS='-O3 -DNDEBUG' \
|
|
||||||
-DCMAKE_C_COMPILER_TARGET=arm-mingw32ce \
|
|
||||||
-DCMAKE_C_COMPILER=arm-mingw32ce-gcc \
|
|
||||||
-DCMAKE_RC_COMPILER=arm-mingw32ce-windres \
|
|
||||||
-DMINGW32CE_LIBRARY_DIR="$HOME/opt/mingw32ce/arm-mingw32ce/lib" \
|
|
||||||
-DCMAKE_IGNORE_PREFIX_PATH="$(brew --prefix)" \
|
|
||||||
-DCMAKE_UNITY_BUILD=ON -DCMAKE_UNITY_BUILD_BATCH_SIZE=50 -DCURL_TEST_BUNDLES=ON \
|
|
||||||
-DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DBUILD_STATIC_CURL=OFF \
|
|
||||||
-DCURL_WERROR=ON \
|
|
||||||
-DCURL_USE_SCHANNEL=ON \
|
|
||||||
-DCURL_USE_LIBPSL=OFF
|
|
||||||
else
|
|
||||||
autoreconf -fi
|
|
||||||
mkdir bld && cd bld && ../configure --disable-dependency-tracking --enable-unity --enable-test-bundles --enable-warnings --enable-werror \
|
|
||||||
--host=arm-mingw32ce \
|
|
||||||
--with-schannel \
|
|
||||||
--without-libpsl \
|
|
||||||
--disable-shared
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: 'configure log'
|
|
||||||
if: ${{ !cancelled() }}
|
|
||||||
run: cat bld/config.log bld/CMakeFiles/CMake*.yaml 2>/dev/null || true
|
|
||||||
|
|
||||||
- name: 'curl_config.h'
|
|
||||||
run: |
|
|
||||||
echo '::group::raw'; cat bld/lib/curl_config.h || true; echo '::endgroup::'
|
|
||||||
grep -F '#define' bld/lib/curl_config.h | sort || true
|
|
||||||
|
|
||||||
- name: 'build'
|
|
||||||
run: |
|
|
||||||
PATH="$HOME/opt/mingw32ce/bin:$PATH"
|
|
||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
|
||||||
cmake --build bld
|
|
||||||
else
|
|
||||||
make -C bld
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: 'curl info'
|
|
||||||
run: |
|
|
||||||
find . \( -name '*.exe' -o -name '*.dll' -o -name '*.a' \) -exec file '{}' \;
|
|
||||||
|
|
||||||
- name: 'build tests'
|
|
||||||
if: ${{ matrix.build == 'cmake' }} # skip for autotools to save time
|
|
||||||
run: |
|
|
||||||
PATH="$HOME/opt/mingw32ce/bin:$PATH"
|
|
||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
|
||||||
cmake --build bld --target testdeps
|
|
||||||
else
|
|
||||||
make -C bld -C tests
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: 'build examples'
|
|
||||||
if: ${{ matrix.build == 'cmake' }} # skip for autotools to save time
|
|
||||||
run: |
|
|
||||||
PATH="$HOME/opt/mingw32ce/bin:$PATH"
|
|
||||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
|
||||||
cmake --build bld --target curl-examples
|
|
||||||
else
|
|
||||||
make -C bld examples
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msvc:
|
msvc:
|
||||||
@ -710,16 +574,16 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- name: 'openssl'
|
- name: 'schannel MultiSSL U'
|
||||||
install: 'brotli zlib zstd nghttp2 nghttp3 openssl libssh2'
|
install: 'brotli zlib zstd libpsl nghttp2 libssh2[core,zlib] pkgconf gsasl openssl mbedtls wolfssl'
|
||||||
arch: 'x64'
|
arch: 'x64'
|
||||||
plat: 'uwp'
|
plat: 'windows'
|
||||||
type: 'Debug'
|
type: 'Debug'
|
||||||
tflags: 'skiprun'
|
tflags: '~1516 ~2301 ~2302 ~2303 ~2307 ~2310'
|
||||||
config: >-
|
config: >-
|
||||||
-DCURL_USE_LIBSSH2=ON
|
-DCURL_USE_LIBSSH2=ON
|
||||||
-DCURL_USE_SCHANNEL=OFF -DCURL_USE_OPENSSL=ON -DUSE_OPENSSL_QUIC=ON
|
-DCURL_USE_SCHANNEL=ON -DCURL_USE_OPENSSL=ON -DCURL_USE_MBEDTLS=ON -DCURL_USE_WOLFSSL=ON -DCURL_DEFAULT_SSL_BACKEND=schannel
|
||||||
-DCURL_USE_LIBPSL=OFF
|
-DCURL_USE_GSASL=ON -DUSE_WIN32_IDN=ON -DENABLE_UNICODE=ON -DUSE_SSLS_EXPORT=ON
|
||||||
|
|
||||||
- name: 'openssl'
|
- name: 'openssl'
|
||||||
install: 'brotli zlib zstd libpsl nghttp2 nghttp3 openssl libssh2 pkgconf gsasl c-ares libuv krb5'
|
install: 'brotli zlib zstd libpsl nghttp2 nghttp3 openssl libssh2 pkgconf gsasl c-ares libuv krb5'
|
||||||
@ -732,16 +596,16 @@ jobs:
|
|||||||
-DCURL_USE_SCHANNEL=OFF -DCURL_USE_OPENSSL=ON -DUSE_OPENSSL_QUIC=ON
|
-DCURL_USE_SCHANNEL=OFF -DCURL_USE_OPENSSL=ON -DUSE_OPENSSL_QUIC=ON
|
||||||
-DCURL_USE_GSASL=ON -DENABLE_ARES=ON -DCURL_USE_LIBUV=ON -DCURL_USE_GSSAPI=ON
|
-DCURL_USE_GSASL=ON -DENABLE_ARES=ON -DCURL_USE_LIBUV=ON -DCURL_USE_GSSAPI=ON
|
||||||
|
|
||||||
- name: 'schannel MultiSSL U'
|
- name: 'openssl'
|
||||||
install: 'brotli zlib zstd libpsl nghttp2 libssh2[core,zlib] pkgconf gsasl openssl mbedtls wolfssl'
|
install: 'brotli zlib zstd nghttp2 nghttp3 openssl libssh2'
|
||||||
arch: 'x64'
|
arch: 'x64'
|
||||||
plat: 'windows'
|
plat: 'uwp'
|
||||||
type: 'Debug'
|
type: 'Debug'
|
||||||
tflags: '~1516 ~2301 ~2302 ~2303 ~2307 ~2310'
|
tflags: 'skiprun'
|
||||||
config: >-
|
config: >-
|
||||||
-DCURL_USE_LIBSSH2=ON
|
-DCURL_USE_LIBSSH2=ON
|
||||||
-DCURL_USE_SCHANNEL=ON -DCURL_USE_OPENSSL=ON -DCURL_USE_MBEDTLS=ON -DCURL_USE_WOLFSSL=ON -DCURL_DEFAULT_SSL_BACKEND=schannel
|
-DCURL_USE_SCHANNEL=OFF -DCURL_USE_OPENSSL=ON -DUSE_OPENSSL_QUIC=ON
|
||||||
-DCURL_USE_GSASL=ON -DUSE_WIN32_IDN=ON -DENABLE_UNICODE=ON -DUSE_SSLS_EXPORT=ON
|
-DCURL_USE_LIBPSL=OFF
|
||||||
|
|
||||||
- name: 'libressl'
|
- name: 'libressl'
|
||||||
install: 'brotli zlib zstd libpsl nghttp2 libressl libssh2[core,zlib] pkgconf ngtcp2[libressl] nghttp3'
|
install: 'brotli zlib zstd libpsl nghttp2 libressl libssh2[core,zlib] pkgconf ngtcp2[libressl] nghttp3'
|
||||||
@ -783,7 +647,6 @@ jobs:
|
|||||||
plat: 'windows'
|
plat: 'windows'
|
||||||
type: 'Debug'
|
type: 'Debug'
|
||||||
tflags: '~1516'
|
tflags: '~1516'
|
||||||
chkprefill: '_chkprefill'
|
|
||||||
# WARNING: libssh uses hard-coded world-writable paths (/etc/..., ~/.ssh/) to
|
# WARNING: libssh uses hard-coded world-writable paths (/etc/..., ~/.ssh/) to
|
||||||
# read its configuration from, making it vulnerable to attacks on
|
# read its configuration from, making it vulnerable to attacks on
|
||||||
# Windows. Do not use this component till there is a fix for these.
|
# Windows. Do not use this component till there is a fix for these.
|
||||||
@ -820,19 +683,13 @@ jobs:
|
|||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
run: |
|
run: |
|
||||||
PATH="/c/msys64/usr/bin:$PATH"
|
PATH="/c/msys64/usr/bin:$PATH"
|
||||||
for _chkprefill in '' ${{ matrix.chkprefill }}; do
|
|
||||||
options=''
|
|
||||||
if [ '${{ matrix.plat }}' = 'uwp' ]; then
|
if [ '${{ matrix.plat }}' = 'uwp' ]; then
|
||||||
options+=' -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0'
|
options+=' -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0'
|
||||||
cflags='-DWINAPI_FAMILY=WINAPI_FAMILY_PC_APP'
|
cflags='-DWINAPI_FAMILY=WINAPI_FAMILY_PC_APP'
|
||||||
ldflags='-OPT:NOREF -OPT:NOICF -APPCONTAINER:NO'
|
ldflags='-OPT:NOREF -OPT:NOICF -APPCONTAINER:NO'
|
||||||
vsglobals=';AppxPackage=false;WindowsAppContainer=false'
|
vsglobals=';AppxPackage=false;WindowsAppContainer=false'
|
||||||
fi
|
fi
|
||||||
[ '${{ matrix.arch }}' = 'arm64' ] && options+=' -A ARM64'
|
cmake -B bld ${options} \
|
||||||
[ '${{ matrix.arch }}' = 'x64' ] && options+=' -A x64'
|
|
||||||
[ '${{ matrix.arch }}' = 'x86' ] && options+=' -A Win32'
|
|
||||||
[ "${_chkprefill}" = '_chkprefill' ] && options+=' -D_CURL_PREFILL=OFF'
|
|
||||||
cmake -B "bld${_chkprefill}" ${options} \
|
|
||||||
-DCMAKE_TOOLCHAIN_FILE="$VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake" \
|
-DCMAKE_TOOLCHAIN_FILE="$VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake" \
|
||||||
-DVCPKG_INSTALLED_DIR="$VCPKG_INSTALLATION_ROOT/installed" \
|
-DVCPKG_INSTALLED_DIR="$VCPKG_INSTALLATION_ROOT/installed" \
|
||||||
-DVCPKG_TARGET_TRIPLET='${{ matrix.arch }}-${{ matrix.plat }}' \
|
-DVCPKG_TARGET_TRIPLET='${{ matrix.arch }}-${{ matrix.plat }}' \
|
||||||
@ -840,16 +697,14 @@ jobs:
|
|||||||
-DCMAKE_EXE_LINKER_FLAGS="-INCREMENTAL:NO ${ldflags}" \
|
-DCMAKE_EXE_LINKER_FLAGS="-INCREMENTAL:NO ${ldflags}" \
|
||||||
-DCMAKE_SHARED_LINKER_FLAGS="-INCREMENTAL:NO ${ldflags}" \
|
-DCMAKE_SHARED_LINKER_FLAGS="-INCREMENTAL:NO ${ldflags}" \
|
||||||
-DCMAKE_VS_GLOBALS="TrackFileAccess=false${vsglobals}" \
|
-DCMAKE_VS_GLOBALS="TrackFileAccess=false${vsglobals}" \
|
||||||
|
-DCMAKE_BUILD_TYPE='${{ matrix.type }}' \
|
||||||
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON \
|
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON \
|
||||||
-DCURL_WERROR=ON \
|
-DCURL_WERROR=ON \
|
||||||
-DBUILD_SHARED_LIBS=OFF \
|
-DBUILD_SHARED_LIBS=OFF \
|
||||||
-DENABLE_DEBUG=ON \
|
-DENABLE_DEBUG=ON \
|
||||||
|
-DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG= \
|
||||||
|
-DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE= \
|
||||||
${{ matrix.config }}
|
${{ matrix.config }}
|
||||||
done
|
|
||||||
if [ -d bld_chkprefill ] && ! diff -u bld/lib/curl_config.h bld_chkprefill/lib/curl_config.h; then
|
|
||||||
echo '::group::reference configure log'; cat bld_chkprefill/CMakeFiles/CMake*.yaml 2>/dev/null || true; echo '::endgroup::'
|
|
||||||
false
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: 'configure log'
|
- name: 'configure log'
|
||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() }}
|
||||||
@ -869,10 +724,10 @@ jobs:
|
|||||||
- name: 'curl version'
|
- name: 'curl version'
|
||||||
timeout-minutes: 1
|
timeout-minutes: 1
|
||||||
run: |
|
run: |
|
||||||
PATH=/usr/bin find . \( -name '*.exe' -o -name '*.dll' -o -name '*.lib' -o -name '*.pdb' \) -exec file '{}' \;
|
PATH=/usr/bin find . \( -name '*.exe' -o -name '*.dll' -o -name '*.lib' \) -exec file '{}' \;
|
||||||
if [ '${{ matrix.plat }}' != 'uwp' ]; then # Missing: ucrtbased.dll, VCRUNTIME140D.dll, VCRUNTIME140D_APP.dll
|
if [ '${{ matrix.plat }}' != 'uwp' ]; then # Missing: ucrtbased.dll, VCRUNTIME140D.dll, VCRUNTIME140D_APP.dll
|
||||||
PATH="$PWD/bld/lib/${{ matrix.type }}:$PATH"
|
PATH="$PWD/bld/lib:$PATH"
|
||||||
'bld/src/${{ matrix.type }}/curl.exe' --disable --version
|
bld/src/curl.exe --disable --version
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 'build tests'
|
- name: 'build tests'
|
||||||
@ -894,27 +749,17 @@ jobs:
|
|||||||
curl --disable --fail --silent --show-error --connect-timeout 15 --max-time 60 --retry 3 https://live.sysinternals.com/handle64.exe --output /bin/handle64.exe
|
curl --disable --fail --silent --show-error --connect-timeout 15 --max-time 60 --retry 3 https://live.sysinternals.com/handle64.exe --output /bin/handle64.exe
|
||||||
python3 -m pip --disable-pip-version-check --no-input --no-cache-dir install --progress-bar off --prefer-binary impacket
|
python3 -m pip --disable-pip-version-check --no-input --no-cache-dir install --progress-bar off --prefer-binary impacket
|
||||||
|
|
||||||
- name: 'downgrade msys2-runtime'
|
|
||||||
if: ${{ matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }}
|
|
||||||
timeout-minutes: 2
|
|
||||||
# Downgrade to a known good MSYS2 runtime version to avoid the performance regression
|
|
||||||
# causing runtests.pl to run at 2-3x reduced speed.
|
|
||||||
run: |
|
|
||||||
/usr/bin/sed -i 's/^CheckSpace/#CheckSpace/' /etc/pacman.conf
|
|
||||||
exec /usr/bin/pacman --noconfirm --noprogressbar --upgrade https://mirror.msys2.org/msys/x86_64/msys2-runtime-3.5.4-8-x86_64.pkg.tar.zst
|
|
||||||
|
|
||||||
- name: 'run tests'
|
- name: 'run tests'
|
||||||
if: ${{ matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }}
|
if: ${{ matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }}
|
||||||
timeout-minutes: 10
|
timeout-minutes: 10
|
||||||
run: |
|
run: |
|
||||||
export CURL_DIRSUFFIX='${{ matrix.type }}'
|
|
||||||
export TFLAGS='-j8 ~WebSockets ~SCP ~612 ${{ matrix.tflags }}'
|
export TFLAGS='-j8 ~WebSockets ~SCP ~612 ${{ matrix.tflags }}'
|
||||||
if [[ '${{ matrix.install }}' = *'libssh2[core,zlib]'* ]]; then
|
if [[ '${{ matrix.install }}' = *'libssh2[core,zlib]'* ]]; then
|
||||||
TFLAGS+=' ~SFTP'
|
TFLAGS+=' ~SFTP'
|
||||||
elif [[ '${{ matrix.install }}' = *'libssh '* ]]; then
|
elif [[ '${{ matrix.install }}' = *'libssh '* ]]; then
|
||||||
TFLAGS+=' ~614' # 'SFTP pre-quote chmod' SFTP, pre-quote, directory
|
TFLAGS+=' ~614' # 'SFTP pre-quote chmod' SFTP, pre-quote, directory
|
||||||
fi
|
fi
|
||||||
PATH="$PWD/bld/lib/${{ matrix.type }}:$PATH:/c/Program Files (x86)/stunnel/bin:/c/Program Files/OpenSSH-Win64"
|
PATH="$PWD/bld/lib:$PATH:/c/Program Files (x86)/stunnel/bin:/c/Program Files/OpenSSH-Win64"
|
||||||
PATH="/c/msys64/usr/bin:$PATH"
|
PATH="/c/msys64/usr/bin:$PATH"
|
||||||
cmake --build bld --config '${{ matrix.type }}' --target test-ci
|
cmake --build bld --config '${{ matrix.type }}' --target test-ci
|
||||||
|
|
||||||
|
|||||||
@ -29,7 +29,7 @@ if(WIN32 AND (ENABLE_DEBUG OR ENABLE_CURLDEBUG))
|
|||||||
# e.g. curl_easy_perform_ev() or curl_dbg_*(),
|
# e.g. curl_easy_perform_ev() or curl_dbg_*(),
|
||||||
# so disable symbol hiding for debug builds and for memory tracking.
|
# so disable symbol hiding for debug builds and for memory tracking.
|
||||||
set(CURL_HIDDEN_SYMBOLS OFF)
|
set(CURL_HIDDEN_SYMBOLS OFF)
|
||||||
elseif(DOS OR AMIGA OR MINGW32CE)
|
elseif(DOS OR AMIGA)
|
||||||
set(CURL_HIDDEN_SYMBOLS OFF)
|
set(CURL_HIDDEN_SYMBOLS OFF)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
@ -55,17 +55,24 @@ int main(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* tests for gethostbyname_r */
|
/* tests for gethostbyname_r */
|
||||||
#if defined(HAVE_GETHOSTBYNAME_R_3) || \
|
#if defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT) || \
|
||||||
defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT) || \
|
|
||||||
defined(HAVE_GETHOSTBYNAME_R_5) || \
|
|
||||||
defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT) || \
|
defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT) || \
|
||||||
defined(HAVE_GETHOSTBYNAME_R_6) || \
|
|
||||||
defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT)
|
defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT)
|
||||||
|
# define _REENTRANT
|
||||||
|
/* no idea whether _REENTRANT is always set, just invent a new flag */
|
||||||
|
# define TEST_GETHOSTBYFOO_REENTRANT
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_GETHOSTBYNAME_R_3) || \
|
||||||
|
defined(HAVE_GETHOSTBYNAME_R_5) || \
|
||||||
|
defined(HAVE_GETHOSTBYNAME_R_6) || \
|
||||||
|
defined(TEST_GETHOSTBYFOO_REENTRANT)
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
const char *address = "example.com";
|
char *address = "example.com";
|
||||||
|
int length = 0;
|
||||||
|
int type = 0;
|
||||||
struct hostent h;
|
struct hostent h;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
#if defined(HAVE_GETHOSTBYNAME_R_3) || \
|
#if defined(HAVE_GETHOSTBYNAME_R_3) || \
|
||||||
@ -76,31 +83,44 @@ int main(void)
|
|||||||
defined(HAVE_GETHOSTBYNAME_R_6) || \
|
defined(HAVE_GETHOSTBYNAME_R_6) || \
|
||||||
defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT)
|
defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT)
|
||||||
char buffer[8192];
|
char buffer[8192];
|
||||||
struct hostent *hp;
|
|
||||||
int h_errnop;
|
int h_errnop;
|
||||||
|
struct hostent *hp;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(HAVE_GETHOSTBYNAME_R_3) || \
|
#if defined(HAVE_GETHOSTBYNAME_R_3) || \
|
||||||
defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT)
|
defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT)
|
||||||
rc = gethostbyname_r(address, &h, &hdata);
|
rc = gethostbyname_r(address, &h, &hdata);
|
||||||
(void)hdata;
|
|
||||||
#elif defined(HAVE_GETHOSTBYNAME_R_5) || \
|
#elif defined(HAVE_GETHOSTBYNAME_R_5) || \
|
||||||
defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT)
|
defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT)
|
||||||
rc = gethostbyname_r(address, &h, buffer, 8192, &h_errnop);
|
rc = gethostbyname_r(address, &h, buffer, 8192, &h_errnop);
|
||||||
(void)hp; /* not used for test */
|
(void)hp; /* not used for test */
|
||||||
(void)h_errnop;
|
|
||||||
#elif defined(HAVE_GETHOSTBYNAME_R_6) || \
|
#elif defined(HAVE_GETHOSTBYNAME_R_6) || \
|
||||||
defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT)
|
defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT)
|
||||||
rc = gethostbyname_r(address, &h, buffer, 8192, &hp, &h_errnop);
|
rc = gethostbyname_r(address, &h, buffer, 8192, &hp, &h_errnop);
|
||||||
(void)hp;
|
|
||||||
(void)h_errnop;
|
|
||||||
#endif
|
#endif
|
||||||
(void)h;
|
|
||||||
|
(void)length;
|
||||||
|
(void)type;
|
||||||
(void)rc;
|
(void)rc;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_IN_ADDR_T
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
if((in_addr_t *) 0)
|
||||||
|
return 0;
|
||||||
|
if(sizeof(in_addr_t))
|
||||||
|
return 0;
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_BOOL_T
|
#ifdef HAVE_BOOL_T
|
||||||
#ifdef HAVE_SYS_TYPES_H
|
#ifdef HAVE_SYS_TYPES_H
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
@ -110,7 +130,10 @@ int main(void)
|
|||||||
#endif
|
#endif
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
return (int)sizeof(bool *);
|
if(sizeof(bool *))
|
||||||
|
return 0;
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -123,20 +146,18 @@ int main(void) { return 0; }
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_FILE_OFFSET_BITS
|
#ifdef HAVE_FILE_OFFSET_BITS
|
||||||
|
#undef _FILE_OFFSET_BITS
|
||||||
|
#define _FILE_OFFSET_BITS 64
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
/* Check that off_t can represent 2**63 - 1 correctly.
|
/* Check that off_t can represent 2**63 - 1 correctly.
|
||||||
We cannot simply define LARGE_OFF_T to be 9223372036854775807,
|
We cannot simply define LARGE_OFF_T to be 9223372036854775807,
|
||||||
since some C++ compilers masquerading as C compilers
|
since some C++ compilers masquerading as C compilers
|
||||||
incorrectly reject 9223372036854775807. */
|
incorrectly reject 9223372036854775807. */
|
||||||
#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
||||||
static int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 &&
|
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
||||||
LARGE_OFF_T % 2147483647 == 1)
|
&& LARGE_OFF_T % 2147483647 == 1)
|
||||||
? 1 : -1];
|
? 1 : -1];
|
||||||
int main(void)
|
int main(void) { return 0; }
|
||||||
{
|
|
||||||
(void)off_t_is_large;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_IOCTLSOCKET
|
#ifdef HAVE_IOCTLSOCKET
|
||||||
@ -146,9 +167,9 @@ int main(void)
|
|||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
/* ioctlsocket source code */
|
/* ioctlsocket source code */
|
||||||
int socket = -1;
|
int socket;
|
||||||
unsigned long flags = ioctlsocket(socket, FIONBIO, &flags);
|
unsigned long flags = ioctlsocket(socket, FIONBIO, &flags);
|
||||||
(void)flags;
|
;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -161,6 +182,7 @@ int main(void)
|
|||||||
/* IoctlSocket source code */
|
/* IoctlSocket source code */
|
||||||
if(0 != IoctlSocket(0, 0, 0))
|
if(0 != IoctlSocket(0, 0, 0))
|
||||||
return 1;
|
return 1;
|
||||||
|
;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -176,7 +198,7 @@ int main(void)
|
|||||||
long flags = 0;
|
long flags = 0;
|
||||||
if(0 != IoctlSocket(0, FIONBIO, &flags))
|
if(0 != IoctlSocket(0, FIONBIO, &flags))
|
||||||
return 1;
|
return 1;
|
||||||
(void)flags;
|
;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -190,7 +212,7 @@ int main(void)
|
|||||||
unsigned long flags = 0;
|
unsigned long flags = 0;
|
||||||
if(0 != ioctlsocket(0, FIONBIO, &flags))
|
if(0 != ioctlsocket(0, FIONBIO, &flags))
|
||||||
return 1;
|
return 1;
|
||||||
(void)flags;
|
;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -217,7 +239,7 @@ int main(void)
|
|||||||
int flags = 0;
|
int flags = 0;
|
||||||
if(0 != ioctl(0, FIONBIO, &flags))
|
if(0 != ioctl(0, FIONBIO, &flags))
|
||||||
return 1;
|
return 1;
|
||||||
(void)flags;
|
;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -245,7 +267,7 @@ int main(void)
|
|||||||
struct ifreq ifr;
|
struct ifreq ifr;
|
||||||
if(0 != ioctl(0, SIOCGIFADDR, &ifr))
|
if(0 != ioctl(0, SIOCGIFADDR, &ifr))
|
||||||
return 1;
|
return 1;
|
||||||
(void)ifr;
|
;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -264,6 +286,7 @@ int main(void)
|
|||||||
{
|
{
|
||||||
if(0 != setsockopt(0, SOL_SOCKET, SO_NONBLOCK, 0, 0))
|
if(0 != setsockopt(0, SOL_SOCKET, SO_NONBLOCK, 0, 0))
|
||||||
return 1;
|
return 1;
|
||||||
|
;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -272,7 +295,7 @@ int main(void)
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
static void check(char c) { (void)c; }
|
void check(char c) {}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
@ -288,7 +311,7 @@ int main(void)
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
/* Float, because a pointer cannot be implicitly cast to float */
|
/* Float, because a pointer cannot be implicitly cast to float */
|
||||||
static void check(float f) { (void)f; }
|
void check(float f) {}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
@ -312,7 +335,7 @@ int main(void)
|
|||||||
#include <sys/xattr.h> /* header from libc, not from libattr */
|
#include <sys/xattr.h> /* header from libc, not from libattr */
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
fsetxattr(0, "", 0, 0, 0);
|
fsetxattr(0, 0, 0, 0, 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -321,9 +344,8 @@ int main(void)
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
struct timespec ts;
|
struct timespec ts = {0, 0};
|
||||||
(void)clock_gettime(CLOCK_MONOTONIC, &ts);
|
clock_gettime(CLOCK_MONOTONIC, &ts);
|
||||||
(void)ts;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -51,7 +51,6 @@ if(CURL_USE_PKGCONFIG AND
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(BROTLI_FOUND AND BROTLIDEC_FOUND)
|
if(BROTLI_FOUND AND BROTLIDEC_FOUND)
|
||||||
set(Brotli_FOUND TRUE)
|
|
||||||
list(APPEND BROTLIDEC_LIBRARIES ${BROTLI_LIBRARIES}) # order is significant: brotlidec then brotlicommon
|
list(APPEND BROTLIDEC_LIBRARIES ${BROTLI_LIBRARIES}) # order is significant: brotlidec then brotlicommon
|
||||||
list(REVERSE BROTLIDEC_LIBRARIES)
|
list(REVERSE BROTLIDEC_LIBRARIES)
|
||||||
list(REMOVE_DUPLICATES BROTLIDEC_LIBRARIES)
|
list(REMOVE_DUPLICATES BROTLIDEC_LIBRARIES)
|
||||||
|
|||||||
@ -48,7 +48,6 @@ if(CURL_USE_PKGCONFIG AND
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CARES_FOUND)
|
if(CARES_FOUND)
|
||||||
set(Cares_FOUND TRUE)
|
|
||||||
string(REPLACE ";" " " CARES_CFLAGS "${CARES_CFLAGS}")
|
string(REPLACE ";" " " CARES_CFLAGS "${CARES_CFLAGS}")
|
||||||
message(STATUS "Found Cares (via pkg-config): ${CARES_INCLUDE_DIRS} (found version \"${CARES_VERSION}\")")
|
message(STATUS "Found Cares (via pkg-config): ${CARES_INCLUDE_DIRS} (found version \"${CARES_VERSION}\")")
|
||||||
else()
|
else()
|
||||||
|
|||||||
@ -48,7 +48,6 @@ if(CURL_USE_PKGCONFIG AND
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(LIBGSASL_FOUND)
|
if(LIBGSASL_FOUND)
|
||||||
set(Libgsasl_FOUND TRUE)
|
|
||||||
string(REPLACE ";" " " LIBGSASL_CFLAGS "${LIBGSASL_CFLAGS}")
|
string(REPLACE ";" " " LIBGSASL_CFLAGS "${LIBGSASL_CFLAGS}")
|
||||||
message(STATUS "Found Libgsasl (via pkg-config): ${LIBGSASL_INCLUDE_DIRS} (found version \"${LIBGSASL_VERSION}\")")
|
message(STATUS "Found Libgsasl (via pkg-config): ${LIBGSASL_INCLUDE_DIRS} (found version \"${LIBGSASL_VERSION}\")")
|
||||||
else()
|
else()
|
||||||
|
|||||||
@ -48,7 +48,6 @@ if(CURL_USE_PKGCONFIG AND
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(LIBIDN2_FOUND)
|
if(LIBIDN2_FOUND)
|
||||||
set(Libidn2_FOUND TRUE)
|
|
||||||
string(REPLACE ";" " " LIBIDN2_CFLAGS "${LIBIDN2_CFLAGS}")
|
string(REPLACE ";" " " LIBIDN2_CFLAGS "${LIBIDN2_CFLAGS}")
|
||||||
message(STATUS "Found Libidn2 (via pkg-config): ${LIBIDN2_INCLUDE_DIRS} (found version \"${LIBIDN2_VERSION}\")")
|
message(STATUS "Found Libidn2 (via pkg-config): ${LIBIDN2_INCLUDE_DIRS} (found version \"${LIBIDN2_VERSION}\")")
|
||||||
else()
|
else()
|
||||||
|
|||||||
@ -48,7 +48,6 @@ if(CURL_USE_PKGCONFIG AND
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(LIBPSL_FOUND AND LIBPSL_INCLUDE_DIRS)
|
if(LIBPSL_FOUND AND LIBPSL_INCLUDE_DIRS)
|
||||||
set(Libpsl_FOUND TRUE)
|
|
||||||
string(REPLACE ";" " " LIBPSL_CFLAGS "${LIBPSL_CFLAGS}")
|
string(REPLACE ";" " " LIBPSL_CFLAGS "${LIBPSL_CFLAGS}")
|
||||||
message(STATUS "Found Libpsl (via pkg-config): ${LIBPSL_INCLUDE_DIRS} (found version \"${LIBPSL_VERSION}\")")
|
message(STATUS "Found Libpsl (via pkg-config): ${LIBPSL_INCLUDE_DIRS} (found version \"${LIBPSL_VERSION}\")")
|
||||||
else()
|
else()
|
||||||
|
|||||||
@ -48,7 +48,6 @@ if(CURL_USE_PKGCONFIG AND
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(LIBRTMP_FOUND AND LIBRTMP_INCLUDE_DIRS)
|
if(LIBRTMP_FOUND AND LIBRTMP_INCLUDE_DIRS)
|
||||||
set(Librtmp_FOUND TRUE)
|
|
||||||
string(REPLACE ";" " " LIBRTMP_CFLAGS "${LIBRTMP_CFLAGS}")
|
string(REPLACE ";" " " LIBRTMP_CFLAGS "${LIBRTMP_CFLAGS}")
|
||||||
message(STATUS "Found Librtmp (via pkg-config): ${LIBRTMP_INCLUDE_DIRS} (found version \"${LIBRTMP_VERSION}\")")
|
message(STATUS "Found Librtmp (via pkg-config): ${LIBRTMP_INCLUDE_DIRS} (found version \"${LIBRTMP_VERSION}\")")
|
||||||
else()
|
else()
|
||||||
|
|||||||
@ -48,7 +48,6 @@ if(CURL_USE_PKGCONFIG AND
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(LIBSSH_FOUND)
|
if(LIBSSH_FOUND)
|
||||||
set(Libssh_FOUND TRUE)
|
|
||||||
string(REPLACE ";" " " LIBSSH_CFLAGS "${LIBSSH_CFLAGS}")
|
string(REPLACE ";" " " LIBSSH_CFLAGS "${LIBSSH_CFLAGS}")
|
||||||
message(STATUS "Found Libssh (via pkg-config): ${LIBSSH_INCLUDE_DIRS} (found version \"${LIBSSH_VERSION}\")")
|
message(STATUS "Found Libssh (via pkg-config): ${LIBSSH_INCLUDE_DIRS} (found version \"${LIBSSH_VERSION}\")")
|
||||||
else()
|
else()
|
||||||
|
|||||||
@ -48,7 +48,6 @@ if(CURL_USE_PKGCONFIG AND
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(LIBSSH2_FOUND AND LIBSSH2_INCLUDE_DIRS)
|
if(LIBSSH2_FOUND AND LIBSSH2_INCLUDE_DIRS)
|
||||||
set(Libssh2_FOUND TRUE)
|
|
||||||
string(REPLACE ";" " " LIBSSH2_CFLAGS "${LIBSSH2_CFLAGS}")
|
string(REPLACE ";" " " LIBSSH2_CFLAGS "${LIBSSH2_CFLAGS}")
|
||||||
message(STATUS "Found Libssh2 (via pkg-config): ${LIBSSH2_INCLUDE_DIRS} (found version \"${LIBSSH2_VERSION}\")")
|
message(STATUS "Found Libssh2 (via pkg-config): ${LIBSSH2_INCLUDE_DIRS} (found version \"${LIBSSH2_VERSION}\")")
|
||||||
else()
|
else()
|
||||||
|
|||||||
@ -48,7 +48,6 @@ if(CURL_USE_PKGCONFIG AND
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(LIBUV_FOUND)
|
if(LIBUV_FOUND)
|
||||||
set(Libuv_FOUND TRUE)
|
|
||||||
string(REPLACE ";" " " LIBUV_CFLAGS "${LIBUV_CFLAGS}")
|
string(REPLACE ";" " " LIBUV_CFLAGS "${LIBUV_CFLAGS}")
|
||||||
message(STATUS "Found Libuv (via pkg-config): ${LIBUV_INCLUDE_DIRS} (found version \"${LIBUV_VERSION}\")")
|
message(STATUS "Found Libuv (via pkg-config): ${LIBUV_INCLUDE_DIRS} (found version \"${LIBUV_VERSION}\")")
|
||||||
else()
|
else()
|
||||||
|
|||||||
@ -60,7 +60,6 @@ if(CURL_USE_PKGCONFIG AND
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(MBEDTLS_FOUND AND MBEDX509_FOUND AND MBEDCRYPTO_FOUND)
|
if(MBEDTLS_FOUND AND MBEDX509_FOUND AND MBEDCRYPTO_FOUND)
|
||||||
set(MbedTLS_FOUND TRUE)
|
|
||||||
list(APPEND MBEDTLS_LIBRARIES ${MBEDX509_LIBRARIES} ${MBEDCRYPTO_LIBRARIES})
|
list(APPEND MBEDTLS_LIBRARIES ${MBEDX509_LIBRARIES} ${MBEDCRYPTO_LIBRARIES})
|
||||||
list(REVERSE MBEDTLS_LIBRARIES)
|
list(REVERSE MBEDTLS_LIBRARIES)
|
||||||
list(REMOVE_DUPLICATES MBEDTLS_LIBRARIES)
|
list(REMOVE_DUPLICATES MBEDTLS_LIBRARIES)
|
||||||
|
|||||||
@ -48,7 +48,6 @@ if(CURL_USE_PKGCONFIG AND
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NETTLE_FOUND)
|
if(NETTLE_FOUND)
|
||||||
set(Nettle_FOUND TRUE)
|
|
||||||
string(REPLACE ";" " " NETTLE_CFLAGS "${NETTLE_CFLAGS}")
|
string(REPLACE ";" " " NETTLE_CFLAGS "${NETTLE_CFLAGS}")
|
||||||
message(STATUS "Found Nettle (via pkg-config): ${NETTLE_INCLUDE_DIRS} (found version \"${NETTLE_VERSION}\")")
|
message(STATUS "Found Nettle (via pkg-config): ${NETTLE_INCLUDE_DIRS} (found version \"${NETTLE_VERSION}\")")
|
||||||
else()
|
else()
|
||||||
|
|||||||
@ -48,7 +48,6 @@ if(CURL_USE_PKGCONFIG AND
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(QUICHE_FOUND)
|
if(QUICHE_FOUND)
|
||||||
set(Quiche_FOUND TRUE)
|
|
||||||
string(REPLACE ";" " " QUICHE_CFLAGS "${QUICHE_CFLAGS}")
|
string(REPLACE ";" " " QUICHE_CFLAGS "${QUICHE_CFLAGS}")
|
||||||
message(STATUS "Found Quiche (via pkg-config): ${QUICHE_INCLUDE_DIRS} (found version \"${QUICHE_VERSION}\")")
|
message(STATUS "Found Quiche (via pkg-config): ${QUICHE_INCLUDE_DIRS} (found version \"${QUICHE_VERSION}\")")
|
||||||
else()
|
else()
|
||||||
|
|||||||
@ -48,7 +48,6 @@ if(CURL_USE_PKGCONFIG AND
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(RUSTLS_FOUND)
|
if(RUSTLS_FOUND)
|
||||||
set(Rustls_FOUND TRUE)
|
|
||||||
string(REPLACE ";" " " RUSTLS_CFLAGS "${RUSTLS_CFLAGS}")
|
string(REPLACE ";" " " RUSTLS_CFLAGS "${RUSTLS_CFLAGS}")
|
||||||
message(STATUS "Found Rustls (via pkg-config): ${RUSTLS_INCLUDE_DIRS} (found version \"${RUSTLS_VERSION}\")")
|
message(STATUS "Found Rustls (via pkg-config): ${RUSTLS_INCLUDE_DIRS} (found version \"${RUSTLS_VERSION}\")")
|
||||||
else()
|
else()
|
||||||
|
|||||||
@ -57,7 +57,6 @@ if(CURL_USE_PKGCONFIG AND
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WOLFSSL_FOUND)
|
if(WOLFSSL_FOUND)
|
||||||
set(WolfSSL_FOUND TRUE)
|
|
||||||
string(REPLACE ";" " " WOLFSSL_CFLAGS "${WOLFSSL_CFLAGS}")
|
string(REPLACE ";" " " WOLFSSL_CFLAGS "${WOLFSSL_CFLAGS}")
|
||||||
message(STATUS "Found WolfSSL (via pkg-config): ${WOLFSSL_INCLUDE_DIRS} (found version \"${WOLFSSL_VERSION}\")")
|
message(STATUS "Found WolfSSL (via pkg-config): ${WOLFSSL_INCLUDE_DIRS} (found version \"${WOLFSSL_VERSION}\")")
|
||||||
else()
|
else()
|
||||||
|
|||||||
@ -57,7 +57,6 @@ if(CURL_USE_PKGCONFIG AND
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(ZSTD_FOUND)
|
if(ZSTD_FOUND)
|
||||||
set(Zstd_FOUND TRUE)
|
|
||||||
string(REPLACE ";" " " ZSTD_CFLAGS "${ZSTD_CFLAGS}")
|
string(REPLACE ";" " " ZSTD_CFLAGS "${ZSTD_CFLAGS}")
|
||||||
message(STATUS "Found Zstd (via pkg-config): ${ZSTD_INCLUDE_DIRS} (found version \"${ZSTD_VERSION}\")")
|
message(STATUS "Found Zstd (via pkg-config): ${ZSTD_INCLUDE_DIRS} (found version \"${ZSTD_VERSION}\")")
|
||||||
else()
|
else()
|
||||||
|
|||||||
@ -34,14 +34,11 @@ macro(check_include_file_concat_curl _file _variable)
|
|||||||
endif()
|
endif()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
set(CURL_TEST_DEFINES "") # Initialize global variable
|
|
||||||
|
|
||||||
# For other curl specific tests, use this macro.
|
# For other curl specific tests, use this macro.
|
||||||
# Return result in variable: CURL_TEST_OUTPUT
|
# Return result in variable: CURL_TEST_OUTPUT
|
||||||
macro(curl_internal_test _curl_test)
|
macro(curl_internal_test _curl_test)
|
||||||
if(NOT DEFINED "${_curl_test}")
|
if(NOT DEFINED "${_curl_test}")
|
||||||
string(REPLACE ";" " " _cmake_required_definitions "${CMAKE_REQUIRED_DEFINITIONS}")
|
string(REPLACE ";" " " _cmake_required_definitions "${CMAKE_REQUIRED_DEFINITIONS}")
|
||||||
set(_curl_test_add_libraries "")
|
|
||||||
if(CMAKE_REQUIRED_LIBRARIES)
|
if(CMAKE_REQUIRED_LIBRARIES)
|
||||||
set(_curl_test_add_libraries
|
set(_curl_test_add_libraries
|
||||||
"-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
|
"-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
|
||||||
@ -87,10 +84,3 @@ macro(curl_required_libpaths _libpaths_arg)
|
|||||||
list(APPEND CMAKE_REQUIRED_LINK_DIRECTORIES "${_libpaths_arg}")
|
list(APPEND CMAKE_REQUIRED_LINK_DIRECTORIES "${_libpaths_arg}")
|
||||||
endif()
|
endif()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
# Pre-fill variables set by a check_type_size() call.
|
|
||||||
macro(curl_prefill_type_size _type _size)
|
|
||||||
set(HAVE_SIZEOF_${_type} TRUE)
|
|
||||||
set(SIZEOF_${_type} ${_size})
|
|
||||||
set(SIZEOF_${_type}_CODE "#define SIZEOF_${_type} ${_size}")
|
|
||||||
endmacro()
|
|
||||||
|
|||||||
@ -65,9 +65,6 @@ endif()
|
|||||||
set(_source_epilogue "#undef inline")
|
set(_source_epilogue "#undef inline")
|
||||||
curl_add_header_include(HAVE_SYS_TIME_H "sys/time.h")
|
curl_add_header_include(HAVE_SYS_TIME_H "sys/time.h")
|
||||||
check_c_source_compiles("${_source_epilogue}
|
check_c_source_compiles("${_source_epilogue}
|
||||||
#ifdef _MSC_VER
|
|
||||||
#include <winsock2.h>
|
|
||||||
#endif
|
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
@ -107,10 +104,11 @@ if(NOT DEFINED HAVE_GETADDRINFO_THREADSAFE)
|
|||||||
check_c_source_compiles("${_source_epilogue}
|
check_c_source_compiles("${_source_epilogue}
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
#ifndef h_errno
|
#ifdef h_errno
|
||||||
|
return 0;
|
||||||
|
#else
|
||||||
#error force compilation error
|
#error force compilation error
|
||||||
#endif
|
#endif
|
||||||
return 0;
|
|
||||||
}" HAVE_H_ERRNO)
|
}" HAVE_H_ERRNO)
|
||||||
|
|
||||||
if(NOT HAVE_H_ERRNO)
|
if(NOT HAVE_H_ERRNO)
|
||||||
@ -126,11 +124,12 @@ if(NOT DEFINED HAVE_GETADDRINFO_THREADSAFE)
|
|||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
#if defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200809L)
|
#if defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200809L)
|
||||||
|
return 0;
|
||||||
#elif defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 700)
|
#elif defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 700)
|
||||||
|
return 0;
|
||||||
#else
|
#else
|
||||||
#error force compilation error
|
#error force compilation error
|
||||||
#endif
|
#endif
|
||||||
return 0;
|
|
||||||
}" HAVE_H_ERRNO_SBS_ISSUE_7)
|
}" HAVE_H_ERRNO_SBS_ISSUE_7)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@ -44,15 +44,6 @@ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
|||||||
list(APPEND _picky "-Werror-implicit-function-declaration") # clang 1.0 gcc 2.95
|
list(APPEND _picky "-Werror-implicit-function-declaration") # clang 1.0 gcc 2.95
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(MSVC)
|
|
||||||
if(CMAKE_C_FLAGS MATCHES "[/-]W[0-4]")
|
|
||||||
string(REGEX REPLACE "[/-]W[0-4]" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
|
||||||
endif()
|
|
||||||
list(APPEND _picky "-W4")
|
|
||||||
elseif(BORLAND)
|
|
||||||
list(APPEND _picky "-w-") # Disable warnings on Borland to avoid changing 3rd party code.
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(PICKY_COMPILER)
|
if(PICKY_COMPILER)
|
||||||
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||||
|
|
||||||
@ -122,7 +113,6 @@ if(PICKY_COMPILER)
|
|||||||
-Wtype-limits # clang 2.7 gcc 4.3
|
-Wtype-limits # clang 2.7 gcc 4.3
|
||||||
-Wunreachable-code # clang 2.7 gcc 4.1
|
-Wunreachable-code # clang 2.7 gcc 4.1
|
||||||
# -Wunused-macros # clang 2.7 gcc 4.1 # Not practical
|
# -Wunused-macros # clang 2.7 gcc 4.1 # Not practical
|
||||||
# -Wno-error=unused-macros # clang 2.7 gcc 4.1
|
|
||||||
-Wunused-parameter # clang 2.7 gcc 4.1
|
-Wunused-parameter # clang 2.7 gcc 4.1
|
||||||
-Wvla # clang 2.8 gcc 4.3
|
-Wvla # clang 2.8 gcc 4.3
|
||||||
)
|
)
|
||||||
@ -182,20 +172,13 @@ if(PICKY_COMPILER)
|
|||||||
-Wold-style-declaration # gcc 4.3
|
-Wold-style-declaration # gcc 4.3
|
||||||
-Wpragmas # clang 3.5 gcc 4.1 appleclang 6.0
|
-Wpragmas # clang 3.5 gcc 4.1 appleclang 6.0
|
||||||
-Wstrict-aliasing=3 # gcc 4.0
|
-Wstrict-aliasing=3 # gcc 4.0
|
||||||
-ftree-vrp # gcc 4.3 (required for -Warray-bounds, included in -Wall)
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.5)
|
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.5 AND MINGW)
|
||||||
list(APPEND _picky_enable
|
|
||||||
-Wjump-misses-init # gcc 4.5
|
|
||||||
)
|
|
||||||
|
|
||||||
if(MINGW)
|
|
||||||
list(APPEND _picky_enable
|
list(APPEND _picky_enable
|
||||||
-Wno-pedantic-ms-format # gcc 4.5 (MinGW-only)
|
-Wno-pedantic-ms-format # gcc 4.5 (MinGW-only)
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
|
||||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.8)
|
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.8)
|
||||||
list(APPEND _picky_enable
|
list(APPEND _picky_enable
|
||||||
-Wdouble-promotion # clang 3.6 gcc 4.6 appleclang 6.3
|
-Wdouble-promotion # clang 3.6 gcc 4.6 appleclang 6.3
|
||||||
@ -205,7 +188,7 @@ if(PICKY_COMPILER)
|
|||||||
endif()
|
endif()
|
||||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 5.0)
|
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 5.0)
|
||||||
list(APPEND _picky_enable
|
list(APPEND _picky_enable
|
||||||
-Warray-bounds=2 # clang 3.0 gcc 5.0 (clang default: -Warray-bounds)
|
-Warray-bounds=2 -ftree-vrp # clang 3.0 gcc 5.0 (clang default: -Warray-bounds)
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 6.0)
|
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 6.0)
|
||||||
@ -269,9 +252,6 @@ if(PICKY_COMPILER)
|
|||||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.3 AND CMAKE_C_COMPILER_VERSION VERSION_LESS 4.8)
|
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.3 AND CMAKE_C_COMPILER_VERSION VERSION_LESS 4.8)
|
||||||
list(APPEND _picky "-Wno-type-limits") # Avoid false positives
|
list(APPEND _picky "-Wno-type-limits") # Avoid false positives
|
||||||
endif()
|
endif()
|
||||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 5.1 AND CMAKE_C_COMPILER_VERSION VERSION_LESS 5.5)
|
|
||||||
list(APPEND _picky "-Wno-conversion") # Avoid false positives
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
@ -294,6 +274,6 @@ endif()
|
|||||||
|
|
||||||
if(_picky)
|
if(_picky)
|
||||||
string(REPLACE ";" " " _picky "${_picky}")
|
string(REPLACE ";" " " _picky "${_picky}")
|
||||||
string(APPEND CMAKE_C_FLAGS " ${_picky}")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_picky}")
|
||||||
message(STATUS "Picky compiler options: ${_picky}")
|
message(STATUS "Picky compiler options: ${_picky}")
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@ -47,7 +47,7 @@ function(curl_dumpvars)
|
|||||||
if(_var_advanced)
|
if(_var_advanced)
|
||||||
set(_var_advanced " [adv]")
|
set(_var_advanced " [adv]")
|
||||||
endif()
|
endif()
|
||||||
message("${_var}${_var_type}${_var_advanced} = '${${_var}}'")
|
message("${_var}${_var_type}${_var_advanced} = ${${_var}}")
|
||||||
endforeach()
|
endforeach()
|
||||||
message("::endgroup::")
|
message("::endgroup::")
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|||||||
@ -1,311 +0,0 @@
|
|||||||
#***************************************************************************
|
|
||||||
# _ _ ____ _
|
|
||||||
# Project ___| | | | _ \| |
|
|
||||||
# / __| | | | |_) | |
|
|
||||||
# | (__| |_| | _ <| |___
|
|
||||||
# \___|\___/|_| \_\_____|
|
|
||||||
#
|
|
||||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
|
||||||
#
|
|
||||||
# This software is licensed as described in the file COPYING, which
|
|
||||||
# you should have received as part of this distribution. The terms
|
|
||||||
# are also available at https://curl.se/docs/copyright.html.
|
|
||||||
#
|
|
||||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
|
||||||
# copies of the Software, and permit persons to whom the Software is
|
|
||||||
# furnished to do so, under the terms of the COPYING file.
|
|
||||||
#
|
|
||||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
|
||||||
# KIND, either express or implied.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: curl
|
|
||||||
#
|
|
||||||
###########################################################################
|
|
||||||
# Based on CI runs for Cygwin/MSYS2, Linux, macOS, FreeBSD, NetBSD, OpenBSD
|
|
||||||
if(NOT UNIX)
|
|
||||||
message(FATAL_ERROR "This file should be included on Unix platforms only")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(HAVE_ALARM 1)
|
|
||||||
if(ANDROID)
|
|
||||||
set(HAVE_ARC4RANDOM 1)
|
|
||||||
else()
|
|
||||||
set(HAVE_ARC4RANDOM 0)
|
|
||||||
endif()
|
|
||||||
set(HAVE_ARPA_INET_H 1)
|
|
||||||
set(HAVE_ATOMIC 1)
|
|
||||||
set(HAVE_BASENAME 1)
|
|
||||||
set(HAVE_BOOL_T 1)
|
|
||||||
if(NOT APPLE)
|
|
||||||
set(HAVE_CLOCK_GETTIME_MONOTONIC 1)
|
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
||||||
set(HAVE_CLOCK_GETTIME_MONOTONIC_RAW 1)
|
|
||||||
else()
|
|
||||||
set(HAVE_CLOCK_GETTIME_MONOTONIC_RAW 0)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
set(HAVE_CLOSESOCKET 0)
|
|
||||||
set(HAVE_DECL_FSEEKO 1)
|
|
||||||
set(HAVE_DIRENT_H 1)
|
|
||||||
if(APPLE OR
|
|
||||||
CYGWIN OR
|
|
||||||
CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
|
|
||||||
set(HAVE_EVENTFD 0)
|
|
||||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR
|
|
||||||
CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR
|
|
||||||
CMAKE_SYSTEM_NAME STREQUAL "NetBSD")
|
|
||||||
set(HAVE_EVENTFD 1)
|
|
||||||
endif()
|
|
||||||
set(HAVE_FCNTL 1)
|
|
||||||
set(HAVE_FCNTL_H 1)
|
|
||||||
set(HAVE_FCNTL_O_NONBLOCK 1)
|
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "iOS")
|
|
||||||
set(HAVE_FILE_OFFSET_BITS 0)
|
|
||||||
else()
|
|
||||||
set(HAVE_FILE_OFFSET_BITS 1)
|
|
||||||
endif()
|
|
||||||
set(HAVE_FNMATCH 1)
|
|
||||||
set(HAVE_FREEADDRINFO 1)
|
|
||||||
set(HAVE_FSEEKO 1)
|
|
||||||
if(APPLE)
|
|
||||||
set(HAVE_FSETXATTR 1)
|
|
||||||
set(HAVE_FSETXATTR_5 0)
|
|
||||||
set(HAVE_FSETXATTR_6 1)
|
|
||||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR
|
|
||||||
CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
|
|
||||||
set(HAVE_FSETXATTR 0)
|
|
||||||
set(HAVE_FSETXATTR_5 0)
|
|
||||||
set(HAVE_FSETXATTR_6 0)
|
|
||||||
elseif(CYGWIN OR
|
|
||||||
CMAKE_SYSTEM_NAME STREQUAL "Linux" OR
|
|
||||||
CMAKE_SYSTEM_NAME STREQUAL "NetBSD")
|
|
||||||
set(HAVE_FSETXATTR 1)
|
|
||||||
set(HAVE_FSETXATTR_5 1)
|
|
||||||
set(HAVE_FSETXATTR_6 0)
|
|
||||||
endif()
|
|
||||||
set(HAVE_FTRUNCATE 1)
|
|
||||||
set(HAVE_GETADDRINFO 1)
|
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
|
|
||||||
set(HAVE_GETADDRINFO_THREADSAFE 0)
|
|
||||||
elseif(CYGWIN OR
|
|
||||||
CMAKE_SYSTEM_NAME STREQUAL "Linux" OR
|
|
||||||
CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR
|
|
||||||
CMAKE_SYSTEM_NAME STREQUAL "NetBSD")
|
|
||||||
set(HAVE_GETADDRINFO_THREADSAFE 1)
|
|
||||||
endif()
|
|
||||||
set(HAVE_GETEUID 1)
|
|
||||||
if(APPLE OR
|
|
||||||
CYGWIN OR
|
|
||||||
CMAKE_SYSTEM_NAME STREQUAL "NetBSD" OR
|
|
||||||
CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
|
|
||||||
set(HAVE_GETHOSTBYNAME_R 0)
|
|
||||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR
|
|
||||||
CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
|
|
||||||
set(HAVE_GETHOSTBYNAME_R 1)
|
|
||||||
endif()
|
|
||||||
set(HAVE_GETHOSTBYNAME_R_3 0)
|
|
||||||
set(HAVE_GETHOSTBYNAME_R_3_REENTRANT 0)
|
|
||||||
set(HAVE_GETHOSTBYNAME_R_5 0)
|
|
||||||
set(HAVE_GETHOSTBYNAME_R_5_REENTRANT 0)
|
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
||||||
set(HAVE_GETHOSTBYNAME_R_6 1)
|
|
||||||
set(HAVE_GETHOSTBYNAME_R_6_REENTRANT 1)
|
|
||||||
else()
|
|
||||||
set(HAVE_GETHOSTBYNAME_R_6 0)
|
|
||||||
set(HAVE_GETHOSTBYNAME_R_6_REENTRANT 0)
|
|
||||||
endif()
|
|
||||||
set(HAVE_GETHOSTNAME 1)
|
|
||||||
if(NOT ANDROID OR ANDROID_PLATFORM_LEVEL GREATER_EQUAL 24)
|
|
||||||
set(HAVE_GETIFADDRS 1)
|
|
||||||
else()
|
|
||||||
set(HAVE_GETIFADDRS 0)
|
|
||||||
endif()
|
|
||||||
if(APPLE OR
|
|
||||||
CYGWIN OR
|
|
||||||
CMAKE_SYSTEM_NAME STREQUAL "Linux" OR
|
|
||||||
CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR
|
|
||||||
CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
|
|
||||||
set(HAVE_GETPASS_R 0)
|
|
||||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "NetBSD")
|
|
||||||
set(HAVE_GETPASS_R 1)
|
|
||||||
endif()
|
|
||||||
set(HAVE_GETPEERNAME 1)
|
|
||||||
set(HAVE_GETPPID 1)
|
|
||||||
set(HAVE_GETPWUID 1)
|
|
||||||
set(HAVE_GETPWUID_R 1)
|
|
||||||
set(HAVE_GETRLIMIT 1)
|
|
||||||
set(HAVE_GETSOCKNAME 1)
|
|
||||||
set(HAVE_GETTIMEOFDAY 1)
|
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
||||||
set(HAVE_GLIBC_STRERROR_R 1)
|
|
||||||
else()
|
|
||||||
set(HAVE_GLIBC_STRERROR_R 0)
|
|
||||||
endif()
|
|
||||||
set(HAVE_GMTIME_R 1)
|
|
||||||
set(HAVE_IFADDRS_H 1)
|
|
||||||
set(HAVE_IF_NAMETOINDEX 1)
|
|
||||||
set(HAVE_INET_NTOP 1)
|
|
||||||
set(HAVE_INET_PTON 1)
|
|
||||||
set(HAVE_IOCTLSOCKET 0)
|
|
||||||
set(HAVE_IOCTLSOCKET_CAMEL 0)
|
|
||||||
set(HAVE_IOCTLSOCKET_CAMEL_FIONBIO 0)
|
|
||||||
set(HAVE_IOCTLSOCKET_FIONBIO 0)
|
|
||||||
set(HAVE_IOCTL_FIONBIO 1)
|
|
||||||
set(HAVE_IOCTL_SIOCGIFADDR 1)
|
|
||||||
if(CYGWIN)
|
|
||||||
set(HAVE_IO_H 1)
|
|
||||||
else()
|
|
||||||
set(HAVE_IO_H 0)
|
|
||||||
endif()
|
|
||||||
set(HAVE_LIBGEN_H 1)
|
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
||||||
set(HAVE_LINUX_TCP_H 1)
|
|
||||||
else()
|
|
||||||
set(HAVE_LINUX_TCP_H 0)
|
|
||||||
endif()
|
|
||||||
set(HAVE_LOCALE_H 1)
|
|
||||||
set(HAVE_LONGLONG 1)
|
|
||||||
if(APPLE)
|
|
||||||
set(HAVE_MACH_ABSOLUTE_TIME 1)
|
|
||||||
endif()
|
|
||||||
if(APPLE OR
|
|
||||||
CYGWIN)
|
|
||||||
set(HAVE_MEMRCHR 0)
|
|
||||||
else()
|
|
||||||
set(HAVE_MEMRCHR 1)
|
|
||||||
endif()
|
|
||||||
set(HAVE_MSG_NOSIGNAL 1)
|
|
||||||
set(HAVE_NETDB_H 1)
|
|
||||||
if(ANDROID)
|
|
||||||
set(HAVE_NETINET_IN6_H 1)
|
|
||||||
else()
|
|
||||||
set(HAVE_NETINET_IN6_H 0)
|
|
||||||
endif()
|
|
||||||
set(HAVE_NETINET_IN_H 1)
|
|
||||||
set(HAVE_NETINET_TCP_H 1)
|
|
||||||
set(HAVE_NETINET_UDP_H 1)
|
|
||||||
set(HAVE_NET_IF_H 1)
|
|
||||||
set(HAVE_OPENDIR 1)
|
|
||||||
set(HAVE_PIPE 1)
|
|
||||||
set(HAVE_POLL 1)
|
|
||||||
set(HAVE_POLL_H 1)
|
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
||||||
set(HAVE_POSIX_STRERROR_R 0)
|
|
||||||
else()
|
|
||||||
set(HAVE_POSIX_STRERROR_R 1)
|
|
||||||
endif()
|
|
||||||
set(HAVE_PWD_H 1)
|
|
||||||
set(HAVE_REALPATH 1)
|
|
||||||
set(HAVE_RECV 1)
|
|
||||||
set(HAVE_SA_FAMILY_T 1)
|
|
||||||
set(HAVE_SCHED_YIELD 1)
|
|
||||||
set(HAVE_SELECT 1)
|
|
||||||
set(HAVE_SEND 1)
|
|
||||||
if(APPLE OR
|
|
||||||
CYGWIN)
|
|
||||||
set(HAVE_SENDMMSG 0)
|
|
||||||
else()
|
|
||||||
set(HAVE_SENDMMSG 1)
|
|
||||||
endif()
|
|
||||||
set(HAVE_SENDMSG 1)
|
|
||||||
set(HAVE_SETLOCALE 1)
|
|
||||||
if(CYGWIN OR
|
|
||||||
CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
||||||
set(HAVE_SETMODE 0)
|
|
||||||
else()
|
|
||||||
set(HAVE_SETMODE 1)
|
|
||||||
endif()
|
|
||||||
set(HAVE_SETRLIMIT 1)
|
|
||||||
set(HAVE_SETSOCKOPT_SO_NONBLOCK 0)
|
|
||||||
set(HAVE_SIGACTION 1)
|
|
||||||
set(HAVE_SIGINTERRUPT 1)
|
|
||||||
set(HAVE_SIGNAL 1)
|
|
||||||
set(HAVE_SIGSETJMP 1)
|
|
||||||
set(HAVE_SNPRINTF 1)
|
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "iOS")
|
|
||||||
set(HAVE_SOCKADDR_IN6_SIN6_ADDR 0)
|
|
||||||
else()
|
|
||||||
set(HAVE_SOCKADDR_IN6_SIN6_ADDR 1)
|
|
||||||
endif()
|
|
||||||
set(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1)
|
|
||||||
set(HAVE_SOCKET 1)
|
|
||||||
set(HAVE_SOCKETPAIR 1)
|
|
||||||
set(HAVE_STDATOMIC_H 1)
|
|
||||||
set(HAVE_STDBOOL_H 1)
|
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "iOS")
|
|
||||||
set(HAVE_STDDEF_H 0)
|
|
||||||
set(HAVE_STDINT_H 0)
|
|
||||||
else()
|
|
||||||
set(HAVE_STDDEF_H 1)
|
|
||||||
set(HAVE_STDINT_H 1)
|
|
||||||
endif()
|
|
||||||
set(HAVE_STRCASECMP 1)
|
|
||||||
set(HAVE_STRCMPI 0)
|
|
||||||
set(HAVE_STRDUP 1)
|
|
||||||
set(HAVE_STRERROR_R 1)
|
|
||||||
set(HAVE_STRICMP 0)
|
|
||||||
set(HAVE_STRINGS_H 1)
|
|
||||||
if(_CURL_OLD_LINUX)
|
|
||||||
set(HAVE_STROPTS_H 1)
|
|
||||||
else()
|
|
||||||
set(HAVE_STROPTS_H 0) # glibc 2.30 or newer. https://sourceware.org/legacy-ml/libc-alpha/2019-08/msg00029.html
|
|
||||||
endif()
|
|
||||||
set(HAVE_STRUCT_SOCKADDR_STORAGE 1)
|
|
||||||
set(HAVE_STRUCT_TIMEVAL 1)
|
|
||||||
if(ANDROID OR CMAKE_SYSTEM_NAME STREQUAL "iOS")
|
|
||||||
set(HAVE_SUSECONDS_T 1)
|
|
||||||
endif()
|
|
||||||
if(APPLE OR
|
|
||||||
CYGWIN OR
|
|
||||||
CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
|
|
||||||
set(HAVE_SYS_EVENTFD_H 0)
|
|
||||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR
|
|
||||||
CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR
|
|
||||||
CMAKE_SYSTEM_NAME STREQUAL "NetBSD")
|
|
||||||
set(HAVE_SYS_EVENTFD_H 1)
|
|
||||||
endif()
|
|
||||||
if(CYGWIN OR
|
|
||||||
CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
||||||
set(HAVE_SYS_FILIO_H 0)
|
|
||||||
else()
|
|
||||||
set(HAVE_SYS_FILIO_H 1)
|
|
||||||
endif()
|
|
||||||
set(HAVE_SYS_IOCTL_H 1)
|
|
||||||
set(HAVE_SYS_PARAM_H 1)
|
|
||||||
set(HAVE_SYS_POLL_H 1)
|
|
||||||
set(HAVE_SYS_RESOURCE_H 1)
|
|
||||||
set(HAVE_SYS_SELECT_H 1)
|
|
||||||
set(HAVE_SYS_SOCKET_H 1)
|
|
||||||
if(CYGWIN OR
|
|
||||||
CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
||||||
set(HAVE_SYS_SOCKIO_H 0)
|
|
||||||
else()
|
|
||||||
set(HAVE_SYS_SOCKIO_H 1)
|
|
||||||
endif()
|
|
||||||
set(HAVE_SYS_STAT_H 1)
|
|
||||||
set(HAVE_SYS_TIME_H 1)
|
|
||||||
set(HAVE_SYS_TYPES_H 1)
|
|
||||||
set(HAVE_SYS_UN_H 1)
|
|
||||||
if(CYGWIN)
|
|
||||||
set(HAVE_SYS_UTIME_H 1)
|
|
||||||
else()
|
|
||||||
set(HAVE_SYS_UTIME_H 0)
|
|
||||||
endif()
|
|
||||||
set(HAVE_TERMIOS_H 1)
|
|
||||||
if(CYGWIN OR
|
|
||||||
CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
||||||
set(HAVE_TERMIO_H 1)
|
|
||||||
else()
|
|
||||||
set(HAVE_TERMIO_H 0)
|
|
||||||
endif()
|
|
||||||
set(HAVE_TIME_T_UNSIGNED 0)
|
|
||||||
set(HAVE_UNISTD_H 1)
|
|
||||||
set(HAVE_UTIME 1)
|
|
||||||
set(HAVE_UTIMES 1)
|
|
||||||
set(HAVE_UTIME_H 1)
|
|
||||||
set(HAVE_WRITABLE_ARGV 1)
|
|
||||||
if(CYGWIN)
|
|
||||||
set(HAVE__SETMODE 1)
|
|
||||||
endif()
|
|
||||||
set(STDC_HEADERS 1)
|
|
||||||
set(USE_UNIX_SOCKETS 1)
|
|
||||||
@ -35,6 +35,7 @@ if(MINGW)
|
|||||||
set(HAVE_STDINT_H 1) # detected by CMake internally in check_type_size()
|
set(HAVE_STDINT_H 1) # detected by CMake internally in check_type_size()
|
||||||
set(HAVE_STDBOOL_H 1)
|
set(HAVE_STDBOOL_H 1)
|
||||||
set(HAVE_BOOL_T "${HAVE_STDBOOL_H}")
|
set(HAVE_BOOL_T "${HAVE_STDBOOL_H}")
|
||||||
|
set(HAVE_STRTOLL 1)
|
||||||
set(HAVE_BASENAME 1)
|
set(HAVE_BASENAME 1)
|
||||||
set(HAVE_FTRUNCATE 1)
|
set(HAVE_FTRUNCATE 1)
|
||||||
set(HAVE_SYS_PARAM_H 1)
|
set(HAVE_SYS_PARAM_H 1)
|
||||||
@ -44,6 +45,21 @@ if(MINGW)
|
|||||||
set(HAVE_UTIME_H 1) # wrapper to sys/utime.h
|
set(HAVE_UTIME_H 1) # wrapper to sys/utime.h
|
||||||
set(HAVE_DIRENT_H 1)
|
set(HAVE_DIRENT_H 1)
|
||||||
set(HAVE_OPENDIR 1)
|
set(HAVE_OPENDIR 1)
|
||||||
|
if(MINGW64_VERSION)
|
||||||
|
if(NOT MINGW64_VERSION VERSION_LESS 4.0)
|
||||||
|
set(HAVE_STRTOK_R 1)
|
||||||
|
else()
|
||||||
|
set(HAVE_STRTOK_R 0)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
if((CMAKE_COMPILER_IS_GNUCC AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.9) OR
|
||||||
|
(CMAKE_C_COMPILER_ID STREQUAL "Clang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.6))
|
||||||
|
set(HAVE_STDATOMIC_H 1)
|
||||||
|
set(HAVE_ATOMIC 1)
|
||||||
|
else()
|
||||||
|
set(HAVE_STDATOMIC_H 0)
|
||||||
|
set(HAVE_ATOMIC 0)
|
||||||
|
endif()
|
||||||
else()
|
else()
|
||||||
set(HAVE_LIBGEN_H 0)
|
set(HAVE_LIBGEN_H 0)
|
||||||
set(HAVE_FTRUNCATE 0)
|
set(HAVE_FTRUNCATE 0)
|
||||||
@ -57,35 +73,31 @@ else()
|
|||||||
if(MSVC)
|
if(MSVC)
|
||||||
set(HAVE_UNISTD_H 0)
|
set(HAVE_UNISTD_H 0)
|
||||||
set(HAVE_STDDEF_H 1) # detected by CMake internally in check_type_size()
|
set(HAVE_STDDEF_H 1) # detected by CMake internally in check_type_size()
|
||||||
if(MSVC_VERSION GREATER_EQUAL 1600)
|
set(HAVE_STDATOMIC_H 0)
|
||||||
|
if(NOT MSVC_VERSION LESS 1600)
|
||||||
set(HAVE_STDINT_H 1) # detected by CMake internally in check_type_size()
|
set(HAVE_STDINT_H 1) # detected by CMake internally in check_type_size()
|
||||||
else()
|
else()
|
||||||
set(HAVE_STDINT_H 0) # detected by CMake internally in check_type_size()
|
set(HAVE_STDINT_H 0) # detected by CMake internally in check_type_size()
|
||||||
endif()
|
endif()
|
||||||
if(MSVC_VERSION GREATER_EQUAL 1800)
|
if(NOT MSVC_VERSION LESS 1800)
|
||||||
set(HAVE_STDBOOL_H 1)
|
set(HAVE_STDBOOL_H 1)
|
||||||
|
set(HAVE_STRTOLL 1)
|
||||||
else()
|
else()
|
||||||
set(HAVE_STDBOOL_H 0)
|
set(HAVE_STDBOOL_H 0)
|
||||||
|
set(HAVE_STRTOLL 0)
|
||||||
endif()
|
endif()
|
||||||
set(HAVE_BOOL_T "${HAVE_STDBOOL_H}")
|
set(HAVE_BOOL_T "${HAVE_STDBOOL_H}")
|
||||||
if(MSVC_VERSION GREATER_EQUAL 1900)
|
if(NOT MSVC_VERSION LESS 1900)
|
||||||
set(HAVE_SNPRINTF 1)
|
set(HAVE_SNPRINTF 1)
|
||||||
else()
|
else()
|
||||||
set(HAVE_SNPRINTF 0)
|
set(HAVE_SNPRINTF 0)
|
||||||
endif()
|
endif()
|
||||||
set(HAVE_BASENAME 0)
|
set(HAVE_BASENAME 0)
|
||||||
endif()
|
set(HAVE_STRTOK_R 0)
|
||||||
endif()
|
set(HAVE_FILE_OFFSET_BITS 0)
|
||||||
|
|
||||||
if((CMAKE_COMPILER_IS_GNUCC AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.9) OR
|
|
||||||
(CMAKE_C_COMPILER_ID STREQUAL "Clang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.6))
|
|
||||||
# MinGW or clang-cl
|
|
||||||
set(HAVE_STDATOMIC_H 1)
|
|
||||||
set(HAVE_ATOMIC 1)
|
|
||||||
else()
|
|
||||||
set(HAVE_STDATOMIC_H 0)
|
|
||||||
set(HAVE_ATOMIC 0)
|
set(HAVE_ATOMIC 0)
|
||||||
endif()
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
# Available in Windows XP and newer
|
# Available in Windows XP and newer
|
||||||
set(HAVE_GETADDRINFO 1)
|
set(HAVE_GETADDRINFO 1)
|
||||||
@ -186,59 +198,8 @@ set(HAVE_GETHOSTBYNAME_R_5_REENTRANT 0)
|
|||||||
set(HAVE_GETHOSTBYNAME_R_6 0)
|
set(HAVE_GETHOSTBYNAME_R_6 0)
|
||||||
set(HAVE_GETHOSTBYNAME_R_6_REENTRANT 0)
|
set(HAVE_GETHOSTBYNAME_R_6_REENTRANT 0)
|
||||||
|
|
||||||
|
set(HAVE_IN_ADDR_T 0)
|
||||||
set(STDC_HEADERS 1)
|
set(STDC_HEADERS 1)
|
||||||
|
|
||||||
set(HAVE_SIZEOF_SUSECONDS_T 0)
|
set(HAVE_SIZEOF_SUSECONDS_T 0)
|
||||||
set(HAVE_SIZEOF_SA_FAMILY_T 0)
|
set(HAVE_SIZEOF_SA_FAMILY_T 0)
|
||||||
|
|
||||||
if(MINGW OR MSVC)
|
|
||||||
curl_prefill_type_size("INT" 4)
|
|
||||||
curl_prefill_type_size("LONG" 4)
|
|
||||||
curl_prefill_type_size("LONG_LONG" 8)
|
|
||||||
curl_prefill_type_size("__INT64" 8)
|
|
||||||
curl_prefill_type_size("CURL_OFF_T" 8)
|
|
||||||
# CURL_SOCKET_T, SIZE_T: 8 for _WIN64, 4 otherwise
|
|
||||||
# TIME_T: 8 for _WIN64 or UCRT or MSVC and not Windows CE, 4 otherwise
|
|
||||||
# Also 4 for non-UCRT 32-bit when _USE_32BIT_TIME_T is set.
|
|
||||||
# mingw-w64 sets _USE_32BIT_TIME_T unless __MINGW_USE_VC2005_COMPAT is explicit defined.
|
|
||||||
if(MSVC)
|
|
||||||
set(HAVE_SIZEOF_SSIZE_T 0)
|
|
||||||
set(HAVE_FILE_OFFSET_BITS 0)
|
|
||||||
curl_prefill_type_size("OFF_T" 4)
|
|
||||||
curl_prefill_type_size("ADDRESS_FAMILY" 2)
|
|
||||||
else()
|
|
||||||
# SSIZE_T: 8 for _WIN64, 4 otherwise
|
|
||||||
if(MINGW64_VERSION)
|
|
||||||
if(NOT MINGW64_VERSION VERSION_LESS 3.0)
|
|
||||||
set(HAVE_FILE_OFFSET_BITS 1)
|
|
||||||
curl_prefill_type_size("OFF_T" 8)
|
|
||||||
endif()
|
|
||||||
if(NOT MINGW64_VERSION VERSION_LESS 2.0)
|
|
||||||
curl_prefill_type_size("ADDRESS_FAMILY" 2)
|
|
||||||
else()
|
|
||||||
set(HAVE_SIZEOF_ADDRESS_FAMILY 0)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WINCE) # Windows CE exceptions
|
|
||||||
set(HAVE_LOCALE_H 0)
|
|
||||||
set(HAVE_GETADDRINFO 0)
|
|
||||||
set(HAVE_FREEADDRINFO 0)
|
|
||||||
set(HAVE_SETLOCALE 0)
|
|
||||||
set(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 0)
|
|
||||||
set(HAVE_SIGNAL 0)
|
|
||||||
set(HAVE_SETMODE 0)
|
|
||||||
curl_prefill_type_size("CURL_SOCKET_T" 4)
|
|
||||||
curl_prefill_type_size("TIME_T" 4)
|
|
||||||
curl_prefill_type_size("SIZE_T" 4)
|
|
||||||
if(MINGW32CE)
|
|
||||||
set(HAVE_STRTOK_R 0)
|
|
||||||
set(HAVE__SETMODE 0)
|
|
||||||
set(HAVE_FILE_OFFSET_BITS 0)
|
|
||||||
set(HAVE_SIZEOF_ADDRESS_FAMILY 0)
|
|
||||||
curl_prefill_type_size("SSIZE_T" 4)
|
|
||||||
curl_prefill_type_size("OFF_T" 4)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|||||||
522
CMakeLists.txt
522
CMakeLists.txt
File diff suppressed because it is too large
Load Diff
@ -60,12 +60,8 @@ CMAKE_DIST = \
|
|||||||
CMake/OtherTests.cmake \
|
CMake/OtherTests.cmake \
|
||||||
CMake/PickyWarnings.cmake \
|
CMake/PickyWarnings.cmake \
|
||||||
CMake/Utilities.cmake \
|
CMake/Utilities.cmake \
|
||||||
CMake/unix-cache.cmake \
|
|
||||||
CMake/win32-cache.cmake \
|
CMake/win32-cache.cmake \
|
||||||
CMakeLists.txt \
|
CMakeLists.txt
|
||||||
tests/cmake/CMakeLists.txt \
|
|
||||||
tests/cmake/test.c \
|
|
||||||
tests/cmake/test.sh
|
|
||||||
|
|
||||||
VC_DIST = projects/README.md \
|
VC_DIST = projects/README.md \
|
||||||
projects/build-openssl.bat \
|
projects/build-openssl.bat \
|
||||||
|
|||||||
755
RELEASE-NOTES
755
RELEASE-NOTES
@ -1,136 +1,272 @@
|
|||||||
curl and libcurl 8.13.0
|
curl and libcurl 8.12.0
|
||||||
|
|
||||||
Public curl releases: 266
|
Public curl releases: 264
|
||||||
Command line options: 267
|
Command line options: 267
|
||||||
curl_easy_setopt() options: 306
|
curl_easy_setopt() options: 306
|
||||||
Public functions in libcurl: 96
|
Public functions in libcurl: 96
|
||||||
Contributors: 3354
|
Contributors: 3332
|
||||||
|
|
||||||
This release includes the following changes:
|
This release includes the following changes:
|
||||||
|
|
||||||
o curl: add write-out variable 'tls_earlydata' [79]
|
o curl: add byte range support to --variable reading from file [56]
|
||||||
o rustls: add support for CERTINFO [106]
|
o curl: make --etag-save acknowledge --create-dirs [31]
|
||||||
o tool_getparam: make --url support a file with URLs [104]
|
o getinfo: fix CURLINFO_QUEUE_TIME_T and add 'time_queue' var [55]
|
||||||
o var: add a '64dec' function that can base64 decode a string [78]
|
o getinfo: provide info which auth was used for HTTP and proxy [40]
|
||||||
o wolfssl: tls early data support [50]
|
o hyper: drop support [57]
|
||||||
|
o openssl: add support to use keys and certificates from PKCS#11 provider [77]
|
||||||
|
o QUIC: 0RTT for gnutls via CURLSSLOPT_EARLYDATA [61]
|
||||||
|
o vtls: feature ssls-export for SSL session im-/export [141]
|
||||||
|
|
||||||
This release includes the following bugfixes:
|
This release includes the following bugfixes:
|
||||||
|
|
||||||
o addrinfo: add curl macro to avoid redefining foreign symbols [29]
|
o altsvc: avoid integer overflow in expire calculation [16]
|
||||||
o asyn-thread: avoid the separate 'struct resdata' alloc [20]
|
o altsvc: return error on dot-only name [178]
|
||||||
o asyn-thread: avoid the separate curl_mutex_t alloc [6]
|
o android: add CI jobs, buildinfo, cmake docs, disable `CURL_USE_PKGCONFIG` by default [185]
|
||||||
o asyn-thread: do not allocate thread_data separately [21]
|
o asyn-ares: acknowledge CURLOPT_DNS_SERVERS set to NULL [190]
|
||||||
o asyn-thread: remove 'status' from struct Curl_async [36]
|
o asyn-ares: fix memory leak [233]
|
||||||
o build: add Windows CE / CeGCC support, with CI jobs [87]
|
o asyn-ares: initial HTTPS resolve support [166]
|
||||||
o build: drop unused `getpart` tool [107]
|
o asyn-thread: use c-ares to resolve HTTPS RR [205]
|
||||||
o build: enable -Wjump-misses-init for GCC 4.5+ [62]
|
o async-thread: avoid closing eventfd twice [9]
|
||||||
o build: fix compiler warnings in feature detections [39]
|
o autotools: add support for mingw UWP builds [192]
|
||||||
o build: set `HAVE_WRITABLE_ARGV` for Apple cross-builds [8]
|
o autotools: silence gcc warnings in libtool code [96]
|
||||||
o build: silence bogus `-Wconversion` warnings with gcc 5.1-5.4 [68]
|
o binmode: convert to macro and use it from tests [44]
|
||||||
o c-ares: error out for unsupported versions, drop unused macros [85]
|
o build: delete `-Wsign-conversion` related FIXMEs [137]
|
||||||
o ca-native.md: sync with CURLSSLOPT_NATIVE_CA [72]
|
o build: drop `-Winline` picky warning [53]
|
||||||
o cf-socket: deduplicate Windows Vista detection [11]
|
o build: drop `tool_hugehelp.c.cvs`, tidy up macros, drop `buildconf.bat` [200]
|
||||||
o client writer: handle pause before deocding [61]
|
o build: drop macro used to enable `-Wsign-conversion` warnings in CI [224]
|
||||||
o cmake: `SHARE_LIB_OBJECT=ON` requires CMake 3.12 or newer [46]
|
o build: drop unused feature macros, update exception list [51]
|
||||||
o cmake: add pre-fill for Unix, enable in GHA/macos, verify pre-fills [42]
|
o build: fix `-Wtrampolines` picky warning for gcc 4.x versions [156]
|
||||||
o cmake: allow empty `IMPORT_LIB_SUFFIX`, add suffix collision detection [41]
|
o build: fix compiling with GCC 4.x versions [214]
|
||||||
o cmake: avoid `-Wnonnull` warning in `HAVE_FSETXATTR_5` detection [81]
|
o build: fix the tidy targets for autotools [52]
|
||||||
o cmake: disable HTTPS-proxy as a feature if proxy is disabled [77]
|
o build: fix unsigned `time_t` detection for cmake, MS-DOS, AmigaOS [104]
|
||||||
o cmake: drop `CURL_DISABLE_TESTS` option [94]
|
o build: replace configure check with PP condition (Android <21) [97]
|
||||||
o cmake: drop `HAVE_IN_ADDR_T` from pre-fill too
|
o build: stop detecting `sched_yield()` on Windows [176]
|
||||||
o cmake: drop two stray TLS feature checks for wolfSSL [9]
|
o c-ares: fix/tidy-up macro initializations, avoid a deprecated function [209]
|
||||||
o cmake: fix `HAVE_ATOMIC`/`HAVE_STDATOMIC` pre-fill for clang-cl [28]
|
o cd2nroff: do not insist on quoted <> within backticks [222]
|
||||||
o cmake: fix ECH detection in custom-patched OpenSSL [32]
|
o cd2nroff: support "none" as a TLS backend [29]
|
||||||
o cmake: hide empty `MINGW64_VERSION` output for mingw32ce [114]
|
o cf-https-connect: look into httpsrr alpns when available [152]
|
||||||
o cmake: mention 'insecure' in the debug build warning [15]
|
o cf-socket: error if address can't be copied [72]
|
||||||
o cmake: misc tidy-ups [38]
|
o cfilters: kill connection filter events attach+detach [217]
|
||||||
o cmake: pre-fill known type sizes for Windows OSes [100]
|
o checksrc.bat: remove explicit SNPRINTF bypass [174]
|
||||||
o cmake: restrict static CRT builds to static curl exe, test in CI [113]
|
o checksrc: ban use of sscanf() [7]
|
||||||
o cmake: sync cutoff version with autotools for picky option `-ftree-vrp` [99]
|
o checksrc: check for return with parens around a value/name [130]
|
||||||
o cmake: sync OpenSSL(-fork) feature checks with `./configure` [49]
|
o checksrc: exclude generated bundle files to avoid race condition [235]
|
||||||
o CODE_STYLE: readability and banned functions [35]
|
o checksrc: fix the return() checker [35]
|
||||||
o configure: silence compiler warnings in feature checks, drop duplicates [86]
|
o checksrc: introduce 'banfunc' to ban specific functions [117]
|
||||||
o configure: use `curl_cv_apple` variable [40]
|
o cmake/Find: add `iphlpapi` for c-ares, omit syslibs if dep not found [203]
|
||||||
o conn: fix connection reuse when SSL is optional [54]
|
o cmake/FindLDAP: avoid empty 'Requires' item when omitting `pkg-config` module [90]
|
||||||
o contributors.sh: lowercase 'github' for consistency [52]
|
o cmake/FindLDAP: avoid framework locations for libs too (Apple) [122]
|
||||||
o contrithanks.sh: update docs/THANKS in place [119]
|
o cmake/FindLibpsl: protect against `pkg-config` "half-detection" [89]
|
||||||
o cookie: do prefix matching case-sensitively [82]
|
o cmake/FindLibssh: sync header comment with other modules
|
||||||
o cookie: minor parser simplification [58]
|
o cmake/FindMbedTLS: drop lib duplicates early [17]
|
||||||
o cookie: simplify invalid_octets() [24]
|
o cmake: add `librtmp` Find module [86]
|
||||||
o curl.h: change some enums to defines with L suffix [84]
|
o cmake: add LDAP Find module [46]
|
||||||
o curl_msh3: remove verify bypass from DEBUGBUILDs [43]
|
o cmake: add native `pkg-config` detection for remaining Find modules [37]
|
||||||
o curl_trc: fix build with CURL_DISABLE_VERBOSE_STRINGS [109]
|
o cmake: allow `CURL_LTO` regardless of `CURL_BUILD_TYPE`, enable in CI [88]
|
||||||
o CURLMOPT_SOCKETFUNCTION.md: add advice for socket callback invocation[69]
|
o cmake: clang-cl improvements [42]
|
||||||
o CURLOPT_HTTPHEADER.md: add comments to the example [90]
|
o cmake: delete accidental debug message
|
||||||
o CURLOPT_HTTPHEADER.md: rephrases [108]
|
o cmake: deprecate winbuild, add migration guide from legacy build methods [157]
|
||||||
o docs: add FD_ZERO to curl_multi_fdset example [19]
|
o cmake: detect mingw-w64 version, pre-fill `HAVE_STRTOK_R` [179]
|
||||||
o docs: bump `rustls` to 0.14.1 [111]
|
o cmake: do not store `MINGW64_VERSION` in cache [175]
|
||||||
o docs: correct argument names & URL redirection [4]
|
o cmake: drop `CURL_USE_PKGCONFIG` from `curl-config.cmake.in` [208]
|
||||||
o eventfd: allow use on all CPUs [93]
|
o cmake: drop `fseeko()` pre-fill and check for Windows [201]
|
||||||
o gnutls: fix connection state check on handshake [80]
|
o cmake: drop duplicate Windows cache value [81]
|
||||||
o hash: use single linked list for entries [57]
|
o cmake: drop redundant FOUND checks (libgsasl, libssh, libuv) [49]
|
||||||
o hostip: make CURLOPT_RESOLVE support replacing IPv6 addresses [47]
|
o cmake: drop redundant opening/closing `.*` from `MATCH` expressions [64]
|
||||||
o HTTP3.md: only speak about minimal versions [18]
|
o cmake: drop unused `HAVE_SYS_XATTR_H` detection [79]
|
||||||
o http: convert parsers to strparse [48]
|
o cmake: drop VS2010 "Dialog Hell" workaround added in 2013 [136]
|
||||||
o http: fix NTLM info message typo [22]
|
o cmake: extend zlib's `AUTO` option to brotli, zstd and enable if found [36]
|
||||||
o http: fix the auth check [88]
|
o cmake: fix `net/in.h` detection for MS-DOS [103]
|
||||||
o http: make the RTSP version check stricter [73]
|
o cmake: improve `curl_dumpvars()` and move to `Utilities.cmake` [50]
|
||||||
o http: negotiation and room for alt-svc/https rr to navigate [64]
|
o cmake: make libpsl required by default [45]
|
||||||
o http: version negotiation [45]
|
o cmake: make system libraries `dl`, `m`, `pthread` customizable [123]
|
||||||
o http_aws_sigv4: use strparse more for parsing [55]
|
o cmake: move `pkg-config` names to Find modules [87]
|
||||||
o https-rr: implementation improvements [44]
|
o cmake: move GSS init before feature detections [93]
|
||||||
o httpsrr: fix port detection [51]
|
o cmake: move mingw UWP workaround from GHA to `CMakeLists.txt` [194]
|
||||||
o httpsrr: fix the HTTPS-RR threaded-resolver build combo [67]
|
o cmake: namespace functions and macros [41]
|
||||||
o INSTALL-CMAKE.md: CMake usage updates [101]
|
o cmake: optimize out 4 picky warning option detections with gcc [78]
|
||||||
o INSTALL-CMAKE.md: mention `ZLIB_USE_STATIC_LIBS` [112]
|
o cmake: pick a better IPv6 feature flag when assembling the feature list [132]
|
||||||
o lib: better optimized casecompare() and ncasecompare() [3]
|
o cmake: pre-fill `HAVE_STDATOMIC_H`, `HAVE_ATOMIC` for mingw-w64 [180]
|
||||||
o lib: simplify more white space loops [60]
|
o cmake: pre-fill `HAVE_STDINT_H` on Windows [149]
|
||||||
o lib: strtoofft.h header cleanup [17]
|
o cmake: prefer dash-style MSVC options [216]
|
||||||
o lib: use Curl_str_* instead of strtok_r() [59]
|
o cmake: publish/check supported protocols/features via `CURLConfig.cmake` [100]
|
||||||
o lib: use Curl_str_number() for parsing decimal numbers [13]
|
o cmake: replace `unset(VAR)` with `set(VAR "")` for init [43]
|
||||||
o libtest/libprereq.c: set CURLOPT_FOLLOWLOCATION with a long [89]
|
o cmake: sync OpenSSL QUIC fork detection with autotools [102]
|
||||||
o managen: correct the warning for un-escaped '<' and '>' [1]
|
o cmake: use `CMAKE_REQUIRED_LINK_DIRECTORIES` [48]
|
||||||
o msvc: drop support for VS2005 and older [96]
|
o cmake: use `STREQUAL` to detect Linux [68]
|
||||||
o multi: event based rework [74]
|
o cmake: warn for OpenSSL versions missing TLS 1.3 support [221]
|
||||||
o openssl: check return value of X509_get0_pubkey [105]
|
o cmdline-opts/version.md: describe multissl, mention SSLS-EXPORT [170]
|
||||||
o openssl: drop support for old OpenSSL/LibreSSL versions [95]
|
o completion.pl: add completion for paths after @ for fish [82]
|
||||||
o openssl: remove bad `goto`s into other scope [63]
|
o config-mac: drop `MACOS_SSL_SUPPORT` macro [63]
|
||||||
o runtests: drop recognizing 'winssl' as Schannel [102]
|
o config: drop unused code and variables [135]
|
||||||
o runtests: drop ref to unused external function
|
o configure: do not inline 'dnl' comments
|
||||||
o runtests: recognize AWS-LC as OpenSSL [103]
|
o configure: drop unused detections and macros [105]
|
||||||
o runtests: support multi-target cmake, drop workarounds from CI [116]
|
o configure: streamline Windows large file feature check [138]
|
||||||
o schannel: deduplicate Windows Vista detection [98]
|
o configure: UWP and Android follow-up fixes [184]
|
||||||
o schannel: enable ALPN support under WINE 6.0+ [92]
|
o conncache: count shutdowns against host and max limits [154]
|
||||||
o schannel: enable ALPN with MinGW, fix ALPN for UWP builds [71]
|
o conncache: result_cb comment removed from function docs [1]
|
||||||
o schannel: guard ALPN init code to ALPN builds [91]
|
o content_encoding: drop support for zlib before 1.2.0.4 [211]
|
||||||
o scripts/managen: fix option 'single' [31]
|
o content_encoding: namespace GZIP flag constants [147]
|
||||||
o scripts/managen: fix parsing of markdown code sections [30]
|
o content_encoding: put the decomp buffers into the writer structs [210]
|
||||||
o setopt: remove unnecesary void pointer typecasts [76]
|
o content_encoding: support use of custom libzstd memory functions [186]
|
||||||
o ssh: consider sftp quote commands case sensitive [33]
|
o cookie: cap expire times to 400 days [111]
|
||||||
o ssl session cache: add exportable flag [56]
|
o cookie: fix crash in netscape cookie parsing [84]
|
||||||
o strparse: make Curl_str_number() return error for no digits [14]
|
o cookie: parse only the exact expire date [3]
|
||||||
o strparse: switch the API to work on 'const char *' [2]
|
o curl-functions.m4: fix indentation in `CURL_SIZEOF()` [131]
|
||||||
o strparse: switch to curl_off_t as base data type [7]
|
o curl: return error if etag options are used with multiple URLs [5]
|
||||||
o tests: fix enum/int confusion, fix autotools `CFLAGS` for `servers` [27]
|
o curl_multi_fdset: include the shutdown connections in the set [168]
|
||||||
o tidy-up: align MSYS2/Cygwin codepaths, follow Cygwin `MAX_PID` bump [97]
|
o curl_multi_waitfds.md: tidy up the example [162]
|
||||||
o tidy-up: delete, comment or scope C macros reported unused [16]
|
o curl_multibyte: support Windows paths longer than MAX_PATH [76]
|
||||||
o tidy-up: drop unused `CURL_INADDR_NONE` macro and `in_addr_t` type [26]
|
o curl_setup: fix missing `ADDRESS_FAMILY` type in rare build cases [144]
|
||||||
o tidy-up: use `CURL_ARRAYSIZE()` [37]
|
o curl_sha512_256: rename symbols to the curl namespace [124]
|
||||||
o timediff: fix comment for curlx_mstotv() [25]
|
o curl_url_set.md: adjust the added-in to 7.62.0 [94]
|
||||||
o timediff: remove unnecessary double typecast [53]
|
o curl_ws_recv.md: fix typo
|
||||||
o tool_getparam: clear sensitive arguments better [66]
|
o CURLOPT_CONNECT_ONLY.md: an easy handle with this option set cannot be reused [164]
|
||||||
o tool_operate: fail SSH transfers without server auth [70]
|
o CURLOPT_PROXY.md: clarify the crendential support in proxy URLs [66]
|
||||||
o urlapi: simplify junkscan [23]
|
o CURLOPT_RESOLVE.md: fix wording [30]
|
||||||
o variable.md: clarify 'trim' example [12]
|
o CURLOPT_SEEKFUNCTION.md: used for FTP, HTTP and SFTP (only) [109]
|
||||||
o windows: drop code and curl manifest targeting W2K and older [115]
|
o docs/BUGS.md: remove leading space from a link
|
||||||
o wolfssh: retrieve the error using wolfSSH_get_error [5]
|
o docs/cmdline-opts/_ENVIRONMENT.md: minor language fix [119]
|
||||||
o wolfssl: fix CA certificate multiple location import [34]
|
o docs/cmdline-opts/location.md: fix typos for location flag [226]
|
||||||
o wolfssl: warn if CA native import option is ignored [65]
|
o docs/HTTP-COOKIES.md: link to more information [125]
|
||||||
o wolfssl: when using PQ KEM, use ML-KEM, not Kyber [10]
|
o docs/HTTPSRR.md: initial HTTPS RR documentation [204]
|
||||||
|
o docs/libcurl/opts: clarify the return values [114]
|
||||||
|
o docs/libcurl: return value overhall [120]
|
||||||
|
o docs/TLS-SESSIONS: fix typo, the->they [189]
|
||||||
|
o docs: document the behavior of -- in the curl command line [198]
|
||||||
|
o docs: use lowercase curl and libcurl [113]
|
||||||
|
o doh: cleanups and extended HTTPS RR code [161]
|
||||||
|
o doh: send HTTPS RR requests for all HTTP(S) transfers [160]
|
||||||
|
o easy: allow connect-only handle reuse with easy_perform [232]
|
||||||
|
o easy: make curl_easy_perform() return error if connection still there [163]
|
||||||
|
o easy_lock: use Sleep(1) for thread yield on old Windows [191]
|
||||||
|
o ECH: update APIs to those agreed with OpenSSL maintainers [101]
|
||||||
|
o examples/block-ip: drop redundant `memory.h` include
|
||||||
|
o examples/block-ip: show how to block IP addresses [74]
|
||||||
|
o examples/complicated: fix warnings, bump deprecated callback, tidy up [59]
|
||||||
|
o examples/synctime.c: remove references to dead URLs and functionality [62]
|
||||||
|
o examples: make them compile with compatibility functions disabled (Windows) [58]
|
||||||
|
o examples: use return according to code style
|
||||||
|
o file: drop `OPEN_NEEDS_ARG3` option [91]
|
||||||
|
o file: fix Android compiler warning [85]
|
||||||
|
o gitignore: add generated unity sources for lib and src
|
||||||
|
o GnuTLS: fix 'time_appconnect' for early data [127]
|
||||||
|
o hash: add asserts in hash_element_dtor() [126]
|
||||||
|
o HTTP/2: strip TE request header [140]
|
||||||
|
o http2: fix data_pending check [241]
|
||||||
|
o http2: fix value stored to 'result' is never read [71]
|
||||||
|
o http: fix build with `CURL_DISABLE_COOKIES` [95]
|
||||||
|
o http: ignore invalid Retry-After times [107]
|
||||||
|
o http_aws_sigv4: Fix invalid compare function handling zero-length pairs [24]
|
||||||
|
o https-connect: start next immediately on failure [223]
|
||||||
|
o INFRASTRUCTURE.md: project infra [99]
|
||||||
|
o INSTALL-CMAKE.md: fix punctuation
|
||||||
|
o INSTALL.md: add CMake examples for macOS and iOS [242]
|
||||||
|
o INSTALL.md: document VS2008 and mingw-w64 [165]
|
||||||
|
o INTERNALS.md: sync wolfSSL version requirement with source code
|
||||||
|
o lib517: extend the getdate test with quotes and leading "junk" [4]
|
||||||
|
o lib: clarify 'conn->httpversion' [213]
|
||||||
|
o lib: redirect handling by protocol handler [212]
|
||||||
|
o lib: remove `__EMX__` guards [83]
|
||||||
|
o lib: replace `inline` redefine with `CURL_INLINE` macro [47]
|
||||||
|
o lib: supress deprecation warnings in apple builds [32]
|
||||||
|
o lib: TLS session ticket caching reworked [60]
|
||||||
|
o libcurl/opts: do not save files in dirs where attackers have access [199]
|
||||||
|
o Makefile.dist: delete [237]
|
||||||
|
o Makefile.mk: drop in favour of autotools and cmake (MS-DOS, AmigaOS3) [38]
|
||||||
|
o mbedtls: fix handling of blocked sends [116]
|
||||||
|
o mbedtls: PSA can be used independently of TLS 1.3 (avoid runtime errors) [219]
|
||||||
|
o mime: explicitly rewind subparts at attachment time. [80]
|
||||||
|
o mprintf: fix integer handling in float precision [173]
|
||||||
|
o mprintf: terminate snprintf output on windows [172]
|
||||||
|
o msvc: add missing push/pop for warning pragmas [236]
|
||||||
|
o msvc: assume `_INTEGRAL_MAX_BITS >= 64` [158]
|
||||||
|
o msvc: drop checks for ancient versions [133]
|
||||||
|
o msvc: fix building with `HAVE_INET_NTOP` and MSVC <=1900 [151]
|
||||||
|
o msvc: require VS2005 for large file support [143]
|
||||||
|
o msvc: tidy up `_CRT_*_NO_DEPRECATE` definitions [148]
|
||||||
|
o multi: fix curl_multi_waitfds reporting of fd_count [73]
|
||||||
|
o multi: fix return code for an already-removed easy handle [106]
|
||||||
|
o multihandle: add an ssl_scache here [129]
|
||||||
|
o multissl: auto-enable `OPENSSL_COEXIST` for wolfSSL + OpenSSL [92]
|
||||||
|
o multissl: make openssl + wolfssl builds work [34]
|
||||||
|
o netrc: 'default' with no credentials is not a match [108]
|
||||||
|
o netrc: fix password-only entries [28]
|
||||||
|
o netrc: restore _netrc fallback logic [6]
|
||||||
|
o ngtcp2: fix memory leak on connect failure [225]
|
||||||
|
o ngtcp2: fix two cases of value stored never read [65]
|
||||||
|
o openssl: define `HAVE_KEYLOG_CALLBACK` before use [227]
|
||||||
|
o openssl: drop unused `HAVE_SSL_GET_SHUTDOWN` macro [228]
|
||||||
|
o openssl: fix ECH logic [67]
|
||||||
|
o osslq: use SSL_poll to determine writeability of QUIC streams [139]
|
||||||
|
o projects/Windows: remove wolfSSL from legacy projects [75]
|
||||||
|
o projects: fix `INSTALL-CMAKE.md` references
|
||||||
|
o pytest: remove 'repeat' parameter [182]
|
||||||
|
o pytest: use httpd/apache2 directly, no apachectl [169]
|
||||||
|
o RELEASE-PROCEDURE.md: mention how to publish security advisories [2]
|
||||||
|
o runtests.pl: fix precedence issue [207]
|
||||||
|
o scripts/mdlinkcheck: markdown link checker [19]
|
||||||
|
o sectransp: free certificate on error [12]
|
||||||
|
o select: avoid a NULL deref in cwfds_add_sock [128]
|
||||||
|
o smb: fix compiler warning [112]
|
||||||
|
o src: add `CURL_STRICMP()` macro, use `_stricmp()` on Windows [54]
|
||||||
|
o src: drop support for `CURL_TESTDIR` debug env [121]
|
||||||
|
o src: omit hugehelp and ca-embed from libcurltool [215]
|
||||||
|
o ssl session cache: change cache dimensions [159]
|
||||||
|
o strparse: string parsing helper functions [8]
|
||||||
|
o symbols-in-versions: update version for LIBCURL_VERSION and LIBCURL_VERSION_NUM [193]
|
||||||
|
o system.h: add 64-bit curl_off_t definitions for NonStop [11]
|
||||||
|
o system.h: drop compilers lacking 64-bit integer type (Windows/MS-DOS) [155]
|
||||||
|
o system.h: drop duplicate and no-op code [153]
|
||||||
|
o system.h: fix indentation [142]
|
||||||
|
o telnet: handle single-byte input option [177]
|
||||||
|
o test1960: don't close the socket too early [220]
|
||||||
|
o test483: require cookie support [98]
|
||||||
|
o tests/http/clients: use proper sleep() call on NonStop [10]
|
||||||
|
o tests: change the behavior of swsbounce [202]
|
||||||
|
o tests: stop promoting perl warnings to fatal errors
|
||||||
|
o TheArtOfHttpScripting.md: rewrite double 'that' [115]
|
||||||
|
o tidy-up: `curl_setup.h`, `curl_setup_once.h`, `config-win32ce.h` [146]
|
||||||
|
o tidy-up: drop parenthesis around `return` expression [167]
|
||||||
|
o tidy-up: drop parenthesis around `return` values [134]
|
||||||
|
o tidy-up: extend `CURL_O_BINARY` to lib and tests [195]
|
||||||
|
o TLS: check connection for SSL use, not handler [181]
|
||||||
|
o tool_formparse.c: make curlx_uztoso a static in here [39]
|
||||||
|
o tool_formparse: accept digits in --form type= strings [33]
|
||||||
|
o tool_getparam: ECH param parsing refix [150]
|
||||||
|
o tool_getparam: fail --hostpubsha256 if libssh2 is not used [229]
|
||||||
|
o tool_getparam: fix "Ignored Return Value" [21]
|
||||||
|
o tool_getparam: fix memory leak on error in parse_ech [14]
|
||||||
|
o tool_getparam: fix the ECH parser [20]
|
||||||
|
o tool_operate: make --etag-compare always accept a non-existing file [22]
|
||||||
|
o transfer: fix CURLOPT_CURLU override logic [171]
|
||||||
|
o urlapi: fix redirect to a new fragment or query (only) [118]
|
||||||
|
o urldata: tweak the UserDefined struct [240]
|
||||||
|
o variable.md: mention --expand-variable for variables to variables [13]
|
||||||
|
o variable.md: show function use with examples [18]
|
||||||
|
o version: fix the IDN feature for winidn and appleidn [187]
|
||||||
|
o vquic: fix 4th function call argument is an uninitialized value [70]
|
||||||
|
o vquic: make vquic_send_packets not return without setting psent [69]
|
||||||
|
o vtls: fix default SSL backend as a fallback [231]
|
||||||
|
o vtls: only remember the expiry timestamp in session cache [110]
|
||||||
|
o vtls: remove 'detach/attach' functions from TLS handler struct [25]
|
||||||
|
o vtls: remove unusued 'check_cxn' from TLS handler struct [26]
|
||||||
|
o vtls: replace "none"-functions with NULL pointers [27]
|
||||||
|
o VULN-DISCLOSURE-POLICY.md: mention the not setting CVSS [23]
|
||||||
|
o VULN-DISCLOSURE-POLICY: on legacy dependencies [239]
|
||||||
|
o websocket: fix message send corruption [188]
|
||||||
|
o windows: drop dupe macros, detect `CURL_OS` for WinCE ARM, indentation [183]
|
||||||
|
o windows: drop redundant `USE_WIN32_SMALL_FILES` macro [145]
|
||||||
|
o windows: drop two missed `buildconf.bat` references
|
||||||
|
o windows: merge `config-win32ce.h` into `config-win32.h` [196]
|
||||||
|
o ws-docs: extend WebSocket documentation [206]
|
||||||
|
o ws-docs: remove the outdated texts saying ws support is experimental [15]
|
||||||
|
o ws: reject frames with unknown reserved bits set [230]
|
||||||
|
o x509asn1: add parse recursion limit [197]
|
||||||
|
|
||||||
This release includes the following known bugs:
|
This release includes the following known bugs:
|
||||||
|
|
||||||
See https://curl.se/docs/knownbugs.html
|
See docs/KNOWN_BUGS (https://curl.se/docs/knownbugs.html)
|
||||||
|
|
||||||
For all changes ever done in curl:
|
For all changes ever done in curl:
|
||||||
|
|
||||||
@ -139,135 +275,268 @@ For all changes ever done in curl:
|
|||||||
Planned upcoming removals include:
|
Planned upcoming removals include:
|
||||||
|
|
||||||
o Support for the msh3 HTTP/3 backend
|
o Support for the msh3 HTTP/3 backend
|
||||||
o The winbuild build system
|
|
||||||
o TLS libraries not supporting TLS 1.3
|
o TLS libraries not supporting TLS 1.3
|
||||||
|
|
||||||
See https://curl.se/dev/deprecate.html
|
See https://curl.se/dev/deprecate.html for details
|
||||||
|
|
||||||
This release would not have looked like this without help, code, reports and
|
This release would not have looked like this without help, code, reports and
|
||||||
advice from friends like these:
|
advice from friends like these:
|
||||||
|
|
||||||
Anthony Hu, Dan Fandrich, Daniel Stenberg, dependabot[bot], Derek Huang,
|
9cel, Aleksander Mazur, Andrew Kaster, Andy Pan, Asger Hautop Drewsen,
|
||||||
Dexter Gerig, Harry Sintonen, Jeremy Drake, John Bampton, Joseph Chen,
|
baranyaib90 on github, Ben Zanin, Brad House, Calvin Ruocco,
|
||||||
kayrus on github, kriztalz, Laurențiu Nicola, lf- on github, Marcel Raad,
|
Christian Heusel, Christian Schmitz, Christopher Dannemiller, Dan Fandrich,
|
||||||
Mark Phillips, qhill on github, Ray Satiro, renovate[bot], rmg-x on github,
|
Daniel Stenberg, Darren Banfi, Deniz Sökmen, dependabot[bot], Derek Huang,
|
||||||
RubisetCie on github, Sergey, Stefan Eissing, Tianyi Song, Timo Tijhof,
|
Dexter Gerig, Donguk Kim, dwickr, Edoardo Lolletti, Ganesh Viswanathan,
|
||||||
Viktor Szakats, Yedaya Katsman, Zenju on github
|
Harry Sintonen, Hermes Zhang, IcedCoffeee on github, Igor Todorovski,
|
||||||
(28 contributors)
|
Jakub Jelen, Jeroen Ooms, Jiri Stary, Kai Pastor, Kevin Sun, Kuan-Wei Chiu,
|
||||||
|
Leon Timmermans, MacKenzie, Manuel Einfalt, Marcel Raad, Martin Harrigan,
|
||||||
|
mauke, Michael Schuster, Milon Renatus, Mohammed Sadiq,
|
||||||
|
na-trium-144 on github, Neil Horman, Neil Johari, Nicolás San Martín,
|
||||||
|
Patrick Monnerat, prpr19xx on Github, Qriist on github, ralfjunker on github,
|
||||||
|
Ralph Sennhauser, Randall S. Becker, Ray Satiro, renovate[bot],
|
||||||
|
Rudi Heitbaum, Samuel Henrique, Stefan Eissing, Stephen Farrell, Tal Regev,
|
||||||
|
Tamás Bálint Misius, Tamir Duberstein, Viktor Szakats, Yedaya Katsman,
|
||||||
|
Yihang Zhou, z2_
|
||||||
|
(65 contributors)
|
||||||
|
|
||||||
References to bug reports and discussions on issues:
|
References to bug reports and discussions on issues:
|
||||||
|
|
||||||
[1] = https://curl.se/bug/?i=16315
|
[1] = https://curl.se/bug/?i=15720
|
||||||
[2] = https://curl.se/bug/?i=16316
|
[2] = https://curl.se/bug/?i=15714
|
||||||
[3] = https://curl.se/bug/?i=16311
|
[3] = https://curl.se/bug/?i=15709
|
||||||
[4] = https://curl.se/bug/?i=16334
|
[4] = https://curl.se/bug/?i=15708
|
||||||
[5] = https://curl.se/bug/?i=16335
|
[5] = https://curl.se/bug/?i=15729
|
||||||
[6] = https://curl.se/bug/?i=16323
|
[6] = https://curl.se/bug/?i=15734
|
||||||
[7] = https://curl.se/bug/?i=16336
|
[7] = https://curl.se/bug/?i=15687
|
||||||
[8] = https://curl.se/bug/?i=16338
|
[8] = https://curl.se/bug/?i=15692
|
||||||
[9] = https://curl.se/bug/?i=16339
|
[9] = https://curl.se/bug/?i=15725
|
||||||
[10] = https://curl.se/bug/?i=16337
|
[10] = https://curl.se/bug/?i=15711
|
||||||
[11] = https://curl.se/bug/?i=16400
|
[11] = https://curl.se/bug/?i=15723
|
||||||
[12] = https://curl.se/bug/?i=16346
|
[12] = https://curl.se/bug/?i=15721
|
||||||
[13] = https://curl.se/bug/?i=16319
|
[13] = https://curl.se/bug/?i=15752
|
||||||
[14] = https://curl.se/bug/?i=16319
|
[14] = https://curl.se/bug/?i=15753
|
||||||
[15] = https://curl.se/bug/?i=16327
|
[15] = https://curl.se/bug/?i=15749
|
||||||
[16] = https://curl.se/bug/?i=16279
|
[16] = https://issues.oss-fuzz.com/issues/383911309
|
||||||
[17] = https://curl.se/bug/?i=16331
|
[17] = https://curl.se/bug/?i=15495
|
||||||
[18] = https://curl.se/bug/?i=16320
|
[18] = https://curl.se/bug/?i=15743
|
||||||
[19] = https://curl.se/bug/?i=16325
|
[19] = https://curl.se/bug/?i=15742
|
||||||
[20] = https://curl.se/bug/?i=16321
|
[20] = https://curl.se/bug/?i=15741
|
||||||
[21] = https://curl.se/bug/?i=16241
|
[21] = https://curl.se/bug/?i=15740
|
||||||
[22] = https://curl.se/bug/?i=16305
|
[22] = https://curl.se/bug/?i=15737
|
||||||
[23] = https://curl.se/bug/?i=16307
|
[23] = https://curl.se/bug/?i=15779
|
||||||
[24] = https://curl.se/bug/?i=16306
|
[24] = https://curl.se/bug/?i=15778
|
||||||
[25] = https://curl.se/bug/?i=16310
|
[25] = https://curl.se/bug/?i=15776
|
||||||
[26] = https://curl.se/bug/?i=16318
|
[26] = https://curl.se/bug/?i=15775
|
||||||
[27] = https://curl.se/bug/?i=16314
|
[27] = https://curl.se/bug/?i=15772
|
||||||
[28] = https://curl.se/bug/?i=16313
|
[28] = https://curl.se/bug/?i=15767
|
||||||
[29] = https://curl.se/bug/?i=16274
|
[29] = https://curl.se/bug/?i=15769
|
||||||
[30] = https://curl.se/bug/?i=16345
|
[30] = https://curl.se/bug/?i=15770
|
||||||
[31] = https://curl.se/bug/?i=16344
|
[31] = https://curl.se/bug/?i=15730
|
||||||
[32] = https://curl.se/bug/?i=16354
|
[32] = https://curl.se/bug/?i=15763
|
||||||
[33] = https://curl.se/bug/?i=16382
|
[33] = https://curl.se/bug/?i=15761
|
||||||
[34] = https://curl.se/bug/?i=16391
|
[34] = https://curl.se/bug/?i=15596
|
||||||
[35] = https://curl.se/bug/?i=16349
|
[35] = https://curl.se/bug/?i=15764
|
||||||
[36] = https://curl.se/bug/?i=16347
|
[36] = https://curl.se/bug/?i=15431
|
||||||
[37] = https://curl.se/bug/?i=16381
|
[37] = https://curl.se/bug/?i=15408
|
||||||
[38] = https://curl.se/bug/?i=16238
|
[38] = https://curl.se/bug/?i=15543
|
||||||
[39] = https://curl.se/bug/?i=16287
|
[39] = https://curl.se/bug/?i=15796
|
||||||
[40] = https://curl.se/bug/?i=16340
|
[40] = https://curl.se/bug/?i=15450
|
||||||
[41] = https://curl.se/bug/?i=16324
|
[41] = https://curl.se/bug/?i=15498
|
||||||
[42] = https://curl.se/bug/?i=15841
|
[42] = https://curl.se/bug/?i=15478
|
||||||
[43] = https://curl.se/bug/?i=16342
|
[43] = https://curl.se/bug/?i=15255
|
||||||
[44] = https://curl.se/bug/?i=16132
|
[44] = https://curl.se/bug/?i=15787
|
||||||
[45] = https://curl.se/bug/?i=16100
|
[45] = https://curl.se/bug/?i=15464
|
||||||
[46] = https://curl.se/bug/?i=16375
|
[46] = https://curl.se/bug/?i=15273
|
||||||
[47] = https://curl.se/bug/?i=16357
|
[47] = https://curl.se/bug/?i=15523
|
||||||
[48] = https://curl.se/bug/?i=16436
|
[48] = https://curl.se/bug/?i=15280
|
||||||
[49] = https://curl.se/bug/?i=16352
|
[49] = https://curl.se/bug/?i=15465
|
||||||
[50] = https://curl.se/bug/?i=16167
|
[50] = https://curl.se/bug/?i=15562
|
||||||
[51] = https://curl.se/bug/?i=16409
|
[51] = https://curl.se/bug/?i=15577
|
||||||
[52] = https://curl.se/bug/?i=16443
|
[52] = https://curl.se/bug/?i=15813
|
||||||
[53] = https://curl.se/bug/?i=16367
|
[53] = https://curl.se/bug/?i=15815
|
||||||
[54] = https://curl.se/bug/?i=16384
|
[54] = https://curl.se/bug/?i=15788
|
||||||
[55] = https://curl.se/bug/?i=16366
|
[55] = https://curl.se/bug/?i=15512
|
||||||
[56] = https://curl.se/bug/?i=16322
|
[56] = https://curl.se/bug/?i=15739
|
||||||
[57] = https://curl.se/bug/?i=16351
|
[57] = https://curl.se/bug/?i=15120
|
||||||
[58] = https://curl.se/bug/?i=16362
|
[58] = https://curl.se/bug/?i=15789
|
||||||
[59] = https://curl.se/bug/?i=16360
|
[59] = https://curl.se/bug/?i=15785
|
||||||
[60] = https://curl.se/bug/?i=16363
|
[60] = https://curl.se/bug/?i=15774
|
||||||
[61] = https://curl.se/bug/?i=16280
|
[61] = https://curl.se/bug/?i=15667
|
||||||
[62] = https://curl.se/bug/?i=16252
|
[62] = https://curl.se/bug/?i=15786
|
||||||
[63] = https://curl.se/bug/?i=16356
|
[63] = https://curl.se/bug/?i=15777
|
||||||
[64] = https://curl.se/bug/?i=16117
|
[64] = https://curl.se/bug/?i=15773
|
||||||
[65] = https://curl.se/bug/?i=16417
|
[65] = https://curl.se/bug/?i=15812
|
||||||
[66] = https://curl.se/bug/?i=16396
|
[66] = https://curl.se/bug/?i=15805
|
||||||
[67] = https://curl.se/bug/?i=16399
|
[67] = https://curl.se/bug/?i=15814
|
||||||
[68] = https://curl.se/bug/?i=16398
|
[68] = https://curl.se/bug/?i=15855
|
||||||
[69] = https://curl.se/bug/?i=16441
|
[69] = https://curl.se/bug/?i=15807
|
||||||
[70] = https://curl.se/bug/?i=16205
|
[70] = https://curl.se/bug/?i=15808
|
||||||
[71] = https://curl.se/bug/?i=16385
|
[71] = https://curl.se/bug/?i=15806
|
||||||
[72] = https://curl.se/bug/?i=16373
|
[72] = https://curl.se/bug/?i=15784
|
||||||
[73] = https://curl.se/bug/?i=16435
|
[73] = https://curl.se/bug/?i=15146
|
||||||
[74] = https://curl.se/bug/?i=16308
|
[74] = https://curl.se/bug/?i=15748
|
||||||
[76] = https://curl.se/bug/?i=16426
|
[75] = https://curl.se/bug/?i=15468
|
||||||
[77] = https://curl.se/bug/?i=16434
|
[76] = https://curl.se/bug/?i=13522
|
||||||
[78] = https://curl.se/bug/?i=16330
|
[77] = https://curl.se/bug/?i=15587
|
||||||
[79] = https://curl.se/bug/?i=15956
|
[78] = https://curl.se/bug/?i=15850
|
||||||
[80] = https://curl.se/bug/?i=16423
|
[79] = https://curl.se/bug/?i=15845
|
||||||
[81] = https://curl.se/bug/?i=16427
|
[80] = https://curl.se/bug/?i=15842
|
||||||
[82] = https://curl.se/bug/?i=16494
|
[81] = https://curl.se/bug/?i=15840
|
||||||
[84] = https://curl.se/bug/?i=16482
|
[82] = https://curl.se/bug/?i=15928
|
||||||
[85] = https://curl.se/bug/?i=16407
|
[83] = https://curl.se/bug/?i=15884
|
||||||
[86] = https://curl.se/bug/?i=16377
|
[84] = https://curl.se/bug/?i=15826
|
||||||
[87] = https://curl.se/bug/?i=15975
|
[85] = https://curl.se/bug/?i=15883
|
||||||
[88] = https://curl.se/bug/?i=16419
|
[86] = https://curl.se/bug/?i=15832
|
||||||
[89] = https://curl.se/bug/?i=16487
|
[87] = https://curl.se/bug/?i=15800
|
||||||
[90] = https://curl.se/bug/?i=16488
|
[88] = https://curl.se/bug/?i=15829
|
||||||
[91] = https://curl.se/bug/?i=16420
|
[89] = https://curl.se/bug/?i=15827
|
||||||
[92] = https://curl.se/bug/?i=16393
|
[90] = https://curl.se/bug/?i=15828
|
||||||
[93] = https://curl.se/bug/?i=16277
|
[91] = https://curl.se/bug/?i=15882
|
||||||
[94] = https://curl.se/bug/?i=16134
|
[92] = https://curl.se/bug/?i=15765
|
||||||
[95] = https://curl.se/bug/?i=16104
|
[93] = https://curl.se/bug/?i=15809
|
||||||
[96] = https://curl.se/bug/?i=16004
|
[94] = https://curl.se/bug/?i=15822
|
||||||
[97] = https://curl.se/bug/?i=16217
|
[95] = https://curl.se/bug/?i=15820
|
||||||
[98] = https://curl.se/bug/?i=16408
|
[96] = https://curl.se/bug/?i=15915
|
||||||
[99] = https://curl.se/bug/?i=16478
|
[97] = https://curl.se/bug/?i=15871
|
||||||
[100] = https://curl.se/bug/?i=16464
|
[98] = https://curl.se/bug/?i=15876
|
||||||
[101] = https://curl.se/bug/?i=16329
|
[99] = https://curl.se/bug/?i=15906
|
||||||
[102] = https://curl.se/bug/?i=16467
|
[100] = https://curl.se/bug/?i=15854
|
||||||
[103] = https://curl.se/bug/?i=16466
|
[101] = https://curl.se/bug/?i=15945
|
||||||
[104] = https://curl.se/bug/?i=16099
|
[102] = https://curl.se/bug/?i=15873
|
||||||
[105] = https://curl.se/bug/?i=16468
|
[103] = https://curl.se/bug/?i=15869
|
||||||
[106] = https://curl.se/bug/?i=16459
|
[104] = https://curl.se/bug/?i=15868
|
||||||
[107] = https://curl.se/bug/?i=16460
|
[105] = https://curl.se/bug/?i=15867
|
||||||
[108] = https://curl.se/bug/?i=16461
|
[106] = https://curl.se/bug/?i=15844
|
||||||
[109] = https://curl.se/bug/?i=16462
|
[107] = https://curl.se/bug/?i=15833
|
||||||
[111] = https://curl.se/bug/?i=16446
|
[108] = https://curl.se/bug/?i=15908
|
||||||
[112] = https://curl.se/bug/?i=16457
|
[109] = https://curl.se/bug/?i=15903
|
||||||
[113] = https://curl.se/bug/?i=16456
|
[110] = https://curl.se/bug/?i=15861
|
||||||
[114] = https://curl.se/bug/?i=16455
|
[111] = https://curl.se/bug/?i=15937
|
||||||
[115] = https://curl.se/bug/?i=16453
|
[112] = https://curl.se/bug/?i=15902
|
||||||
[116] = https://curl.se/bug/?i=16452
|
[113] = https://curl.se/bug/?i=15898
|
||||||
[119] = https://curl.se/bug/?i=16448
|
[114] = https://curl.se/bug/?i=15900
|
||||||
|
[115] = https://curl.se/bug/?i=15863
|
||||||
|
[116] = https://curl.se/bug/?i=15801
|
||||||
|
[117] = https://curl.se/bug/?i=15835
|
||||||
|
[118] = https://curl.se/bug/?i=15836
|
||||||
|
[119] = https://curl.se/bug/?i=15897
|
||||||
|
[120] = https://curl.se/bug/?i=15899
|
||||||
|
[121] = https://curl.se/bug/?i=15893
|
||||||
|
[122] = https://curl.se/bug/?i=15895
|
||||||
|
[123] = https://curl.se/bug/?i=15892
|
||||||
|
[124] = https://curl.se/bug/?i=15894
|
||||||
|
[125] = https://curl.se/bug/?i=15891
|
||||||
|
[126] = https://curl.se/bug/?i=15889
|
||||||
|
[127] = https://curl.se/bug/?i=15954
|
||||||
|
[128] = https://curl.se/bug/?i=15881
|
||||||
|
[129] = https://curl.se/bug/?i=15982
|
||||||
|
[130] = https://curl.se/bug/?i=15983
|
||||||
|
[131] = https://curl.se/bug/?i=15981
|
||||||
|
[132] = https://curl.se/bug/?i=15980
|
||||||
|
[133] = https://curl.se/bug/?i=15946
|
||||||
|
[134] = https://curl.se/bug/?i=15979
|
||||||
|
[135] = https://curl.se/bug/?i=15978
|
||||||
|
[136] = https://curl.se/bug/?i=15973
|
||||||
|
[137] = https://curl.se/bug/?i=15939
|
||||||
|
[138] = https://curl.se/bug/?i=15971
|
||||||
|
[139] = https://curl.se/bug/?i=15909
|
||||||
|
[140] = https://curl.se/bug/?i=15941
|
||||||
|
[141] = https://curl.se/bug/?i=15924
|
||||||
|
[142] = https://curl.se/bug/?i=15974
|
||||||
|
[143] = https://curl.se/bug/?i=15958
|
||||||
|
[144] = https://curl.se/bug/?i=15969
|
||||||
|
[145] = https://curl.se/bug/?i=15968
|
||||||
|
[146] = https://curl.se/bug/?i=15967
|
||||||
|
[147] = https://curl.se/bug/?i=15929
|
||||||
|
[148] = https://curl.se/bug/?i=15960
|
||||||
|
[149] = https://curl.se/bug/?i=15925
|
||||||
|
[150] = https://curl.se/bug/?i=16006
|
||||||
|
[151] = https://curl.se/bug/?i=15923
|
||||||
|
[152] = https://curl.se/bug/?i=16012
|
||||||
|
[153] = https://curl.se/bug/?i=15966
|
||||||
|
[154] = https://curl.se/bug/?i=15857
|
||||||
|
[155] = https://curl.se/bug/?i=15957
|
||||||
|
[156] = https://curl.se/bug/?i=15962
|
||||||
|
[157] = https://curl.se/bug/?i=15920
|
||||||
|
[158] = https://curl.se/bug/?i=15955
|
||||||
|
[159] = https://curl.se/bug/?i=15953
|
||||||
|
[160] = https://curl.se/bug/?i=16007
|
||||||
|
[161] = https://curl.se/bug/?i=16007
|
||||||
|
[162] = https://curl.se/bug/?i=16050
|
||||||
|
[163] = https://curl.se/bug/?i=16003
|
||||||
|
[164] = https://curl.se/bug/?i=16002
|
||||||
|
[165] = https://curl.se/bug/?i=15992
|
||||||
|
[166] = https://curl.se/bug/?i=16039
|
||||||
|
[167] = https://curl.se/bug/?i=15990
|
||||||
|
[168] = https://curl.se/bug/?i=15156
|
||||||
|
[169] = https://curl.se/bug/?i=16000
|
||||||
|
[170] = https://curl.se/bug/?i=15996
|
||||||
|
[171] = https://curl.se/bug/?i=15984
|
||||||
|
[172] = https://curl.se/bug/?i=15997
|
||||||
|
[173] = https://curl.se/bug/?i=15988
|
||||||
|
[174] = https://curl.se/bug/?i=16032
|
||||||
|
[175] = https://curl.se/bug/?i=16040
|
||||||
|
[176] = https://curl.se/bug/?i=16037
|
||||||
|
[177] = https://curl.se/bug/?i=15987
|
||||||
|
[178] = https://curl.se/bug/?i=15986
|
||||||
|
[179] = https://curl.se/bug/?i=16022
|
||||||
|
[180] = https://curl.se/bug/?i=16036
|
||||||
|
[181] = https://curl.se/bug/?i=16034
|
||||||
|
[182] = https://curl.se/bug/?i=16033
|
||||||
|
[183] = https://curl.se/bug/?i=16029
|
||||||
|
[184] = https://curl.se/bug/?i=16027
|
||||||
|
[185] = https://curl.se/bug/?i=16014
|
||||||
|
[186] = https://curl.se/bug/?i=16028
|
||||||
|
[187] = https://curl.se/bug/?i=16091
|
||||||
|
[188] = https://curl.se/bug/?i=15865
|
||||||
|
[189] = https://curl.se/bug/?i=16057
|
||||||
|
[190] = https://curl.se/bug/?i=16015
|
||||||
|
[191] = https://curl.se/bug/?i=16048
|
||||||
|
[192] = https://curl.se/bug/?i=16020
|
||||||
|
[193] = https://curl.se/bug/?i=16141
|
||||||
|
[194] = https://curl.se/bug/?i=16019
|
||||||
|
[195] = https://curl.se/bug/?i=16009
|
||||||
|
[196] = https://curl.se/bug/?i=16038
|
||||||
|
[197] = https://curl.se/bug/?i=16135
|
||||||
|
[198] = https://curl.se/bug/?i=16053
|
||||||
|
[199] = https://curl.se/bug/?i=16051
|
||||||
|
[200] = https://curl.se/bug/?i=16081
|
||||||
|
[201] = https://curl.se/bug/?i=16041
|
||||||
|
[202] = https://curl.se/bug/?i=16074
|
||||||
|
[203] = https://curl.se/bug/?i=16089
|
||||||
|
[204] = https://curl.se/bug/?i=16052
|
||||||
|
[205] = https://curl.se/bug/?i=16054
|
||||||
|
[206] = https://curl.se/bug/?i=16118
|
||||||
|
[207] = https://curl.se/bug/?i=16128
|
||||||
|
[208] = https://curl.se/bug/?i=16087
|
||||||
|
[209] = https://curl.se/bug/?i=16131
|
||||||
|
[210] = https://curl.se/bug/?i=16079
|
||||||
|
[211] = https://curl.se/bug/?i=16079
|
||||||
|
[212] = https://curl.se/bug/?i=16075
|
||||||
|
[213] = https://curl.se/bug/?i=16073
|
||||||
|
[214] = https://curl.se/bug/?i=16062
|
||||||
|
[215] = https://curl.se/bug/?i=16068
|
||||||
|
[216] = https://curl.se/bug/?i=16063
|
||||||
|
[217] = https://curl.se/bug/?i=16067
|
||||||
|
[219] = https://curl.se/bug/?i=16044
|
||||||
|
[220] = https://curl.se/bug/?i=16123
|
||||||
|
[221] = https://curl.se/bug/?i=16120
|
||||||
|
[222] = https://curl.se/bug/?i=16121
|
||||||
|
[223] = https://curl.se/bug/?i=16114
|
||||||
|
[224] = https://curl.se/bug/?i=16152
|
||||||
|
[225] = https://curl.se/bug/?i=16113
|
||||||
|
[226] = https://curl.se/bug/?i=16110
|
||||||
|
[227] = https://curl.se/bug/?i=16105
|
||||||
|
[228] = https://curl.se/bug/?i=16103
|
||||||
|
[229] = https://curl.se/bug/?i=16109
|
||||||
|
[230] = https://curl.se/bug/?i=16069
|
||||||
|
[231] = https://curl.se/bug/?i=16076
|
||||||
|
[232] = https://curl.se/mail/lib-2025-01/0044.html
|
||||||
|
[233] = https://curl.se/bug/?i=16107
|
||||||
|
[235] = https://curl.se/bug/?i=16102
|
||||||
|
[236] = https://curl.se/bug/?i=16101
|
||||||
|
[237] = https://curl.se/bug/?i=16094
|
||||||
|
[239] = https://curl.se/bug/?i=16086
|
||||||
|
[240] = https://curl.se/bug/?i=16097
|
||||||
|
[241] = https://curl.se/bug/?i=16084
|
||||||
|
[242] = https://curl.se/bug/?i=16095
|
||||||
|
|||||||
148
acinclude.m4
148
acinclude.m4
@ -91,10 +91,11 @@ AC_DEFUN([CURL_CHECK_DEF_CC], [
|
|||||||
ifelse($2,,,[$2])[[
|
ifelse($2,,,[$2])[[
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
#ifndef $1
|
#ifdef $1
|
||||||
|
return 0;
|
||||||
|
#else
|
||||||
#error force compilation error
|
#error force compilation error
|
||||||
#endif
|
#endif
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
]])
|
]])
|
||||||
],[
|
],[
|
||||||
@ -125,11 +126,12 @@ AC_DEFUN([CURL_CHECK_LIB_XNET], [
|
|||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
#if defined(__hpux) && defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 600)
|
#if defined(__hpux) && defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 600)
|
||||||
|
return 0;
|
||||||
#elif defined(__hpux) && defined(_XOPEN_SOURCE_EXTENDED)
|
#elif defined(__hpux) && defined(_XOPEN_SOURCE_EXTENDED)
|
||||||
|
return 0;
|
||||||
#else
|
#else
|
||||||
#error force compilation error
|
#error force compilation error
|
||||||
#endif
|
#endif
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
]])
|
]])
|
||||||
],[
|
],[
|
||||||
@ -179,7 +181,6 @@ AC_DEFUN([CURL_CHECK_NATIVE_WINDOWS], [
|
|||||||
]],[[
|
]],[[
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
int dummy=1;
|
int dummy=1;
|
||||||
(void)dummy;
|
|
||||||
#else
|
#else
|
||||||
#error Not a native Windows build target.
|
#error Not a native Windows build target.
|
||||||
#endif
|
#endif
|
||||||
@ -305,7 +306,6 @@ AC_DEFUN([CURL_CHECK_HEADER_LDAP], [
|
|||||||
]],[[
|
]],[[
|
||||||
LDAP *ldp = ldap_init("0.0.0.0", LDAP_PORT);
|
LDAP *ldp = ldap_init("0.0.0.0", LDAP_PORT);
|
||||||
int res = ldap_unbind(ldp);
|
int res = ldap_unbind(ldp);
|
||||||
(void)res;
|
|
||||||
]])
|
]])
|
||||||
],[
|
],[
|
||||||
curl_cv_header_ldap_h="yes"
|
curl_cv_header_ldap_h="yes"
|
||||||
@ -354,7 +354,6 @@ AC_DEFUN([CURL_CHECK_HEADER_LDAP_SSL], [
|
|||||||
#include <ldap_ssl.h>
|
#include <ldap_ssl.h>
|
||||||
]],[[
|
]],[[
|
||||||
LDAP *ldp = ldapssl_init("0.0.0.0", LDAPS_PORT, 1);
|
LDAP *ldp = ldapssl_init("0.0.0.0", LDAPS_PORT, 1);
|
||||||
(void)ldp;
|
|
||||||
]])
|
]])
|
||||||
],[
|
],[
|
||||||
curl_cv_header_ldap_ssl_h="yes"
|
curl_cv_header_ldap_ssl_h="yes"
|
||||||
@ -434,7 +433,6 @@ AC_DEFUN([CURL_CHECK_LIBS_WINLDAP], [
|
|||||||
LDAP *ldp = ldap_init("0.0.0.0", LDAP_PORT);
|
LDAP *ldp = ldap_init("0.0.0.0", LDAP_PORT);
|
||||||
ULONG res = ldap_unbind(ldp);
|
ULONG res = ldap_unbind(ldp);
|
||||||
ber_free(bep, 1);
|
ber_free(bep, 1);
|
||||||
(void)res;
|
|
||||||
]])
|
]])
|
||||||
],[
|
],[
|
||||||
curl_cv_ldap_LIBS="$x_nlibs"
|
curl_cv_ldap_LIBS="$x_nlibs"
|
||||||
@ -545,7 +543,6 @@ AC_DEFUN([CURL_CHECK_LIBS_LDAP], [
|
|||||||
LDAP *ldp = ldap_init("0.0.0.0", LDAP_PORT);
|
LDAP *ldp = ldap_init("0.0.0.0", LDAP_PORT);
|
||||||
int res = ldap_unbind(ldp);
|
int res = ldap_unbind(ldp);
|
||||||
ber_free(bep, 1);
|
ber_free(bep, 1);
|
||||||
(void)res;
|
|
||||||
]])
|
]])
|
||||||
],[
|
],[
|
||||||
curl_cv_ldap_LIBS="$x_nlibs"
|
curl_cv_ldap_LIBS="$x_nlibs"
|
||||||
@ -689,8 +686,7 @@ AC_DEFUN([CURL_CHECK_FUNC_SEND], [
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
]],[[
|
]],[[
|
||||||
char s[] = "";
|
send(0, 0, 0, 0);
|
||||||
send(0, (void *)s, 0, 0);
|
|
||||||
]])
|
]])
|
||||||
],[
|
],[
|
||||||
AC_MSG_RESULT([yes])
|
AC_MSG_RESULT([yes])
|
||||||
@ -734,7 +730,6 @@ AC_DEFUN([CURL_CHECK_MSG_NOSIGNAL], [
|
|||||||
#endif
|
#endif
|
||||||
]],[[
|
]],[[
|
||||||
int flag=MSG_NOSIGNAL;
|
int flag=MSG_NOSIGNAL;
|
||||||
(void)flag;
|
|
||||||
]])
|
]])
|
||||||
],[
|
],[
|
||||||
curl_cv_msg_nosignal="yes"
|
curl_cv_msg_nosignal="yes"
|
||||||
@ -782,7 +777,6 @@ AC_DEFUN([CURL_CHECK_STRUCT_TIMEVAL], [
|
|||||||
struct timeval ts;
|
struct timeval ts;
|
||||||
ts.tv_sec = 0;
|
ts.tv_sec = 0;
|
||||||
ts.tv_usec = 0;
|
ts.tv_usec = 0;
|
||||||
(void)ts;
|
|
||||||
]])
|
]])
|
||||||
],[
|
],[
|
||||||
curl_cv_struct_timeval="yes"
|
curl_cv_struct_timeval="yes"
|
||||||
@ -799,6 +793,84 @@ AC_DEFUN([CURL_CHECK_STRUCT_TIMEVAL], [
|
|||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl TYPE_IN_ADDR_T
|
||||||
|
dnl -------------------------------------------------
|
||||||
|
dnl Check for in_addr_t: it is used to receive the return code of inet_addr()
|
||||||
|
dnl and a few other things.
|
||||||
|
|
||||||
|
AC_DEFUN([TYPE_IN_ADDR_T], [
|
||||||
|
AC_CHECK_TYPE([in_addr_t], ,[
|
||||||
|
dnl in_addr_t not available
|
||||||
|
AC_CACHE_CHECK([for in_addr_t equivalent],
|
||||||
|
[curl_cv_in_addr_t_equiv], [
|
||||||
|
curl_cv_in_addr_t_equiv="unknown"
|
||||||
|
for t in "unsigned long" int size_t unsigned long; do
|
||||||
|
if test "$curl_cv_in_addr_t_equiv" = "unknown"; then
|
||||||
|
AC_LINK_IFELSE([
|
||||||
|
AC_LANG_PROGRAM([[
|
||||||
|
#undef inline
|
||||||
|
#ifdef _WIN32
|
||||||
|
#ifndef WIN32_LEAN_AND_MEAN
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#endif
|
||||||
|
#include <winsock2.h>
|
||||||
|
#else
|
||||||
|
#ifdef HAVE_SYS_TYPES_H
|
||||||
|
#include <sys/types.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_SYS_SOCKET_H
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_NETINET_IN_H
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_ARPA_INET_H
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
]],[[
|
||||||
|
$t data = inet_addr ("1.2.3.4");
|
||||||
|
]])
|
||||||
|
],[
|
||||||
|
curl_cv_in_addr_t_equiv="$t"
|
||||||
|
])
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
])
|
||||||
|
case "$curl_cv_in_addr_t_equiv" in
|
||||||
|
unknown)
|
||||||
|
AC_MSG_ERROR([Cannot find a type to use in place of in_addr_t])
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
AC_DEFINE_UNQUOTED(in_addr_t, $curl_cv_in_addr_t_equiv,
|
||||||
|
[Type to use in place of in_addr_t when system does not provide it.])
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
],[
|
||||||
|
#undef inline
|
||||||
|
#ifdef _WIN32
|
||||||
|
#ifndef WIN32_LEAN_AND_MEAN
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#endif
|
||||||
|
#include <winsock2.h>
|
||||||
|
#else
|
||||||
|
#ifdef HAVE_SYS_TYPES_H
|
||||||
|
#include <sys/types.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_SYS_SOCKET_H
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_NETINET_IN_H
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_ARPA_INET_H
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
])
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
dnl CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC
|
dnl CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC
|
||||||
dnl -------------------------------------------------
|
dnl -------------------------------------------------
|
||||||
dnl Check if monotonic clock_gettime is available.
|
dnl Check if monotonic clock_gettime is available.
|
||||||
@ -820,7 +892,6 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC], [
|
|||||||
]],[[
|
]],[[
|
||||||
struct timespec ts;
|
struct timespec ts;
|
||||||
(void)clock_gettime(CLOCK_MONOTONIC, &ts);
|
(void)clock_gettime(CLOCK_MONOTONIC, &ts);
|
||||||
(void)ts;
|
|
||||||
]])
|
]])
|
||||||
],[
|
],[
|
||||||
AC_MSG_RESULT([yes])
|
AC_MSG_RESULT([yes])
|
||||||
@ -855,7 +926,6 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC_RAW], [
|
|||||||
]],[[
|
]],[[
|
||||||
struct timespec ts;
|
struct timespec ts;
|
||||||
(void)clock_gettime(CLOCK_MONOTONIC_RAW, &ts);
|
(void)clock_gettime(CLOCK_MONOTONIC_RAW, &ts);
|
||||||
(void)ts;
|
|
||||||
]])
|
]])
|
||||||
],[
|
],[
|
||||||
AC_MSG_RESULT([yes])
|
AC_MSG_RESULT([yes])
|
||||||
@ -902,7 +972,6 @@ AC_DEFUN([CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC], [
|
|||||||
]],[[
|
]],[[
|
||||||
struct timespec ts;
|
struct timespec ts;
|
||||||
(void)clock_gettime(CLOCK_MONOTONIC, &ts);
|
(void)clock_gettime(CLOCK_MONOTONIC, &ts);
|
||||||
(void)ts;
|
|
||||||
]])
|
]])
|
||||||
],[
|
],[
|
||||||
curl_cv_gclk_LIBS="$x_xlibs"
|
curl_cv_gclk_LIBS="$x_xlibs"
|
||||||
@ -950,9 +1019,9 @@ AC_DEFUN([CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC], [
|
|||||||
]],[[
|
]],[[
|
||||||
struct timespec ts;
|
struct timespec ts;
|
||||||
if (0 == clock_gettime(CLOCK_MONOTONIC, &ts))
|
if (0 == clock_gettime(CLOCK_MONOTONIC, &ts))
|
||||||
return 0;
|
exit(0);
|
||||||
(void)ts;
|
else
|
||||||
return 1;
|
exit(1);
|
||||||
]])
|
]])
|
||||||
],[
|
],[
|
||||||
AC_MSG_RESULT([yes])
|
AC_MSG_RESULT([yes])
|
||||||
@ -1099,7 +1168,7 @@ AC_DEFUN([CURL_VERIFY_RUNTIMELIBS], [
|
|||||||
dnl point also is available run-time!
|
dnl point also is available run-time!
|
||||||
AC_MSG_CHECKING([run-time libs availability])
|
AC_MSG_CHECKING([run-time libs availability])
|
||||||
CURL_RUN_IFELSE([
|
CURL_RUN_IFELSE([
|
||||||
int main(void)
|
int main()
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -1311,13 +1380,16 @@ AC_DEFUN([CURL_CHECK_WIN32_LARGEFILE], [
|
|||||||
AC_REQUIRE([CURL_CHECK_NATIVE_WINDOWS])dnl
|
AC_REQUIRE([CURL_CHECK_NATIVE_WINDOWS])dnl
|
||||||
if test "$curl_cv_native_windows" = 'yes'; then
|
if test "$curl_cv_native_windows" = 'yes'; then
|
||||||
AC_MSG_CHECKING([whether build target supports Win32 large files])
|
AC_MSG_CHECKING([whether build target supports Win32 large files])
|
||||||
if test "$curl_cv_wince" = 'yes'; then
|
case $host_os in
|
||||||
|
mingw32ce*|cegcc*)
|
||||||
dnl Windows CE does not support large files
|
dnl Windows CE does not support large files
|
||||||
curl_win32_has_largefile='no'
|
curl_win32_has_largefile='no'
|
||||||
else
|
;;
|
||||||
|
*)
|
||||||
dnl All mingw-w64 versions support large files
|
dnl All mingw-w64 versions support large files
|
||||||
curl_win32_has_largefile='yes'
|
curl_win32_has_largefile='yes'
|
||||||
fi
|
;;
|
||||||
|
esac
|
||||||
case "$curl_win32_has_largefile" in
|
case "$curl_win32_has_largefile" in
|
||||||
yes)
|
yes)
|
||||||
if test x"$enable_largefile" = 'xno'; then
|
if test x"$enable_largefile" = 'xno'; then
|
||||||
@ -1451,9 +1523,9 @@ dnl Save build info for test runner to pick up and log
|
|||||||
|
|
||||||
AC_DEFUN([CURL_PREPARE_BUILDINFO], [
|
AC_DEFUN([CURL_PREPARE_BUILDINFO], [
|
||||||
curl_pflags=""
|
curl_pflags=""
|
||||||
if test "$curl_cv_apple" = 'yes'; then
|
case $host in
|
||||||
curl_pflags="${curl_pflags} APPLE"
|
*-apple-*) curl_pflags="${curl_pflags} APPLE";;
|
||||||
fi
|
esac
|
||||||
case $host in
|
case $host in
|
||||||
*-*-*bsd*|*-*-aix*|*-*-hpux*|*-*-interix*|*-*-irix*|*-*-linux*|*-*-solaris*|*-*-sunos*|*-apple-*|*-*-cygwin*|*-*-msys*)
|
*-*-*bsd*|*-*-aix*|*-*-hpux*|*-*-interix*|*-*-irix*|*-*-linux*|*-*-solaris*|*-*-sunos*|*-apple-*|*-*-cygwin*|*-*-msys*)
|
||||||
curl_pflags="${curl_pflags} UNIX";;
|
curl_pflags="${curl_pflags} UNIX";;
|
||||||
@ -1474,24 +1546,14 @@ AC_DEFUN([CURL_PREPARE_BUILDINFO], [
|
|||||||
if test "$curl_cv_native_windows" = 'yes'; then
|
if test "$curl_cv_native_windows" = 'yes'; then
|
||||||
curl_pflags="${curl_pflags} WIN32"
|
curl_pflags="${curl_pflags} WIN32"
|
||||||
fi
|
fi
|
||||||
if test "$curl_cv_wince" = 'yes'; then
|
|
||||||
curl_pflags="${curl_pflags} WINCE"
|
|
||||||
fi
|
|
||||||
if test "$curl_cv_winuwp" = 'yes'; then
|
if test "$curl_cv_winuwp" = 'yes'; then
|
||||||
curl_pflags="${curl_pflags} UWP"
|
curl_pflags="${curl_pflags} UWP"
|
||||||
fi
|
fi
|
||||||
case $host in
|
|
||||||
*-*-*bsd*|*-*-aix*|*-*-hpux*|*-*-interix*|*-*-irix*|*-*-linux*|*-*-solaris*|*-*-sunos*|*-apple-*|*-*-cygwin*|*-*-msys*)
|
|
||||||
curl_pflags="${curl_pflags} UNIX";;
|
|
||||||
esac
|
|
||||||
case $host in
|
|
||||||
*-*-*bsd*)
|
|
||||||
curl_pflags="${curl_pflags} BSD";;
|
|
||||||
esac
|
|
||||||
if test "$curl_cv_cygwin" = 'yes'; then
|
if test "$curl_cv_cygwin" = 'yes'; then
|
||||||
curl_pflags="${curl_pflags} CYGWIN"
|
curl_pflags="${curl_pflags} CYGWIN"
|
||||||
fi
|
fi
|
||||||
case $host_os in
|
case $host_os in
|
||||||
|
msys*) curl_pflags="${curl_pflags} MSYS";;
|
||||||
msdos*) curl_pflags="${curl_pflags} DOS";;
|
msdos*) curl_pflags="${curl_pflags} DOS";;
|
||||||
amiga*) curl_pflags="${curl_pflags} AMIGA";;
|
amiga*) curl_pflags="${curl_pflags} AMIGA";;
|
||||||
esac
|
esac
|
||||||
@ -1577,6 +1639,18 @@ dnl with very low deployment targets.
|
|||||||
dnl
|
dnl
|
||||||
|
|
||||||
AC_DEFUN([CURL_DARWIN_CFLAGS], [
|
AC_DEFUN([CURL_DARWIN_CFLAGS], [
|
||||||
|
|
||||||
|
tst_cflags="no"
|
||||||
|
case $host in
|
||||||
|
*-apple-*)
|
||||||
|
tst_cflags="yes"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([for good-to-use Darwin CFLAGS])
|
||||||
|
AC_MSG_RESULT([$tst_cflags]);
|
||||||
|
|
||||||
|
if test "$tst_cflags" = "yes"; then
|
||||||
old_CFLAGS=$CFLAGS
|
old_CFLAGS=$CFLAGS
|
||||||
CFLAGS="$CFLAGS -Werror=partial-availability"
|
CFLAGS="$CFLAGS -Werror=partial-availability"
|
||||||
AC_MSG_CHECKING([whether $CC accepts -Werror=partial-availability])
|
AC_MSG_CHECKING([whether $CC accepts -Werror=partial-availability])
|
||||||
@ -1584,6 +1658,8 @@ AC_DEFUN([CURL_DARWIN_CFLAGS], [
|
|||||||
[AC_MSG_RESULT([yes])],
|
[AC_MSG_RESULT([yes])],
|
||||||
[AC_MSG_RESULT([no])
|
[AC_MSG_RESULT([no])
|
||||||
CFLAGS=$old_CFLAGS])
|
CFLAGS=$old_CFLAGS])
|
||||||
|
fi
|
||||||
|
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
91
appveyor.sh
91
appveyor.sh
@ -28,75 +28,45 @@ set -eux; [ -n "${BASH:-}${ZSH_NAME:-}" ] && set -o pipefail
|
|||||||
|
|
||||||
# build
|
# build
|
||||||
|
|
||||||
case "${TARGET:-}" in
|
|
||||||
*Win32) openssl_suffix='-Win32';;
|
|
||||||
*) openssl_suffix='-Win64';;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [ "${APPVEYOR_BUILD_WORKER_IMAGE}" = 'Visual Studio 2022' ]; then
|
if [ "${APPVEYOR_BUILD_WORKER_IMAGE}" = 'Visual Studio 2022' ]; then
|
||||||
openssl_root_win="C:/OpenSSL-v34${openssl_suffix}"
|
openssl_root_win='C:/OpenSSL-v34-Win64'
|
||||||
elif [ "${APPVEYOR_BUILD_WORKER_IMAGE}" = 'Visual Studio 2019' ]; then
|
|
||||||
openssl_root_win="C:/OpenSSL-v11${openssl_suffix}"
|
|
||||||
elif [ "${APPVEYOR_BUILD_WORKER_IMAGE}" = 'Visual Studio 2013' ]; then
|
|
||||||
openssl_root_win="C:/OpenSSL${openssl_suffix}"
|
|
||||||
else
|
else
|
||||||
openssl_root_win="C:/OpenSSL-v111${openssl_suffix}"
|
openssl_root_win='C:/OpenSSL-v111-Win64'
|
||||||
fi
|
fi
|
||||||
openssl_root="$(cygpath "${openssl_root_win}")"
|
openssl_root="$(cygpath "${openssl_root_win}")"
|
||||||
|
|
||||||
if [ "${BUILD_SYSTEM}" = 'CMake' ]; then
|
if [ "${BUILD_SYSTEM}" = 'CMake' ]; then
|
||||||
# Set env CHKPREFILL to the value '_chkprefill' to compare feature detection
|
|
||||||
# results with and without the pre-fill feature. They have to match.
|
|
||||||
for _chkprefill in '' ${CHKPREFILL:-}; do
|
|
||||||
options=''
|
options=''
|
||||||
[ "${_chkprefill}" = '_chkprefill' ] && options+=' -D_CURL_PREFILL=OFF'
|
[[ "${TARGET:-}" = *'ARM64'* ]] && SKIP_RUN='ARM64 architecture'
|
||||||
[[ "${TARGET}" = *'ARM64'* ]] && SKIP_RUN='ARM64 architecture'
|
|
||||||
[ -n "${TOOLSET:-}" ] && options+=" -T ${TOOLSET}"
|
[ -n "${TOOLSET:-}" ] && options+=" -T ${TOOLSET}"
|
||||||
[ "${OPENSSL}" = 'ON' ] && options+=" -DOPENSSL_ROOT_DIR=${openssl_root_win}"
|
[ "${OPENSSL}" = 'ON' ] && options+=" -DOPENSSL_ROOT_DIR=${openssl_root_win}"
|
||||||
[ -n "${CURLDEBUG:-}" ] && options+=" -DENABLE_CURLDEBUG=${CURLDEBUG}"
|
[ -n "${CURLDEBUG:-}" ] && options+=" -DENABLE_CURLDEBUG=${CURLDEBUG}"
|
||||||
if [ "${APPVEYOR_BUILD_WORKER_IMAGE}" = 'Visual Studio 2013' ]; then
|
[ "${PRJ_CFG}" = 'Debug' ] && options+=' -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG='
|
||||||
mkdir "_bld${_chkprefill}"
|
[ "${PRJ_CFG}" = 'Release' ] && options+=' -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE='
|
||||||
cd "_bld${_chkprefill}"
|
[[ "${PRJ_GEN}" = *'Visual Studio'* ]] && options+=' -DCMAKE_VS_GLOBALS=TrackFileAccess=false'
|
||||||
options+=' ..'
|
|
||||||
root='..'
|
|
||||||
else
|
|
||||||
options+=" -B _bld${_chkprefill}"
|
|
||||||
options+=' -DCMAKE_VS_GLOBALS=TrackFileAccess=false'
|
|
||||||
options+=" -DCMAKE_UNITY_BUILD=${UNITY}"
|
|
||||||
root='.'
|
|
||||||
fi
|
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
time cmake -G "${PRJ_GEN}" ${TARGET} \
|
cmake -B _bld "-G${PRJ_GEN}" ${TARGET:-} ${options} \
|
||||||
-DCURL_TEST_BUNDLES=ON \
|
"-DCURL_USE_OPENSSL=${OPENSSL}" \
|
||||||
-DCURL_WERROR=ON \
|
"-DCURL_USE_SCHANNEL=${SCHANNEL}" \
|
||||||
-DBUILD_SHARED_LIBS="${SHARED}" \
|
"-DHTTP_ONLY=${HTTP_ONLY}" \
|
||||||
-DCURL_STATIC_CRT=ON \
|
"-DBUILD_SHARED_LIBS=${SHARED}" \
|
||||||
-DENABLE_DEBUG="${DEBUG}" \
|
"-DCMAKE_UNITY_BUILD=${UNITY}" \
|
||||||
-DENABLE_UNICODE="${ENABLE_UNICODE}" \
|
'-DCURL_TEST_BUNDLES=ON' \
|
||||||
-DHTTP_ONLY="${HTTP_ONLY}" \
|
'-DCURL_WERROR=ON' \
|
||||||
-DCURL_USE_SCHANNEL="${SCHANNEL}" \
|
"-DENABLE_DEBUG=${DEBUG}" \
|
||||||
-DCURL_USE_OPENSSL="${OPENSSL}" \
|
"-DENABLE_UNICODE=${ENABLE_UNICODE}" \
|
||||||
-DCURL_USE_LIBPSL=OFF \
|
'-DCMAKE_INSTALL_PREFIX=C:/curl' \
|
||||||
${options} \
|
"-DCMAKE_BUILD_TYPE=${PRJ_CFG}" \
|
||||||
|| { cat ${root}/_bld/CMakeFiles/CMake* 2>/dev/null; false; }
|
'-DCURL_USE_LIBPSL=OFF'
|
||||||
[ "${APPVEYOR_BUILD_WORKER_IMAGE}" = 'Visual Studio 2013' ] && cd ..
|
if false; then
|
||||||
done
|
cat _bld/CMakeFiles/CMakeConfigureLog.yaml 2>/dev/null || true
|
||||||
if [ -d _bld_chkprefill ] && ! diff -u _bld/lib/curl_config.h _bld_chkprefill/lib/curl_config.h; then
|
|
||||||
cat _bld_chkprefill/CMakeFiles/CMake* 2>/dev/null || true
|
|
||||||
false
|
|
||||||
fi
|
fi
|
||||||
echo 'curl_config.h'; grep -F '#define' _bld/lib/curl_config.h | sort || true
|
echo 'curl_config.h'; grep -F '#define' _bld/lib/curl_config.h | sort || true
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
if ! time cmake --build _bld --config "${PRJ_CFG}" --parallel 2 -- ${BUILD_OPT:-}; then
|
cmake --build _bld --config "${PRJ_CFG}" --parallel 2 -- ${BUILD_OPT:-}
|
||||||
if [ "${PRJ_GEN}" = 'Visual Studio 9 2008' ]; then
|
[ "${SHARED}" = 'ON' ] && PATH="$PWD/_bld/lib:$PATH"
|
||||||
find . -name BuildLog.htm -exec dos2unix '{}' +
|
[ "${OPENSSL}" = 'ON' ] && PATH="${openssl_root}:$PATH"
|
||||||
find . -name BuildLog.htm -exec cat '{}' +
|
curl='_bld/src/curl.exe'
|
||||||
fi
|
|
||||||
false
|
|
||||||
fi
|
|
||||||
[ "${SHARED}" = 'ON' ] && PATH="$PWD/_bld/lib/${PRJ_CFG}:$PATH"
|
|
||||||
[ "${OPENSSL}" = 'ON' ] && { PATH="${openssl_root}:$PATH"; cp "${openssl_root}"/*.dll "_bld/src/${PRJ_CFG}"; }
|
|
||||||
curl="_bld/src/${PRJ_CFG}/curl.exe"
|
|
||||||
elif [ "${BUILD_SYSTEM}" = 'VisualStudioSolution' ]; then
|
elif [ "${BUILD_SYSTEM}" = 'VisualStudioSolution' ]; then
|
||||||
(
|
(
|
||||||
cd projects
|
cd projects
|
||||||
@ -129,7 +99,7 @@ EOF
|
|||||||
curl="builds/libcurl-vc14.10-x64-${PATHPART}-dll-ssl-dll-ipv6-sspi/bin/curl.exe"
|
curl="builds/libcurl-vc14.10-x64-${PATHPART}-dll-ssl-dll-ipv6-sspi/bin/curl.exe"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
find . \( -name '*.exe' -o -name '*.dll' -o -name '*.lib' -o -name '*.pdb' \) -exec file '{}' \;
|
find . \( -name '*.exe' -o -name '*.dll' -o -name '*.lib' \) -exec file '{}' \;
|
||||||
if [ -z "${SKIP_RUN:-}" ]; then
|
if [ -z "${SKIP_RUN:-}" ]; then
|
||||||
"${curl}" --disable --version
|
"${curl}" --disable --version
|
||||||
else
|
else
|
||||||
@ -140,14 +110,13 @@ fi
|
|||||||
|
|
||||||
if [ "${TFLAGS}" != 'skipall' ] && \
|
if [ "${TFLAGS}" != 'skipall' ] && \
|
||||||
[ "${BUILD_SYSTEM}" = 'CMake' ]; then
|
[ "${BUILD_SYSTEM}" = 'CMake' ]; then
|
||||||
time cmake --build _bld --config "${PRJ_CFG}" --parallel 2 --target testdeps
|
cmake --build _bld --config "${PRJ_CFG}" --parallel 2 --target testdeps
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# run tests
|
# run tests
|
||||||
|
|
||||||
if [ "${TFLAGS}" != 'skipall' ] && \
|
if [ "${TFLAGS}" != 'skipall' ] && \
|
||||||
[ "${TFLAGS}" != 'skiprun' ]; then
|
[ "${TFLAGS}" != 'skiprun' ]; then
|
||||||
export CURL_DIRSUFFIX="${PRJ_CFG}"
|
|
||||||
if [ -x "$(cygpath "${SYSTEMROOT}/System32/curl.exe")" ]; then
|
if [ -x "$(cygpath "${SYSTEMROOT}/System32/curl.exe")" ]; then
|
||||||
TFLAGS+=" -ac $(cygpath "${SYSTEMROOT}/System32/curl.exe")"
|
TFLAGS+=" -ac $(cygpath "${SYSTEMROOT}/System32/curl.exe")"
|
||||||
elif [ -x "$(cygpath 'C:/msys64/usr/bin/curl.exe')" ]; then
|
elif [ -x "$(cygpath 'C:/msys64/usr/bin/curl.exe')" ]; then
|
||||||
@ -155,12 +124,12 @@ if [ "${TFLAGS}" != 'skipall' ] && \
|
|||||||
fi
|
fi
|
||||||
TFLAGS+=' -j0'
|
TFLAGS+=' -j0'
|
||||||
if [ "${BUILD_SYSTEM}" = 'CMake' ]; then
|
if [ "${BUILD_SYSTEM}" = 'CMake' ]; then
|
||||||
time cmake --build _bld --config "${PRJ_CFG}" --target test-ci
|
cmake --build _bld --config "${PRJ_CFG}" --target test-ci
|
||||||
else
|
else
|
||||||
(
|
(
|
||||||
TFLAGS="-a -p !flaky -r -rm ${TFLAGS}"
|
TFLAGS="-a -p !flaky -r -rm ${TFLAGS}"
|
||||||
cd _bld/tests
|
cd _bld/tests
|
||||||
time ./runtests.pl
|
./runtests.pl
|
||||||
)
|
)
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@ -169,5 +138,5 @@ fi
|
|||||||
|
|
||||||
if [ "${EXAMPLES}" = 'ON' ] && \
|
if [ "${EXAMPLES}" = 'ON' ] && \
|
||||||
[ "${BUILD_SYSTEM}" = 'CMake' ]; then
|
[ "${BUILD_SYSTEM}" = 'CMake' ]; then
|
||||||
time cmake --build _bld --config "${PRJ_CFG}" --parallel 2 --target curl-examples
|
cmake --build _bld --config "${PRJ_CFG}" --parallel 2 --target curl-examples
|
||||||
fi
|
fi
|
||||||
|
|||||||
75
appveyor.yml
75
appveyor.yml
@ -31,11 +31,8 @@
|
|||||||
version: 7.50.0.{build}
|
version: 7.50.0.{build}
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
BUILD_SYSTEM: CMake
|
|
||||||
UNITY: 'ON'
|
UNITY: 'ON'
|
||||||
OPENSSL: 'OFF'
|
OPENSSL: 'OFF'
|
||||||
SCHANNEL: 'OFF'
|
|
||||||
ENABLE_UNICODE: 'OFF'
|
|
||||||
DEBUG: 'ON'
|
DEBUG: 'ON'
|
||||||
SHARED: 'OFF'
|
SHARED: 'OFF'
|
||||||
HTTP_ONLY: 'OFF'
|
HTTP_ONLY: 'OFF'
|
||||||
@ -48,77 +45,89 @@ environment:
|
|||||||
|
|
||||||
- job_name: 'CMake, VS2022, Release, x64, OpenSSL 3.4, Shared, Build-tests'
|
- job_name: 'CMake, VS2022, Release, x64, OpenSSL 3.4, Shared, Build-tests'
|
||||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
||||||
|
BUILD_SYSTEM: CMake
|
||||||
PRJ_GEN: 'Visual Studio 17 2022'
|
PRJ_GEN: 'Visual Studio 17 2022'
|
||||||
TARGET: '-A x64'
|
TARGET: '-A x64'
|
||||||
PRJ_CFG: Release
|
PRJ_CFG: Release
|
||||||
OPENSSL: 'ON'
|
OPENSSL: 'ON'
|
||||||
|
SCHANNEL: 'OFF'
|
||||||
|
ENABLE_UNICODE: 'OFF'
|
||||||
SHARED: 'ON'
|
SHARED: 'ON'
|
||||||
- job_name: 'CMake, VS2022, Release, arm64, Schannel, Static, Build-tests'
|
- job_name: 'CMake, VS2022, Release, arm64, Schannel, Static, Build-tests'
|
||||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
||||||
|
BUILD_SYSTEM: CMake
|
||||||
PRJ_GEN: 'Visual Studio 17 2022'
|
PRJ_GEN: 'Visual Studio 17 2022'
|
||||||
TARGET: '-A ARM64'
|
TARGET: '-A ARM64'
|
||||||
PRJ_CFG: Release
|
PRJ_CFG: Release
|
||||||
SCHANNEL: 'ON'
|
SCHANNEL: 'ON'
|
||||||
|
ENABLE_UNICODE: 'OFF'
|
||||||
DEBUG: 'OFF'
|
DEBUG: 'OFF'
|
||||||
CURLDEBUG: 'ON'
|
CURLDEBUG: 'ON'
|
||||||
- job_name: 'CMake, VS2008, Debug, x86, OpenSSL 1.0.2 + Schannel, Shared, Build-tests & examples'
|
- job_name: 'CMake, VS2010, Release, x86, Schannel, Static, Build-tests'
|
||||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2013'
|
|
||||||
PRJ_GEN: 'Visual Studio 9 2008'
|
|
||||||
TARGET: '-A Win32'
|
|
||||||
PRJ_CFG: Debug
|
|
||||||
OPENSSL: 'ON'
|
|
||||||
SCHANNEL: 'ON'
|
|
||||||
SHARED: 'ON'
|
|
||||||
EXAMPLES: 'ON'
|
|
||||||
- job_name: 'CMake, VS2010, Debug, x64, Schannel, Shared, Build-tests & examples'
|
|
||||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
||||||
|
BUILD_SYSTEM: CMake
|
||||||
|
PRJ_GEN: 'Visual Studio 10 2010'
|
||||||
|
TARGET: '-A Win32'
|
||||||
|
PRJ_CFG: Release
|
||||||
|
SCHANNEL: 'ON'
|
||||||
|
ENABLE_UNICODE: 'OFF'
|
||||||
|
SHARED: 'ON'
|
||||||
|
- job_name: 'CMake, VS2010, Debug, x64, Schannel, Static, Build-tests & examples'
|
||||||
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
||||||
|
BUILD_SYSTEM: CMake
|
||||||
PRJ_GEN: 'Visual Studio 10 2010'
|
PRJ_GEN: 'Visual Studio 10 2010'
|
||||||
TARGET: '-A x64'
|
TARGET: '-A x64'
|
||||||
PRJ_CFG: Debug
|
PRJ_CFG: Debug
|
||||||
SCHANNEL: 'ON'
|
SCHANNEL: 'ON'
|
||||||
|
ENABLE_UNICODE: 'OFF'
|
||||||
SHARED: 'ON'
|
SHARED: 'ON'
|
||||||
EXAMPLES: 'ON'
|
EXAMPLES: 'ON'
|
||||||
- job_name: 'CMake, VS2012, Release, x86, OpenSSL 1.1.1 + Schannel, Shared, Build-tests'
|
- job_name: 'CMake, VS2012, Debug, x64, OpenSSL 1.1.1, Build-tests'
|
||||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
||||||
|
BUILD_SYSTEM: CMake
|
||||||
PRJ_GEN: 'Visual Studio 11 2012'
|
PRJ_GEN: 'Visual Studio 11 2012'
|
||||||
TARGET: '-A Win32'
|
TARGET: '-A x64'
|
||||||
PRJ_CFG: Release
|
PRJ_CFG: Debug
|
||||||
OPENSSL: 'ON'
|
OPENSSL: 'ON'
|
||||||
SCHANNEL: 'ON'
|
SCHANNEL: 'OFF'
|
||||||
|
ENABLE_UNICODE: 'OFF'
|
||||||
SHARED: 'ON'
|
SHARED: 'ON'
|
||||||
- job_name: 'CMake, VS2013, Debug, x64, OpenSSL 1.1.1, Shared, Build-only'
|
- job_name: 'CMake, VS2013, Debug, x64, OpenSSL 1.1.1, Build-only'
|
||||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
||||||
|
BUILD_SYSTEM: CMake
|
||||||
PRJ_GEN: 'Visual Studio 12 2013'
|
PRJ_GEN: 'Visual Studio 12 2013'
|
||||||
TARGET: '-A x64'
|
TARGET: '-A x64'
|
||||||
PRJ_CFG: Debug
|
PRJ_CFG: Debug
|
||||||
OPENSSL: 'ON'
|
OPENSSL: 'ON'
|
||||||
|
SCHANNEL: 'OFF'
|
||||||
|
ENABLE_UNICODE: 'OFF'
|
||||||
SHARED: 'ON'
|
SHARED: 'ON'
|
||||||
TFLAGS: 'skipall'
|
TFLAGS: 'skipall'
|
||||||
- job_name: 'CMake, VS2015, Debug, x64, OpenSSL 1.1.1, Static, Build-only'
|
- job_name: 'CMake, VS2015, Debug, x64, OpenSSL 1.1.1, Build-only'
|
||||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
||||||
|
BUILD_SYSTEM: CMake
|
||||||
PRJ_GEN: 'Visual Studio 14 2015'
|
PRJ_GEN: 'Visual Studio 14 2015'
|
||||||
TARGET: '-A x64'
|
TARGET: '-A x64'
|
||||||
PRJ_CFG: Debug
|
PRJ_CFG: Debug
|
||||||
OPENSSL: 'ON'
|
OPENSSL: 'ON'
|
||||||
|
SCHANNEL: 'OFF'
|
||||||
|
ENABLE_UNICODE: 'OFF'
|
||||||
|
SHARED: 'ON'
|
||||||
TFLAGS: 'skipall'
|
TFLAGS: 'skipall'
|
||||||
- job_name: 'CMake, VS2017, Debug, x64, OpenSSL 1.1.1, Shared, Build-only'
|
- job_name: 'CMake, VS2017, Debug, x64, OpenSSL 1.1.1, Build-only'
|
||||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017'
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017'
|
||||||
|
BUILD_SYSTEM: CMake
|
||||||
PRJ_GEN: 'Visual Studio 15 2017'
|
PRJ_GEN: 'Visual Studio 15 2017'
|
||||||
TARGET: '-A x64'
|
TARGET: '-A x64'
|
||||||
PRJ_CFG: Debug
|
PRJ_CFG: Debug
|
||||||
OPENSSL: 'ON'
|
OPENSSL: 'ON'
|
||||||
|
SCHANNEL: 'OFF'
|
||||||
|
ENABLE_UNICODE: 'OFF'
|
||||||
SHARED: 'ON'
|
SHARED: 'ON'
|
||||||
TFLAGS: 'skipall'
|
TFLAGS: 'skipall'
|
||||||
- job_name: 'CMake, VS2019, Debug, x64, OpenSSL 1.1.0 + Schannel, Shared, Build-tests'
|
|
||||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2019'
|
|
||||||
PRJ_GEN: 'Visual Studio 16 2019'
|
|
||||||
TARGET: '-A x64'
|
|
||||||
PRJ_CFG: Debug
|
|
||||||
OPENSSL: 'ON'
|
|
||||||
SCHANNEL: 'ON'
|
|
||||||
SHARED: 'ON'
|
|
||||||
- job_name: 'CMake, VS2022, Debug, x64, Schannel, Static, Unicode, Build-tests & examples, clang-cl'
|
- job_name: 'CMake, VS2022, Debug, x64, Schannel, Static, Unicode, Build-tests & examples, clang-cl'
|
||||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
||||||
|
BUILD_SYSTEM: CMake
|
||||||
PRJ_GEN: 'Visual Studio 17 2022'
|
PRJ_GEN: 'Visual Studio 17 2022'
|
||||||
TARGET: '-A x64'
|
TARGET: '-A x64'
|
||||||
PRJ_CFG: Debug
|
PRJ_CFG: Debug
|
||||||
@ -128,6 +137,7 @@ environment:
|
|||||||
TOOLSET: 'ClangCl'
|
TOOLSET: 'ClangCl'
|
||||||
- job_name: 'CMake, VS2022, Debug, x64, Schannel, Static, Unicode, Build-tests'
|
- job_name: 'CMake, VS2022, Debug, x64, Schannel, Static, Unicode, Build-tests'
|
||||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
||||||
|
BUILD_SYSTEM: CMake
|
||||||
PRJ_GEN: 'Visual Studio 17 2022'
|
PRJ_GEN: 'Visual Studio 17 2022'
|
||||||
TARGET: '-A x64'
|
TARGET: '-A x64'
|
||||||
PRJ_CFG: Debug
|
PRJ_CFG: Debug
|
||||||
@ -135,6 +145,7 @@ environment:
|
|||||||
ENABLE_UNICODE: 'ON'
|
ENABLE_UNICODE: 'ON'
|
||||||
- job_name: 'CMake, VS2022, Release, x64, Schannel, Shared, Unicode, DEBUGBUILD, no-CURLDEBUG, Build-tests'
|
- job_name: 'CMake, VS2022, Release, x64, Schannel, Shared, Unicode, DEBUGBUILD, no-CURLDEBUG, Build-tests'
|
||||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
||||||
|
BUILD_SYSTEM: CMake
|
||||||
PRJ_GEN: 'Visual Studio 17 2022'
|
PRJ_GEN: 'Visual Studio 17 2022'
|
||||||
TARGET: '-A x64'
|
TARGET: '-A x64'
|
||||||
PRJ_CFG: Release
|
PRJ_CFG: Release
|
||||||
@ -144,14 +155,20 @@ environment:
|
|||||||
CURLDEBUG: 'OFF'
|
CURLDEBUG: 'OFF'
|
||||||
- job_name: 'CMake, VS2022, Debug, x64, no SSL, Static, Build-tests'
|
- job_name: 'CMake, VS2022, Debug, x64, no SSL, Static, Build-tests'
|
||||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
||||||
|
BUILD_SYSTEM: CMake
|
||||||
PRJ_GEN: 'Visual Studio 17 2022'
|
PRJ_GEN: 'Visual Studio 17 2022'
|
||||||
TARGET: '-A x64'
|
TARGET: '-A x64'
|
||||||
PRJ_CFG: Debug
|
PRJ_CFG: Debug
|
||||||
|
SCHANNEL: 'OFF'
|
||||||
|
ENABLE_UNICODE: 'OFF'
|
||||||
- job_name: 'CMake, VS2022, Debug, x64, no SSL, Static, HTTP only, Build-tests'
|
- job_name: 'CMake, VS2022, Debug, x64, no SSL, Static, HTTP only, Build-tests'
|
||||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
||||||
|
BUILD_SYSTEM: CMake
|
||||||
PRJ_GEN: 'Visual Studio 17 2022'
|
PRJ_GEN: 'Visual Studio 17 2022'
|
||||||
TARGET: '-A x64'
|
TARGET: '-A x64'
|
||||||
PRJ_CFG: Debug
|
PRJ_CFG: Debug
|
||||||
|
SCHANNEL: 'OFF'
|
||||||
|
ENABLE_UNICODE: 'OFF'
|
||||||
HTTP_ONLY: 'ON'
|
HTTP_ONLY: 'ON'
|
||||||
|
|
||||||
# winbuild-based builds
|
# winbuild-based builds
|
||||||
@ -237,5 +254,5 @@ skip_commits:
|
|||||||
#artifacts:
|
#artifacts:
|
||||||
# - path: '**/curl.exe'
|
# - path: '**/curl.exe'
|
||||||
# name: curl
|
# name: curl
|
||||||
# - path: '**/*.dll'
|
# - path: '**/*curl*.dll'
|
||||||
# name: libcurl dll
|
# name: libcurl dll
|
||||||
|
|||||||
118
configure.ac
118
configure.ac
@ -493,12 +493,8 @@ dnl **********************************************************************
|
|||||||
CURL_CHECK_COMPILER
|
CURL_CHECK_COMPILER
|
||||||
CURL_CHECK_NATIVE_WINDOWS
|
CURL_CHECK_NATIVE_WINDOWS
|
||||||
|
|
||||||
curl_cv_wince='no'
|
|
||||||
curl_cv_winuwp='no'
|
curl_cv_winuwp='no'
|
||||||
if test "$curl_cv_native_windows" = "yes"; then
|
if test "$curl_cv_native_windows" = "yes"; then
|
||||||
case $host_os in
|
|
||||||
mingw32ce*) curl_cv_wince='yes';;
|
|
||||||
esac
|
|
||||||
case "$CPPFLAGS" in
|
case "$CPPFLAGS" in
|
||||||
*-DWINSTORECOMPAT*) curl_cv_winuwp='yes';;
|
*-DWINSTORECOMPAT*) curl_cv_winuwp='yes';;
|
||||||
esac
|
esac
|
||||||
@ -595,15 +591,13 @@ dnl **********************************************************************
|
|||||||
CURL_CHECK_WIN32_LARGEFILE
|
CURL_CHECK_WIN32_LARGEFILE
|
||||||
CURL_CHECK_WIN32_CRYPTO
|
CURL_CHECK_WIN32_CRYPTO
|
||||||
|
|
||||||
curl_cv_apple='no'
|
|
||||||
case $host in
|
|
||||||
*-apple-*) curl_cv_apple='yes';;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if test "$curl_cv_apple" = 'yes'; then
|
|
||||||
CURL_DARWIN_CFLAGS
|
CURL_DARWIN_CFLAGS
|
||||||
|
|
||||||
|
case $host in
|
||||||
|
*-apple-*)
|
||||||
CURL_SUPPORTS_BUILTIN_AVAILABLE
|
CURL_SUPPORTS_BUILTIN_AVAILABLE
|
||||||
fi
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
curl_cv_cygwin='no'
|
curl_cv_cygwin='no'
|
||||||
case $host_os in
|
case $host_os in
|
||||||
@ -887,7 +881,7 @@ AS_HELP_STRING([--disable-telnet],[Disable TELNET support]),
|
|||||||
AC_MSG_RESULT(yes)
|
AC_MSG_RESULT(yes)
|
||||||
)
|
)
|
||||||
|
|
||||||
if test "$curl_cv_winuwp" = 'yes' -o "$curl_cv_wince" = 'yes'; then
|
if test "$curl_cv_winuwp" = 'yes'; then
|
||||||
AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET])
|
AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET])
|
||||||
CURL_DISABLE_TELNET=1
|
CURL_DISABLE_TELNET=1
|
||||||
fi
|
fi
|
||||||
@ -1165,42 +1159,11 @@ if test "$HAVE_GETHOSTBYNAME" != "1"; then
|
|||||||
])
|
])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "$HAVE_GETHOSTBYNAME" != "1"; then
|
|
||||||
if test "$curl_cv_wince" = 'yes'; then
|
|
||||||
dnl This is for Windows CE systems
|
|
||||||
winsock_LIB="-lws2"
|
|
||||||
if test ! -z "$winsock_LIB"; then
|
|
||||||
my_ac_save_LIBS=$LIBS
|
|
||||||
LIBS="$winsock_LIB $LIBS"
|
|
||||||
AC_MSG_CHECKING([for gethostbyname in $winsock_LIB])
|
|
||||||
AC_LINK_IFELSE([
|
|
||||||
AC_LANG_PROGRAM([[
|
|
||||||
#ifdef _WIN32
|
|
||||||
#ifndef WIN32_LEAN_AND_MEAN
|
|
||||||
#define WIN32_LEAN_AND_MEAN
|
|
||||||
#endif
|
|
||||||
#include <winsock2.h>
|
|
||||||
#endif
|
|
||||||
]],[[
|
|
||||||
gethostbyname("localhost");
|
|
||||||
]])
|
|
||||||
],[
|
|
||||||
AC_MSG_RESULT([yes])
|
|
||||||
HAVE_GETHOSTBYNAME="1"
|
|
||||||
],[
|
|
||||||
AC_MSG_RESULT([no])
|
|
||||||
winsock_LIB=""
|
|
||||||
LIBS=$my_ac_save_LIBS
|
|
||||||
])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# In UWP mode gethostbyname gets detected via the core libs, but some
|
# In UWP mode gethostbyname gets detected via the core libs, but some
|
||||||
# code (in6addr_any) still need ws2_32, so let us detect and add it.
|
# code (in6addr_any) still need ws2_32, so let us detect and add it.
|
||||||
if test "$HAVE_GETHOSTBYNAME" != "1" -o "$curl_cv_winuwp" = "yes"; then
|
if test "$HAVE_GETHOSTBYNAME" != "1" -o "$curl_cv_winuwp" = "yes"; then
|
||||||
if test "$curl_cv_native_windows" = "yes"; then
|
|
||||||
dnl This is for Winsock systems
|
dnl This is for Winsock systems
|
||||||
|
if test "$curl_cv_native_windows" = "yes"; then
|
||||||
winsock_LIB="-lws2_32"
|
winsock_LIB="-lws2_32"
|
||||||
if test ! -z "$winsock_LIB"; then
|
if test ! -z "$winsock_LIB"; then
|
||||||
my_ac_save_LIBS=$LIBS
|
my_ac_save_LIBS=$LIBS
|
||||||
@ -1278,8 +1241,7 @@ if test "$HAVE_GETHOSTBYNAME" != "1" -o "${with_amissl+set}" = set; then
|
|||||||
struct Library *SocketBase = NULL;
|
struct Library *SocketBase = NULL;
|
||||||
#endif
|
#endif
|
||||||
]],[[
|
]],[[
|
||||||
unsigned char host[] = "localhost";
|
gethostbyname("localhost");
|
||||||
gethostbyname(host);
|
|
||||||
]])
|
]])
|
||||||
],[
|
],[
|
||||||
AC_MSG_RESULT([yes])
|
AC_MSG_RESULT([yes])
|
||||||
@ -1753,11 +1715,12 @@ AS_HELP_STRING([--disable-ipv6],[Disable IPv6 support]),
|
|||||||
#include <netinet/in6.h>
|
#include <netinet/in6.h>
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
int s = (int)sizeof(struct sockaddr_in6);
|
struct sockaddr_in6 s;
|
||||||
(void)s;
|
(void)s;
|
||||||
return socket(AF_INET6, SOCK_STREAM, 0) > 0;
|
return socket(AF_INET6, SOCK_STREAM, 0) < 0;
|
||||||
}
|
}
|
||||||
]])
|
]])
|
||||||
],
|
],
|
||||||
@ -1768,10 +1731,6 @@ AS_HELP_STRING([--disable-ipv6],[Disable IPv6 support]),
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if test "$curl_cv_wince" = 'yes'; then
|
|
||||||
ipv6=no
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$ipv6" = yes; then
|
if test "$ipv6" = yes; then
|
||||||
curl_ipv6_msg="enabled"
|
curl_ipv6_msg="enabled"
|
||||||
AC_DEFINE(USE_IPV6, 1, [Define if you want to enable IPv6 support])
|
AC_DEFINE(USE_IPV6, 1, [Define if you want to enable IPv6 support])
|
||||||
@ -1793,7 +1752,6 @@ if test "$ipv6" = yes; then
|
|||||||
]], [[
|
]], [[
|
||||||
struct sockaddr_in6 s;
|
struct sockaddr_in6 s;
|
||||||
s.sin6_scope_id = 0;
|
s.sin6_scope_id = 0;
|
||||||
(void)s;
|
|
||||||
]])
|
]])
|
||||||
],[
|
],[
|
||||||
AC_MSG_RESULT([yes])
|
AC_MSG_RESULT([yes])
|
||||||
@ -1830,9 +1788,6 @@ int main(int argc, char **argv)
|
|||||||
],[
|
],[
|
||||||
curl_cv_writable_argv=cross
|
curl_cv_writable_argv=cross
|
||||||
])
|
])
|
||||||
if test "$curl_cv_writable_argv" = 'cross' -a "$curl_cv_apple" = 'yes'; then
|
|
||||||
curl_cv_writable_argv=yes
|
|
||||||
fi
|
|
||||||
case $curl_cv_writable_argv in
|
case $curl_cv_writable_argv in
|
||||||
yes)
|
yes)
|
||||||
AC_DEFINE(HAVE_WRITABLE_ARGV, 1, [Define this symbol if your OS supports changing the contents of argv])
|
AC_DEFINE(HAVE_WRITABLE_ARGV, 1, [Define this symbol if your OS supports changing the contents of argv])
|
||||||
@ -1978,9 +1933,11 @@ if test x"$want_gss" = xyes; then
|
|||||||
LIBS="-lgss $LIBS"
|
LIBS="-lgss $LIBS"
|
||||||
link_pkgconfig=1
|
link_pkgconfig=1
|
||||||
elif test -z "$GSSAPI_LIB_DIR"; then
|
elif test -z "$GSSAPI_LIB_DIR"; then
|
||||||
if test "$curl_cv_apple" = 'yes'; then
|
case $host in
|
||||||
|
*-apple-*)
|
||||||
LIBS="-lgssapi_krb5 -lresolv $LIBS"
|
LIBS="-lgssapi_krb5 -lresolv $LIBS"
|
||||||
else
|
;;
|
||||||
|
*)
|
||||||
if test $GSSAPI_ROOT != "/usr"; then
|
if test $GSSAPI_ROOT != "/usr"; then
|
||||||
CURL_CHECK_PKGCONFIG(mit-krb5-gssapi, $GSSAPI_ROOT/lib/pkgconfig)
|
CURL_CHECK_PKGCONFIG(mit-krb5-gssapi, $GSSAPI_ROOT/lib/pkgconfig)
|
||||||
else
|
else
|
||||||
@ -2019,7 +1976,8 @@ if test x"$want_gss" = xyes; then
|
|||||||
LIBS="-l$gss_libname $LIBS"
|
LIBS="-l$gss_libname $LIBS"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
;;
|
||||||
|
esac
|
||||||
else
|
else
|
||||||
LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
|
LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
|
||||||
LDFLAGSPC="$LDFLAGSPC $GSSAPI_LIB_DIR"
|
LDFLAGSPC="$LDFLAGSPC $GSSAPI_LIB_DIR"
|
||||||
@ -2101,14 +2059,11 @@ CURL_WITH_RUSTLS
|
|||||||
|
|
||||||
dnl link required libraries for USE_WIN32_CRYPTO or SCHANNEL_ENABLED
|
dnl link required libraries for USE_WIN32_CRYPTO or SCHANNEL_ENABLED
|
||||||
if test "x$USE_WIN32_CRYPTO" = "x1" -o "x$SCHANNEL_ENABLED" = "x1"; then
|
if test "x$USE_WIN32_CRYPTO" = "x1" -o "x$SCHANNEL_ENABLED" = "x1"; then
|
||||||
LIBS="-lcrypt32 $LIBS"
|
LIBS="-ladvapi32 -lcrypt32 $LIBS"
|
||||||
if test "$curl_cv_wince" = 'no'; then
|
|
||||||
LIBS="-ladvapi32 $LIBS"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl link bcrypt for BCryptGenRandom() (used when building for Vista or newer)
|
dnl link bcrypt for BCryptGenRandom() (used when building for Vista or newer)
|
||||||
if test "x$curl_cv_native_windows" = "xyes" -a "$curl_cv_wince" = 'no'; then
|
if test "x$curl_cv_native_windows" = "xyes"; then
|
||||||
LIBS="-lbcrypt $LIBS"
|
LIBS="-lbcrypt $LIBS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -2374,8 +2329,8 @@ if test X"$OPT_LIBSSH2" != Xno; then
|
|||||||
CPPFLAGS="$CPPFLAGS $CPP_SSH2"
|
CPPFLAGS="$CPPFLAGS $CPP_SSH2"
|
||||||
LIBS="$LIB_SSH2 $LIBS"
|
LIBS="$LIB_SSH2 $LIBS"
|
||||||
|
|
||||||
dnl check for function added in libssh2 version 1.2.8
|
dnl check for function added in libssh2 version 1.0
|
||||||
AC_CHECK_LIB(ssh2, libssh2_free)
|
AC_CHECK_LIB(ssh2, libssh2_session_block_directions)
|
||||||
|
|
||||||
AC_CHECK_HEADER(libssh2.h,
|
AC_CHECK_HEADER(libssh2.h,
|
||||||
curl_ssh_msg="enabled (libssh2)"
|
curl_ssh_msg="enabled (libssh2)"
|
||||||
@ -2653,11 +2608,7 @@ dnl ----------------------------
|
|||||||
dnl check Windows Unicode option
|
dnl check Windows Unicode option
|
||||||
dnl ----------------------------
|
dnl ----------------------------
|
||||||
|
|
||||||
if test "$curl_cv_wince" = 'yes'; then
|
|
||||||
want_winuni="yes"
|
|
||||||
else
|
|
||||||
want_winuni="no"
|
want_winuni="no"
|
||||||
fi
|
|
||||||
if test "$curl_cv_native_windows" = "yes"; then
|
if test "$curl_cv_native_windows" = "yes"; then
|
||||||
if test "$curl_cv_winuwp" = 'yes'; then
|
if test "$curl_cv_winuwp" = 'yes'; then
|
||||||
want_winuni="yes"
|
want_winuni="yes"
|
||||||
@ -2781,7 +2732,8 @@ dnl Check for the presence of AppleIDN
|
|||||||
dnl **********************************************************************
|
dnl **********************************************************************
|
||||||
|
|
||||||
tst_links_appleidn='no'
|
tst_links_appleidn='no'
|
||||||
if test "$curl_cv_apple" = 'yes'; then
|
case $host in
|
||||||
|
*-apple-*)
|
||||||
AC_MSG_CHECKING([whether to build with Apple IDN])
|
AC_MSG_CHECKING([whether to build with Apple IDN])
|
||||||
OPT_IDN="default"
|
OPT_IDN="default"
|
||||||
AC_ARG_WITH(apple-idn,
|
AC_ARG_WITH(apple-idn,
|
||||||
@ -2808,7 +2760,8 @@ AS_HELP_STRING([--without-apple-idn],[Disable AppleIDN]),
|
|||||||
AC_MSG_RESULT([no])
|
AC_MSG_RESULT([no])
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
dnl **********************************************************************
|
dnl **********************************************************************
|
||||||
dnl Check for the presence of libidn2
|
dnl Check for the presence of libidn2
|
||||||
@ -4052,6 +4005,8 @@ case $host_os in
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
TYPE_IN_ADDR_T
|
||||||
|
|
||||||
TYPE_SOCKADDR_STORAGE
|
TYPE_SOCKADDR_STORAGE
|
||||||
|
|
||||||
CURL_CHECK_FUNC_SELECT
|
CURL_CHECK_FUNC_SELECT
|
||||||
@ -4089,6 +4044,8 @@ CURL_CHECK_FUNC_SOCKET
|
|||||||
CURL_CHECK_FUNC_SOCKETPAIR
|
CURL_CHECK_FUNC_SOCKETPAIR
|
||||||
CURL_CHECK_FUNC_STRDUP
|
CURL_CHECK_FUNC_STRDUP
|
||||||
CURL_CHECK_FUNC_STRERROR_R
|
CURL_CHECK_FUNC_STRERROR_R
|
||||||
|
CURL_CHECK_FUNC_STRTOK_R
|
||||||
|
CURL_CHECK_FUNC_STRTOLL
|
||||||
|
|
||||||
case $host in
|
case $host in
|
||||||
*msdosdjgpp)
|
*msdosdjgpp)
|
||||||
@ -4108,12 +4065,14 @@ AC_CHECK_FUNCS([\
|
|||||||
getpwuid_r \
|
getpwuid_r \
|
||||||
getrlimit \
|
getrlimit \
|
||||||
gettimeofday \
|
gettimeofday \
|
||||||
|
if_nametoindex \
|
||||||
mach_absolute_time \
|
mach_absolute_time \
|
||||||
pipe \
|
pipe \
|
||||||
poll \
|
poll \
|
||||||
sendmsg \
|
sendmsg \
|
||||||
sendmmsg \
|
sendmmsg \
|
||||||
setlocale \
|
setlocale \
|
||||||
|
setmode \
|
||||||
setrlimit \
|
setrlimit \
|
||||||
snprintf \
|
snprintf \
|
||||||
utime \
|
utime \
|
||||||
@ -4121,22 +4080,15 @@ AC_CHECK_FUNCS([\
|
|||||||
])
|
])
|
||||||
|
|
||||||
if test "$curl_cv_native_windows" != 'yes'; then
|
if test "$curl_cv_native_windows" != 'yes'; then
|
||||||
AC_CHECK_FUNCS([\
|
AC_CHECK_FUNCS([sched_yield])
|
||||||
if_nametoindex \
|
|
||||||
realpath \
|
|
||||||
sched_yield \
|
|
||||||
])
|
|
||||||
CURL_CHECK_FUNC_STRCASECMP
|
CURL_CHECK_FUNC_STRCASECMP
|
||||||
CURL_CHECK_FUNC_STRCMPI
|
CURL_CHECK_FUNC_STRCMPI
|
||||||
CURL_CHECK_FUNC_STRICMP
|
CURL_CHECK_FUNC_STRICMP
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "$curl_cv_wince" = 'no'; then
|
|
||||||
AC_CHECK_FUNCS([setmode])
|
|
||||||
if test "$curl_cv_native_windows" = 'yes' -o "$curl_cv_cygwin" = 'yes'; then
|
if test "$curl_cv_native_windows" = 'yes' -o "$curl_cv_cygwin" = 'yes'; then
|
||||||
AC_CHECK_FUNCS([_setmode])
|
AC_CHECK_FUNCS([_setmode])
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
|
|
||||||
if test -z "$ssl_backends"; then
|
if test -z "$ssl_backends"; then
|
||||||
AC_CHECK_FUNCS([arc4random])
|
AC_CHECK_FUNCS([arc4random])
|
||||||
@ -4184,7 +4136,7 @@ AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
|
|||||||
CURL_CHECK_LIB_ARES
|
CURL_CHECK_LIB_ARES
|
||||||
CURL_CHECK_OPTION_THREADED_RESOLVER
|
CURL_CHECK_OPTION_THREADED_RESOLVER
|
||||||
|
|
||||||
if test "$ipv6" = yes -a "$curl_cv_apple" = 'yes'; then
|
if test "$ipv6" = yes; then
|
||||||
CURL_DARWIN_SYSTEMCONFIGURATION
|
CURL_DARWIN_SYSTEMCONFIGURATION
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -4515,7 +4467,7 @@ AS_HELP_STRING([--disable-unix-sockets],[Disable Unix domain sockets]),
|
|||||||
want_unix_sockets=auto
|
want_unix_sockets=auto
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
if test "x$want_unix_sockets" != "xno" -a "$curl_cv_wince" = 'no'; then
|
if test "x$want_unix_sockets" != "xno"; then
|
||||||
if test "x$curl_cv_native_windows" = "xyes"; then
|
if test "x$curl_cv_native_windows" = "xyes"; then
|
||||||
USE_UNIX_SOCKETS=1
|
USE_UNIX_SOCKETS=1
|
||||||
AC_DEFINE(USE_UNIX_SOCKETS, 1, [Use Unix domain sockets])
|
AC_DEFINE(USE_UNIX_SOCKETS, 1, [Use Unix domain sockets])
|
||||||
@ -5065,7 +5017,7 @@ if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1" \
|
|||||||
-o "x$USE_THREADS_WIN32" = "x1"; then
|
-o "x$USE_THREADS_WIN32" = "x1"; then
|
||||||
SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
|
SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
|
||||||
fi
|
fi
|
||||||
if test "x$USE_ARES" = "x1" -a "$want_threaded_resolver" = "yes" -a "x$want_httpsrr" != "xno"; then
|
if test "x$USE_ARES" = "x1" -a "$want_threaded_resolver" = "yes"; then
|
||||||
SUPPORT_FEATURES="$SUPPORT_FEATURES asyn-rr"
|
SUPPORT_FEATURES="$SUPPORT_FEATURES asyn-rr"
|
||||||
fi
|
fi
|
||||||
if test "x$IDN_ENABLED" = "x1"; then
|
if test "x$IDN_ENABLED" = "x1"; then
|
||||||
|
|||||||
@ -137,7 +137,7 @@ for a list of these algorithms. Also, (since curl 7.77.0)
|
|||||||
[documentation for the Windows version in
|
[documentation for the Windows version in
|
||||||
use](https://learn.microsoft.com/en-us/windows/win32/secauthn/cipher-suites-in-schannel)
|
use](https://learn.microsoft.com/en-us/windows/win32/secauthn/cipher-suites-in-schannel)
|
||||||
to see how that affects the cipher suite selection. When not specifying the
|
to see how that affects the cipher suite selection. When not specifying the
|
||||||
`--ciphers` and `--tls13-ciphers` options curl passes this flag by default.
|
`--chiphers` and `--tl13-ciphers` options curl passes this flag by default.
|
||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
|
|||||||
@ -43,19 +43,15 @@ To fix before we remove the experimental label:
|
|||||||
|
|
||||||
Building curl with ngtcp2 involves 3 components: `ngtcp2` itself, `nghttp3` and a QUIC supporting TLS library. The supported TLS libraries are covered below.
|
Building curl with ngtcp2 involves 3 components: `ngtcp2` itself, `nghttp3` and a QUIC supporting TLS library. The supported TLS libraries are covered below.
|
||||||
|
|
||||||
While any version of `ngtcp2` and `nghttp3` from v1.0.0 on are expected to
|
* `ngtcp2`: v1.2.0
|
||||||
work, using the latest versions often brings functional and performance
|
* `nghttp3`: v1.1.0
|
||||||
improvements.
|
|
||||||
|
|
||||||
The build examples use `$NGHTTP3_VERION` and `$NGTCP2_VERION` as placeholders
|
|
||||||
for the version you build.
|
|
||||||
|
|
||||||
## Build with quictls
|
## Build with quictls
|
||||||
|
|
||||||
OpenSSL does not offer the required APIs for building a QUIC client. You need
|
OpenSSL does not offer the required APIs for building a QUIC client. You need
|
||||||
to use a TLS library that has such APIs and that works with *ngtcp2*.
|
to use a TLS library that has such APIs and that works with *ngtcp2*.
|
||||||
|
|
||||||
Build quictls (any `+quic` tagged version works):
|
Build quictls:
|
||||||
|
|
||||||
% git clone --depth 1 -b openssl-3.1.4+quic https://github.com/quictls/openssl
|
% git clone --depth 1 -b openssl-3.1.4+quic https://github.com/quictls/openssl
|
||||||
% cd openssl
|
% cd openssl
|
||||||
@ -66,7 +62,7 @@ Build quictls (any `+quic` tagged version works):
|
|||||||
Build nghttp3:
|
Build nghttp3:
|
||||||
|
|
||||||
% cd ..
|
% cd ..
|
||||||
% git clone -b $NGHTTP3_VERION https://github.com/ngtcp2/nghttp3
|
% git clone -b v1.1.0 https://github.com/ngtcp2/nghttp3
|
||||||
% cd nghttp3
|
% cd nghttp3
|
||||||
% git submodule update --init
|
% git submodule update --init
|
||||||
% autoreconf -fi
|
% autoreconf -fi
|
||||||
@ -77,7 +73,7 @@ Build nghttp3:
|
|||||||
Build ngtcp2:
|
Build ngtcp2:
|
||||||
|
|
||||||
% cd ..
|
% cd ..
|
||||||
% git clone -b $NGTCP2_VERION https://github.com/ngtcp2/ngtcp2
|
% git clone -b v1.2.0 https://github.com/ngtcp2/ngtcp2
|
||||||
% cd ngtcp2
|
% cd ngtcp2
|
||||||
% autoreconf -fi
|
% autoreconf -fi
|
||||||
% ./configure PKG_CONFIG_PATH=<somewhere1>/lib/pkgconfig:<somewhere2>/lib/pkgconfig LDFLAGS="-Wl,-rpath,<somewhere1>/lib" --prefix=<somewhere3> --enable-lib-only
|
% ./configure PKG_CONFIG_PATH=<somewhere1>/lib/pkgconfig:<somewhere2>/lib/pkgconfig LDFLAGS="-Wl,-rpath,<somewhere1>/lib" --prefix=<somewhere3> --enable-lib-only
|
||||||
@ -110,7 +106,7 @@ Build GnuTLS:
|
|||||||
Build nghttp3:
|
Build nghttp3:
|
||||||
|
|
||||||
% cd ..
|
% cd ..
|
||||||
% git clone -b $NGHTTP3_VERION https://github.com/ngtcp2/nghttp3
|
% git clone -b v1.1.0 https://github.com/ngtcp2/nghttp3
|
||||||
% cd nghttp3
|
% cd nghttp3
|
||||||
% git submodule update --init
|
% git submodule update --init
|
||||||
% autoreconf -fi
|
% autoreconf -fi
|
||||||
@ -121,7 +117,7 @@ Build nghttp3:
|
|||||||
Build ngtcp2:
|
Build ngtcp2:
|
||||||
|
|
||||||
% cd ..
|
% cd ..
|
||||||
% git clone -b $NGTCP2_VERION https://github.com/ngtcp2/ngtcp2
|
% git clone -b v1.2.0 https://github.com/ngtcp2/ngtcp2
|
||||||
% cd ngtcp2
|
% cd ngtcp2
|
||||||
% autoreconf -fi
|
% autoreconf -fi
|
||||||
% ./configure PKG_CONFIG_PATH=<somewhere1>/lib/pkgconfig:<somewhere2>/lib/pkgconfig LDFLAGS="-Wl,-rpath,<somewhere1>/lib" --prefix=<somewhere3> --enable-lib-only --with-gnutls
|
% ./configure PKG_CONFIG_PATH=<somewhere1>/lib/pkgconfig:<somewhere2>/lib/pkgconfig LDFLAGS="-Wl,-rpath,<somewhere1>/lib" --prefix=<somewhere3> --enable-lib-only --with-gnutls
|
||||||
@ -152,7 +148,7 @@ Build wolfSSL:
|
|||||||
Build nghttp3:
|
Build nghttp3:
|
||||||
|
|
||||||
% cd ..
|
% cd ..
|
||||||
% git clone -b $NGHTTP3_VERION https://github.com/ngtcp2/nghttp3
|
% git clone -b v1.1.0 https://github.com/ngtcp2/nghttp3
|
||||||
% cd nghttp3
|
% cd nghttp3
|
||||||
% git submodule update --init
|
% git submodule update --init
|
||||||
% autoreconf -fi
|
% autoreconf -fi
|
||||||
@ -163,7 +159,7 @@ Build nghttp3:
|
|||||||
Build ngtcp2:
|
Build ngtcp2:
|
||||||
|
|
||||||
% cd ..
|
% cd ..
|
||||||
% git clone -b $NGTCP2_VERION https://github.com/ngtcp2/ngtcp2
|
% git clone -b v1.2.0 https://github.com/ngtcp2/ngtcp2
|
||||||
% cd ngtcp2
|
% cd ngtcp2
|
||||||
% autoreconf -fi
|
% autoreconf -fi
|
||||||
% ./configure PKG_CONFIG_PATH=<somewhere1>/lib/pkgconfig:<somewhere2>/lib/pkgconfig LDFLAGS="-Wl,-rpath,<somewhere1>/lib" --prefix=<somewhere3> --enable-lib-only --with-wolfssl
|
% ./configure PKG_CONFIG_PATH=<somewhere1>/lib/pkgconfig:<somewhere2>/lib/pkgconfig LDFLAGS="-Wl,-rpath,<somewhere1>/lib" --prefix=<somewhere3> --enable-lib-only --with-wolfssl
|
||||||
@ -214,12 +210,10 @@ Build curl:
|
|||||||
|
|
||||||
QUIC support is **EXPERIMENTAL**
|
QUIC support is **EXPERIMENTAL**
|
||||||
|
|
||||||
Use OpenSSL 3.3.1 or newer (QUIC support was added in 3.3.0, with
|
Build OpenSSL 3.3.1:
|
||||||
shortcomings on some platforms like macOS). 3.4.1 or newer is recommended.
|
|
||||||
Build via:
|
|
||||||
|
|
||||||
% cd ..
|
% cd ..
|
||||||
% git clone -b $OPENSSL_VERSION https://github.com/openssl/openssl
|
% git clone -b openssl-3.3.1 https://github.com/openssl/openssl
|
||||||
% cd openssl
|
% cd openssl
|
||||||
% ./config enable-tls1_3 --prefix=<somewhere> --libdir=lib
|
% ./config enable-tls1_3 --prefix=<somewhere> --libdir=lib
|
||||||
% make
|
% make
|
||||||
@ -228,7 +222,7 @@ Build via:
|
|||||||
Build nghttp3:
|
Build nghttp3:
|
||||||
|
|
||||||
% cd ..
|
% cd ..
|
||||||
% git clone -b $NGHTTP3_VERION https://github.com/ngtcp2/nghttp3
|
% git clone -b v1.1.0 https://github.com/ngtcp2/nghttp3
|
||||||
% cd nghttp3
|
% cd nghttp3
|
||||||
% git submodule update --init
|
% git submodule update --init
|
||||||
% autoreconf -fi
|
% autoreconf -fi
|
||||||
@ -251,7 +245,7 @@ You can build curl with cmake:
|
|||||||
% cd ..
|
% cd ..
|
||||||
% git clone https://github.com/curl/curl
|
% git clone https://github.com/curl/curl
|
||||||
% cd curl
|
% cd curl
|
||||||
% cmake -B bld -DCURL_USE_OPENSSL=ON -DUSE_OPENSSL_QUIC=ON
|
% cmake . -B bld -DCURL_USE_OPENSSL=ON -DUSE_OPENSSL_QUIC=ON
|
||||||
% cmake --build bld
|
% cmake --build bld
|
||||||
% cmake --install bld
|
% cmake --install bld
|
||||||
|
|
||||||
|
|||||||
@ -21,12 +21,6 @@ CMake's GUIs.
|
|||||||
A CMake configuration of curl is similar to the autotools build of curl.
|
A CMake configuration of curl is similar to the autotools build of curl.
|
||||||
It consists of the following steps after you have unpacked the source.
|
It consists of the following steps after you have unpacked the source.
|
||||||
|
|
||||||
We recommend building with CMake on Windows. For instructions on migrating
|
|
||||||
from the `projects/Windows` Visual Studio solution files, see
|
|
||||||
[this section](#migrating-from-visual-studio-ide-project-files). For
|
|
||||||
instructions on migrating from the winbuild builds, see
|
|
||||||
[the following section](#migrating-from-winbuild-builds).
|
|
||||||
|
|
||||||
## Using `cmake`
|
## Using `cmake`
|
||||||
|
|
||||||
You can configure for in source tree builds or for a build tree
|
You can configure for in source tree builds or for a build tree
|
||||||
@ -37,14 +31,10 @@ that is apart from the source tree.
|
|||||||
$ cmake -B .
|
$ cmake -B .
|
||||||
|
|
||||||
- Build in a separate directory (parallel to the curl source tree in this
|
- Build in a separate directory (parallel to the curl source tree in this
|
||||||
example). The build directory is created for you. This is recommended over
|
example). The build directory is created for you.
|
||||||
building in the source tree to separate source and build artifacts.
|
|
||||||
|
|
||||||
$ cmake -B ../curl-build
|
$ cmake -B ../curl-build
|
||||||
|
|
||||||
For the full list of CMake build configuration variables see
|
|
||||||
[the corresponding section](#cmake-build-options).
|
|
||||||
|
|
||||||
### Fallback for CMake before version 3.13
|
### Fallback for CMake before version 3.13
|
||||||
|
|
||||||
CMake before version 3.13 does not support the `-B` option. In that case,
|
CMake before version 3.13 does not support the `-B` option. In that case,
|
||||||
@ -139,12 +129,6 @@ Install to default location (you have to specify the build directory).
|
|||||||
|
|
||||||
$ cmake --install ../curl-build
|
$ cmake --install ../curl-build
|
||||||
|
|
||||||
Do not use `--prefix` to change the installation prefix as the output produced
|
|
||||||
by the `curl-config` script is determined at CMake configure time. If you want
|
|
||||||
to set a custom install prefix for curl, set
|
|
||||||
[`CMAKE_INSTALL_PREFIX`](https://cmake.org/cmake/help/latest/variable/CMAKE_INSTALL_PREFIX.html)
|
|
||||||
when configuring the CMake build.
|
|
||||||
|
|
||||||
### Fallback for CMake before version 3.15
|
### Fallback for CMake before version 3.15
|
||||||
|
|
||||||
CMake before version 3.15 does not support the `--install` option. In that
|
CMake before version 3.15 does not support the `--install` option. In that
|
||||||
@ -155,68 +139,6 @@ assumes that CMake generates `Makefile`:
|
|||||||
$ cd ../curl-build
|
$ cd ../curl-build
|
||||||
$ make install
|
$ make install
|
||||||
|
|
||||||
# CMake usage
|
|
||||||
|
|
||||||
Just as curl can be built and installed using CMake, it can also be used from
|
|
||||||
CMake.
|
|
||||||
|
|
||||||
## Using `find_package`
|
|
||||||
|
|
||||||
To locate libcurl from CMake, one can use the standard
|
|
||||||
[`find_package`](https://cmake.org/cmake/help/latest/command/find_package.html)
|
|
||||||
command in the typical fashion:
|
|
||||||
|
|
||||||
```cmake
|
|
||||||
find_package(CURL 8.12.0 REQUIRED) # FATAL_ERROR if CURL is not found
|
|
||||||
```
|
|
||||||
|
|
||||||
This invokes the CMake-provided
|
|
||||||
[FindCURL](https://cmake.org/cmake/help/latest/module/FindCURL.html) find module,
|
|
||||||
which first performs a search using the `find_package`
|
|
||||||
[config mode](https://cmake.org/cmake/help/latest/command/find_package.html#config-mode-search-procedure).
|
|
||||||
This is supported by the `CURLConfig.cmake` CMake config script which is
|
|
||||||
available if the given CURL was built and installed using CMake.
|
|
||||||
|
|
||||||
### Detecting CURL features/protocols
|
|
||||||
|
|
||||||
Since version 8.12.0, `CURLConfig.cmake` publishes the supported CURL features
|
|
||||||
and protocols (see [release notes](https://curl.se/ch/8.12.0.html)). These can
|
|
||||||
be specified using the `find_package` keywords `COMPONENTS` and
|
|
||||||
`OPTIONAL_COMPONENTS`, with protocols in all caps, e.g. `HTTPS`, `LDAP`, while
|
|
||||||
features should be in their original sentence case, e.g. `AsynchDNS`,
|
|
||||||
`UnixSockets`. If any of the `COMPONENTS` are missing, then CURL is considered
|
|
||||||
as *not* found.
|
|
||||||
|
|
||||||
Here is an example of using `COMPONENTS` and `OPTIONAL_COMPONENTS` in
|
|
||||||
`find_package` with CURL:
|
|
||||||
|
|
||||||
```cmake
|
|
||||||
# CURL_FOUND is FALSE if no HTTPS but brotli and zstd can be missing
|
|
||||||
find_package(CURL 8.12.0 COMPONENTS HTTPS OPTIONAL_COMPONENTS brotli zstd)
|
|
||||||
```
|
|
||||||
|
|
||||||
One can also check the defined `CURL_SUPPORTS_<feature-or-protocol>` variables
|
|
||||||
if a particular feature/protocol is supported. For example:
|
|
||||||
|
|
||||||
```cmake
|
|
||||||
# check HTTPS
|
|
||||||
if(CURL_SUPPORTS_HTTPS)
|
|
||||||
message(STATUS "CURL supports HTTPS")
|
|
||||||
else()
|
|
||||||
message(STATUS "CURL does NOT support HTTPS")
|
|
||||||
endif()
|
|
||||||
```
|
|
||||||
|
|
||||||
### Linking against libcurl
|
|
||||||
|
|
||||||
To link a CMake target against libcurl one can use
|
|
||||||
[`target_link_libraries`](https://cmake.org/cmake/help/latest/command/target_link_libraries.html)
|
|
||||||
as usual:
|
|
||||||
|
|
||||||
```cmake
|
|
||||||
target_link_libraries(my_target PRIVATE CURL::libcurl)
|
|
||||||
```
|
|
||||||
|
|
||||||
# CMake build options
|
# CMake build options
|
||||||
|
|
||||||
- `BUILD_CURL_EXE`: Build curl executable. Default: `ON`
|
- `BUILD_CURL_EXE`: Build curl executable. Default: `ON`
|
||||||
@ -238,17 +160,16 @@ target_link_libraries(my_target PRIVATE CURL::libcurl)
|
|||||||
- `CURL_LIBCURL_VERSIONED_SYMBOLS`: Enable libcurl versioned symbols. Default: `OFF`
|
- `CURL_LIBCURL_VERSIONED_SYMBOLS`: Enable libcurl versioned symbols. Default: `OFF`
|
||||||
- `CURL_LIBCURL_VERSIONED_SYMBOLS_PREFIX`: Override default versioned symbol prefix. Default: `<TLS-BACKEND>_` or `MULTISSL_`
|
- `CURL_LIBCURL_VERSIONED_SYMBOLS_PREFIX`: Override default versioned symbol prefix. Default: `<TLS-BACKEND>_` or `MULTISSL_`
|
||||||
- `CURL_LTO`: Enable compiler Link Time Optimizations. Default: `OFF`
|
- `CURL_LTO`: Enable compiler Link Time Optimizations. Default: `OFF`
|
||||||
- `CURL_STATIC_CRT`: Build libcurl with static CRT with MSVC (`/MT`) (requires static or no curl executable). Default: `OFF`
|
- `CURL_STATIC_CRT`: Build libcurl with static CRT with MSVC (`/MT`). Default: `OFF`
|
||||||
- `CURL_TARGET_WINDOWS_VERSION`: Minimum target Windows version as hex string.
|
- `CURL_TARGET_WINDOWS_VERSION`: Minimum target Windows version as hex string.
|
||||||
- `CURL_TEST_BUNDLES`: Bundle `libtest` and `unittest` tests into single binaries. Default: `OFF`
|
- `CURL_TEST_BUNDLES`: Bundle `libtest` and `unittest` tests into single binaries. Default: `OFF`
|
||||||
- `CURL_WERROR`: Turn compiler warnings into errors. Default: `OFF`
|
- `CURL_WERROR`: Turn compiler warnings into errors. Default: `OFF`
|
||||||
- `ENABLE_CURLDEBUG`: Enable TrackMemory debug feature. Default: =`ENABLE_DEBUG`
|
- `ENABLE_CURLDEBUG`: Enable TrackMemory debug feature. Default: =`ENABLE_DEBUG`
|
||||||
- `ENABLE_CURL_MANUAL`: Build the man page for curl and enable its `-M`/`--manual` option. Default: `ON`
|
- `ENABLE_CURL_MANUAL`: Build the man page for curl and enable its `-M`/`--manual` option. Default: `ON`
|
||||||
- `ENABLE_DEBUG`: Enable curl debug features (for developing curl itself). Default: `OFF`
|
- `ENABLE_DEBUG`: Enable curl debug features (for developing curl itself). Default: `OFF`
|
||||||
- `IMPORT_LIB_SUFFIX`: Import library suffix. Default: `_imp` for MSVC-like toolchains, otherwise empty.
|
- `IMPORT_LIB_SUFFIX`: Import library suffix. Default: `_imp`
|
||||||
- `LIBCURL_OUTPUT_NAME`: Basename of the curl library. Default: `libcurl`
|
- `LIBCURL_OUTPUT_NAME`: Basename of the curl library. Default: `libcurl`
|
||||||
- `PICKY_COMPILER`: Enable picky compiler options. Default: `ON`
|
- `PICKY_COMPILER`: Enable picky compiler options. Default: `ON`
|
||||||
- `SHARE_LIB_OBJECT`: Build shared and static libcurl in a single pass (requires CMake 3.12 or newer). Default: `ON` for Windows
|
|
||||||
- `STATIC_LIB_SUFFIX`: Static library suffix. Default: (empty)
|
- `STATIC_LIB_SUFFIX`: Static library suffix. Default: (empty)
|
||||||
|
|
||||||
## CA bundle options
|
## CA bundle options
|
||||||
@ -384,7 +305,6 @@ Details via CMake
|
|||||||
- `OPENSSL_USE_STATIC_LIBS`: Look for static OpenSSL libraries.
|
- `OPENSSL_USE_STATIC_LIBS`: Look for static OpenSSL libraries.
|
||||||
- `ZLIB_INCLUDE_DIR`: The zlib include directory.
|
- `ZLIB_INCLUDE_DIR`: The zlib include directory.
|
||||||
- `ZLIB_LIBRARY`: Path to `zlib` library.
|
- `ZLIB_LIBRARY`: Path to `zlib` library.
|
||||||
- `ZLIB_USE_STATIC_LIBS`: Look for static ZLIB library (requires CMake v3.24).
|
|
||||||
|
|
||||||
## Dependency options
|
## Dependency options
|
||||||
|
|
||||||
@ -458,7 +378,7 @@ Details via CMake
|
|||||||
|
|
||||||
# Migrating from Visual Studio IDE Project Files
|
# Migrating from Visual Studio IDE Project Files
|
||||||
|
|
||||||
We recommend using CMake to build curl with MSVC.
|
We recommend CMake to build curl with MSVC.
|
||||||
|
|
||||||
The project build files reside in project/Windows/VC\* for VS2010, VS2010 and
|
The project build files reside in project/Windows/VC\* for VS2010, VS2010 and
|
||||||
VS2013 respectively.
|
VS2013 respectively.
|
||||||
@ -478,8 +398,8 @@ Configuration element | Equivalent CMake options
|
|||||||
`Win32` | `-A Win32`
|
`Win32` | `-A Win32`
|
||||||
`DLL` | `BUILD_SHARED_LIBS=ON`, `BUILD_STATIC_LIBS=OFF`, (default)
|
`DLL` | `BUILD_SHARED_LIBS=ON`, `BUILD_STATIC_LIBS=OFF`, (default)
|
||||||
`LIB` | `BUILD_SHARED_LIBS=OFF`, `BUILD_STATIC_LIBS=ON`
|
`LIB` | `BUILD_SHARED_LIBS=OFF`, `BUILD_STATIC_LIBS=ON`
|
||||||
`Debug` | `CMAKE_BUILD_TYPE=Debug` (`-G "NMake Makefiles"` only)
|
`Debug` | `CMAKE_BUILD_TYPE=Debug`
|
||||||
`Release` | `CMAKE_BUILD_TYPE=Release` (`-G "NMake Makefiles"` only)
|
`Release` | `CMAKE_BUILD_TYPE=Release`
|
||||||
`DLL Windows SSPI` | `CURL_USE_SCHANNEL=ON` (with SSPI enabled by default)
|
`DLL Windows SSPI` | `CURL_USE_SCHANNEL=ON` (with SSPI enabled by default)
|
||||||
`DLL OpenSSL` | `CURL_USE_OPENSSL=ON`, optional: `OPENSSL_ROOT_DIR`, `OPENSSL_USE_STATIC_LIBS=ON`
|
`DLL OpenSSL` | `CURL_USE_OPENSSL=ON`, optional: `OPENSSL_ROOT_DIR`, `OPENSSL_USE_STATIC_LIBS=ON`
|
||||||
`DLL libssh2` | `CURL_USE_LIBSSH2=ON`, optional: `LIBSSH2_INCLUDE_DIR`, `LIBSSH2_LIBRARY`
|
`DLL libssh2` | `CURL_USE_LIBSSH2=ON`, optional: `LIBSSH2_INCLUDE_DIR`, `LIBSSH2_LIBRARY`
|
||||||
@ -493,13 +413,7 @@ For example these commands:
|
|||||||
|
|
||||||
translate to:
|
translate to:
|
||||||
|
|
||||||
> cmake . -G "Visual Studio 12 2013" -A x64 -DCURL_USE_SCHANNEL=ON -DUSE_WIN32_IDN=ON -DCURL_USE_LIBPSL=OFF
|
> cmake . -G "Visual Studio 12 2013" -A x64 -DCMAKE_BUILD_TYPE=Debug -DCURL_USE_SCHANNEL=ON -DUSE_WIN32_IDN=ON -DCURL_USE_LIBPSL=OFF
|
||||||
> cmake --build . --config Debug --parallel
|
|
||||||
|
|
||||||
We do *not* specify `-DCMAKE_BUILD_TYPE=Debug` here as we might do for the
|
|
||||||
`"NMake Makefiles"` generator because the Visual Studio generators are
|
|
||||||
[multi-config generators](https://cmake.org/cmake/help/latest/prop_gbl/GENERATOR_IS_MULTI_CONFIG.html)
|
|
||||||
and therefore ignore the value of `CMAKE_BUILD_TYPE`.
|
|
||||||
|
|
||||||
# Migrating from winbuild builds
|
# Migrating from winbuild builds
|
||||||
|
|
||||||
@ -522,7 +436,7 @@ winbuild options | Equivalent CMake options
|
|||||||
`DEBUG` | `CMAKE_BUILD_TYPE=Debug`
|
`DEBUG` | `CMAKE_BUILD_TYPE=Debug`
|
||||||
`GEN_PDB` | `CMAKE_EXE_LINKER_FLAGS=/Fd<path>`, `CMAKE_SHARED_LINKER_FLAGS=/Fd<path>`
|
`GEN_PDB` | `CMAKE_EXE_LINKER_FLAGS=/Fd<path>`, `CMAKE_SHARED_LINKER_FLAGS=/Fd<path>`
|
||||||
`LIB_NAME_DLL`, `LIB_NAME_STATIC` | `IMPORT_LIB_SUFFIX`, `LIBCURL_OUTPUT_NAME`, `STATIC_LIB_SUFFIX`
|
`LIB_NAME_DLL`, `LIB_NAME_STATIC` | `IMPORT_LIB_SUFFIX`, `LIBCURL_OUTPUT_NAME`, `STATIC_LIB_SUFFIX`
|
||||||
`VC`: `<N>` | see the CMake [Visual Studio generators](https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html#visual-studio-generators)
|
`VC` | see CMake `-G` [options](https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html)
|
||||||
`MACHINE`: `x64`, `x86` | `-A x64`, `-A Win32`
|
`MACHINE`: `x64`, `x86` | `-A x64`, `-A Win32`
|
||||||
`MODE`: `dll`, `static` | `BUILD_SHARED_LIBS=ON/OFF`, `BUILD_STATIC_LIBS=ON/OFF`, `BUILD_STATIC_CURL=ON/OFF` (default: dll)
|
`MODE`: `dll`, `static` | `BUILD_SHARED_LIBS=ON/OFF`, `BUILD_STATIC_LIBS=ON/OFF`, `BUILD_STATIC_CURL=ON/OFF` (default: dll)
|
||||||
`RTLIBCFG`: `static` | `CURL_STATIC_CRT=ON`
|
`RTLIBCFG`: `static` | `CURL_STATIC_CRT=ON`
|
||||||
@ -552,8 +466,4 @@ For example this command-line:
|
|||||||
|
|
||||||
translates to:
|
translates to:
|
||||||
|
|
||||||
> cmake . -G "Visual Studio 17 2022" -A x64 -DBUILD_SHARED_LIBS=ON -DOPENSSL_ROOT_DIR=C:\OpenSSL -DCURL_USE_OPENSSL=ON -DENABLE_UNICODE=ON -DCURL_USE_LIBPSL=OFF
|
> cmake . -G "Visual Studio 17 2022" -A x64 -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=ON -DOPENSSL_ROOT_DIR=C:\OpenSSL -DCURL_USE_OPENSSL=ON -DENABLE_UNICODE=ON -DCURL_USE_LIBPSL=OFF
|
||||||
> cmake --build . --config Debug
|
|
||||||
|
|
||||||
We use `--config` with `cmake --build` because the Visual Studio CMake
|
|
||||||
generators are multi-config and therefore ignore `CMAKE_BUILD_TYPE`.
|
|
||||||
|
|||||||
@ -24,13 +24,11 @@ versions of libs and build tools.
|
|||||||
|
|
||||||
We aim to support these or later versions.
|
We aim to support these or later versions.
|
||||||
|
|
||||||
- OpenSSL 1.0.2a
|
- OpenSSL 0.9.7
|
||||||
- LibreSSL 2.9.1
|
|
||||||
- GnuTLS 3.1.10
|
- GnuTLS 3.1.10
|
||||||
- zlib 1.2.0.4
|
- zlib 1.2.0.4
|
||||||
- libssh2 1.2.8
|
- libssh2 1.0
|
||||||
- c-ares 1.6.0
|
- c-ares 1.16.0
|
||||||
- libssh 0.9.0
|
|
||||||
- libidn2 2.0.0
|
- libidn2 2.0.0
|
||||||
- wolfSSL 3.4.6
|
- wolfSSL 3.4.6
|
||||||
- OpenLDAP 2.0
|
- OpenLDAP 2.0
|
||||||
|
|||||||
@ -17,6 +17,7 @@ problems may have been fixed or changed somewhat since this was written.
|
|||||||
2.1 IMAPS connection fails with Rustls error
|
2.1 IMAPS connection fails with Rustls error
|
||||||
2.3 Unable to use PKCS12 certificate with Secure Transport
|
2.3 Unable to use PKCS12 certificate with Secure Transport
|
||||||
2.4 Secure Transport does not import PKCS#12 client certificates without a password
|
2.4 Secure Transport does not import PKCS#12 client certificates without a password
|
||||||
|
2.5 Client cert handling with Issuer DN differs between backends
|
||||||
2.7 Client cert (MTLS) issues with Schannel
|
2.7 Client cert (MTLS) issues with Schannel
|
||||||
2.11 Schannel TLS 1.2 handshake bug in old Windows versions
|
2.11 Schannel TLS 1.2 handshake bug in old Windows versions
|
||||||
2.13 CURLOPT_CERTINFO results in CURLE_OUT_OF_MEMORY with Schannel
|
2.13 CURLOPT_CERTINFO results in CURLE_OUT_OF_MEMORY with Schannel
|
||||||
@ -67,8 +68,7 @@ problems may have been fixed or changed somewhat since this was written.
|
|||||||
9.4 libssh blocking and infinite loop problem
|
9.4 libssh blocking and infinite loop problem
|
||||||
9.5 Cygwin: "WARNING: UNPROTECTED PRIVATE KEY FILE!"
|
9.5 Cygwin: "WARNING: UNPROTECTED PRIVATE KEY FILE!"
|
||||||
|
|
||||||
10. Connection
|
10. SOCKS
|
||||||
10.1 --interface with link-scoped IPv6 address
|
|
||||||
|
|
||||||
11. Internals
|
11. Internals
|
||||||
11.1 gssapi library name + version is missing in curl_version_info()
|
11.1 gssapi library name + version is missing in curl_version_info()
|
||||||
@ -136,6 +136,14 @@ problems may have been fixed or changed somewhat since this was written.
|
|||||||
function rejects certificates that do not have a password.
|
function rejects certificates that do not have a password.
|
||||||
https://github.com/curl/curl/issues/1308
|
https://github.com/curl/curl/issues/1308
|
||||||
|
|
||||||
|
2.5 Client cert handling with Issuer DN differs between backends
|
||||||
|
|
||||||
|
When the specified client certificate does not match any of the
|
||||||
|
server-specified DNs, the OpenSSL and GnuTLS backends behave differently.
|
||||||
|
The github discussion may contain a solution.
|
||||||
|
|
||||||
|
See https://github.com/curl/curl/issues/1411
|
||||||
|
|
||||||
2.7 Client cert (MTLS) issues with Schannel
|
2.7 Client cert (MTLS) issues with Schannel
|
||||||
|
|
||||||
See https://github.com/curl/curl/issues/3145
|
See https://github.com/curl/curl/issues/3145
|
||||||
@ -437,23 +445,7 @@ problems may have been fixed or changed somewhat since this was written.
|
|||||||
|
|
||||||
https://github.com/curl/curl/issues/11244
|
https://github.com/curl/curl/issues/11244
|
||||||
|
|
||||||
10. Connection
|
10. SOCKS
|
||||||
|
|
||||||
10.1 --interface with link-scoped IPv6 address
|
|
||||||
|
|
||||||
When you give the `--interface` option telling curl to use a specific
|
|
||||||
interface for its outgoing traffic in combination with a IPv6 address in the
|
|
||||||
URL that uses a link-local scope, curl might pick the wrong address from the
|
|
||||||
named interface and the subsequent transfer fails.
|
|
||||||
|
|
||||||
Example command line:
|
|
||||||
|
|
||||||
curl --interface eth0 'http://[fe80:928d:xxff:fexx:xxxx]/'
|
|
||||||
|
|
||||||
The fact that the given IP address is link-scoped should probably be used as
|
|
||||||
input to somehow make curl make a better choice for this.
|
|
||||||
|
|
||||||
https://github.com/curl/curl/issues/14782
|
|
||||||
|
|
||||||
11. Internals
|
11. Internals
|
||||||
|
|
||||||
@ -633,7 +625,7 @@ problems may have been fixed or changed somewhat since this was written.
|
|||||||
|
|
||||||
17.4 HTTP/2 + TLS spends a lot of time in recv
|
17.4 HTTP/2 + TLS spends a lot of time in recv
|
||||||
|
|
||||||
It has been observed that by making the speed limit less accurate we could
|
It has been observered that by making the speed limit less accurate we could
|
||||||
improve this performance. (by reverting
|
improve this performance. (by reverting
|
||||||
https://github.com/curl/curl/commit/db5c9f4f9e0779b49624752b135281a0717b277b)
|
https://github.com/curl/curl/commit/db5c9f4f9e0779b49624752b135281a0717b277b)
|
||||||
Can we find a golden middle ground?
|
Can we find a golden middle ground?
|
||||||
|
|||||||
@ -582,7 +582,7 @@ Example, set default time out and proxy in a config file:
|
|||||||
# We want a 30 minute timeout:
|
# We want a 30 minute timeout:
|
||||||
-m 1800
|
-m 1800
|
||||||
# ... and we use a proxy for all accesses:
|
# ... and we use a proxy for all accesses:
|
||||||
proxy = proxy.our.domain.example.com:8080
|
proxy = proxy.our.domain.com:8080
|
||||||
|
|
||||||
Whitespaces ARE significant at the end of lines, but all whitespace leading
|
Whitespaces ARE significant at the end of lines, but all whitespace leading
|
||||||
up to the first characters of each line are ignored.
|
up to the first characters of each line are ignored.
|
||||||
|
|||||||
@ -52,7 +52,6 @@ INTERNALDOCS = \
|
|||||||
internals/HASH.md \
|
internals/HASH.md \
|
||||||
internals/LLIST.md \
|
internals/LLIST.md \
|
||||||
internals/MQTT.md \
|
internals/MQTT.md \
|
||||||
internals/MULTI-EV.md \
|
|
||||||
internals/NEW-PROTOCOL.md \
|
internals/NEW-PROTOCOL.md \
|
||||||
internals/README.md \
|
internals/README.md \
|
||||||
internals/SPLAY.md \
|
internals/SPLAY.md \
|
||||||
|
|||||||
@ -9,7 +9,7 @@ SPDX-License-Identifier: curl
|
|||||||
[Rustls is a TLS backend written in Rust](https://docs.rs/rustls/). curl can
|
[Rustls is a TLS backend written in Rust](https://docs.rs/rustls/). curl can
|
||||||
be built to use it as an alternative to OpenSSL or other TLS backends. We use
|
be built to use it as an alternative to OpenSSL or other TLS backends. We use
|
||||||
the [rustls-ffi C bindings](https://github.com/rustls/rustls-ffi/). This
|
the [rustls-ffi C bindings](https://github.com/rustls/rustls-ffi/). This
|
||||||
version of curl is compatible with `rustls-ffi` v0.14.x.
|
version of curl depends on version v0.14.0 of rustls-ffi.
|
||||||
|
|
||||||
# Building with Rustls
|
# Building with Rustls
|
||||||
|
|
||||||
@ -17,7 +17,7 @@ First, [install Rust](https://rustup.rs/).
|
|||||||
|
|
||||||
Next, check out, build, and install the appropriate version of rustls-ffi:
|
Next, check out, build, and install the appropriate version of rustls-ffi:
|
||||||
|
|
||||||
% git clone https://github.com/rustls/rustls-ffi -b v0.14.1
|
% git clone https://github.com/rustls/rustls-ffi -b v0.14.0
|
||||||
% cd rustls-ffi
|
% cd rustls-ffi
|
||||||
% make
|
% make
|
||||||
% make DESTDIR=${HOME}/rustls-ffi-built/ install
|
% make DESTDIR=${HOME}/rustls-ffi-built/ install
|
||||||
|
|||||||
@ -25,8 +25,7 @@ named sponsor level: **Silver**, **Gold**, **Platinum** or **Top**.
|
|||||||
|
|
||||||
Sponsors on a named level can provide their logo image and preferred URL and
|
Sponsors on a named level can provide their logo image and preferred URL and
|
||||||
get recognition on the curl website's [sponsor
|
get recognition on the curl website's [sponsor
|
||||||
page](https://curl.se/sponsors.html), assuming they meet the project's
|
page](https://curl.se/sponsors.html).
|
||||||
standards and requirements.
|
|
||||||
|
|
||||||
- **Silver Sponsor** at least 100 USD/month
|
- **Silver Sponsor** at least 100 USD/month
|
||||||
- **Gold Sponsor** at least 500 USD/month
|
- **Gold Sponsor** at least 500 USD/month
|
||||||
@ -46,10 +45,3 @@ gambling, pornography, social media manipulation etc.
|
|||||||
|
|
||||||
Sponsors that stop paying are considered *Past Sponsors* and are not displayed
|
Sponsors that stop paying are considered *Past Sponsors* and are not displayed
|
||||||
on the sponsor page anymore. We thank you for your contributions.
|
on the sponsor page anymore. We thank you for your contributions.
|
||||||
|
|
||||||
## Donations
|
|
||||||
|
|
||||||
Please note that sponsorship and donations are exactly that: donations to the
|
|
||||||
curl project. They are used to help and further the project as the project
|
|
||||||
leadership deems best. No goods or services are expected or promised in
|
|
||||||
return. Requests for refunds for such purposes are rejected.
|
|
||||||
|
|||||||
11
docs/THANKS
11
docs/THANKS
@ -182,7 +182,6 @@ Andrei Benea
|
|||||||
Andrei Bica
|
Andrei Bica
|
||||||
Andrei Cipu
|
Andrei Cipu
|
||||||
Andrei Karas
|
Andrei Karas
|
||||||
Andrei Korshikov
|
|
||||||
Andrei Kurushin
|
Andrei Kurushin
|
||||||
Andrei Neculau
|
Andrei Neculau
|
||||||
Andrei Rybak
|
Andrei Rybak
|
||||||
@ -260,7 +259,6 @@ arainchik on github
|
|||||||
Archangel_SDY on github
|
Archangel_SDY on github
|
||||||
Arjan van de Ven
|
Arjan van de Ven
|
||||||
Arkadiusz Miskiewicz
|
Arkadiusz Miskiewicz
|
||||||
arlt on github
|
|
||||||
Armel Asselin
|
Armel Asselin
|
||||||
Arnaud Compan
|
Arnaud Compan
|
||||||
Arnaud Ebalard
|
Arnaud Ebalard
|
||||||
@ -598,7 +596,6 @@ Cris Bailiff
|
|||||||
Cristian Greco
|
Cristian Greco
|
||||||
Cristian Morales Vega
|
Cristian Morales Vega
|
||||||
Cristian Rodríguez
|
Cristian Rodríguez
|
||||||
CueXXIII on Github
|
|
||||||
Curt Bogmine
|
Curt Bogmine
|
||||||
Cynthia Coan
|
Cynthia Coan
|
||||||
Cyril B
|
Cyril B
|
||||||
@ -741,7 +738,6 @@ dbrowndan on github
|
|||||||
dEajL3kA on github
|
dEajL3kA on github
|
||||||
Deal(一线灵)
|
Deal(一线灵)
|
||||||
dekerser on github
|
dekerser on github
|
||||||
deliciouslytyped on github
|
|
||||||
delogicsreal on github
|
delogicsreal on github
|
||||||
dengjfzh on github
|
dengjfzh on github
|
||||||
Dengminwen
|
Dengminwen
|
||||||
@ -979,7 +975,6 @@ farazrbx on github
|
|||||||
Farzin on github
|
Farzin on github
|
||||||
Fata Nugraha
|
Fata Nugraha
|
||||||
Fawad Mirza
|
Fawad Mirza
|
||||||
Fay Stegerman
|
|
||||||
FC Stegerman
|
FC Stegerman
|
||||||
fds242 on github
|
fds242 on github
|
||||||
Federico Bianchi
|
Federico Bianchi
|
||||||
@ -2167,7 +2162,6 @@ Mostyn Bramley-Moore
|
|||||||
Moti Avrahami
|
Moti Avrahami
|
||||||
MrdUkk on github
|
MrdUkk on github
|
||||||
MrSorcus on github
|
MrSorcus on github
|
||||||
mschroeder-fzj on github
|
|
||||||
Muhammad Herdiansyah
|
Muhammad Herdiansyah
|
||||||
Muhammad Hussein Ammari
|
Muhammad Hussein Ammari
|
||||||
Muhammed Yavuz Nuzumlalı
|
Muhammed Yavuz Nuzumlalı
|
||||||
@ -2264,7 +2258,6 @@ nobedee on github
|
|||||||
NobodyXu on github
|
NobodyXu on github
|
||||||
Nobuhiro Ban
|
Nobuhiro Ban
|
||||||
Nodak Sodak
|
Nodak Sodak
|
||||||
nono303 on github
|
|
||||||
nopjmp on github
|
nopjmp on github
|
||||||
Norbert Frese
|
Norbert Frese
|
||||||
Norbert Kett
|
Norbert Kett
|
||||||
@ -2492,7 +2485,6 @@ pszlazak on github
|
|||||||
puckipedia on github
|
puckipedia on github
|
||||||
Puneet Pawaia
|
Puneet Pawaia
|
||||||
Pēteris Caune
|
Pēteris Caune
|
||||||
qhill
|
|
||||||
qiandu2006 on github
|
qiandu2006 on github
|
||||||
Qriist on github
|
Qriist on github
|
||||||
Quagmire
|
Quagmire
|
||||||
@ -2521,7 +2513,6 @@ RainRat
|
|||||||
Raito Bezarius
|
Raito Bezarius
|
||||||
Rajesh Naganathan
|
Rajesh Naganathan
|
||||||
Rajkumar Mandal
|
Rajkumar Mandal
|
||||||
Ralf A. Timmermann
|
|
||||||
Ralf S. Engelschall
|
Ralf S. Engelschall
|
||||||
ralfjunker on github
|
ralfjunker on github
|
||||||
Ralph Beckmann
|
Ralph Beckmann
|
||||||
@ -2977,7 +2968,6 @@ tbugfinder on github
|
|||||||
Ted Lyngmo
|
Ted Lyngmo
|
||||||
Teemu Yli-Elsila
|
Teemu Yli-Elsila
|
||||||
Temprimus
|
Temprimus
|
||||||
Terence Eden
|
|
||||||
Terri Oda
|
Terri Oda
|
||||||
Terry Wu
|
Terry Wu
|
||||||
thanhchungbtc on github
|
thanhchungbtc on github
|
||||||
@ -2988,7 +2978,6 @@ Theo
|
|||||||
Theodore Dubois
|
Theodore Dubois
|
||||||
therealhirudo on github
|
therealhirudo on github
|
||||||
Thiago Suchorski
|
Thiago Suchorski
|
||||||
thisisgk on github
|
|
||||||
tholin on github
|
tholin on github
|
||||||
Thomas
|
Thomas
|
||||||
Thomas Bouzerar
|
Thomas Bouzerar
|
||||||
|
|||||||
@ -156,5 +156,3 @@ s/Testclutch//
|
|||||||
s/edmcln\z/edmcln on github/
|
s/edmcln\z/edmcln on github/
|
||||||
s/andrewkirillov-ibm/Andrew Kirillov/
|
s/andrewkirillov-ibm/Andrew Kirillov/
|
||||||
s/\(.*\) via #[0-9]*//
|
s/\(.*\) via #[0-9]*//
|
||||||
s/jethrogb$/jethrogb on github/
|
|
||||||
s/on github/on github/i
|
|
||||||
|
|||||||
@ -247,11 +247,11 @@ local system or network, the bar is raised. If a local user wrongfully has
|
|||||||
elevated rights on your system enough to attack curl, they can probably
|
elevated rights on your system enough to attack curl, they can probably
|
||||||
already do much worse harm and the problem is not really in curl.
|
already do much worse harm and the problem is not really in curl.
|
||||||
|
|
||||||
## Debug & Experiments
|
## Experiments
|
||||||
|
|
||||||
Vulnerabilities in features which are off by default (in the build) and
|
Vulnerabilities in features which are off by default (in the build) and
|
||||||
documented as experimental, or exist only in debug mode, are not eligible for a
|
documented as experimental, are not eligible for a reward and we do not
|
||||||
reward and we do not consider them security problems.
|
consider them security problems.
|
||||||
|
|
||||||
## URL inconsistencies
|
## URL inconsistencies
|
||||||
|
|
||||||
|
|||||||
@ -27,10 +27,10 @@ set:
|
|||||||
When expanding variables, curl supports a set of functions that can make the
|
When expanding variables, curl supports a set of functions that can make the
|
||||||
variable contents more convenient to use. It can trim leading and trailing
|
variable contents more convenient to use. It can trim leading and trailing
|
||||||
white space with `trim`, it can output the contents as a JSON quoted string
|
white space with `trim`, it can output the contents as a JSON quoted string
|
||||||
with `json`, URL encode the string with `url`, base64 encode it with `b64` and
|
with `json`, URL encode the string with `url` or base64 encode it with `b64`.
|
||||||
base64 decode it with `64dec`. To apply functions to a variable expansion, add
|
To apply functions to a variable expansion, add them colon separated to the
|
||||||
them colon separated to the right side of the variable. Variable content
|
right side of the variable. Variable content holding null bytes that are not
|
||||||
holding null bytes that are not encoded when expanded cause error.
|
encoded when expanded cause error.
|
||||||
|
|
||||||
Example: get the contents of a file called $HOME/.secret into a variable
|
Example: get the contents of a file called $HOME/.secret into a variable
|
||||||
called "fix". Make sure that the content is trimmed and percent-encoded when
|
called "fix". Make sure that the content is trimmed and percent-encoded when
|
||||||
|
|||||||
@ -12,27 +12,18 @@ See-also:
|
|||||||
- capath
|
- capath
|
||||||
- dump-ca-embed
|
- dump-ca-embed
|
||||||
- insecure
|
- insecure
|
||||||
- proxy-ca-native
|
|
||||||
Example:
|
Example:
|
||||||
- --ca-native $URL
|
- --ca-native $URL
|
||||||
---
|
---
|
||||||
|
|
||||||
# `--ca-native`
|
# `--ca-native`
|
||||||
|
|
||||||
Use the operating system's native CA store for certificate verification.
|
Use the CA store from the native operating system to verify the peer. By
|
||||||
|
default, curl otherwise uses a CA store provided in a single file or
|
||||||
|
directory, but when using this option it interfaces the operating system's own
|
||||||
|
vault.
|
||||||
|
|
||||||
This option is independent of other CA certificate locations set at run time or
|
This option works for curl on Windows when built to use OpenSSL, wolfSSL
|
||||||
build time. Those locations are searched in addition to the native CA store.
|
(added in 8.3.0) or GnuTLS (added in 8.5.0). When curl on Windows is built to
|
||||||
|
use Schannel, this feature is implied and curl then only uses the native CA
|
||||||
This option works with OpenSSL and its forks (LibreSSL, BoringSSL, etc) on
|
store.
|
||||||
Windows. (Added in 7.71.0)
|
|
||||||
|
|
||||||
This option works with wolfSSL on Windows, Linux (Debian, Ubuntu, Gentoo,
|
|
||||||
Fedora, RHEL), macOS, Android and iOS. (Added in 8.3.0)
|
|
||||||
|
|
||||||
This option works with GnuTLS. (Added in 8.5.0)
|
|
||||||
|
|
||||||
This option currently has no effect for Schannel or Secure Transport. Those are
|
|
||||||
native TLS libraries from Microsoft and Apple, respectively, that by default
|
|
||||||
use the native CA store for verification unless overridden by a CA certificate
|
|
||||||
location setting.
|
|
||||||
|
|||||||
@ -55,14 +55,10 @@ among others and should be added with this option.
|
|||||||
You need --proxy-header to send custom headers intended for an HTTP proxy.
|
You need --proxy-header to send custom headers intended for an HTTP proxy.
|
||||||
(Added in 7.37.0)
|
(Added in 7.37.0)
|
||||||
|
|
||||||
Passing on a `Transfer-Encoding: chunked` header when doing an HTTP request
|
Passing on a "Transfer-Encoding: chunked" header when doing an HTTP request
|
||||||
with a request body, makes curl send the data using chunked encoding.
|
with a request body, makes curl send the data using chunked encoding.
|
||||||
|
|
||||||
**WARNING**: headers set with this option are set in all HTTP requests - even
|
**WARNING**: headers set with this option are set in all HTTP requests - even
|
||||||
after redirects are followed, like when told with --location. This can lead to
|
after redirects are followed, like when told with --location. This can lead to
|
||||||
the header being sent to other hosts than the original host, so sensitive
|
the header being sent to other hosts than the original host, so sensitive
|
||||||
headers should be used with caution combined with following redirects.
|
headers should be used with caution combined with following redirects.
|
||||||
|
|
||||||
`Authorization:` and `Cookie:` headers are explicitly *not* passed on in HTTP
|
|
||||||
requests when following redirects to other origins, unless --location-trusted
|
|
||||||
is used.
|
|
||||||
|
|||||||
@ -30,9 +30,9 @@ On Windows two filenames in the home directory are checked: *.netrc* and
|
|||||||
only.
|
only.
|
||||||
|
|
||||||
A quick and simple example of how to setup a *.netrc* to allow curl to FTP to
|
A quick and simple example of how to setup a *.netrc* to allow curl to FTP to
|
||||||
the machine host.example.com with username 'myself' and password 'secret' could
|
the machine host.domain.com with username 'myself' and password 'secret' could
|
||||||
look similar to:
|
look similar to:
|
||||||
|
|
||||||
machine host.example.com
|
machine host.domain.com
|
||||||
login myself
|
login myself
|
||||||
password secret
|
password secret
|
||||||
|
|||||||
@ -8,7 +8,6 @@ Category: tls
|
|||||||
Added: 8.2.0
|
Added: 8.2.0
|
||||||
Multi: boolean
|
Multi: boolean
|
||||||
See-also:
|
See-also:
|
||||||
- ca-native
|
|
||||||
- cacert
|
- cacert
|
||||||
- capath
|
- capath
|
||||||
- dump-ca-embed
|
- dump-ca-embed
|
||||||
@ -19,12 +18,11 @@ Example:
|
|||||||
|
|
||||||
# `--proxy-ca-native`
|
# `--proxy-ca-native`
|
||||||
|
|
||||||
Use the operating system's native CA store for certificate verification of the
|
Use the CA store from the native operating system to verify the HTTPS proxy.
|
||||||
HTTPS proxy.
|
By default, curl uses a CA store provided in a single file or directory, but
|
||||||
|
when using this option it interfaces the operating system's own vault.
|
||||||
|
|
||||||
This option is independent of other HTTPS proxy CA certificate locations set at
|
This option works for curl on Windows when built to use OpenSSL, wolfSSL
|
||||||
run time or build time. Those locations are searched in addition to the native
|
(added in 8.3.0) or GnuTLS (added in 8.5.0). When curl on Windows is built to
|
||||||
CA store.
|
use Schannel, this feature is implied and curl then only uses the native CA
|
||||||
|
store.
|
||||||
Equivalent to --ca-native but used in HTTPS proxy context. Refer to --ca-native
|
|
||||||
for TLS backend limitations.
|
|
||||||
|
|||||||
@ -59,4 +59,4 @@ used.
|
|||||||
|
|
||||||
Doing FTP over an HTTP proxy without --proxytunnel makes curl do HTTP with an
|
Doing FTP over an HTTP proxy without --proxytunnel makes curl do HTTP with an
|
||||||
FTP URL over the proxy. For such transfers, common FTP specific options do not
|
FTP URL over the proxy. For such transfers, common FTP specific options do not
|
||||||
work, including --ssl-reqd and --ftp-ssl-control.
|
work, including --ftp-ssl-reqd and --ftp-ssl-control.
|
||||||
|
|||||||
@ -41,10 +41,9 @@ specifies two separate 100-byte ranges(*) (HTTP)
|
|||||||
|
|
||||||
##
|
##
|
||||||
|
|
||||||
(*) = NOTE that if specifying multiple ranges and the server supports it then
|
(*) = NOTE that these make the server reply with a multipart response, which
|
||||||
it replies with a multiple part response that curl returns as-is. It
|
is returned as-is by curl. Parsing or otherwise transforming this response is
|
||||||
contains meta information in addition to the requested bytes. Parsing or
|
the responsibility of the caller.
|
||||||
otherwise transforming this response is the responsibility of the caller.
|
|
||||||
|
|
||||||
Only digit characters (0-9) are valid in the 'start' and 'stop' fields of the
|
Only digit characters (0-9) are valid in the 'start' and 'stop' fields of the
|
||||||
'start-stop' range syntax. If a non-digit character is given in the range, the
|
'start-stop' range syntax. If a non-digit character is given in the range, the
|
||||||
|
|||||||
@ -12,7 +12,6 @@ See-also:
|
|||||||
- alt-svc
|
- alt-svc
|
||||||
Example:
|
Example:
|
||||||
- --resolve example.com:443:127.0.0.1 $URL
|
- --resolve example.com:443:127.0.0.1 $URL
|
||||||
- --resolve example.com:443:[2001:db8::252f:efd6] $URL
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# `--resolve`
|
# `--resolve`
|
||||||
@ -21,8 +20,8 @@ Provide a custom address for a specific host and port pair. Using this, you
|
|||||||
can make the curl requests(s) use a specified address and prevent the
|
can make the curl requests(s) use a specified address and prevent the
|
||||||
otherwise normally resolved address to be used. Consider it a sort of
|
otherwise normally resolved address to be used. Consider it a sort of
|
||||||
/etc/hosts alternative provided on the command line. The port number should be
|
/etc/hosts alternative provided on the command line. The port number should be
|
||||||
the number used for the specific protocol the host is used for. It means you
|
the number used for the specific protocol the host is used for. It means
|
||||||
need several entries if you want to provide addresses for the same host but
|
you need several entries if you want to provide address for the same host but
|
||||||
different ports.
|
different ports.
|
||||||
|
|
||||||
By specifying `*` as host you can tell curl to resolve any host and specific
|
By specifying `*` as host you can tell curl to resolve any host and specific
|
||||||
@ -38,13 +37,9 @@ parallel transfers with a lot of files. In such cases, if this option is used
|
|||||||
curl tries to resolve the host as it normally would once the timeout has
|
curl tries to resolve the host as it normally would once the timeout has
|
||||||
expired.
|
expired.
|
||||||
|
|
||||||
Provide IPv6 addresses within [brackets].
|
|
||||||
|
|
||||||
To redirect connects from a specific hostname or any hostname, independently
|
To redirect connects from a specific hostname or any hostname, independently
|
||||||
of port number, consider the --connect-to option.
|
of port number, consider the --connect-to option.
|
||||||
|
|
||||||
Support for resolving with wildcard was added in 7.64.0.
|
Support for resolving with wildcard was added in 7.64.0.
|
||||||
|
|
||||||
Support for the '+' prefix was added in 7.75.0.
|
Support for the '+' prefix was added in 7.75.0.
|
||||||
|
|
||||||
Support for specifying the host component as an IPv6 address was added in 8.13.0.
|
|
||||||
|
|||||||
@ -38,8 +38,5 @@ for you, it is probably not a good idea to use early data for it. curl
|
|||||||
cannot deduce what the security implications of your requests actually
|
cannot deduce what the security implications of your requests actually
|
||||||
are and make this decision for you.
|
are and make this decision for you.
|
||||||
|
|
||||||
The amount of early data sent can be inspected by using the `--write-out`
|
|
||||||
variable `tls_earlydata`.
|
|
||||||
|
|
||||||
**WARNING**: this option has security implications. See above for more
|
**WARNING**: this option has security implications. See above for more
|
||||||
details.
|
details.
|
||||||
|
|||||||
@ -2,19 +2,16 @@
|
|||||||
c: Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
c: Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
SPDX-License-Identifier: curl
|
SPDX-License-Identifier: curl
|
||||||
Long: url
|
Long: url
|
||||||
Arg: <url/file>
|
Arg: <url>
|
||||||
Help: URL(s) to work with
|
Help: URL to work with
|
||||||
Category: curl
|
Category: curl
|
||||||
Added: 7.5
|
Added: 7.5
|
||||||
Multi: append
|
Multi: append
|
||||||
See-also:
|
See-also:
|
||||||
- next
|
- next
|
||||||
- config
|
- config
|
||||||
- path-as-is
|
|
||||||
- disallow-username-in-url
|
|
||||||
Example:
|
Example:
|
||||||
- --url $URL
|
- --url $URL
|
||||||
- --url @file
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# `--url`
|
# `--url`
|
||||||
@ -35,15 +32,3 @@ destination option unless --remote-name-all is used.
|
|||||||
|
|
||||||
On Windows, `file://` accesses can be converted to network accesses by the
|
On Windows, `file://` accesses can be converted to network accesses by the
|
||||||
operating system.
|
operating system.
|
||||||
|
|
||||||
Starting in curl 8.13.0, curl can be told to download URLs provided in a text
|
|
||||||
file, one URL per line. It is done by with `--url @filename`: so instead of a
|
|
||||||
URL, you specify a filename prefixed with the `@` symbol. It can be told to
|
|
||||||
load the list of URLs from stdin by providing an argument like `@-`.
|
|
||||||
|
|
||||||
When downloading URLs given in a file, it implies using --remote-name for each
|
|
||||||
provided URL. The URLs are full, there is no globbing applied or done on
|
|
||||||
these. Features such as --skip-existing work fine in combination with this.
|
|
||||||
|
|
||||||
Lines in the URL file that start with `#` are treated as comments and are
|
|
||||||
skipped.
|
|
||||||
|
|||||||
@ -66,45 +66,30 @@ error.
|
|||||||
|
|
||||||
Available functions:
|
Available functions:
|
||||||
|
|
||||||
## `trim`
|
## trim
|
||||||
|
|
||||||
removes all leading and trailing white space.
|
removes all leading and trailing white space.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
curl --expand-url https://example.com/{{var:trim}}
|
curl --expand-url https.//example.com/{{url:trim}}
|
||||||
|
|
||||||
## `json`
|
|
||||||
|
|
||||||
|
## json
|
||||||
outputs the content using JSON string quoting rules.
|
outputs the content using JSON string quoting rules.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
curl --expand-data {{data:json}} https://example.com
|
curl --expand-data {{data:json}} https://example.com
|
||||||
|
|
||||||
## `url`
|
## url
|
||||||
|
|
||||||
shows the content URL (percent) encoded.
|
shows the content URL (percent) encoded.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
curl --expand-url https://example.com/{{path:url}}
|
curl --expand-url https://example.com/{{path:url}}
|
||||||
|
|
||||||
## `b64`
|
## b64
|
||||||
|
|
||||||
expands the variable base64 encoded
|
expands the variable base64 encoded
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
curl --expand-url https://example.com/{{var:b64}}
|
curl --expand-url https://example.com/{{var:b64}}
|
||||||
|
|
||||||
## `64dec`
|
|
||||||
|
|
||||||
decodes a base64 encoded character sequence. If the sequence is not possible
|
|
||||||
to decode, it instead outputs `[64dec-fail]`
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
curl --expand-url https://example.com/{{var:64dec}}
|
|
||||||
|
|
||||||
(Added in 8.13.0)
|
|
||||||
|
|||||||
@ -53,8 +53,3 @@ to trace the specific components you wish to see.
|
|||||||
Note that verbose output of curl activities and network traffic might contain
|
Note that verbose output of curl activities and network traffic might contain
|
||||||
sensitive data, including usernames, credentials or secret data content. Be
|
sensitive data, including usernames, credentials or secret data content. Be
|
||||||
aware and be careful when sharing trace logs with others.
|
aware and be careful when sharing trace logs with others.
|
||||||
|
|
||||||
When the output contains protocol headers, those lines might include carriage
|
|
||||||
return (ASCII code 13) characters, even on platforms that otherwise normally
|
|
||||||
only use linefeed to signify line separations - as curl shows the exact
|
|
||||||
contents arriving from the server.
|
|
||||||
|
|||||||
@ -32,11 +32,10 @@ output a newline by using \n, a carriage return with \r and a tab space with
|
|||||||
The output is by default written to standard output, but can be changed with
|
The output is by default written to standard output, but can be changed with
|
||||||
%{stderr} and %output{}.
|
%{stderr} and %output{}.
|
||||||
|
|
||||||
Output HTTP header values from the transfer's most recent server response by
|
Output HTTP headers from the most recent request by using *%header{name}*
|
||||||
using *%header{name}* where *name* is the case insensitive name of the header
|
where *name* is the case insensitive name of the header (without the trailing
|
||||||
(without the trailing colon). The header contents are exactly as delivered over
|
colon). The header contents are exactly as sent over the network, with leading
|
||||||
the network but with leading and trailing whitespace and newlines stripped off
|
and trailing whitespace trimmed (added in 7.84.0).
|
||||||
(added in 7.84.0).
|
|
||||||
|
|
||||||
Select a specific target destination file to write the output to, by using
|
Select a specific target destination file to write the output to, by using
|
||||||
*%output{name}* (added in curl 8.3.0) where *name* is the full filename. The
|
*%output{name}* (added in curl 8.3.0) where *name* is the full filename. The
|
||||||
@ -62,7 +61,7 @@ The variables available are:
|
|||||||
|
|
||||||
## `certs`
|
## `certs`
|
||||||
Output the certificate chain with details. Supported only by the OpenSSL,
|
Output the certificate chain with details. Supported only by the OpenSSL,
|
||||||
GnuTLS, Schannel, Rustls, and Secure Transport backends. (Added in 7.88.0)
|
GnuTLS, Schannel and Secure Transport backends. (Added in 7.88.0)
|
||||||
|
|
||||||
## `conn_id`
|
## `conn_id`
|
||||||
The connection identifier last used by the transfer. The connection id is
|
The connection identifier last used by the transfer. The connection id is
|
||||||
@ -88,11 +87,6 @@ most useful in combination with the --remote-header-name option.
|
|||||||
The initial path curl ended up in when logging on to the remote FTP
|
The initial path curl ended up in when logging on to the remote FTP
|
||||||
server. (Added in 7.15.4)
|
server. (Added in 7.15.4)
|
||||||
|
|
||||||
## `header{name}`
|
|
||||||
The value of header `name` from the transfer's most recent server response.
|
|
||||||
Unlike other variables, the variable name `header` is not in braces. For
|
|
||||||
example `%header{date}`. Refer to --write-out remarks. (Added in 7.84.0)
|
|
||||||
|
|
||||||
## `header_json`
|
## `header_json`
|
||||||
A JSON object with all HTTP response headers from the recent transfer. Values
|
A JSON object with all HTTP response headers from the recent transfer. Values
|
||||||
are provided as arrays, since in the case of multiple headers there can be
|
are provided as arrays, since in the case of multiple headers there can be
|
||||||
@ -128,7 +122,7 @@ The http method used in the most recent HTTP request. (Added in 7.72.0)
|
|||||||
|
|
||||||
## `num_certs`
|
## `num_certs`
|
||||||
Number of server certificates received in the TLS handshake. Supported only by
|
Number of server certificates received in the TLS handshake. Supported only by
|
||||||
the OpenSSL, GnuTLS, Schannel, Rustls and Secure Transport backends.
|
the OpenSSL, GnuTLS, Schannel and Secure Transport backends.
|
||||||
(Added in 7.88.0)
|
(Added in 7.88.0)
|
||||||
|
|
||||||
## `num_connects`
|
## `num_connects`
|
||||||
@ -149,12 +143,6 @@ Number of retries actually performed when `--retry` has been used.
|
|||||||
The rest of the output is only shown if the transfer returned a non-zero error.
|
The rest of the output is only shown if the transfer returned a non-zero error.
|
||||||
(Added in 7.75.0)
|
(Added in 7.75.0)
|
||||||
|
|
||||||
## `output{filename}`
|
|
||||||
From this point on, the --write-out output is written to the filename specified
|
|
||||||
in braces. The filename can be prefixed with `>>` to append to the file. Unlike
|
|
||||||
other variables, the variable name `output` is not in braces. For example
|
|
||||||
`%output{>>stats.txt}`. Refer to --write-out remarks. (Added in 8.3.0)
|
|
||||||
|
|
||||||
## `proxy_ssl_verify_result`
|
## `proxy_ssl_verify_result`
|
||||||
The result of the HTTPS proxy's SSL peer certificate verification that was
|
The result of the HTTPS proxy's SSL peer certificate verification that was
|
||||||
requested. 0 means the verification was successful. (Added in 7.52.0)
|
requested. 0 means the verification was successful. (Added in 7.52.0)
|
||||||
@ -262,12 +250,6 @@ the result.
|
|||||||
## `time_total`
|
## `time_total`
|
||||||
The total time, in seconds, that the full operation lasted.
|
The total time, in seconds, that the full operation lasted.
|
||||||
|
|
||||||
## `tls_earlydata`
|
|
||||||
The amount of bytes that were sent as TLSv1.3 early data. This is 0
|
|
||||||
if this TLS feature was not used and negative if the data sent had
|
|
||||||
been rejected by the server. The use of early data is enabled via
|
|
||||||
the command line option `--tls-earlydata`. (Added in 8.12.0)
|
|
||||||
|
|
||||||
## `url`
|
## `url`
|
||||||
The URL that was fetched. (Added in 7.75.0)
|
The URL that was fetched. (Added in 7.75.0)
|
||||||
|
|
||||||
|
|||||||
@ -24,53 +24,53 @@ displays information about the curl and libcurl installation.
|
|||||||
|
|
||||||
# OPTIONS
|
# OPTIONS
|
||||||
|
|
||||||
## `--ca`
|
## --ca
|
||||||
|
|
||||||
Displays the built-in path to the CA cert bundle this libcurl uses.
|
Displays the built-in path to the CA cert bundle this libcurl uses.
|
||||||
|
|
||||||
## `--cc`
|
## --cc
|
||||||
|
|
||||||
Displays the compiler used to build libcurl.
|
Displays the compiler used to build libcurl.
|
||||||
|
|
||||||
## `--cflags`
|
## --cflags
|
||||||
|
|
||||||
Set of compiler options (CFLAGS) to use when compiling files that use
|
Set of compiler options (CFLAGS) to use when compiling files that use
|
||||||
libcurl. Currently that is only the include path to the curl include files.
|
libcurl. Currently that is only the include path to the curl include files.
|
||||||
|
|
||||||
## `--checkfor [version]`
|
## --checkfor [version]
|
||||||
|
|
||||||
Specify the oldest possible libcurl version string you want, and this script
|
Specify the oldest possible libcurl version string you want, and this script
|
||||||
returns 0 if the current installation is new enough or it returns 1 and
|
returns 0 if the current installation is new enough or it returns 1 and
|
||||||
outputs a text saying that the current version is not new enough. (Added in
|
outputs a text saying that the current version is not new enough. (Added in
|
||||||
7.15.4)
|
7.15.4)
|
||||||
|
|
||||||
## `--configure`
|
## --configure
|
||||||
|
|
||||||
Displays the arguments given to configure when building curl.
|
Displays the arguments given to configure when building curl.
|
||||||
|
|
||||||
## `--feature`
|
## --feature
|
||||||
|
|
||||||
Lists what particular main features the installed libcurl was built with. At
|
Lists what particular main features the installed libcurl was built with. At
|
||||||
the time of writing, this list may include SSL, KRB4 or IPv6. Do not assume
|
the time of writing, this list may include SSL, KRB4 or IPv6. Do not assume
|
||||||
any particular order. The keywords are separated by newlines. There may be
|
any particular order. The keywords are separated by newlines. There may be
|
||||||
none, one, or several keywords in the list.
|
none, one, or several keywords in the list.
|
||||||
|
|
||||||
## `--help`
|
## --help
|
||||||
|
|
||||||
Displays the available options.
|
Displays the available options.
|
||||||
|
|
||||||
## `--libs`
|
## --libs
|
||||||
|
|
||||||
Shows the complete set of libs and other linker options you need in order to
|
Shows the complete set of libs and other linker options you need in order to
|
||||||
link your application with libcurl.
|
link your application with libcurl.
|
||||||
|
|
||||||
## `--prefix`
|
## --prefix
|
||||||
|
|
||||||
This is the prefix used when libcurl was installed. libcurl is then installed
|
This is the prefix used when libcurl was installed. libcurl is then installed
|
||||||
in $prefix/lib and its header files are installed in $prefix/include and so
|
in $prefix/lib and its header files are installed in $prefix/include and so
|
||||||
on. The prefix is set with `configure --prefix`.
|
on. The prefix is set with "configure --prefix".
|
||||||
|
|
||||||
## `--protocols`
|
## --protocols
|
||||||
|
|
||||||
Lists what particular protocols the installed libcurl was built to support. At
|
Lists what particular protocols the installed libcurl was built to support. At
|
||||||
the time of writing, this list may include HTTP, HTTPS, FTP, FTPS, FILE,
|
the time of writing, this list may include HTTP, HTTPS, FTP, FTPS, FILE,
|
||||||
@ -78,22 +78,22 @@ TELNET, LDAP, DICT and many more. Do not assume any particular order. The
|
|||||||
protocols are listed using uppercase and are separated by newlines. There may
|
protocols are listed using uppercase and are separated by newlines. There may
|
||||||
be none, one, or several protocols in the list. (Added in 7.13.0)
|
be none, one, or several protocols in the list. (Added in 7.13.0)
|
||||||
|
|
||||||
## `--ssl-backends`
|
## --ssl-backends
|
||||||
|
|
||||||
Lists the SSL backends that were enabled when libcurl was built. It might be
|
Lists the SSL backends that were enabled when libcurl was built. It might be
|
||||||
no, one or several names. If more than one name, they appear comma-separated.
|
no, one or several names. If more than one name, they appear comma-separated.
|
||||||
(Added in 7.58.0)
|
(Added in 7.58.0)
|
||||||
|
|
||||||
## `--static-libs`
|
## --static-libs
|
||||||
|
|
||||||
Shows the complete set of libs and other linker options you need in order to
|
Shows the complete set of libs and other linker options you need in order to
|
||||||
link your application with libcurl statically. (Added in 7.17.1)
|
link your application with libcurl statically. (Added in 7.17.1)
|
||||||
|
|
||||||
## `--version`
|
## --version
|
||||||
|
|
||||||
Outputs version information about the installed libcurl.
|
Outputs version information about the installed libcurl.
|
||||||
|
|
||||||
## `--vernum`
|
## --vernum
|
||||||
|
|
||||||
Outputs version information about the installed libcurl, in numerical mode.
|
Outputs version information about the installed libcurl, in numerical mode.
|
||||||
This shows the version number, in hexadecimal, using 8 bits for each part:
|
This shows the version number, in hexadecimal, using 8 bits for each part:
|
||||||
@ -104,21 +104,22 @@ omitted. (This option was broken in the 7.15.0 release.)
|
|||||||
# EXAMPLES
|
# EXAMPLES
|
||||||
|
|
||||||
What linker options do I need when I link with libcurl?
|
What linker options do I need when I link with libcurl?
|
||||||
|
~~~
|
||||||
$ curl-config --libs
|
$ curl-config --libs
|
||||||
|
~~~
|
||||||
What compiler options do I need when I compile using libcurl functions?
|
What compiler options do I need when I compile using libcurl functions?
|
||||||
|
~~~
|
||||||
$ curl-config --cflags
|
$ curl-config --cflags
|
||||||
|
~~~
|
||||||
How do I know if libcurl was built with SSL support?
|
How do I know if libcurl was built with SSL support?
|
||||||
|
~~~
|
||||||
$ curl-config --feature | grep SSL
|
$ curl-config --feature | grep SSL
|
||||||
|
~~~
|
||||||
What's the installed libcurl version?
|
What's the installed libcurl version?
|
||||||
|
~~~
|
||||||
$ curl-config --version
|
$ curl-config --version
|
||||||
|
~~~
|
||||||
How do I build a single file with a one-line command?
|
How do I build a single file with a one-line command?
|
||||||
|
~~~
|
||||||
$ `curl-config --cc --cflags` -o example source.c `curl-config --libs`
|
$ `curl-config --cc --cflags` -o example source.c `curl-config --libs`
|
||||||
|
~~~
|
||||||
|
|||||||
@ -44,9 +44,6 @@ AM_CPPFLAGS += -DCURL_NO_OLDIES
|
|||||||
if USE_CPPFLAG_CURL_STATICLIB
|
if USE_CPPFLAG_CURL_STATICLIB
|
||||||
AM_CPPFLAGS += -DCURL_STATICLIB
|
AM_CPPFLAGS += -DCURL_STATICLIB
|
||||||
endif
|
endif
|
||||||
if DOING_NATIVE_WINDOWS
|
|
||||||
AM_CPPFLAGS += -DWIN32_LEAN_AND_MEAN
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Prevent LIBS from being used for all link targets
|
# Prevent LIBS from being used for all link targets
|
||||||
LIBS = $(BLANK_AT_MAKETIME)
|
LIBS = $(BLANK_AT_MAKETIME)
|
||||||
|
|||||||
@ -103,11 +103,7 @@ int main(int argc, char **argv)
|
|||||||
if(!fp)
|
if(!fp)
|
||||||
return 2;
|
return 2;
|
||||||
|
|
||||||
#ifdef UNDER_CE
|
|
||||||
stat(file, &file_info);
|
|
||||||
#else
|
|
||||||
fstat(fileno(fp), &file_info);
|
fstat(fileno(fp), &file_info);
|
||||||
#endif
|
|
||||||
|
|
||||||
/* In Windows, this inits the Winsock stuff */
|
/* In Windows, this inits the Winsock stuff */
|
||||||
curl_global_init(CURL_GLOBAL_ALL);
|
curl_global_init(CURL_GLOBAL_ALL);
|
||||||
|
|||||||
@ -29,9 +29,9 @@
|
|||||||
* filter IP addresses.
|
* filter IP addresses.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if defined(__AMIGA__) || defined(UNDER_CE)
|
#ifdef __AMIGA__
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
int main(void) { printf("Platform not supported.\n"); return 1; }
|
int main(void) { printf("AmigaOS is not supported.\n"); return 1; }
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
@ -298,19 +298,14 @@ int main(void)
|
|||||||
|
|
||||||
filter = (struct connection_filter *)calloc(1, sizeof(*filter));
|
filter = (struct connection_filter *)calloc(1, sizeof(*filter));
|
||||||
if(!filter)
|
if(!filter)
|
||||||
return 1;
|
exit(1);
|
||||||
|
|
||||||
if(curl_global_init(CURL_GLOBAL_DEFAULT)) {
|
if(curl_global_init(CURL_GLOBAL_DEFAULT))
|
||||||
free(filter);
|
exit(1);
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
curl = curl_easy_init();
|
curl = curl_easy_init();
|
||||||
if(!curl) {
|
if(!curl)
|
||||||
curl_global_cleanup();
|
exit(1);
|
||||||
free(filter);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set the target URL */
|
/* Set the target URL */
|
||||||
curl_easy_setopt(curl, CURLOPT_URL, "http://localhost");
|
curl_easy_setopt(curl, CURLOPT_URL, "http://localhost");
|
||||||
|
|||||||
@ -79,12 +79,12 @@ int main(int argc, char *argv[])
|
|||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"\rUsage: %s [-m=1|2|5|10|20|50|100] [-t] [-x] [url]\n",
|
"\rUsage: %s [-m=1|2|5|10|20|50|100] [-t] [-x] [url]\n",
|
||||||
appname);
|
appname);
|
||||||
return 1;
|
exit(1);
|
||||||
case 'v':
|
case 'v':
|
||||||
case 'V':
|
case 'V':
|
||||||
fprintf(stderr, "\r%s %s - %s\n",
|
fprintf(stderr, "\r%s %s - %s\n",
|
||||||
appname, CHKSPEED_VERSION, curl_version());
|
appname, CHKSPEED_VERSION, curl_version());
|
||||||
return 1;
|
exit(1);
|
||||||
case 'a':
|
case 'a':
|
||||||
case 'A':
|
case 'A':
|
||||||
prtall = 1;
|
prtall = 1;
|
||||||
|
|||||||
@ -34,7 +34,8 @@
|
|||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
#include <curl/mprintf.h>
|
#include <curl/mprintf.h>
|
||||||
|
|
||||||
static int print_cookies(CURL *curl)
|
static void
|
||||||
|
print_cookies(CURL *curl)
|
||||||
{
|
{
|
||||||
CURLcode res;
|
CURLcode res;
|
||||||
struct curl_slist *cookies;
|
struct curl_slist *cookies;
|
||||||
@ -46,7 +47,7 @@ static int print_cookies(CURL *curl)
|
|||||||
if(res != CURLE_OK) {
|
if(res != CURLE_OK) {
|
||||||
fprintf(stderr, "Curl curl_easy_getinfo failed: %s\n",
|
fprintf(stderr, "Curl curl_easy_getinfo failed: %s\n",
|
||||||
curl_easy_strerror(res));
|
curl_easy_strerror(res));
|
||||||
return 1;
|
exit(1);
|
||||||
}
|
}
|
||||||
nc = cookies;
|
nc = cookies;
|
||||||
i = 1;
|
i = 1;
|
||||||
@ -59,8 +60,6 @@ static int print_cookies(CURL *curl)
|
|||||||
printf("(none)\n");
|
printf("(none)\n");
|
||||||
}
|
}
|
||||||
curl_slist_free_all(cookies);
|
curl_slist_free_all(cookies);
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|||||||
@ -422,18 +422,18 @@ static int init_fifo(GlobalInfo *g)
|
|||||||
if((st.st_mode & S_IFMT) == S_IFREG) {
|
if((st.st_mode & S_IFMT) == S_IFREG) {
|
||||||
errno = EEXIST;
|
errno = EEXIST;
|
||||||
perror("lstat");
|
perror("lstat");
|
||||||
return 1;
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
unlink(fifo);
|
unlink(fifo);
|
||||||
if(mkfifo (fifo, 0600) == -1) {
|
if(mkfifo (fifo, 0600) == -1) {
|
||||||
perror("mkfifo");
|
perror("mkfifo");
|
||||||
return 1;
|
exit(1);
|
||||||
}
|
}
|
||||||
sockfd = open(fifo, O_RDWR | O_NONBLOCK, 0);
|
sockfd = open(fifo, O_RDWR | O_NONBLOCK, 0);
|
||||||
if(sockfd == -1) {
|
if(sockfd == -1) {
|
||||||
perror("open");
|
perror("open");
|
||||||
return 1;
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
g->fifofd = sockfd;
|
g->fifofd = sockfd;
|
||||||
@ -478,13 +478,13 @@ int main(int argc, char **argv)
|
|||||||
g.epfd = epoll_create1(EPOLL_CLOEXEC);
|
g.epfd = epoll_create1(EPOLL_CLOEXEC);
|
||||||
if(g.epfd == -1) {
|
if(g.epfd == -1) {
|
||||||
perror("epoll_create1 failed");
|
perror("epoll_create1 failed");
|
||||||
return 1;
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
g.tfd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK | TFD_CLOEXEC);
|
g.tfd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK | TFD_CLOEXEC);
|
||||||
if(g.tfd == -1) {
|
if(g.tfd == -1) {
|
||||||
perror("timerfd_create failed");
|
perror("timerfd_create failed");
|
||||||
return 1;
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(&its, 0, sizeof(struct itimerspec));
|
memset(&its, 0, sizeof(struct itimerspec));
|
||||||
@ -496,8 +496,7 @@ int main(int argc, char **argv)
|
|||||||
ev.data.fd = g.tfd;
|
ev.data.fd = g.tfd;
|
||||||
epoll_ctl(g.epfd, EPOLL_CTL_ADD, g.tfd, &ev);
|
epoll_ctl(g.epfd, EPOLL_CTL_ADD, g.tfd, &ev);
|
||||||
|
|
||||||
if(init_fifo(&g))
|
init_fifo(&g);
|
||||||
return 1;
|
|
||||||
g.multi = curl_multi_init();
|
g.multi = curl_multi_init();
|
||||||
|
|
||||||
/* setup the generic multi interface options we want */
|
/* setup the generic multi interface options we want */
|
||||||
@ -522,7 +521,7 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
perror("epoll_wait");
|
perror("epoll_wait");
|
||||||
return 1;
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -406,18 +406,18 @@ static int init_fifo(GlobalInfo *g)
|
|||||||
if((st.st_mode & S_IFMT) == S_IFREG) {
|
if((st.st_mode & S_IFMT) == S_IFREG) {
|
||||||
errno = EEXIST;
|
errno = EEXIST;
|
||||||
perror("lstat");
|
perror("lstat");
|
||||||
return 1;
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
unlink(fifo);
|
unlink(fifo);
|
||||||
if(mkfifo (fifo, 0600) == -1) {
|
if(mkfifo (fifo, 0600) == -1) {
|
||||||
perror("mkfifo");
|
perror("mkfifo");
|
||||||
return 1;
|
exit(1);
|
||||||
}
|
}
|
||||||
sockfd = open(fifo, O_RDWR | O_NONBLOCK, 0);
|
sockfd = open(fifo, O_RDWR | O_NONBLOCK, 0);
|
||||||
if(sockfd == -1) {
|
if(sockfd == -1) {
|
||||||
perror("open");
|
perror("open");
|
||||||
return 1;
|
exit(1);
|
||||||
}
|
}
|
||||||
g->input = fdopen(sockfd, "r");
|
g->input = fdopen(sockfd, "r");
|
||||||
|
|
||||||
@ -436,8 +436,7 @@ int main(int argc, char **argv)
|
|||||||
memset(&g, 0, sizeof(GlobalInfo));
|
memset(&g, 0, sizeof(GlobalInfo));
|
||||||
g.loop = ev_default_loop(0);
|
g.loop = ev_default_loop(0);
|
||||||
|
|
||||||
if(init_fifo(&g))
|
init_fifo(&g);
|
||||||
return 1;
|
|
||||||
g.multi = curl_multi_init();
|
g.multi = curl_multi_init();
|
||||||
|
|
||||||
ev_timer_init(&g.timer_event, timer_cb, 0., 0.);
|
ev_timer_init(&g.timer_event, timer_cb, 0., 0.);
|
||||||
|
|||||||
@ -25,7 +25,7 @@
|
|||||||
* Pass in a custom socket for libcurl to use.
|
* Pass in a custom socket for libcurl to use.
|
||||||
* </DESC>
|
* </DESC>
|
||||||
*/
|
*/
|
||||||
#ifdef _MSC_VER
|
#ifdef _WIN32
|
||||||
#ifndef _WINSOCK_DEPRECATED_NO_WARNINGS
|
#ifndef _WINSOCK_DEPRECATED_NO_WARNINGS
|
||||||
#define _WINSOCK_DEPRECATED_NO_WARNINGS /* for inet_addr() */
|
#define _WINSOCK_DEPRECATED_NO_WARNINGS /* for inet_addr() */
|
||||||
#endif
|
#endif
|
||||||
@ -46,11 +46,7 @@
|
|||||||
#include <unistd.h> /* misc. Unix functions */
|
#include <unistd.h> /* misc. Unix functions */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef UNDER_CE
|
|
||||||
#define strerror(e) "?"
|
|
||||||
#else
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#endif
|
|
||||||
|
|
||||||
/* The IP address and port number to connect to */
|
/* The IP address and port number to connect to */
|
||||||
#define IPADDR "127.0.0.1"
|
#define IPADDR "127.0.0.1"
|
||||||
|
|||||||
@ -51,11 +51,7 @@ int main(void)
|
|||||||
return 1; /* cannot continue */
|
return 1; /* cannot continue */
|
||||||
|
|
||||||
/* to get the file size */
|
/* to get the file size */
|
||||||
#ifdef UNDER_CE
|
|
||||||
if(stat("debugit", &file_info) != 0) {
|
|
||||||
#else
|
|
||||||
if(fstat(fileno(fd), &file_info) != 0) {
|
if(fstat(fileno(fd), &file_info) != 0) {
|
||||||
#endif
|
|
||||||
fclose(fd);
|
fclose(fd);
|
||||||
return 1; /* cannot continue */
|
return 1; /* cannot continue */
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,11 +28,7 @@
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#ifdef UNDER_CE
|
|
||||||
#define strerror(e) "?"
|
|
||||||
#else
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#endif
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include <io.h>
|
#include <io.h>
|
||||||
#undef stat
|
#undef stat
|
||||||
|
|||||||
@ -77,9 +77,7 @@ static int upload(CURL *curlhandle, const char *remotepath,
|
|||||||
|
|
||||||
f = fopen(localpath, "rb");
|
f = fopen(localpath, "rb");
|
||||||
if(!f) {
|
if(!f) {
|
||||||
#ifndef UNDER_CE
|
|
||||||
perror(NULL);
|
perror(NULL);
|
||||||
#endif
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -392,21 +392,21 @@ int init_fifo(void)
|
|||||||
if((st.st_mode & S_IFMT) == S_IFREG) {
|
if((st.st_mode & S_IFMT) == S_IFREG) {
|
||||||
errno = EEXIST;
|
errno = EEXIST;
|
||||||
perror("lstat");
|
perror("lstat");
|
||||||
return CURL_SOCKET_BAD;
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unlink(fifo);
|
unlink(fifo);
|
||||||
if(mkfifo (fifo, 0600) == -1) {
|
if(mkfifo (fifo, 0600) == -1) {
|
||||||
perror("mkfifo");
|
perror("mkfifo");
|
||||||
return CURL_SOCKET_BAD;
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
socket = open(fifo, O_RDWR | O_NONBLOCK, 0);
|
socket = open(fifo, O_RDWR | O_NONBLOCK, 0);
|
||||||
|
|
||||||
if(socket == CURL_SOCKET_BAD) {
|
if(socket == -1) {
|
||||||
perror("open");
|
perror("open");
|
||||||
return socket;
|
exit(1);
|
||||||
}
|
}
|
||||||
MSG_OUT("Now, pipe some URL's into > %s\n", fifo);
|
MSG_OUT("Now, pipe some URL's into > %s\n", fifo);
|
||||||
|
|
||||||
@ -421,8 +421,6 @@ int main(void)
|
|||||||
GIOChannel* ch;
|
GIOChannel* ch;
|
||||||
|
|
||||||
fd = init_fifo();
|
fd = init_fifo();
|
||||||
if(fd == CURL_SOCKET_BAD)
|
|
||||||
return 1;
|
|
||||||
ch = g_io_channel_unix_new(fd);
|
ch = g_io_channel_unix_new(fd);
|
||||||
g_io_add_watch(ch, G_IO_IN, fifo_cb, g);
|
g_io_add_watch(ch, G_IO_IN, fifo_cb, g);
|
||||||
gmain = g_main_loop_new(NULL, FALSE);
|
gmain = g_main_loop_new(NULL, FALSE);
|
||||||
|
|||||||
@ -403,18 +403,18 @@ static int init_fifo(GlobalInfo *g)
|
|||||||
if((st.st_mode & S_IFMT) == S_IFREG) {
|
if((st.st_mode & S_IFMT) == S_IFREG) {
|
||||||
errno = EEXIST;
|
errno = EEXIST;
|
||||||
perror("lstat");
|
perror("lstat");
|
||||||
return 1;
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
unlink(fifo);
|
unlink(fifo);
|
||||||
if(mkfifo (fifo, 0600) == -1) {
|
if(mkfifo (fifo, 0600) == -1) {
|
||||||
perror("mkfifo");
|
perror("mkfifo");
|
||||||
return 1;
|
exit(1);
|
||||||
}
|
}
|
||||||
sockfd = open(fifo, O_RDWR | O_NONBLOCK, 0);
|
sockfd = open(fifo, O_RDWR | O_NONBLOCK, 0);
|
||||||
if(sockfd == -1) {
|
if(sockfd == -1) {
|
||||||
perror("open");
|
perror("open");
|
||||||
return 1;
|
exit(1);
|
||||||
}
|
}
|
||||||
g->input = fdopen(sockfd, "r");
|
g->input = fdopen(sockfd, "r");
|
||||||
|
|
||||||
@ -440,8 +440,7 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
memset(&g, 0, sizeof(GlobalInfo));
|
memset(&g, 0, sizeof(GlobalInfo));
|
||||||
g.evbase = event_base_new();
|
g.evbase = event_base_new();
|
||||||
if(init_fifo(&g))
|
init_fifo(&g);
|
||||||
return 1;
|
|
||||||
g.multi = curl_multi_init();
|
g.multi = curl_multi_init();
|
||||||
evtimer_assign(&g.timer_event, g.evbase, timer_cb, &g);
|
evtimer_assign(&g.timer_event, g.evbase, timer_cb, &g);
|
||||||
|
|
||||||
|
|||||||
@ -94,7 +94,7 @@ static bool init(CURL *&conn, const char *url)
|
|||||||
|
|
||||||
if(conn == NULL) {
|
if(conn == NULL) {
|
||||||
fprintf(stderr, "Failed to create CURL connection\n");
|
fprintf(stderr, "Failed to create CURL connection\n");
|
||||||
return false;
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
code = curl_easy_setopt(conn, CURLOPT_ERRORBUFFER, errorBuffer);
|
code = curl_easy_setopt(conn, CURLOPT_ERRORBUFFER, errorBuffer);
|
||||||
@ -270,7 +270,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
if(argc != 2) {
|
if(argc != 2) {
|
||||||
fprintf(stderr, "Usage: %s <url>\n", argv[0]);
|
fprintf(stderr, "Usage: %s <url>\n", argv[0]);
|
||||||
return EXIT_FAILURE;
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
curl_global_init(CURL_GLOBAL_DEFAULT);
|
curl_global_init(CURL_GLOBAL_DEFAULT);
|
||||||
@ -279,7 +279,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
if(!init(conn, argv[1])) {
|
if(!init(conn, argv[1])) {
|
||||||
fprintf(stderr, "Connection initialization failed\n");
|
fprintf(stderr, "Connection initialization failed\n");
|
||||||
return EXIT_FAILURE;
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Retrieve content for the URL
|
// Retrieve content for the URL
|
||||||
@ -289,7 +289,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
if(code != CURLE_OK) {
|
if(code != CURLE_OK) {
|
||||||
fprintf(stderr, "Failed to get '%s' [%s]\n", argv[1], errorBuffer);
|
fprintf(stderr, "Failed to get '%s' [%s]\n", argv[1], errorBuffer);
|
||||||
return EXIT_FAILURE;
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse the (assumed) HTML code
|
// Parse the (assumed) HTML code
|
||||||
|
|||||||
@ -28,11 +28,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#ifdef UNDER_CE
|
|
||||||
#define strerror(e) "?"
|
|
||||||
#else
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#endif
|
|
||||||
|
|
||||||
/* curl stuff */
|
/* curl stuff */
|
||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
@ -142,7 +138,7 @@ int my_trace(CURL *handle, curl_infotype type,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int setup(struct transfer *t, int num)
|
static void setup(struct transfer *t, int num)
|
||||||
{
|
{
|
||||||
char filename[128];
|
char filename[128];
|
||||||
CURL *hnd;
|
CURL *hnd;
|
||||||
@ -155,7 +151,7 @@ static int setup(struct transfer *t, int num)
|
|||||||
if(!t->out) {
|
if(!t->out) {
|
||||||
fprintf(stderr, "error: could not open file %s for writing: %s\n",
|
fprintf(stderr, "error: could not open file %s for writing: %s\n",
|
||||||
filename, strerror(errno));
|
filename, strerror(errno));
|
||||||
return 1;
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* write to this file */
|
/* write to this file */
|
||||||
@ -179,7 +175,6 @@ static int setup(struct transfer *t, int num)
|
|||||||
/* wait for pipe connection to confirm */
|
/* wait for pipe connection to confirm */
|
||||||
curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L);
|
curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L);
|
||||||
#endif
|
#endif
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -205,8 +200,7 @@ int main(int argc, char **argv)
|
|||||||
multi_handle = curl_multi_init();
|
multi_handle = curl_multi_init();
|
||||||
|
|
||||||
for(i = 0; i < num_transfers; i++) {
|
for(i = 0; i < num_transfers; i++) {
|
||||||
if(setup(&trans[i], i))
|
setup(&trans[i], i);
|
||||||
return 1;
|
|
||||||
|
|
||||||
/* add the individual transfer */
|
/* add the individual transfer */
|
||||||
curl_multi_add_handle(multi_handle, trans[i].easy);
|
curl_multi_add_handle(multi_handle, trans[i].easy);
|
||||||
|
|||||||
@ -30,11 +30,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#ifdef UNDER_CE
|
|
||||||
#define strerror(e) "?"
|
|
||||||
#else
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#endif
|
|
||||||
|
|
||||||
/* somewhat Unix-specific */
|
/* somewhat Unix-specific */
|
||||||
#ifndef _MSC_VER
|
#ifndef _MSC_VER
|
||||||
@ -200,7 +196,7 @@ static size_t read_callback(char *ptr, size_t size, size_t nmemb, void *userp)
|
|||||||
return retcode;
|
return retcode;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int setup(struct input *i, int num, const char *upload)
|
static void setup(struct input *i, int num, const char *upload)
|
||||||
{
|
{
|
||||||
FILE *out;
|
FILE *out;
|
||||||
char url[256];
|
char url[256];
|
||||||
@ -209,15 +205,14 @@ static int setup(struct input *i, int num, const char *upload)
|
|||||||
curl_off_t uploadsize;
|
curl_off_t uploadsize;
|
||||||
CURL *hnd;
|
CURL *hnd;
|
||||||
|
|
||||||
hnd = i->hnd = NULL;
|
hnd = i->hnd = curl_easy_init();
|
||||||
|
|
||||||
i->num = num;
|
i->num = num;
|
||||||
curl_msnprintf(filename, 128, "dl-%d", num);
|
curl_msnprintf(filename, 128, "dl-%d", num);
|
||||||
out = fopen(filename, "wb");
|
out = fopen(filename, "wb");
|
||||||
if(!out) {
|
if(!out) {
|
||||||
fprintf(stderr, "error: could not open file %s for writing: %s\n", upload,
|
fprintf(stderr, "error: could not open file %s for writing: %s\n", upload,
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
return 1;
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
curl_msnprintf(url, 256, "https://localhost:8443/upload-%d", num);
|
curl_msnprintf(url, 256, "https://localhost:8443/upload-%d", num);
|
||||||
@ -226,8 +221,7 @@ static int setup(struct input *i, int num, const char *upload)
|
|||||||
if(stat(upload, &file_info)) {
|
if(stat(upload, &file_info)) {
|
||||||
fprintf(stderr, "error: could not stat file %s: %s\n", upload,
|
fprintf(stderr, "error: could not stat file %s: %s\n", upload,
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
fclose(out);
|
exit(1);
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uploadsize = file_info.st_size;
|
uploadsize = file_info.st_size;
|
||||||
@ -236,12 +230,9 @@ static int setup(struct input *i, int num, const char *upload)
|
|||||||
if(!i->in) {
|
if(!i->in) {
|
||||||
fprintf(stderr, "error: could not open file %s for reading: %s\n", upload,
|
fprintf(stderr, "error: could not open file %s for reading: %s\n", upload,
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
fclose(out);
|
exit(1);
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
hnd = i->hnd = curl_easy_init();
|
|
||||||
|
|
||||||
/* write to this file */
|
/* write to this file */
|
||||||
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, out);
|
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, out);
|
||||||
|
|
||||||
@ -274,7 +265,6 @@ static int setup(struct input *i, int num, const char *upload)
|
|||||||
/* wait for pipe connection to confirm */
|
/* wait for pipe connection to confirm */
|
||||||
curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L);
|
curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L);
|
||||||
#endif
|
#endif
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -307,8 +297,7 @@ int main(int argc, char **argv)
|
|||||||
multi_handle = curl_multi_init();
|
multi_handle = curl_multi_init();
|
||||||
|
|
||||||
for(i = 0; i < num_transfers; i++) {
|
for(i = 0; i < num_transfers; i++) {
|
||||||
if(setup(&trans[i], i, filename))
|
setup(&trans[i], i, filename);
|
||||||
return 1;
|
|
||||||
|
|
||||||
/* add the individual transfer */
|
/* add the individual transfer */
|
||||||
curl_multi_add_handle(multi_handle, trans[i].hnd);
|
curl_multi_add_handle(multi_handle, trans[i].hnd);
|
||||||
|
|||||||
@ -90,9 +90,7 @@ static int sftpResumeUpload(CURL *curlhandle, const char *remotepath,
|
|||||||
|
|
||||||
f = fopen(localpath, "rb");
|
f = fopen(localpath, "rb");
|
||||||
if(!f) {
|
if(!f) {
|
||||||
#ifndef UNDER_CE
|
|
||||||
perror(NULL);
|
perror(NULL);
|
||||||
#endif
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,7 +99,7 @@ static int sftpResumeUpload(CURL *curlhandle, const char *remotepath,
|
|||||||
curl_easy_setopt(curlhandle, CURLOPT_READFUNCTION, readfunc);
|
curl_easy_setopt(curlhandle, CURLOPT_READFUNCTION, readfunc);
|
||||||
curl_easy_setopt(curlhandle, CURLOPT_READDATA, f);
|
curl_easy_setopt(curlhandle, CURLOPT_READDATA, f);
|
||||||
|
|
||||||
#if defined(_WIN32) && !defined(UNDER_CE)
|
#ifdef _WIN32
|
||||||
_fseeki64(f, remoteFileSizeByte, SEEK_SET);
|
_fseeki64(f, remoteFileSizeByte, SEEK_SET);
|
||||||
#else
|
#else
|
||||||
fseek(f, (long)remoteFileSizeByte, SEEK_SET);
|
fseek(f, (long)remoteFileSizeByte, SEEK_SET);
|
||||||
|
|||||||
@ -82,7 +82,7 @@ int main(void)
|
|||||||
curl = curl_easy_init();
|
curl = curl_easy_init();
|
||||||
if(curl) {
|
if(curl) {
|
||||||
/* what call to write: */
|
/* what call to write: */
|
||||||
curl_easy_setopt(curl, CURLOPT_URL, "HTTPS://secure.site.example");
|
curl_easy_setopt(curl, CURLOPT_URL, "HTTPS://your.favourite.ssl.site");
|
||||||
curl_easy_setopt(curl, CURLOPT_HEADERDATA, headerfile);
|
curl_easy_setopt(curl, CURLOPT_HEADERDATA, headerfile);
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
|
|||||||
@ -27,14 +27,6 @@ We also work hard on writing code that are warning-free on all the major
|
|||||||
platforms and in general on as many platforms as possible. Code that obviously
|
platforms and in general on as many platforms as possible. Code that obviously
|
||||||
causes warnings is not accepted as-is.
|
causes warnings is not accepted as-is.
|
||||||
|
|
||||||
## Readability
|
|
||||||
|
|
||||||
A primary characteristic for code is readability. The intent and meaning of
|
|
||||||
the code should be visible to the reader. Being clear and unambiguous beats
|
|
||||||
being clever and saving two lines of code. Write simple code. You and others
|
|
||||||
who come back to this code over the coming decades want to be able to quickly
|
|
||||||
understand it when debugging.
|
|
||||||
|
|
||||||
## Naming
|
## Naming
|
||||||
|
|
||||||
Try using a non-confusing naming scheme for your new functions and variable
|
Try using a non-confusing naming scheme for your new functions and variable
|
||||||
@ -322,42 +314,3 @@ typedef struct {
|
|||||||
} something;
|
} something;
|
||||||
something instance;
|
something instance;
|
||||||
```
|
```
|
||||||
|
|
||||||
## Banned functions
|
|
||||||
|
|
||||||
To avoid footguns and unintended consequences we forbid the use of a number of
|
|
||||||
C functions. The `checksrc` script finds and yells about them if used. This
|
|
||||||
makes us write better code.
|
|
||||||
|
|
||||||
This is the full list of functions generally banned.
|
|
||||||
|
|
||||||
_access
|
|
||||||
_mbscat
|
|
||||||
_mbsncat
|
|
||||||
_tcscat
|
|
||||||
_tcsncat
|
|
||||||
_waccess
|
|
||||||
_wcscat
|
|
||||||
_wcsncat
|
|
||||||
access
|
|
||||||
gets
|
|
||||||
gmtime
|
|
||||||
LoadLibrary
|
|
||||||
LoadLibraryA
|
|
||||||
LoadLibraryEx
|
|
||||||
LoadLibraryExA
|
|
||||||
LoadLibraryExW
|
|
||||||
LoadLibraryW
|
|
||||||
localtime
|
|
||||||
snprintf
|
|
||||||
sprintf
|
|
||||||
sscanf
|
|
||||||
strcat
|
|
||||||
strerror
|
|
||||||
strncat
|
|
||||||
strncpy
|
|
||||||
strtok
|
|
||||||
strtol
|
|
||||||
strtoul
|
|
||||||
vsnprint
|
|
||||||
vsprintf
|
|
||||||
|
|||||||
@ -1,127 +0,0 @@
|
|||||||
<!--
|
|
||||||
Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
|
||||||
|
|
||||||
SPDX-License-Identifier: curl
|
|
||||||
-->
|
|
||||||
|
|
||||||
# Multi Event Based
|
|
||||||
|
|
||||||
A libcurl multi is operating "event based" when the application uses
|
|
||||||
and event library like `libuv` to monitor the sockets and file descriptors
|
|
||||||
libcurl uses to trigger transfer operations. How that works from the
|
|
||||||
applications point of view is described in libcurl-multi(3).
|
|
||||||
|
|
||||||
This documents is about the internal handling.
|
|
||||||
|
|
||||||
## Source Locations
|
|
||||||
|
|
||||||
All code related to event based handling is found in `lib/multi_ev.c`
|
|
||||||
and `lib/multi_ev.h`. The header defines a set of internal functions
|
|
||||||
and `struct curl_multi_ev` that is embedded in each multi handle.
|
|
||||||
|
|
||||||
There is `Curl_multi_ev_init()` and `Curl_multi_ev_cleanup()` to manage
|
|
||||||
the overall life cycle, call on creation and destruction of the multi
|
|
||||||
handle.
|
|
||||||
|
|
||||||
## Tracking Events
|
|
||||||
|
|
||||||
First, the various functions in `lib/multi_ev.h` only ever really do
|
|
||||||
something when the libcurl application has registered its callback
|
|
||||||
in `multi->socket_cb`.
|
|
||||||
|
|
||||||
This is important as this callback gets informed about *changes* to sockets.
|
|
||||||
When a new socket is added, an existing is removed, or the `POLLIN/OUT`
|
|
||||||
flags change, `multi->socket_cb` needs to be invoked. `multi_ev` has to
|
|
||||||
track what it already reported to detect changes.
|
|
||||||
|
|
||||||
Most applications are expected to go "event based" right from the start,
|
|
||||||
but the libcurl API does not prohibit an application to start another
|
|
||||||
way and then go for events later on, even in the middle of a transfer.
|
|
||||||
|
|
||||||
### Transfer Events
|
|
||||||
|
|
||||||
Most event that happen are in connection with a transfer. A transfer
|
|
||||||
opens a connection, which opens a socket, and waits for this socket
|
|
||||||
to become writable (`POLLOUT`) when using TCP, for example.
|
|
||||||
|
|
||||||
The multi then calls `Curl_multi_ev_assess_xfer(multi, data)` to
|
|
||||||
let the multi event code detect what sockets the transfer is interested in.
|
|
||||||
If indeed a `multi->socket_cb` is set, the *current* transfer pollset is
|
|
||||||
retrieved via `Curl_multi_getsock()`. This current pollset is then
|
|
||||||
compared to the *previous* pollset. If relevant changes are detected,
|
|
||||||
`multi->socket_cb` gets informed about those. These can be:
|
|
||||||
|
|
||||||
* a socket is in the current set, but not the previous one
|
|
||||||
* a socket was also in the previous one, but IN/OUT flags changed
|
|
||||||
* a socket in the previous one is no longer part of the current
|
|
||||||
|
|
||||||
`multi_ev.c` keeps a `struct mev_sh_entry` for each sockets in a hash
|
|
||||||
with the socket as key. It tracks in each entry which transfers are
|
|
||||||
interested in this particular socket. How many transfer want to read
|
|
||||||
and/or write and what the summarized `POLLIN/POLLOUT` action, that
|
|
||||||
had been reported to `multi->socket_cb` was.
|
|
||||||
|
|
||||||
This is necessary as a socket may be in use by several transfers
|
|
||||||
at the same time (think HTTP/2 on the same connection). When a transfer
|
|
||||||
is done and gets removed from the socket entry, it decrements
|
|
||||||
the reader and/or writer count (depending on what it was last
|
|
||||||
interested in). This *may* result in the entry's summarized action
|
|
||||||
to change, or not.
|
|
||||||
|
|
||||||
### Connection Events
|
|
||||||
|
|
||||||
There are also events not connected to any transfer that need to be tracked.
|
|
||||||
The multi connection cache, concerned with clean shutdowns of connections,
|
|
||||||
is interested in socket events during the shutdown.
|
|
||||||
|
|
||||||
To allow use of the libcurl infrastructure, the connection cache operates
|
|
||||||
using an *internal* easy handle that is not a transfer as such. The
|
|
||||||
internal handle is used for all connection shutdown operations, being tied
|
|
||||||
to a particular connection only for a short time. This means tracking
|
|
||||||
the last pollset for an internal handle is useless.
|
|
||||||
|
|
||||||
Instead, the connection cache uses `Curl_multi_ev_assess_conn()` to have
|
|
||||||
multi event handling check the connection and track a "last pollset"
|
|
||||||
for the connection alone.
|
|
||||||
|
|
||||||
## Event Processing
|
|
||||||
|
|
||||||
When the libcurl application is informed by the event library that
|
|
||||||
a particular socket has an event, it calls `curl_multi_socket_action()`
|
|
||||||
to make libcurl react to it. This internally invokes
|
|
||||||
`Curl_multi_ev_expire_xfers()` which expires all transfers that
|
|
||||||
are interested in the given socket, so the multi handle runs them.
|
|
||||||
|
|
||||||
In addition `Curl_multi_ev_expire_xfers()` returns a `bool` to let
|
|
||||||
the multi know that connections are also interested in the socket, so
|
|
||||||
the connection pool should be informed as well.
|
|
||||||
|
|
||||||
## All Things Pass
|
|
||||||
|
|
||||||
When a transfer is done, e.g. removed from its multi handle, the
|
|
||||||
multi calls `Curl_multi_ev_xfer_done()`. This cleans up the pollset
|
|
||||||
tracking for the transfer.
|
|
||||||
|
|
||||||
When a connection is done, and before it is destroyed,
|
|
||||||
`Curl_multi_ev_conn_done()` is called. This cleans up the pollset
|
|
||||||
tracking for this connection.
|
|
||||||
|
|
||||||
When a socket is about to be closed, `Curl_multi_ev_socket_done()`
|
|
||||||
is called to cleanup the socket entry and all information kept there.
|
|
||||||
|
|
||||||
These calls do not have to happen in any particular order. A transfer's
|
|
||||||
socket may be around while the transfer is ongoing. Or it might disappear
|
|
||||||
in the middle of things. Also, a transfer might be interested in several
|
|
||||||
sockets at the same time (resolving, eye balling, ftp are all examples of
|
|
||||||
those).
|
|
||||||
|
|
||||||
### And Come Again
|
|
||||||
|
|
||||||
While transfer and connection identifier are practically unique in a
|
|
||||||
libcurl application, sockets are not. Operating systems are keen on reusing
|
|
||||||
their resources, and the next socket may get the same identifier as
|
|
||||||
one just having been closed with high likelihood.
|
|
||||||
|
|
||||||
This means that multi event handling needs to be informed *before* a close,
|
|
||||||
clean up all its tracking and be ready to see that same socket identifier
|
|
||||||
again right after.
|
|
||||||
@ -30,19 +30,6 @@ struct Curl_str {
|
|||||||
};
|
};
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
Access the struct fields with `Curl_str()` for the pointer and `Curl_strlen()`
|
|
||||||
for the length rather than using the struct fields directly.
|
|
||||||
|
|
||||||
## `Curl_str_init`
|
|
||||||
|
|
||||||
~~~c
|
|
||||||
void Curl_str_init(struct Curl_str *out)
|
|
||||||
~~~
|
|
||||||
|
|
||||||
This initiates a string struct. The parser functions that store info in
|
|
||||||
strings always init the string themselves, so this stand-alone use is often
|
|
||||||
not necessary.
|
|
||||||
|
|
||||||
## `Curl_str_word`
|
## `Curl_str_word`
|
||||||
|
|
||||||
~~~c
|
~~~c
|
||||||
@ -107,32 +94,11 @@ Advance over a single ASCII space. Return non-zero on error.
|
|||||||
## `Curl_str_number`
|
## `Curl_str_number`
|
||||||
|
|
||||||
~~~c
|
~~~c
|
||||||
int Curl_str_number(char **linep, curl_size_t *nump, size_t max);
|
int Curl_str_number(char **linep, size_t *nump, size_t max);
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
Get an unsigned decimal number not larger than `max`. Leading zeroes are just
|
Get an unsigned decimal number. Leading zeroes are just swallowed. Return
|
||||||
swallowed. Return non-zero on error. Returns error if there was not a single
|
non-zero on error.
|
||||||
digit.
|
|
||||||
|
|
||||||
## `Curl_str_hex`
|
|
||||||
|
|
||||||
~~~c
|
|
||||||
int Curl_str_hex(char **linep, curl_size_t *nump, size_t max);
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Get an unsigned hexadecimal number not larger than `max`. Leading zeroes are
|
|
||||||
just swallowed. Return non-zero on error. Returns error if there was not a
|
|
||||||
single digit. Does *not* handled `0x` prefix.
|
|
||||||
|
|
||||||
## `Curl_str_octal`
|
|
||||||
|
|
||||||
~~~c
|
|
||||||
int Curl_str_octal(char **linep, curl_size_t *nump, size_t max);
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Get an unsigned octal number not larger than `max`. Leading zeroes are just
|
|
||||||
swallowed. Return non-zero on error. Returns error if there was not a single
|
|
||||||
digit.
|
|
||||||
|
|
||||||
## `Curl_str_newline`
|
## `Curl_str_newline`
|
||||||
|
|
||||||
@ -141,30 +107,3 @@ int Curl_str_newline(char **linep);
|
|||||||
~~~
|
~~~
|
||||||
|
|
||||||
Check for a single CR or LF. Return non-zero on error */
|
Check for a single CR or LF. Return non-zero on error */
|
||||||
|
|
||||||
## `Curl_str_casecompare`
|
|
||||||
|
|
||||||
~~~c
|
|
||||||
int Curl_str_casecompare(struct Curl_str *str, const char *check);
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Returns true if the provided string in the `str` argument matches the `check`
|
|
||||||
string case insensitively.
|
|
||||||
|
|
||||||
## `Curl_str_cmp`
|
|
||||||
|
|
||||||
~~~c
|
|
||||||
int Curl_str_cmp(struct Curl_str *str, const char *check);
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Returns true if the provided string in the `str` argument matches the `check`
|
|
||||||
string case sensitively. This is *not* the same return code as `strcmp`.
|
|
||||||
|
|
||||||
## `Curl_str_nudge`
|
|
||||||
|
|
||||||
~~~c
|
|
||||||
int Curl_str_nudge(struct Curl_str *str, size_t num);
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Removes `num` bytes from the beginning (left) of the string kept in `str`. If
|
|
||||||
`num` is larger than the string, it instead returns an error.
|
|
||||||
|
|||||||
@ -28,10 +28,11 @@ const struct curl_easyoption *curl_easy_option_by_id(CURLoption id);
|
|||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
Given a *CURLoption* **id**, this function returns a pointer to the
|
Given a *CURLoption* **id**, this function returns a pointer to the
|
||||||
*curl_easyoption* struct, holding information about the curl_easy_setopt(3)
|
*curl_easyoption* struct, holding information about the
|
||||||
option using that id. The option id is the `CURLOPT_` prefixed ones provided
|
curl_easy_setopt(3) option using that id. The option id is the CURLOPT_
|
||||||
in the standard curl/curl.h header file. This function returns the non-alias
|
prefix ones provided in the standard curl/curl.h header file. This function
|
||||||
version of the cases where there is an alias function as well.
|
returns the non-alias version of the cases where there is an alias function as
|
||||||
|
well.
|
||||||
|
|
||||||
If libcurl has no option with the given id, this function returns NULL.
|
If libcurl has no option with the given id, this function returns NULL.
|
||||||
|
|
||||||
|
|||||||
@ -27,10 +27,11 @@ const struct curl_easyoption *curl_easy_option_by_name(const char *name);
|
|||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
Given a **name**, this function returns a pointer to the *curl_easyoption*
|
Given a **name**, this function returns a pointer to the
|
||||||
struct, holding information about the curl_easy_setopt(3) option using that
|
*curl_easyoption* struct, holding information about the
|
||||||
name. The name should be specified without the `CURLOPT_` prefix and the name
|
curl_easy_setopt(3) option using that name. The name should be specified
|
||||||
comparison is made case insensitive.
|
without the "CURLOPT_" prefix and the name comparison is made case
|
||||||
|
insensitive.
|
||||||
|
|
||||||
If libcurl has no option with the given name, this function returns NULL.
|
If libcurl has no option with the given name, this function returns NULL.
|
||||||
|
|
||||||
|
|||||||
@ -316,4 +316,4 @@ filenames are now escaped before transmission.
|
|||||||
# RETURN VALUE
|
# RETURN VALUE
|
||||||
|
|
||||||
0 means everything was OK, non-zero means an error occurred corresponding to a
|
0 means everything was OK, non-zero means an error occurred corresponding to a
|
||||||
`CURL_FORMADD_*` constant defined in *\<curl/curl.h\>*.
|
CURL_FORMADD_* constant defined in *\<curl/curl.h\>*.
|
||||||
|
|||||||
@ -38,9 +38,9 @@ first argument to the curl_formget_callback function.
|
|||||||
size_t len);"
|
size_t len);"
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
The *curl_formget_callback* is invoked for each part of the HTTP POST chain.
|
The curl_formget_callback is invoked for each part of the HTTP POST chain. The
|
||||||
The character buffer passed to the callback must not be freed. The callback
|
character buffer passed to the callback must not be freed. The callback should
|
||||||
should return the buffer length passed to it on success.
|
return the buffer length passed to it on success.
|
||||||
|
|
||||||
If the **CURLFORM_STREAM** option is used in the formpost, it prevents
|
If the **CURLFORM_STREAM** option is used in the formpost, it prevents
|
||||||
curl_formget(3) from working until you have performed the actual HTTP request.
|
curl_formget(3) from working until you have performed the actual HTTP request.
|
||||||
|
|||||||
@ -64,17 +64,16 @@ If this is not thread-safe, you must not call this function when any other
|
|||||||
thread in the program (i.e. a thread sharing the same memory) is running.
|
thread in the program (i.e. a thread sharing the same memory) is running.
|
||||||
This does not just mean no other thread that is using libcurl.
|
This does not just mean no other thread that is using libcurl.
|
||||||
|
|
||||||
# Names
|
# OpenSSL
|
||||||
|
|
||||||
SSL backend names (case-insensitive): BearSSL, GnuTLS, mbedTLS, OpenSSL,
|
|
||||||
Rustls, Schannel, Secure-Transport, wolfSSL
|
|
||||||
|
|
||||||
The name "OpenSSL" is used for all versions of OpenSSL and its associated
|
The name "OpenSSL" is used for all versions of OpenSSL and its associated
|
||||||
forks/flavors in this function. OpenSSL, BoringSSL, LibreSSL, quictls and
|
forks/flavors in this function. OpenSSL, BoringSSL, LibreSSL, quictls and
|
||||||
AmiSSL are all supported by libcurl, but in the eyes of
|
AmiSSL are all supported by libcurl, but in the eyes of
|
||||||
curl_global_sslset(3) they are all just "OpenSSL". They all mostly
|
curl_global_sslset(3) they are all just "OpenSSL". They all mostly
|
||||||
provide the same API. curl_version_info(3) can return more specific info about
|
provide the same API.
|
||||||
the exact OpenSSL flavor and version number in use.
|
|
||||||
|
curl_version_info(3) can return more specific info about the exact
|
||||||
|
OpenSSL flavor and version number is use.
|
||||||
|
|
||||||
# struct
|
# struct
|
||||||
|
|
||||||
|
|||||||
@ -97,38 +97,13 @@ In order to find out all components involved in a transfer, run it with "all"
|
|||||||
configured. You can then see all names involved in your libcurl version in the
|
configured. You can then see all names involved in your libcurl version in the
|
||||||
trace.
|
trace.
|
||||||
|
|
||||||
## `dns`
|
|
||||||
|
|
||||||
Tracing of DNS operations to resolve hostnames and HTTPS records.
|
|
||||||
|
|
||||||
## `lib-ids`
|
|
||||||
|
|
||||||
Adds transfer and connection identifiers as prefix to every call to
|
|
||||||
CURLOPT_DEBUGFUNCTION(3). The format is `[n-m]` where `n` is the identifier
|
|
||||||
of the transfer and `m` is the identifier of the connection. A literal `x`
|
|
||||||
is used for internal transfers or when no connection is assigned.
|
|
||||||
|
|
||||||
For example, `[5-x]` is the prefix for transfer 5 that has no
|
|
||||||
connection. The command line tool `curl`uses the same format for its
|
|
||||||
`--trace-ids` option.
|
|
||||||
|
|
||||||
`lib-ids` is intended for libcurl applications that handle multiple
|
|
||||||
transfers but have no own way to identify in trace output which transfer
|
|
||||||
a trace event is connected to.
|
|
||||||
|
|
||||||
## `doh`
|
## `doh`
|
||||||
|
|
||||||
Former name for DNS-over-HTTP operations. Now an alias for `dns`.
|
Tracing of DNS-over-HTTP operations to resolve hostnames.
|
||||||
|
|
||||||
## `multi`
|
|
||||||
|
|
||||||
Traces multi operations managing transfers' state changes and sockets poll
|
|
||||||
states.
|
|
||||||
|
|
||||||
## `read`
|
## `read`
|
||||||
|
|
||||||
Traces reading of upload data from the application in order to send it to the
|
Traces reading of upload data from the application in order to send it to the server.
|
||||||
server.
|
|
||||||
|
|
||||||
## `ssls`
|
## `ssls`
|
||||||
|
|
||||||
|
|||||||
@ -100,10 +100,6 @@ int main(void)
|
|||||||
|
|
||||||
/* call curl_multi_perform() */
|
/* call curl_multi_perform() */
|
||||||
|
|
||||||
FD_ZERO(&fdread);
|
|
||||||
FD_ZERO(&fdwrite);
|
|
||||||
FD_ZERO(&fdexcep);
|
|
||||||
|
|
||||||
/* get file descriptors from the transfers */
|
/* get file descriptors from the transfers */
|
||||||
mc = curl_multi_fdset(multi, &fdread, &fdwrite, &fdexcep, &maxfd);
|
mc = curl_multi_fdset(multi, &fdread, &fdwrite, &fdexcep, &maxfd);
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user