Compare commits
286 Commits
curl-8_12_
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b4834a7d6d | ||
|
|
5693342ec2 | ||
|
|
c693cc02b0 | ||
|
|
e7751571eb | ||
|
|
7211576442 | ||
|
|
794dfe7fc4 | ||
|
|
049352dd80 | ||
|
|
08c7c937dc | ||
|
|
2e585f5640 | ||
|
|
399cb7130a | ||
|
|
5a021aba41 | ||
|
|
6913c9b6ab | ||
|
|
953cd694dc | ||
|
|
af6172c8f2 | ||
|
|
8ded8e5f3f | ||
|
|
7007f59caa | ||
|
|
a8ad9a5758 | ||
|
|
cba83bfb10 | ||
|
|
59f4727480 | ||
|
|
08a29e7f18 | ||
|
|
bc24c60512 | ||
|
|
c028a243f2 | ||
|
|
4f98f354b1 | ||
|
|
4ed9db9eef | ||
|
|
a1d00da81e | ||
|
|
f5527e57f8 | ||
|
|
dbbbf717f3 | ||
|
|
3efc53f5e9 | ||
|
|
518543dec8 | ||
|
|
bc42010f66 | ||
|
|
37523c91bc | ||
|
|
200993fccd | ||
|
|
2fce176bf6 | ||
|
|
d485177151 | ||
|
|
5b5e2f7318 | ||
|
|
ac4a65f8d2 | ||
|
|
71f190cbbc | ||
|
|
2ec00372a1 | ||
|
|
7826927d9b | ||
|
|
6c81f2a35c | ||
|
|
baa9c647d3 | ||
|
|
29978df61f | ||
|
|
af0100fc17 | ||
|
|
84332d49fb | ||
|
|
31fd77fb3b | ||
|
|
6306476fc3 | ||
|
|
5addb3e1cc | ||
|
|
a55b5b7c62 | ||
|
|
3175984ab2 | ||
|
|
b930142d12 | ||
|
|
413b2a44a8 | ||
|
|
a7bcf25c83 | ||
|
|
01c25e3b00 | ||
|
|
46f17ef010 | ||
|
|
5070b6ac45 | ||
|
|
edfa537100 | ||
|
|
7b8b9b9c2b | ||
|
|
9b0467b169 | ||
|
|
3585796049 | ||
|
|
db2fd7c3de | ||
|
|
dfdd380844 | ||
|
|
8f79b3e696 | ||
|
|
7694fc8256 | ||
|
|
04289c62de | ||
|
|
edd573d980 | ||
|
|
efec626ebb | ||
|
|
9391fc151f | ||
|
|
51f8aa79a9 | ||
|
|
e1b3d46944 | ||
|
|
4c5099868e | ||
|
|
cfc657a48d | ||
|
|
886f5dea80 | ||
|
|
c10fd464e0 | ||
|
|
e739f5682d | ||
|
|
a6e8ead533 | ||
|
|
54c07fd6c5 | ||
|
|
952770dc65 | ||
|
|
ea07a64cf6 | ||
|
|
d4896d94f2 | ||
|
|
f261c8d992 | ||
|
|
17ab4d62e6 | ||
|
|
e47a94228f | ||
|
|
fc4addbe50 | ||
|
|
bd9f9b085a | ||
|
|
2a292c3984 | ||
|
|
93958499f2 | ||
|
|
7cb3903e25 | ||
|
|
20c53650f2 | ||
|
|
56db87a37c | ||
|
|
7fd15b4a82 | ||
|
|
4d01de3529 | ||
|
|
bf823397ba | ||
|
|
2cc90a679a | ||
|
|
e0fd5790d9 | ||
|
|
4842f22bfa | ||
|
|
540d341b38 | ||
|
|
5693e3fa88 | ||
|
|
ecb382eca2 | ||
|
|
46e97b10ba | ||
|
|
210c0c088e | ||
|
|
fb61d76580 | ||
|
|
d1fc1c4a85 | ||
|
|
6bc65a444b | ||
|
|
655a4e83b7 | ||
|
|
df5db8afaf | ||
|
|
f78700814d | ||
|
|
279a4772ae | ||
|
|
a1850ad7de | ||
|
|
654f8cb5f3 | ||
|
|
c64304e111 | ||
|
|
ee3f657607 | ||
|
|
f0d7318193 | ||
|
|
1aea05a6c2 | ||
|
|
397088e8f4 | ||
|
|
2335cbaa21 | ||
|
|
3100fb45b7 | ||
|
|
8633b10a41 | ||
|
|
a867314f4f | ||
|
|
ad700a0917 | ||
|
|
3fd1dfc829 | ||
|
|
1b710381ca | ||
|
|
db72b8d4d0 | ||
|
|
f7fcbb8127 | ||
|
|
2f4dc6525c | ||
|
|
61f85bf967 | ||
|
|
24ffcbad5f | ||
|
|
80d93799a6 | ||
|
|
67559aa8ce | ||
|
|
a74dd9f330 | ||
|
|
448caab0df | ||
|
|
bd15d8beb3 | ||
|
|
bc6a404061 | ||
|
|
43012cb3af | ||
|
|
069f9d066e | ||
|
|
0064708f3f | ||
|
|
676de7f580 | ||
|
|
076444ec46 | ||
|
|
9d5563b535 | ||
|
|
db4d617c1c | ||
|
|
d164f49520 | ||
|
|
4afe3e7d8a | ||
|
|
b22f9066a5 | ||
|
|
fb60c9018d | ||
|
|
4a74135737 | ||
|
|
28d3c5dced | ||
|
|
760bbb2110 | ||
|
|
0d4a6a9500 | ||
|
|
1d0ca25d8b | ||
|
|
e5326bfb44 | ||
|
|
37128035e5 | ||
|
|
1ee06e873c | ||
|
|
8b3690c688 | ||
|
|
45f7cb7695 | ||
|
|
ca2f49ded0 | ||
|
|
ebbf51e191 | ||
|
|
1b87357967 | ||
|
|
e7adf3e837 | ||
|
|
1d7c3ab5aa | ||
|
|
869d863318 | ||
|
|
2ec1ce92ff | ||
|
|
63197b7ff2 | ||
|
|
2ee754d830 | ||
|
|
b4538ec522 | ||
|
|
876db1070b | ||
|
|
2533df6239 | ||
|
|
97abcbd6ff | ||
|
|
da9cdf7129 | ||
|
|
2e9773b76a | ||
|
|
b696fc129b | ||
|
|
130b6891c8 | ||
|
|
5d194d942d | ||
|
|
784a8ec2c1 | ||
|
|
edd013326d | ||
|
|
915f3981c9 | ||
|
|
f138177b92 | ||
|
|
92af12a7e0 | ||
|
|
074048ae80 | ||
|
|
d9fc64d3ab | ||
|
|
48f6bfa8c7 | ||
|
|
44deccf907 | ||
|
|
597ee915c4 | ||
|
|
196e624471 | ||
|
|
90b72607fa | ||
|
|
4aec6cdfd3 | ||
|
|
d550966bf8 | ||
|
|
de0693f249 | ||
|
|
7241953ba5 | ||
|
|
c561c94ec3 | ||
|
|
92611f2a56 | ||
|
|
c1341813bd | ||
|
|
57495c6487 | ||
|
|
e93514e9b3 | ||
|
|
42960ebec0 | ||
|
|
0005f91259 | ||
|
|
be5f20202c | ||
|
|
d87969770f | ||
|
|
eebb1c1c15 | ||
|
|
6ab1fa423b | ||
|
|
e520493742 | ||
|
|
6975a0ecda | ||
|
|
160c0ffc17 | ||
|
|
c89871fa87 | ||
|
|
383c030d52 | ||
|
|
81d253365c | ||
|
|
e156c7f8ee | ||
|
|
e9be5ff61d | ||
|
|
71ace9f3c1 | ||
|
|
94c596bbc5 | ||
|
|
f1d1c98b7f | ||
|
|
29e4eda631 | ||
|
|
48df83a30e | ||
|
|
cc6b630f13 | ||
|
|
cd8d8caae8 | ||
|
|
c1f81adf48 | ||
|
|
973ffaa83f | ||
|
|
e6ea56b9d9 | ||
|
|
89ed161f56 | ||
|
|
17c287854b | ||
|
|
032447e624 | ||
|
|
a042c67df3 | ||
|
|
116950a250 | ||
|
|
54cd27a50d | ||
|
|
68555467b1 | ||
|
|
5963f83176 | ||
|
|
242a1439e7 | ||
|
|
f1939fa60d | ||
|
|
3be33a1a47 | ||
|
|
bb65a52a05 | ||
|
|
9f3427b315 | ||
|
|
3f79695be9 | ||
|
|
d4947203d0 | ||
|
|
3754115750 | ||
|
|
9b3c4b08d4 | ||
|
|
a5f120df06 | ||
|
|
c2aa504ab9 | ||
|
|
c012c6062e | ||
|
|
13b2ea68f0 | ||
|
|
9da9a0226d | ||
|
|
cbf8fecda5 | ||
|
|
f72b848092 | ||
|
|
0c933081fb | ||
|
|
0b3afd133a | ||
|
|
5c7bf5fe59 | ||
|
|
cc256e8f8a | ||
|
|
d23f8fec52 | ||
|
|
06bb158737 | ||
|
|
2ff01152c7 | ||
|
|
c0d38f547b | ||
|
|
1bf774df57 | ||
|
|
fb70812437 | ||
|
|
2b9b3ec579 | ||
|
|
ffd6132da6 | ||
|
|
8c5be18843 | ||
|
|
b3e12b7d6f | ||
|
|
3f9417b21d | ||
|
|
e0443a76c4 | ||
|
|
aa3e4c1db5 | ||
|
|
3c128966ed | ||
|
|
fcd5c2baff | ||
|
|
d07853195d | ||
|
|
b3d0c37ff4 | ||
|
|
1210caf489 | ||
|
|
ba92296279 | ||
|
|
1fa5f451e1 | ||
|
|
d8618f4d84 | ||
|
|
3814fb5a9f | ||
|
|
552e5305a1 | ||
|
|
aa378570f5 | ||
|
|
1fa3eb05b1 | ||
|
|
5f6f446136 | ||
|
|
449d9f7897 | ||
|
|
3f7f180901 | ||
|
|
58674865fe | ||
|
|
448e71d1b7 | ||
|
|
2f00a7d5a7 | ||
|
|
943de21619 | ||
|
|
abca1f23a9 | ||
|
|
34acdf9986 | ||
|
|
553248f501 | ||
|
|
3631c24861 | ||
|
|
153453eb78 | ||
|
|
136bec79a0 | ||
|
|
a0d3a32fba | ||
|
|
6fc703904b | ||
|
|
14f26f5ee7 | ||
|
|
e455757346 |
6
.github/labeler.yml
vendored
6
.github/labeler.yml
vendored
@ -78,7 +78,8 @@ build:
|
||||
plan9/**,\
|
||||
projects/**,\
|
||||
winbuild/**,\
|
||||
lib/libcurl.def\
|
||||
lib/libcurl.def,\
|
||||
tests/cmake/**\
|
||||
}"
|
||||
|
||||
CI:
|
||||
@ -100,7 +101,8 @@ cmake:
|
||||
**/CMakeLists.txt,\
|
||||
CMake/**,\
|
||||
docs/INSTALL-CMAKE.md,\
|
||||
lib/curl_config.h.cmake\
|
||||
lib/curl_config.h.cmake,\
|
||||
tests/cmake/**\
|
||||
}"
|
||||
|
||||
cmdline tool:
|
||||
|
||||
1
.github/scripts/binarycheck.sums
vendored
1
.github/scripts/binarycheck.sums
vendored
@ -17,7 +17,6 @@ b967734c9bfe3d7a1a7795f348f0bce4d9ba15ca9590697ef2d4d15b92822db0 ./tests/certs/
|
||||
26ee981dcb84b6a2adce601084b78e6b787b54a2a997549582a8bd42087ab51b ./tests/data/test1426
|
||||
d640923e45809a3fe277e0af90459d82d32603aacc7b8db88754fcb335bf98df ./tests/data/test1531
|
||||
6f51bc318104fb5fe4b6013fc4e8e1c3c8dec1819202e8ea025bdbc4bbc8c02d ./tests/data/test1938
|
||||
28a957ec3397881bbafd0d97879cedfd475bcd1ece903e531576affd7aa3865c ./tests/data/test2080
|
||||
33809cab2442488e5985b4939727bc4ead9fc65150f53008e3e4c93140675a94 ./tests/data/test262
|
||||
2d073a52984bab1f196d80464ea8ab6dafd887bd5fee9ed58603f8510df0c6a5 ./tests/data/test35
|
||||
4cc9fd6f31d0bb4dcb38e1565796e7ec5e48ea5ac9d3c1101de576be618786ba ./tests/data/test463
|
||||
|
||||
142
.github/scripts/cleancmd.pl
vendored
142
.github/scripts/cleancmd.pl
vendored
@ -3,55 +3,117 @@
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
# Input: a cmdline docs markdown, it gets modified *in place*
|
||||
# Input: cmdline docs markdown files, they get 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.
|
||||
|
||||
my $header = 1;
|
||||
while(1) {
|
||||
# set this if the markdown has no meta-data header to skip
|
||||
if($ARGV[0] eq "--no-header") {
|
||||
shift @ARGV;
|
||||
$header = 0;
|
||||
}
|
||||
else {
|
||||
last;
|
||||
open(S, "<./docs/libcurl/symbols-in-versions")
|
||||
|| die "can't find symbols-in-versions";
|
||||
while(<S>) {
|
||||
if(/^([^ ]*) /) {
|
||||
push @asyms, $1;
|
||||
}
|
||||
}
|
||||
close(S);
|
||||
|
||||
my $f = $ARGV[0];
|
||||
# init the opts table with "special" options not easy to figure out
|
||||
my @aopts = (
|
||||
'--ftp-ssl-reqd', # old alias
|
||||
);
|
||||
|
||||
open(F, "<$f") or die;
|
||||
|
||||
my $ignore = $header;
|
||||
my $sepcount = 0;
|
||||
my @out;
|
||||
while(<F>) {
|
||||
if(/^---/ && $header) {
|
||||
if(++$sepcount == 2) {
|
||||
$ignore = 0;
|
||||
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;
|
||||
}
|
||||
next if($ignore);
|
||||
|
||||
# strip out backticked words
|
||||
$_ =~ s/`[^`]+`//g;
|
||||
|
||||
# strip out all long command line options
|
||||
$_ =~ s/--[a-z0-9-]+//g;
|
||||
|
||||
# strip out https URLs, we don't want them spellchecked
|
||||
$_ =~ s!https://[a-z0-9\#_/.-]+!!gi;
|
||||
|
||||
push @out, $_;
|
||||
chomp;
|
||||
if(/^([^ ]+)/) {
|
||||
push @asyms, $1;
|
||||
}
|
||||
}
|
||||
close(F);
|
||||
close(C);
|
||||
|
||||
if(!$ignore) {
|
||||
open(O, ">$f") or die;
|
||||
print O @out;
|
||||
close(O);
|
||||
# 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;
|
||||
|
||||
while(<F>) {
|
||||
$line++;
|
||||
if(/^---/ && ($line == 1)) {
|
||||
$ignore = 1;
|
||||
next;
|
||||
}
|
||||
elsif(/^---/ && $ignore) {
|
||||
$ignore = 0;
|
||||
next;
|
||||
}
|
||||
next if($ignore);
|
||||
|
||||
my $l = $_;
|
||||
|
||||
# strip out backticked words
|
||||
$l =~ s/`[^`]+`//g;
|
||||
|
||||
# **bold**
|
||||
$l =~ s/\*\*(\S.*?)\*\*//g;
|
||||
# *italics*
|
||||
$l =~ s/\*(\S.*?)\*//g;
|
||||
|
||||
# strip out https URLs, we don't want them spellchecked
|
||||
$l =~ s!https://[a-z0-9\#_/.-]+!!gi;
|
||||
|
||||
$out .= $l;
|
||||
}
|
||||
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) {
|
||||
open(O, ">$f") or die;
|
||||
print O $out;
|
||||
close(O);
|
||||
}
|
||||
}
|
||||
|
||||
for my $f (@ARGV) {
|
||||
process($f);
|
||||
}
|
||||
|
||||
86
.github/scripts/cleanspell.pl
vendored
86
.github/scripts/cleanspell.pl
vendored
@ -1,86 +0,0 @@
|
||||
#!/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
Normal file
151
.github/scripts/spellcheck.curl
vendored
Normal file
@ -0,0 +1,151 @@
|
||||
# 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,8 +251,10 @@ Feltzing
|
||||
ffi
|
||||
filesize
|
||||
filesystem
|
||||
FindCURL
|
||||
FLOSS
|
||||
fnmatch
|
||||
footguns
|
||||
formpost
|
||||
formposts
|
||||
Fortnite
|
||||
@ -949,7 +951,6 @@ winbuild
|
||||
WinIDN
|
||||
WinLDAP
|
||||
winsock
|
||||
winssl
|
||||
Wireshark
|
||||
wolfSSH
|
||||
wolfSSL
|
||||
|
||||
18
.github/workflows/checkdocs.yml
vendored
18
.github/workflows/checkdocs.yml
vendored
@ -107,26 +107,14 @@ jobs:
|
||||
persist-credentials: false
|
||||
name: checkout
|
||||
|
||||
- name: trim all man page *.md files
|
||||
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: trim all *.md files in docs/
|
||||
run: .github/scripts/cleancmd.pl $(find docs -name "*.md")
|
||||
|
||||
- name: setup the custom wordlist
|
||||
run: grep -v '^#' .github/scripts/spellcheck.words > wordlist.txt
|
||||
|
||||
- name: Check Spelling
|
||||
uses: rojopolis/spellcheck-github-actions@9e0a5fb25a80b89c84899657949cbd6e17eb376c # v0
|
||||
uses: rojopolis/spellcheck-github-actions@ed0756273a1658136c36d26e3d0353de35b98c8b # v0
|
||||
with:
|
||||
config_path: .github/scripts/spellcheck.yaml
|
||||
|
||||
|
||||
8
.github/workflows/configure-vs-cmake.yml
vendored
8
.github/workflows/configure-vs-cmake.yml
vendored
@ -13,6 +13,7 @@ name: configure-vs-cmake
|
||||
- '**/CMakeLists.txt'
|
||||
- 'CMake/**'
|
||||
- 'lib/curl_config.h.cmake'
|
||||
- 'tests/cmake/**'
|
||||
- '.github/scripts/cmp-config.pl'
|
||||
- '.github/workflows/configure-vs-cmake.yml'
|
||||
|
||||
@ -25,6 +26,7 @@ name: configure-vs-cmake
|
||||
- '**/CMakeLists.txt'
|
||||
- 'CMake/**'
|
||||
- 'lib/curl_config.h.cmake'
|
||||
- 'tests/cmake/**'
|
||||
- '.github/scripts/cmp-config.pl'
|
||||
- '.github/workflows/configure-vs-cmake.yml'
|
||||
|
||||
@ -46,7 +48,7 @@ jobs:
|
||||
|
||||
- name: 'run cmake'
|
||||
run: |
|
||||
cmake -B bld-cm -DCURL_USE_LIBPSL=OFF -DCURL_BROTLI=OFF
|
||||
cmake -B bld-cm -DCURL_WERROR=ON -DCURL_USE_LIBPSL=OFF -DCURL_BROTLI=OFF
|
||||
|
||||
- name: 'configure log'
|
||||
run: cat bld-am/config.log 2>/dev/null || true
|
||||
@ -86,7 +88,7 @@ jobs:
|
||||
|
||||
- name: 'run cmake'
|
||||
run: |
|
||||
cmake -B bld-cm -DCURL_USE_LIBPSL=OFF -DCURL_DISABLE_LDAP=ON \
|
||||
cmake -B bld-cm -DCURL_WERROR=ON -DCURL_USE_LIBPSL=OFF -DCURL_DISABLE_LDAP=ON \
|
||||
-DCMAKE_C_COMPILER_TARGET="$(uname -m | sed 's/arm64/aarch64/')-apple-darwin$(uname -r)" \
|
||||
-DCURL_BROTLI=OFF \
|
||||
-DCURL_USE_LIBSSH2=OFF
|
||||
@ -126,7 +128,7 @@ jobs:
|
||||
|
||||
- name: 'run cmake'
|
||||
run: |
|
||||
cmake -B bld-cm -DCURL_USE_SCHANNEL=ON -DCURL_USE_LIBPSL=OFF \
|
||||
cmake -B bld-cm -DCURL_WERROR=ON -DCURL_USE_SCHANNEL=ON -DCURL_USE_LIBPSL=OFF \
|
||||
-DCMAKE_SYSTEM_NAME=Windows \
|
||||
-DCMAKE_C_COMPILER_TARGET="${TRIPLET}" \
|
||||
-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'
|
||||
|
||||
jobs:
|
||||
linux-glibc-llvm:
|
||||
linux-glibc-gcc:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 30
|
||||
steps:
|
||||
@ -55,7 +55,7 @@ jobs:
|
||||
run: |
|
||||
git clone --depth 1 https://github.com/curl/curl-for-win
|
||||
mv curl-for-win/* .
|
||||
export CW_CONFIG='-main-werror-linux-a64-x64'
|
||||
export CW_CONFIG='-main-werror-linux-a64-x64-gcc'
|
||||
export CW_REVISION='${{ github.sha }}'
|
||||
DOCKER_IMAGE='debian:bookworm-slim'
|
||||
export DOCKER_CONTENT_TRUST=1
|
||||
@ -137,3 +137,27 @@ jobs:
|
||||
'^(CW_|GITHUB_)') \
|
||||
"${DOCKER_IMAGE}" \
|
||||
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,6 +19,9 @@ concurrency:
|
||||
|
||||
permissions: {}
|
||||
|
||||
env:
|
||||
MAKEFLAGS: -j 5
|
||||
|
||||
jobs:
|
||||
maketgz-and-verify-in-tree:
|
||||
runs-on: ubuntu-latest
|
||||
@ -55,9 +58,9 @@ jobs:
|
||||
tar xvf curl-99.98.97.tar.gz
|
||||
pushd curl-99.98.97
|
||||
./configure --prefix=$HOME/temp --without-ssl --without-libpsl
|
||||
make -j5
|
||||
make -j5 test-ci
|
||||
make -j5 install
|
||||
make
|
||||
make test-ci
|
||||
make install
|
||||
popd
|
||||
# basic check of the installed files
|
||||
bash scripts/installcheck.sh $HOME/temp
|
||||
@ -80,8 +83,8 @@ jobs:
|
||||
mkdir build
|
||||
pushd build
|
||||
../curl-99.98.97/configure --without-ssl --without-libpsl
|
||||
make -j5
|
||||
make -j5 test-ci
|
||||
make
|
||||
make test-ci
|
||||
popd
|
||||
rm -rf build
|
||||
rm -rf curl-99.98.97
|
||||
@ -103,9 +106,9 @@ jobs:
|
||||
mkdir build
|
||||
pushd build
|
||||
../configure --without-ssl --enable-debug "--prefix=${PWD}/pkg" --without-libpsl
|
||||
make -j5
|
||||
make -j5 test-ci
|
||||
make -j5 install
|
||||
make
|
||||
make test-ci
|
||||
make install
|
||||
|
||||
verify-out-of-tree-cmake:
|
||||
runs-on: ubuntu-latest
|
||||
@ -122,7 +125,7 @@ jobs:
|
||||
tar xvf curl-99.98.97.tar.gz
|
||||
pushd curl-99.98.97
|
||||
cmake -B build -DCURL_WERROR=ON -DCURL_USE_LIBPSL=OFF
|
||||
make -C build -j5
|
||||
make -C build
|
||||
|
||||
missing-files:
|
||||
runs-on: ubuntu-latest
|
||||
@ -159,3 +162,33 @@ jobs:
|
||||
mv curl-9.10.11.tar.gz _verify
|
||||
cd _verify
|
||||
../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:
|
||||
MAKEFLAGS: -j 5
|
||||
# handled in renovate.json
|
||||
openssl-version: 3.4.0
|
||||
openssl-version: 3.4.1
|
||||
# handled in renovate.json
|
||||
quictls-version: 3.3.0
|
||||
# renovate: datasource=github-tags depName=gnutls/gnutls versioning=semver registryUrl=https://github.com
|
||||
gnutls-version: 3.8.8
|
||||
gnutls-version: 3.8.9
|
||||
# renovate: datasource=github-tags depName=wolfSSL/wolfssl versioning=semver extractVersion=^v?(?<version>.+)-stable$ registryUrl=https://github.com
|
||||
wolfssl-version: 5.7.6
|
||||
# renovate: datasource=github-tags depName=ngtcp2/nghttp3 versioning=semver registryUrl=https://github.com
|
||||
nghttp3-version: 1.7.0
|
||||
nghttp3-version: 1.8.0
|
||||
# renovate: datasource=github-tags depName=ngtcp2/ngtcp2 versioning=semver registryUrl=https://github.com
|
||||
ngtcp2-version: 1.10.0
|
||||
ngtcp2-version: 1.11.0
|
||||
# renovate: datasource=github-tags depName=nghttp2/nghttp2 versioning=semver registryUrl=https://github.com
|
||||
nghttp2-version: 1.64.0
|
||||
# renovate: datasource=github-tags depName=cloudflare/quiche versioning=semver registryUrl=https://github.com
|
||||
@ -232,6 +232,7 @@ jobs:
|
||||
--with-ngtcp2=$HOME/ngtcp2/build --enable-warnings --enable-werror --enable-debug --disable-ntlm
|
||||
--with-test-nghttpx="$HOME/nghttp2/build/bin/nghttpx"
|
||||
--with-openssl=$HOME/quictls/build --enable-ssls-export
|
||||
--with-libuv
|
||||
|
||||
- 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'
|
||||
@ -240,6 +241,7 @@ jobs:
|
||||
--with-ngtcp2=$HOME/ngtcp2/build --enable-warnings --enable-werror --enable-debug
|
||||
--with-test-nghttpx="$HOME/nghttp2/build/bin/nghttpx"
|
||||
--with-gnutls=$HOME/gnutls/build --enable-ssls-export
|
||||
--with-libuv
|
||||
|
||||
- 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'
|
||||
@ -249,6 +251,7 @@ jobs:
|
||||
--with-test-nghttpx="$HOME/nghttp2/build/bin/nghttpx"
|
||||
--with-wolfssl=$HOME/wolfssl/build
|
||||
--enable-ech --enable-ssls-export
|
||||
--with-libuv
|
||||
|
||||
- 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'
|
||||
@ -257,6 +260,7 @@ jobs:
|
||||
-DTEST_NGHTTPX="$HOME/nghttp2/build/bin/nghttpx"
|
||||
-DHTTPD_NGHTTPX="$HOME/nghttp2/build/bin/nghttpx"
|
||||
-DUSE_ECH=ON
|
||||
-DCURL_USE_LIBUV=ON
|
||||
|
||||
- name: openssl-quic
|
||||
PKG_CONFIG_PATH: '$HOME/openssl/build/lib64/pkgconfig'
|
||||
@ -266,6 +270,7 @@ jobs:
|
||||
--with-test-nghttpx="$HOME/nghttp2/build/bin/nghttpx"
|
||||
--with-openssl=$HOME/openssl/build --with-openssl-quic
|
||||
--with-nghttp3=$HOME/nghttp3/build
|
||||
--with-libuv
|
||||
|
||||
- name: quiche
|
||||
configure: >-
|
||||
@ -275,6 +280,7 @@ jobs:
|
||||
--with-quiche=$HOME/quiche/target/release
|
||||
--with-test-nghttpx="$HOME/nghttp2/build/bin/nghttpx"
|
||||
--with-ca-fallback
|
||||
--with-libuv
|
||||
|
||||
- name: quiche
|
||||
PKG_CONFIG_PATH: '$HOME/quiche/target/release'
|
||||
@ -284,6 +290,7 @@ jobs:
|
||||
-DTEST_NGHTTPX="$HOME/nghttp2/build/bin/nghttpx"
|
||||
-DHTTPD_NGHTTPX="$HOME/nghttp2/build/bin/nghttpx"
|
||||
-DCURL_CA_FALLBACK=ON
|
||||
-DCURL_USE_LIBUV=ON
|
||||
|
||||
steps:
|
||||
- name: 'install prereqs'
|
||||
@ -295,7 +302,7 @@ jobs:
|
||||
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 \
|
||||
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 \
|
||||
texinfo texlive texlive-extra-utils autopoint libev-dev libuv1-dev \
|
||||
apache2 apache2-dev libnghttp2-dev vsftpd
|
||||
python3 -m venv $HOME/venv
|
||||
echo 'CC=gcc-12' >> $GITHUB_ENV
|
||||
@ -308,7 +315,7 @@ jobs:
|
||||
cache-name: cache-quictls-no-deprecated
|
||||
with:
|
||||
path: ~/quictls/build
|
||||
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.quictls-version }}
|
||||
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.quictls-version }}-quic1
|
||||
fail-on-cache-miss: true
|
||||
|
||||
- name: 'cache gnutls'
|
||||
@ -427,46 +434,45 @@ jobs:
|
||||
export PKG_CONFIG_PATH="${{ matrix.build.PKG_CONFIG_PATH }}"
|
||||
fi
|
||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||
cmake -B . -G Ninja \
|
||||
cmake -B bld -G Ninja \
|
||||
-DCMAKE_C_COMPILER_TARGET=$(uname -m)-pc-linux-gnu -DBUILD_STATIC_LIBS=ON \
|
||||
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON -DCURL_WERROR=ON \
|
||||
${{ matrix.build.generate }}
|
||||
else
|
||||
./configure --disable-dependency-tracking --enable-unity --enable-test-bundles --enable-warnings --enable-werror \
|
||||
mkdir bld && cd bld && ../configure --enable-unity --enable-test-bundles --enable-warnings --enable-werror \
|
||||
--disable-dependency-tracking \
|
||||
${{ matrix.build.configure }}
|
||||
fi
|
||||
|
||||
- name: 'configure log'
|
||||
if: ${{ !cancelled() }}
|
||||
run: cat config.log CMakeFiles/CMakeConfigureLog.yaml 2>/dev/null || true
|
||||
run: cat bld/config.log bld/CMakeFiles/CMakeConfigureLog.yaml 2>/dev/null || true
|
||||
|
||||
- name: 'curl_config.h'
|
||||
run: |
|
||||
echo '::group::raw'; cat lib/curl_config.h || true; echo '::endgroup::'
|
||||
grep -F '#define' lib/curl_config.h | sort || true
|
||||
echo '::group::raw'; cat bld/lib/curl_config.h || true; echo '::endgroup::'
|
||||
grep -F '#define' bld/lib/curl_config.h | sort || true
|
||||
|
||||
- name: 'test configs'
|
||||
run: |
|
||||
cat tests/config || true
|
||||
cat tests/http/config.ini || true
|
||||
run: grep -H -v '^#' bld/tests/config bld/tests/http/config.ini || true
|
||||
|
||||
- name: 'build'
|
||||
run: |
|
||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||
cmake --build . --verbose
|
||||
cmake --build bld --verbose
|
||||
else
|
||||
make V=1
|
||||
make -C bld V=1
|
||||
fi
|
||||
|
||||
- name: 'check curl -V output'
|
||||
run: ./src/curl -V
|
||||
run: bld/src/curl -V
|
||||
|
||||
- name: 'build tests'
|
||||
run: |
|
||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||
cmake --build . --verbose --target testdeps
|
||||
cmake --build bld --verbose --target testdeps
|
||||
else
|
||||
make V=1 -C tests
|
||||
make -C bld V=1 -C tests
|
||||
fi
|
||||
|
||||
- name: 'install test prereqs'
|
||||
@ -480,9 +486,9 @@ jobs:
|
||||
run: |
|
||||
source $HOME/venv/bin/activate
|
||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||
cmake --build . --verbose --target test-ci
|
||||
cmake --build bld --verbose --target test-ci
|
||||
else
|
||||
make V=1 test-ci
|
||||
make -C bld V=1 test-ci
|
||||
fi
|
||||
|
||||
- name: 'install pytest prereqs'
|
||||
@ -490,23 +496,23 @@ jobs:
|
||||
source $HOME/venv/bin/activate
|
||||
python3 -m pip install -r tests/http/requirements.txt
|
||||
|
||||
- name: 'run pytest'
|
||||
- name: 'run pytest event based'
|
||||
env:
|
||||
TFLAGS: '${{ matrix.build.tflags }}'
|
||||
CURL_TEST_EVENT: 1
|
||||
CURL_CI: github
|
||||
PYTEST_ADDOPTS: '--color=yes'
|
||||
run: |
|
||||
source $HOME/venv/bin/activate
|
||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||
cmake --build . --verbose --target curl-pytest-ci
|
||||
cmake --build bld --verbose --target curl-pytest-ci
|
||||
else
|
||||
make V=1 pytest-ci
|
||||
make -C bld V=1 pytest-ci
|
||||
fi
|
||||
|
||||
- name: 'build examples'
|
||||
run: |
|
||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||
cmake --build . --verbose --target curl-examples
|
||||
cmake --build bld --verbose --target curl-examples
|
||||
else
|
||||
make V=1 examples
|
||||
make -C bld V=1 examples
|
||||
fi
|
||||
|
||||
10
.github/workflows/linux-old.yml
vendored
10
.github/workflows/linux-old.yml
vendored
@ -91,12 +91,14 @@ jobs:
|
||||
echo '::group::raw'; cat bld-1/lib/curl_config.h || true; echo '::endgroup::'
|
||||
grep -F '#define' bld-1/lib/curl_config.h | sort || true
|
||||
|
||||
- name: 'cmake generate (out-of-tree, c-ares, libssh, zstd, gssapi)'
|
||||
# when this job can get a libssh version 0.9.0 or later, this should get
|
||||
# that enabled again
|
||||
- name: 'cmake generate (out-of-tree, c-ares, zstd, gssapi)'
|
||||
run: |
|
||||
mkdir bld-cares
|
||||
cd bld-cares
|
||||
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=ON -DUSE_LIBRTMP=ON \
|
||||
-DENABLE_ARES=ON -DCURL_USE_GSSAPI=ON -DCURL_USE_LIBSSH2=OFF -DCURL_USE_LIBSSH=OFF -DUSE_LIBRTMP=ON \
|
||||
-DCURL_LIBCURL_VERSIONED_SYMBOLS=ON
|
||||
|
||||
- name: 'cmake curl_config.h'
|
||||
@ -121,12 +123,12 @@ jobs:
|
||||
- name: 'autoreconf'
|
||||
run: autoreconf -if
|
||||
|
||||
- name: 'configure (out-of-tree, c-ares, libssh, zstd, gssapi)'
|
||||
- name: 'configure (out-of-tree, c-ares, libssh2, zstd, gssapi)'
|
||||
run: |
|
||||
mkdir bld-am
|
||||
cd bld-am
|
||||
../configure --disable-dependency-tracking --enable-unity --enable-test-bundles --enable-warnings --enable-werror \
|
||||
--with-openssl --enable-ares --with-libssh --with-zstd --with-gssapi --with-librtmp \
|
||||
--with-openssl --enable-ares --with-libssh2 --with-zstd --with-gssapi --with-librtmp \
|
||||
--prefix="$PWD"/../install-am
|
||||
|
||||
- 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
|
||||
msh3-version: 0.6.0
|
||||
# renovate: datasource=github-tags depName=awslabs/aws-lc versioning=semver registryUrl=https://github.com
|
||||
awslc-version: 1.42.0
|
||||
awslc-version: 1.45.0
|
||||
# handled in renovate.json
|
||||
openssl-version: 3.4.0
|
||||
openssl-version: 3.4.1
|
||||
# handled in renovate.json
|
||||
quictls-version: 3.3.0
|
||||
# renovate: datasource=github-tags depName=rustls/rustls-ffi versioning=semver registryUrl=https://github.com
|
||||
@ -164,12 +164,6 @@ jobs:
|
||||
install_steps: pytest
|
||||
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
|
||||
install_packages: zlib1g-dev valgrind
|
||||
configure: CFLAGS=-O3 --with-openssl --enable-debug
|
||||
@ -292,9 +286,13 @@ jobs:
|
||||
# Docker Hub image that `container-job` executes in
|
||||
container: 'andy5995/slackware-build-essential:15.0'
|
||||
|
||||
- name: Alpine MUSL
|
||||
configure: --enable-debug --with-ssl --with-libssh2 --with-libidn2 --with-gssapi --enable-ldap --with-libpsl
|
||||
container: 'alpine:3.18'
|
||||
- name: Alpine MUSL https-rr
|
||||
configure: --enable-debug --with-ssl --with-libssh2 --with-libidn2 --with-gssapi --enable-ldap --with-libpsl --enable-threaded-resolver --enable-ares --enable-httpsrr
|
||||
container: 'alpine:3.20'
|
||||
|
||||
- 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:
|
||||
- name: 'install prereqs'
|
||||
@ -306,7 +304,8 @@ jobs:
|
||||
libtool autoconf automake pkgconf ninja-build \
|
||||
${{ matrix.build.install_steps != 'skipall' && matrix.build.install_steps != 'skiprun' && 'stunnel4' || '' }} \
|
||||
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
|
||||
|
||||
- name: 'install prereqs'
|
||||
@ -321,27 +320,15 @@ jobs:
|
||||
${{ matrix.build.install_packages }}
|
||||
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'
|
||||
if: startsWith(matrix.build.container, 'alpine')
|
||||
run: |
|
||||
apk add --no-cache build-base autoconf automake libtool perl openssl-dev libssh2-dev \
|
||||
zlib-dev brotli-dev zstd-dev libidn2-dev openldap-dev heimdal-dev libpsl-dev \
|
||||
apk add --no-cache build-base autoconf automake libtool perl openssl-dev \
|
||||
libssh2-dev zlib-dev brotli-dev zstd-dev libidn2-dev openldap-dev \
|
||||
heimdal-dev libpsl-dev c-ares-dev \
|
||||
py3-impacket py3-asn1 py3-six py3-pycryptodomex \
|
||||
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'
|
||||
if: contains(matrix.build.install_steps, 'bearssl')
|
||||
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4
|
||||
@ -569,7 +556,7 @@ jobs:
|
||||
cd $HOME
|
||||
curl -sSf --compressed https://sh.rustup.rs/ | sh -s -- -y
|
||||
source $HOME/.cargo/env
|
||||
rustup toolchain install nightly
|
||||
rustup toolchain install stable --profile minimal
|
||||
|
||||
- name: 'build rustls'
|
||||
if: contains(matrix.build.install_steps, 'rustls') && steps.cache-rustls.outputs.cache-hit != 'true'
|
||||
@ -597,41 +584,42 @@ jobs:
|
||||
|
||||
- name: 'configure'
|
||||
run: |
|
||||
[[ '${{ matrix.build.install_steps }}' = *'awslc'* ]] && sudo apt remove --yes libssl-dev
|
||||
[[ '${{ matrix.build.install_steps }}' = *'awslc'* ]] && sudo apt-get -o Dpkg::Use-Pty=0 purge libssl-dev
|
||||
if [ -n '${{ matrix.build.PKG_CONFIG_PATH }}' ]; then
|
||||
export PKG_CONFIG_PATH="${{ matrix.build.PKG_CONFIG_PATH }}"
|
||||
fi
|
||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||
cmake -B . -G Ninja \
|
||||
cmake -B bld -G Ninja \
|
||||
-DCMAKE_INSTALL_PREFIX="$HOME/curl" \
|
||||
-DCMAKE_C_COMPILER_TARGET=$(uname -m)-pc-linux-gnu -DBUILD_STATIC_LIBS=ON \
|
||||
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON -DCURL_WERROR=ON \
|
||||
${{ matrix.build.generate }}
|
||||
else
|
||||
mkdir bld && cd bld && \
|
||||
${{ matrix.build.configure-prefix }} \
|
||||
./configure --disable-dependency-tracking --enable-unity --enable-test-bundles --enable-warnings --enable-werror \
|
||||
../configure --enable-unity --enable-test-bundles --enable-warnings --enable-werror \
|
||||
--disable-dependency-tracking \
|
||||
${{ matrix.build.configure }}
|
||||
fi
|
||||
|
||||
- name: 'configure log'
|
||||
if: ${{ !cancelled() }}
|
||||
run: cat config.log CMakeFiles/CMakeConfigureLog.yaml 2>/dev/null || true
|
||||
run: cat bld/config.log bld/CMakeFiles/CMakeConfigureLog.yaml 2>/dev/null || true
|
||||
|
||||
- name: 'curl_config.h'
|
||||
run: |
|
||||
echo '::group::raw'; cat lib/curl_config.h || true; echo '::endgroup::'
|
||||
grep -F '#define' lib/curl_config.h | sort || true
|
||||
echo '::group::raw'; cat bld/lib/curl_config.h || true; echo '::endgroup::'
|
||||
grep -F '#define' bld/lib/curl_config.h | sort || true
|
||||
|
||||
- name: 'test configs'
|
||||
run: |
|
||||
cat tests/config || true
|
||||
cat tests/http/config.ini || true
|
||||
run: grep -H -v '^#' bld/tests/config bld/tests/http/config.ini || true
|
||||
|
||||
- name: 'build'
|
||||
run: |
|
||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||
${{ matrix.build.make-prefix }} cmake --build . --verbose
|
||||
${{ matrix.build.make-prefix }} cmake --build bld --verbose
|
||||
else
|
||||
${{ matrix.build.make-prefix }} make V=1 ${{ matrix.build.make-custom-target }}
|
||||
${{ matrix.build.make-prefix }} make -C bld V=1 ${{ matrix.build.make-custom-target }}
|
||||
fi
|
||||
|
||||
- name: 'single-use function check'
|
||||
@ -639,27 +627,27 @@ jobs:
|
||||
run: |
|
||||
git config --global --add safe.directory "*"
|
||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||
libcurla=lib/libcurl.a
|
||||
libcurla=bld/lib/libcurl.a
|
||||
else
|
||||
libcurla=lib/.libs/libcurl.a
|
||||
libcurla=bld/lib/.libs/libcurl.a
|
||||
fi
|
||||
./scripts/singleuse.pl --unit ${libcurla}
|
||||
|
||||
- name: 'check curl -V output'
|
||||
if: ${{ matrix.build.make-custom-target != 'tidy' }}
|
||||
run: ./src/curl -V
|
||||
run: bld/src/curl -V
|
||||
|
||||
- name: 'cmake install'
|
||||
if: ${{ matrix.build.generate }}
|
||||
run: cmake --install . --prefix $HOME/curl --strip
|
||||
run: cmake --install bld --strip
|
||||
|
||||
- name: 'build tests'
|
||||
if: ${{ matrix.build.install_steps != 'skipall' }}
|
||||
run: |
|
||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||
cmake --build . --verbose --target testdeps
|
||||
cmake --build bld --verbose --target testdeps
|
||||
else
|
||||
make V=1 -C tests
|
||||
make -C bld V=1 -C tests
|
||||
fi
|
||||
|
||||
- name: 'install test prereqs'
|
||||
@ -686,9 +674,9 @@ jobs:
|
||||
fi
|
||||
[ -x "$HOME/venv/bin/activate" ] && source $HOME/venv/bin/activate
|
||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||
cmake --build . --verbose --target ${{ matrix.build.torture && 'test-torture' || 'test-ci' }}
|
||||
cmake --build bld --verbose --target ${{ matrix.build.torture && 'test-torture' || 'test-ci' }}
|
||||
else
|
||||
make V=1 ${{ matrix.build.torture && 'test-torture' || 'test-ci' }}
|
||||
make -C bld V=1 ${{ matrix.build.torture && 'test-torture' || 'test-ci' }}
|
||||
fi
|
||||
|
||||
- name: 'install pytest prereqs'
|
||||
@ -700,22 +688,21 @@ jobs:
|
||||
- name: 'run pytest'
|
||||
if: contains(matrix.build.install_steps, 'pytest')
|
||||
env:
|
||||
TFLAGS: '${{ matrix.build.tflags }}'
|
||||
CURL_CI: github
|
||||
PYTEST_ADDOPTS: '--color=yes'
|
||||
run: |
|
||||
[ -x "$HOME/venv/bin/activate" ] && source $HOME/venv/bin/activate
|
||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||
cmake --build . --verbose --target curl-pytest-ci
|
||||
cmake --build bld --verbose --target curl-pytest-ci
|
||||
else
|
||||
make V=1 pytest-ci
|
||||
make -C bld V=1 pytest-ci
|
||||
fi
|
||||
|
||||
- name: 'build examples'
|
||||
if: ${{ matrix.build.make-custom-target != 'tidy' }}
|
||||
run: |
|
||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||
${{ matrix.build.make-prefix }} cmake --build . --verbose --target curl-examples
|
||||
${{ matrix.build.make-prefix }} cmake --build bld --verbose --target curl-examples
|
||||
else
|
||||
${{ matrix.build.make-prefix }} make V=1 examples
|
||||
${{ matrix.build.make-prefix }} make -C bld V=1 examples
|
||||
fi
|
||||
|
||||
48
.github/workflows/macos.yml
vendored
48
.github/workflows/macos.yml
vendored
@ -47,8 +47,8 @@ permissions: {}
|
||||
# newer than the 10.8 required by `CFURLCreateDataAndPropertiesFromResource`.
|
||||
|
||||
env:
|
||||
LDFLAGS: -w # suppress 'object file was built for newer macOS version than being linked' warnings
|
||||
MAKEFLAGS: -j 4
|
||||
LDFLAGS: -w # suppress 'object file was built for newer macOS version than being linked' warnings
|
||||
|
||||
jobs:
|
||||
macos:
|
||||
@ -123,9 +123,10 @@ jobs:
|
||||
compiler: clang
|
||||
configure: --enable-debug --with-openssl=$(brew --prefix openssl)
|
||||
tflags: --test-event
|
||||
- name: 'OpenSSL libssh2 !ldap 10.15'
|
||||
- name: 'quictls libssh2 !ldap 10.15'
|
||||
compiler: clang
|
||||
configure: --enable-debug --disable-ldap --with-openssl=$(brew --prefix openssl)
|
||||
install: quictls
|
||||
configure: --enable-debug --disable-ldap --with-openssl=$(brew --prefix quictls) LDFLAGS="${LDFLAGS} -L$(brew --prefix quictls)/lib"
|
||||
macos-version-min: '10.15'
|
||||
# cmake
|
||||
- name: 'OpenSSL gsasl rtmp AppleIDN'
|
||||
@ -135,9 +136,10 @@ jobs:
|
||||
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
|
||||
clang-tidy: true
|
||||
- name: 'OpenSSL +static libssh +examples'
|
||||
install: libssh
|
||||
generate: -DOPENSSL_ROOT_DIR=$(brew --prefix openssl) -DBUILD_STATIC_LIBS=ON -DCURL_USE_LIBSSH2=OFF -DCURL_USE_LIBSSH=ON
|
||||
chkprefill: _chkprefill
|
||||
- name: 'quictls +static libssh +examples'
|
||||
install: quictls libssh
|
||||
generate: -DOPENSSL_ROOT_DIR=$(brew --prefix quictls) -DBUILD_STATIC_LIBS=ON -DCURL_USE_LIBSSH2=OFF -DCURL_USE_LIBSSH=ON
|
||||
- name: 'SecureTransport debug'
|
||||
generate: -DCURL_USE_SECTRANSP=ON -DENABLE_DEBUG=ON
|
||||
macos-version-min: '10.8'
|
||||
@ -147,9 +149,9 @@ jobs:
|
||||
- name: 'wolfSSL !ldap brotli zstd'
|
||||
install: brotli wolfssl zstd
|
||||
generate: -DCURL_USE_WOLFSSL=ON -DCURL_DISABLE_LDAP=ON -DUSE_ECH=ON
|
||||
- name: 'mbedTLS !ldap brotli zstd'
|
||||
install: brotli mbedtls zstd
|
||||
generate: -DCURL_USE_MBEDTLS=ON -DCURL_DISABLE_LDAP=ON
|
||||
- name: 'mbedTLS openldap brotli zstd'
|
||||
install: brotli mbedtls zstd openldap
|
||||
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"
|
||||
- name: 'GnuTLS !ldap 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
|
||||
@ -183,11 +185,12 @@ jobs:
|
||||
run: |
|
||||
echo ${{ matrix.build.generate && 'ninja' || 'automake libtool' }} \
|
||||
pkgconf libpsl libssh2 \
|
||||
${{ !matrix.build.clang-tidy && 'nghttp2 stunnel' || '' }} \
|
||||
${{ !matrix.build.clang-tidy && 'libnghttp2 stunnel' || '' }} \
|
||||
${{ 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
|
||||
|
||||
- name: 'brew unlink openssl'
|
||||
if: ${{ contains(matrix.build.install, 'libressl') || contains(matrix.build.install, 'quictls') }}
|
||||
run: |
|
||||
if test -d $(brew --prefix)/include/openssl; then
|
||||
brew unlink openssl
|
||||
@ -228,11 +231,20 @@ jobs:
|
||||
fi
|
||||
|
||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||
[ -n '${{ matrix.build.macos-version-min }}' ] && options+=' -DCMAKE_OSX_DEPLOYMENT_TARGET=${{ matrix.build.macos-version-min }}'
|
||||
cmake -B bld -G Ninja -DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON -DCURL_WERROR=ON \
|
||||
-DCMAKE_OSX_SYSROOT="${sysroot}" \
|
||||
-DCMAKE_C_COMPILER_TARGET="$(uname -m | sed 's/arm64/aarch64/')-apple-darwin$(uname -r)" \
|
||||
${{ matrix.build.generate }} ${options}
|
||||
for _chkprefill in '' ${{ matrix.build.chkprefill }}; do
|
||||
options=''
|
||||
[ -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${_chkprefill}" -G Ninja -D_CURL_PREFILL=ON \
|
||||
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON -DCURL_WERROR=ON \
|
||||
-DCMAKE_OSX_SYSROOT="${sysroot}" \
|
||||
-DCMAKE_C_COMPILER_TARGET="$(uname -m | sed 's/arm64/aarch64/')-apple-darwin$(uname -r)" \
|
||||
${{ 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
|
||||
export CFLAGS
|
||||
if [[ '${{ matrix.compiler }}' = 'llvm'* ]]; then
|
||||
@ -303,7 +315,6 @@ jobs:
|
||||
if [ -z '${{ matrix.build.torture }}' ]; then
|
||||
TFLAGS+=' ~2037 ~2041' # flaky
|
||||
if [[ '${{ matrix.compiler }}' = 'gcc'* ]]; then
|
||||
TFLAGS+=' ~RTSP' # 567 568 569 570 571 572 577 689 3100
|
||||
TFLAGS+=' ~1156 ~1539' # HTTP Content-Range, Content-Length
|
||||
if [[ -n '${{ matrix.build.configure }}' || \
|
||||
'${{ matrix.build.generate }}' = *'-DCURL_USE_SECTRANSP=ON'* ]]; then
|
||||
@ -334,7 +345,7 @@ jobs:
|
||||
if: ${{ contains(matrix.build.name, '+examples') }}
|
||||
run: |
|
||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||
cmake --build bld --target curl-examples --verbose
|
||||
cmake --build bld --verbose --target curl-examples
|
||||
else
|
||||
make -C bld examples V=1
|
||||
fi
|
||||
@ -443,7 +454,8 @@ jobs:
|
||||
[ '${{ matrix.config }}' = 'SecureTransport' ] && options+=' -DCURL_USE_SECTRANSP=ON'
|
||||
[ -n '${{ matrix.macos-version-min }}' ] && options+=' -DCMAKE_OSX_DEPLOYMENT_TARGET=${{ matrix.macos-version-min }}'
|
||||
# would pick up nghttp2, libidn2, and libssh2
|
||||
cmake -B bld -DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON -DCURL_WERROR=ON \
|
||||
cmake -B bld -D_CURL_PREFILL=ON \
|
||||
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON -DCURL_WERROR=ON \
|
||||
-DCMAKE_OSX_SYSROOT="${sysroot}" \
|
||||
-DCMAKE_C_COMPILER_TARGET="$(uname -m | sed 's/arm64/aarch64/')-apple-darwin$(uname -r)" \
|
||||
-DCMAKE_IGNORE_PREFIX_PATH="$(brew --prefix)" \
|
||||
|
||||
118
.github/workflows/non-native.yml
vendored
118
.github/workflows/non-native.yml
vendored
@ -59,21 +59,21 @@ jobs:
|
||||
time cmake -B bld -G Ninja \
|
||||
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON \
|
||||
-DCURL_WERROR=ON \
|
||||
-DENABLE_DEBUG=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG= \
|
||||
-DENABLE_DEBUG=ON -DCMAKE_BUILD_TYPE=Debug \
|
||||
-DCURL_USE_OPENSSL=ON \
|
||||
-DCURL_USE_GSSAPI=ON \
|
||||
|| { 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'; grep -F '#define' bld/lib/curl_config.h | sort || true; echo '::endgroup::'
|
||||
time cmake --build bld --config Debug
|
||||
time cmake --build bld
|
||||
bld/src/curl --disable --version
|
||||
if [ '${{ matrix.arch }}' = 'x86_64' ]; then # Slow on emulated CPU
|
||||
time cmake --build bld --config Debug --target testdeps
|
||||
time cmake --build bld --target testdeps
|
||||
export TFLAGS='-j4'
|
||||
time cmake --build bld --config Debug --target test-ci
|
||||
time cmake --build bld --target test-ci
|
||||
fi
|
||||
echo '::group::build examples'
|
||||
time cmake --build bld --config Debug --target curl-examples
|
||||
time cmake --build bld --target curl-examples
|
||||
echo '::endgroup::'
|
||||
|
||||
openbsd:
|
||||
@ -100,30 +100,31 @@ jobs:
|
||||
time cmake -B bld -G Ninja \
|
||||
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON \
|
||||
-DCURL_WERROR=ON \
|
||||
-DENABLE_DEBUG=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG= \
|
||||
-DENABLE_DEBUG=ON -DCMAKE_BUILD_TYPE=Debug \
|
||||
-DCURL_USE_OPENSSL=ON \
|
||||
|| { 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'; grep -F '#define' bld/lib/curl_config.h | sort || true; echo '::endgroup::'
|
||||
time cmake --build bld --config Debug
|
||||
time cmake --build bld
|
||||
bld/src/curl --disable --version
|
||||
if [ '${{ matrix.arch }}' = 'x86_64' ]; then # Slow on emulated CPU
|
||||
time cmake --build bld --config Debug --target testdeps
|
||||
time cmake --build bld --target testdeps
|
||||
export TFLAGS='-j8 ~3017 ~TFTP ~FTP' # FIXME: TFTP requests executed twice? Related: `curl: (69) TFTP: Access Violation`?
|
||||
time cmake --build bld --config Debug --target test-ci
|
||||
time cmake --build bld --target test-ci
|
||||
fi
|
||||
echo '::group::build examples'
|
||||
time cmake --build bld --config Debug --target curl-examples
|
||||
time cmake --build bld --target curl-examples
|
||||
echo '::endgroup::'
|
||||
|
||||
freebsd:
|
||||
name: "FreeBSD, ${{ matrix.build == 'cmake' && 'CM' || 'AM' }} ${{ matrix.compiler }} openssl ${{ matrix.arch }}"
|
||||
name: "FreeBSD, ${{ matrix.build == 'cmake' && 'CM' || 'AM' }} ${{ matrix.compiler }} openssl${{ matrix.desc }} ${{ matrix.arch }}"
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 20
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- { 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: 'cmake' , arch: 'arm64', compiler: 'clang' }
|
||||
fail-fast: false
|
||||
@ -139,6 +140,7 @@ jobs:
|
||||
version: '14.1'
|
||||
architecture: ${{ matrix.arch }}
|
||||
run: |
|
||||
export MAKEFLAGS=-j3
|
||||
# https://ports.freebsd.org/
|
||||
time sudo pkg install -y autoconf automake libtool \
|
||||
pkgconf brotli openldap26-client libidn2 libnghttp2 stunnel py311-impacket
|
||||
@ -148,18 +150,25 @@ jobs:
|
||||
--prefix="${HOME}"/install \
|
||||
--with-openssl \
|
||||
--with-brotli --enable-ldap --enable-ldaps --with-libidn2 --with-libssh2 --with-nghttp2 --with-gssapi \
|
||||
--disable-dependency-tracking || { tail -n 1000 config.log; false; }
|
||||
--disable-dependency-tracking \
|
||||
${{ 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'; grep -F '#define' lib/curl_config.h | sort || true; echo '::endgroup::'
|
||||
time make -j3 install
|
||||
time make install
|
||||
src/curl --disable --version
|
||||
desc='${{ matrix.desc }}'
|
||||
if [ '${{ matrix.arch }}' = 'x86_64' ]; then # Slow on emulated CPU
|
||||
time make -j3 -C tests
|
||||
time make test-ci V=1 TFLAGS='-j4'
|
||||
time make -C tests
|
||||
if [ "${desc#*!runtests*}" = "${desc}" ]; then
|
||||
time make test-ci V=1 TFLAGS='-j4'
|
||||
fi
|
||||
fi
|
||||
if [ "${desc#*!examples*}" = "${desc}" ]; then
|
||||
echo '::group::build examples'
|
||||
time make examples
|
||||
echo '::endgroup::'
|
||||
fi
|
||||
echo '::group::build examples'
|
||||
time make -j3 examples
|
||||
echo '::endgroup::'
|
||||
|
||||
- name: 'cmake'
|
||||
if: ${{ matrix.build == 'cmake' }}
|
||||
@ -176,21 +185,27 @@ jobs:
|
||||
-DCMAKE_C_COMPILER='${{ matrix.compiler }}' \
|
||||
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON \
|
||||
-DCURL_WERROR=ON \
|
||||
-DENABLE_DEBUG=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG= \
|
||||
-DENABLE_DEBUG=ON -DCMAKE_BUILD_TYPE=Debug \
|
||||
-DCURL_USE_OPENSSL=ON \
|
||||
-DCURL_USE_GSSAPI=ON \
|
||||
${{ matrix.options }} \
|
||||
|| { 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'; grep -F '#define' bld/lib/curl_config.h | sort || true; echo '::endgroup::'
|
||||
time cmake --build bld --config Debug
|
||||
time cmake --build bld
|
||||
bld/src/curl --disable --version
|
||||
desc='${{ matrix.desc }}'
|
||||
if [ '${{ matrix.arch }}' = 'x86_64' ]; then # Slow on emulated CPU
|
||||
time cmake --build bld --config Debug --target testdeps
|
||||
time cmake --build bld --config Debug --target test-ci
|
||||
time cmake --build bld --target testdeps
|
||||
if [ "${desc#*!runtests*}" = "${desc}" ]; then
|
||||
time cmake --build bld --target test-ci
|
||||
fi
|
||||
fi
|
||||
if [ "${desc#*!examples*}" = "${desc}" ]; then
|
||||
echo '::group::build examples'
|
||||
time cmake --build bld --target curl-examples
|
||||
echo '::endgroup::'
|
||||
fi
|
||||
echo '::group::build examples'
|
||||
time cmake --build bld --config Debug --target curl-examples
|
||||
echo '::endgroup::'
|
||||
|
||||
omnios:
|
||||
name: 'OmniOS, AM gcc openssl amd64'
|
||||
@ -209,19 +224,21 @@ jobs:
|
||||
run: |
|
||||
set -e
|
||||
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
|
||||
mkdir bld && cd bld && time ../configure --enable-unity --enable-test-bundles --enable-debug --enable-warnings --enable-werror \
|
||||
--prefix="${HOME}"/install \
|
||||
--with-openssl \
|
||||
--disable-dependency-tracking || { tail -n 1000 config.log; false; }
|
||||
--disable-dependency-tracking \
|
||||
|| { 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'; grep -F '#define' lib/curl_config.h | sort || true; echo '::endgroup::'
|
||||
time gmake -j3 install
|
||||
time gmake install
|
||||
src/curl --disable --version
|
||||
time gmake -j3 -C tests
|
||||
time gmake -C tests
|
||||
time gmake test-ci V=1
|
||||
echo '::group::build examples'
|
||||
time gmake -j3 examples
|
||||
time gmake examples
|
||||
echo '::endgroup::'
|
||||
|
||||
ios:
|
||||
@ -229,9 +246,9 @@ jobs:
|
||||
runs-on: 'macos-latest'
|
||||
timeout-minutes: 10
|
||||
env:
|
||||
MAKEFLAGS: -j 4
|
||||
DEVELOPER_DIR: "/Applications/Xcode${{ matrix.build.xcode && format('_{0}', matrix.build.xcode) || '' }}.app/Contents/Developer"
|
||||
CC: ${{ matrix.build.compiler || 'clang' }}
|
||||
MAKEFLAGS: -j 4
|
||||
# renovate: datasource=github-tags depName=libressl-portable/portable versioning=semver registryUrl=https://github.com
|
||||
libressl-version: 4.0.0
|
||||
strategy:
|
||||
@ -246,6 +263,7 @@ jobs:
|
||||
install_steps: libressl
|
||||
# FIXME: Could not make OPENSSL_ROOT_DIR work. CMake seems to prepend sysroot to it.
|
||||
generate: >-
|
||||
-DCMAKE_BUILD_TYPE=Release -DCMAKE_UNITY_BUILD_BATCH_SIZE=50
|
||||
-DOPENSSL_INCLUDE_DIR="$HOME/libressl/include"
|
||||
-DOPENSSL_SSL_LIBRARY="$HOME/libressl/lib/libssl.a"
|
||||
-DOPENSSL_CRYPTO_LIBRARY="$HOME/libressl/lib/libcrypto.a"
|
||||
@ -254,6 +272,7 @@ jobs:
|
||||
- name: 'libressl'
|
||||
install_steps: libressl
|
||||
generator: Xcode
|
||||
options: --config Debug
|
||||
generate: >-
|
||||
-DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED=OFF
|
||||
-DMACOSX_BUNDLE_GUI_IDENTIFIER=se.curl
|
||||
@ -296,7 +315,7 @@ jobs:
|
||||
https://github.com/libressl/portable/releases/download/v${{ env.libressl-version }}/libressl-${{ env.libressl-version }}.tar.gz | tar -x
|
||||
cd libressl-${{ env.libressl-version }}
|
||||
# FIXME: on the 4.0.1 release, delete '-DHAVE_ENDIAN_H=0'
|
||||
cmake . \
|
||||
cmake -B . \
|
||||
-DHAVE_ENDIAN_H=0 \
|
||||
-DCMAKE_INSTALL_PREFIX="$HOME/libressl" \
|
||||
-DCMAKE_SYSTEM_NAME=iOS \
|
||||
@ -320,7 +339,8 @@ jobs:
|
||||
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
|
||||
[ -n '${{ matrix.build.generator }}' ] && options='-G ${{ matrix.build.generator }}'
|
||||
cmake -B bld -DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON -DCURL_WERROR=ON \
|
||||
cmake -B bld -D_CURL_PREFILL=ON \
|
||||
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON -DCURL_WERROR=ON \
|
||||
-DCMAKE_SYSTEM_NAME=iOS \
|
||||
-DUSE_APPLE_IDN=ON \
|
||||
${{ matrix.build.generate }} ${options}
|
||||
@ -345,7 +365,7 @@ jobs:
|
||||
- name: 'build'
|
||||
run: |
|
||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||
cmake --build bld --verbose
|
||||
cmake --build bld ${{ matrix.build.options }} --parallel 4 --verbose
|
||||
else
|
||||
make -C bld V=1
|
||||
fi
|
||||
@ -356,7 +376,7 @@ jobs:
|
||||
- name: 'build tests'
|
||||
run: |
|
||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||
cmake --build bld --target testdeps --verbose
|
||||
cmake --build bld ${{ matrix.build.options }} --parallel 4 --target testdeps --verbose
|
||||
else
|
||||
make -C bld V=1 -C tests
|
||||
fi
|
||||
@ -364,7 +384,7 @@ jobs:
|
||||
- name: 'build examples'
|
||||
run: |
|
||||
if [ -n '${{ matrix.build.generate }}' ]; then
|
||||
cmake --build bld --target curl-examples --verbose
|
||||
cmake --build bld ${{ matrix.build.options }} --parallel 4 --target curl-examples --verbose
|
||||
else
|
||||
make -C bld examples V=1
|
||||
fi
|
||||
@ -374,9 +394,9 @@ jobs:
|
||||
runs-on: 'ubuntu-latest'
|
||||
timeout-minutes: 25
|
||||
env:
|
||||
MAKEFLAGS: -j 5
|
||||
VCPKG_BINARY_SOURCES: 'clear;x-gha,readwrite'
|
||||
VCPKG_DISABLE_METRICS: '1'
|
||||
MAKEFLAGS: -j 5
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
@ -474,7 +494,7 @@ jobs:
|
||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||
cmake --build bld --verbose
|
||||
else
|
||||
make -j5 -C bld V=1
|
||||
make -C bld V=1
|
||||
fi
|
||||
|
||||
- name: 'curl info'
|
||||
@ -485,7 +505,7 @@ jobs:
|
||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||
cmake --build bld --target testdeps
|
||||
else
|
||||
make -j5 -C bld -C tests
|
||||
make -C bld -C tests
|
||||
fi
|
||||
|
||||
- name: 'build examples'
|
||||
@ -493,7 +513,7 @@ jobs:
|
||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||
cmake --build bld --target curl-examples
|
||||
else
|
||||
make -j5 -C bld examples
|
||||
make -C bld examples
|
||||
fi
|
||||
|
||||
amiga:
|
||||
@ -501,6 +521,7 @@ jobs:
|
||||
runs-on: 'ubuntu-latest'
|
||||
timeout-minutes: 5
|
||||
env:
|
||||
MAKEFLAGS: -j 5
|
||||
amissl-version: 5.18
|
||||
strategy:
|
||||
matrix:
|
||||
@ -568,9 +589,9 @@ jobs:
|
||||
- name: 'build'
|
||||
run: |
|
||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||
cmake --build bld --parallel 5
|
||||
cmake --build bld
|
||||
else
|
||||
make -j5 -C bld
|
||||
make -C bld
|
||||
fi
|
||||
|
||||
- name: 'curl info'
|
||||
@ -580,18 +601,18 @@ jobs:
|
||||
if: ${{ matrix.build == 'cmake' }} # skip for autotools to save time
|
||||
run: |
|
||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||
cmake --build bld --parallel 5 --target testdeps
|
||||
cmake --build bld --target testdeps
|
||||
else
|
||||
make -j5 -C bld -C tests
|
||||
make -C bld -C tests
|
||||
fi
|
||||
|
||||
- name: 'build examples'
|
||||
if: ${{ matrix.build == 'cmake' }} # skip for autotools to save time
|
||||
run: |
|
||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||
cmake --build bld --parallel 5 --target curl-examples
|
||||
cmake --build bld --target curl-examples
|
||||
else
|
||||
make -j5 -C bld examples
|
||||
make -C bld examples
|
||||
fi
|
||||
|
||||
msdos:
|
||||
@ -599,6 +620,7 @@ jobs:
|
||||
runs-on: 'ubuntu-latest'
|
||||
timeout-minutes: 5
|
||||
env:
|
||||
MAKEFLAGS: -j 5
|
||||
toolchain-version: '3.4'
|
||||
strategy:
|
||||
matrix:
|
||||
@ -678,7 +700,7 @@ jobs:
|
||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||
cmake --build bld
|
||||
else
|
||||
make -j5 -C bld
|
||||
make -C bld
|
||||
fi
|
||||
|
||||
- name: 'curl info'
|
||||
@ -690,7 +712,7 @@ jobs:
|
||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||
cmake --build bld --target testdeps
|
||||
else
|
||||
make -j5 -C bld -C tests
|
||||
make -C bld -C tests
|
||||
fi
|
||||
|
||||
- name: 'build examples'
|
||||
@ -699,5 +721,5 @@ jobs:
|
||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||
cmake --build bld --target curl-examples
|
||||
else
|
||||
make -j5 -C bld examples
|
||||
make -C bld examples
|
||||
fi
|
||||
|
||||
335
.github/workflows/windows.yml
vendored
335
.github/workflows/windows.yml
vendored
@ -44,6 +44,7 @@ jobs:
|
||||
run:
|
||||
shell: C:\cygwin\bin\bash.exe '{0}'
|
||||
env:
|
||||
MAKEFLAGS: -j 5
|
||||
SHELLOPTS: 'igncr'
|
||||
strategy:
|
||||
matrix:
|
||||
@ -83,14 +84,13 @@ jobs:
|
||||
- name: 'configure'
|
||||
timeout-minutes: 5
|
||||
run: |
|
||||
PATH=/usr/bin
|
||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||
PATH="/usr/bin:$(cygpath "${SYSTEMROOT}")/System32"
|
||||
cmake -B bld -G Ninja ${options} \
|
||||
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON \
|
||||
cmake -B bld -G Ninja -D_CURL_PREFILL=ON ${options} \
|
||||
-DCMAKE_UNITY_BUILD=ON -DCMAKE_UNITY_BUILD_BATCH_SIZE=30 -DCURL_TEST_BUNDLES=ON \
|
||||
-DCURL_WERROR=ON \
|
||||
${{ matrix.config }}
|
||||
else
|
||||
PATH="/usr/bin:$(cygpath "${SYSTEMROOT}")/System32"
|
||||
mkdir bld && cd bld && ../configure --enable-unity --enable-test-bundles --enable-warnings --enable-werror \
|
||||
--prefix="${HOME}"/install \
|
||||
--with-openssl \
|
||||
@ -112,9 +112,9 @@ jobs:
|
||||
timeout-minutes: 10
|
||||
run: |
|
||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||
cmake --build bld --config '${{ matrix.type }}'
|
||||
cmake --build bld
|
||||
else
|
||||
make -C bld -j5 V=1 install
|
||||
make -C bld V=1 install
|
||||
fi
|
||||
|
||||
- name: 'curl version'
|
||||
@ -131,9 +131,9 @@ jobs:
|
||||
timeout-minutes: 15
|
||||
run: |
|
||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||
cmake --build bld --config '${{ matrix.type }}' --target testdeps
|
||||
cmake --build bld --target testdeps
|
||||
else
|
||||
make -C bld -j5 V=1 -C tests
|
||||
make -C bld V=1 -C tests
|
||||
fi
|
||||
|
||||
- name: 'run tests'
|
||||
@ -146,9 +146,9 @@ jobs:
|
||||
fi
|
||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||
PATH="$PWD/bld/lib:$PATH"
|
||||
cmake --build bld --config '${{ matrix.type }}' --target test-ci
|
||||
cmake --build bld --target test-ci
|
||||
else
|
||||
make -C bld -j5 V=1 test-ci
|
||||
make -C bld V=1 test-ci
|
||||
fi
|
||||
|
||||
- name: 'build examples'
|
||||
@ -156,9 +156,9 @@ jobs:
|
||||
timeout-minutes: 5
|
||||
run: |
|
||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||
cmake --build bld --config '${{ matrix.type }}' --target curl-examples
|
||||
cmake --build bld --target curl-examples
|
||||
else
|
||||
make -C bld -j5 V=1 examples
|
||||
make -C bld V=1 examples
|
||||
fi
|
||||
|
||||
msys2: # both msys and mingw-w64
|
||||
@ -168,6 +168,8 @@ jobs:
|
||||
defaults:
|
||||
run:
|
||||
shell: msys2 {0}
|
||||
env:
|
||||
MAKEFLAGS: -j 5
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
@ -180,7 +182,7 @@ jobs:
|
||||
# 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: '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' }
|
||||
- { 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: '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: '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' }
|
||||
@ -205,6 +207,7 @@ jobs:
|
||||
libnghttp2-devel
|
||||
libpsl-devel
|
||||
libssh2-devel
|
||||
${{ matrix.chkprefill == '_chkprefill' && 'diffutils' || '' }}
|
||||
|
||||
- uses: msys2/setup-msys2@d44ca8e88d8b43d56cf5670f91747359d5537f97 # v2
|
||||
if: ${{ matrix.sys != 'msys' }}
|
||||
@ -218,6 +221,7 @@ jobs:
|
||||
mingw-w64-${{ matrix.env }}-libssh2
|
||||
mingw-w64-${{ matrix.env }}-libpsl
|
||||
mingw-w64-${{ matrix.env }}-c-ares
|
||||
${{ matrix.chkprefill == '_chkprefill' && format('mingw-w64-{0}-diffutils', matrix.env) || '' }}
|
||||
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
with:
|
||||
@ -241,20 +245,26 @@ jobs:
|
||||
fi
|
||||
fi
|
||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||
if [[ '${{ matrix.env }}' = 'clang'* ]]; then
|
||||
options='-DCMAKE_C_COMPILER=clang'
|
||||
else
|
||||
options='-DCMAKE_C_COMPILER=gcc'
|
||||
for _chkprefill in '' ${{ matrix.chkprefill }}; do
|
||||
if [[ '${{ matrix.env }}' = 'clang'* ]]; then
|
||||
options='-DCMAKE_C_COMPILER=clang'
|
||||
else
|
||||
options='-DCMAKE_C_COMPILER=gcc'
|
||||
fi
|
||||
[ '${{ matrix.sys }}' = 'msys' ] && options+=' -D_CURL_PREFILL=ON'
|
||||
[ '${{ matrix.test }}' = 'uwp' ] && options+=' -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0'
|
||||
[ "${_chkprefill}" = '_chkprefill' ] && options+=' -D_CURL_PREFILL=OFF'
|
||||
cmake -B "bld${_chkprefill}" -G Ninja ${options} \
|
||||
-DCMAKE_C_FLAGS="${{ matrix.cflags }} ${CFLAGS_CMAKE} ${CPPFLAGS}" \
|
||||
-DCMAKE_BUILD_TYPE='${{ matrix.type }}' \
|
||||
-DCMAKE_UNITY_BUILD=ON -DCMAKE_UNITY_BUILD_BATCH_SIZE=30 -DCURL_TEST_BUNDLES=ON \
|
||||
-DCURL_WERROR=ON \
|
||||
${{ 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
|
||||
[ '${{ matrix.test }}' = 'uwp' ] && options+=' -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0'
|
||||
[ '${{ matrix.type }}' = 'Debug' ] && options+=' -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG='
|
||||
[ '${{ matrix.type }}' = 'Release' ] && options+=' -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE='
|
||||
cmake -B bld -G Ninja ${options} \
|
||||
-DCMAKE_C_FLAGS="${{ matrix.cflags }} ${CFLAGS_CMAKE} ${CPPFLAGS}" \
|
||||
-DCMAKE_BUILD_TYPE='${{ matrix.type }}' \
|
||||
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON \
|
||||
-DCURL_WERROR=ON \
|
||||
${{ matrix.config }}
|
||||
else
|
||||
export CFLAGS CPPFLAGS
|
||||
mkdir bld && cd bld && ../configure --enable-unity --enable-test-bundles --enable-warnings --enable-werror \
|
||||
@ -277,9 +287,9 @@ jobs:
|
||||
timeout-minutes: 10
|
||||
run: |
|
||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||
cmake --build bld --config '${{ matrix.type }}'
|
||||
cmake --build bld
|
||||
else
|
||||
make -C bld -j5 V=1 install
|
||||
make -C bld V=1 install
|
||||
fi
|
||||
|
||||
- name: 'curl version'
|
||||
@ -302,9 +312,9 @@ jobs:
|
||||
timeout-minutes: 10
|
||||
run: |
|
||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||
cmake --build bld --config '${{ matrix.type }}' --target testdeps
|
||||
cmake --build bld --target testdeps
|
||||
else
|
||||
make -C bld -j5 V=1 -C tests
|
||||
make -C bld V=1 -C tests
|
||||
fi
|
||||
if [ '${{ matrix.build }}' != 'cmake' ]; then
|
||||
# avoid libtool's .exe wrappers
|
||||
@ -338,10 +348,10 @@ jobs:
|
||||
PATH="$PATH:/c/Program Files (x86)/stunnel/bin"
|
||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||
PATH="$PWD/bld/lib:$PATH"
|
||||
cmake --build bld --config '${{ matrix.type }}' --target test-ci
|
||||
cmake --build bld --target test-ci
|
||||
else
|
||||
PATH="$PWD/bld/lib/.libs:$PATH"
|
||||
make -C bld -j5 V=1 test-ci
|
||||
make -C bld V=1 test-ci
|
||||
fi
|
||||
|
||||
- name: 'build examples'
|
||||
@ -349,9 +359,9 @@ jobs:
|
||||
timeout-minutes: 5
|
||||
run: |
|
||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||
cmake --build bld --config '${{ matrix.type }}' --target curl-examples
|
||||
cmake --build bld --target curl-examples
|
||||
else
|
||||
make -C bld -j5 V=1 examples
|
||||
make -C bld V=1 examples
|
||||
fi
|
||||
|
||||
mingw-w64-standalone-downloads:
|
||||
@ -361,6 +371,8 @@ jobs:
|
||||
defaults:
|
||||
run:
|
||||
shell: C:\msys64\usr\bin\bash.exe {0}
|
||||
env:
|
||||
MAKEFLAGS: -j 5
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
@ -417,15 +429,21 @@ jobs:
|
||||
timeout-minutes: 5
|
||||
run: |
|
||||
PATH="$(cygpath "${USERPROFILE}")/my-cache/${{ matrix.dir }}/bin:/c/msys64/usr/bin:$PATH"
|
||||
[ '${{ matrix.type }}' = 'Debug' ] && options+=' -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG='
|
||||
[ '${{ matrix.type }}' = 'Release' ] && options+=' -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE='
|
||||
cmake -B bld -G 'MSYS Makefiles' ${options} \
|
||||
-DCMAKE_C_COMPILER=gcc \
|
||||
-DCMAKE_BUILD_TYPE='${{ matrix.type }}' \
|
||||
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON \
|
||||
-DCURL_WERROR=ON \
|
||||
-DCURL_USE_LIBPSL=OFF \
|
||||
${{ matrix.config }}
|
||||
for _chkprefill in '' ${{ matrix.chkprefill }}; do
|
||||
options=''
|
||||
[ "${_chkprefill}" = '_chkprefill' ] && options+=' -D_CURL_PREFILL=OFF'
|
||||
cmake -B "bld${_chkprefill}" -G 'MSYS Makefiles' ${options} \
|
||||
-DCMAKE_C_COMPILER=gcc \
|
||||
-DCMAKE_BUILD_TYPE='${{ matrix.type }}' \
|
||||
-DCMAKE_UNITY_BUILD=ON -DCMAKE_UNITY_BUILD_BATCH_SIZE=30 -DCURL_TEST_BUNDLES=ON \
|
||||
-DCURL_WERROR=ON \
|
||||
-DCURL_USE_LIBPSL=OFF \
|
||||
${{ 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'
|
||||
if: ${{ !cancelled() }}
|
||||
@ -440,7 +458,7 @@ jobs:
|
||||
timeout-minutes: 5
|
||||
run: |
|
||||
PATH="$(cygpath "${USERPROFILE}")/my-cache/${{ matrix.dir }}/bin:/c/msys64/usr/bin:$PATH"
|
||||
cmake --build bld --config '${{ matrix.type }}' --parallel 5
|
||||
cmake --build bld
|
||||
|
||||
- name: 'curl version'
|
||||
timeout-minutes: 1
|
||||
@ -454,7 +472,7 @@ jobs:
|
||||
timeout-minutes: 10
|
||||
run: |
|
||||
PATH="$(cygpath "${USERPROFILE}")/my-cache/${{ matrix.dir }}/bin:/c/msys64/usr/bin:$PATH"
|
||||
cmake --build bld --config '${{ matrix.type }}' --parallel 5 --target testdeps
|
||||
cmake --build bld --target testdeps
|
||||
|
||||
- name: 'install test prereqs'
|
||||
if: ${{ matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }}
|
||||
@ -464,37 +482,48 @@ 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
|
||||
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'
|
||||
if: ${{ matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }}
|
||||
timeout-minutes: 10
|
||||
run: |
|
||||
PATH="$(cygpath "${USERPROFILE}")/my-cache/${{ matrix.dir }}/bin:/c/msys64/usr/bin:$PATH"
|
||||
export TFLAGS='-j4 ~WebSockets ${{ matrix.tflags }}'
|
||||
export TFLAGS='-j8 ~WebSockets ${{ matrix.tflags }}'
|
||||
if [ -x "$(cygpath "${SYSTEMROOT}/System32/curl.exe")" ]; then
|
||||
TFLAGS+=" -ac $(cygpath "${SYSTEMROOT}/System32/curl.exe")"
|
||||
fi
|
||||
PATH="$PWD/bld/lib:$PATH:/c/Program Files (x86)/stunnel/bin"
|
||||
cmake --build bld --config '${{ matrix.type }}' --target test-ci
|
||||
cmake --build bld --target test-ci
|
||||
|
||||
- name: 'build examples'
|
||||
timeout-minutes: 5
|
||||
run: |
|
||||
PATH="$(cygpath "${USERPROFILE}")/my-cache/${{ matrix.dir }}/bin:/c/msys64/usr/bin:$PATH"
|
||||
cmake --build bld --config '${{ matrix.type }}' --parallel 5 --target curl-examples
|
||||
cmake --build bld --target curl-examples
|
||||
|
||||
linux-cross-mingw-w64:
|
||||
name: "linux-mingw, ${{ matrix.build == 'cmake' && 'CM' || 'AM' }} ${{ matrix.compiler }}"
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 15
|
||||
env:
|
||||
MAKEFLAGS: -j 5
|
||||
TRIPLET: 'x86_64-w64-mingw32'
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
build: [autotools, cmake]
|
||||
compiler: [gcc]
|
||||
env:
|
||||
TRIPLET: 'x86_64-w64-mingw32'
|
||||
steps:
|
||||
- name: 'install packages'
|
||||
timeout-minutes: 5
|
||||
run: sudo apt-get -o Dpkg::Use-Pty=0 install mingw-w64 ${{ matrix.build == 'cmake' && 'ninja-build' || '' }}
|
||||
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
@ -538,7 +567,7 @@ jobs:
|
||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||
cmake --build bld
|
||||
else
|
||||
make -C bld -j5
|
||||
make -C bld
|
||||
fi
|
||||
|
||||
- name: 'curl info'
|
||||
@ -550,7 +579,7 @@ jobs:
|
||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||
cmake --build bld --target testdeps
|
||||
else
|
||||
make -C bld -j5 -C tests
|
||||
make -C bld -C tests
|
||||
fi
|
||||
|
||||
- name: 'build examples'
|
||||
@ -558,7 +587,114 @@ jobs:
|
||||
if [ '${{ matrix.build }}' = 'cmake' ]; then
|
||||
cmake --build bld --target curl-examples
|
||||
else
|
||||
make -C bld -j5 examples
|
||||
make -C bld 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
|
||||
|
||||
msvc:
|
||||
@ -574,16 +710,16 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- name: 'schannel MultiSSL U'
|
||||
install: 'brotli zlib zstd libpsl nghttp2 libssh2[core,zlib] pkgconf gsasl openssl mbedtls wolfssl'
|
||||
- name: 'openssl'
|
||||
install: 'brotli zlib zstd nghttp2 nghttp3 openssl libssh2'
|
||||
arch: 'x64'
|
||||
plat: 'windows'
|
||||
plat: 'uwp'
|
||||
type: 'Debug'
|
||||
tflags: '~1516 ~2301 ~2302 ~2303 ~2307 ~2310'
|
||||
tflags: 'skiprun'
|
||||
config: >-
|
||||
-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_GSASL=ON -DUSE_WIN32_IDN=ON -DENABLE_UNICODE=ON -DUSE_SSLS_EXPORT=ON
|
||||
-DCURL_USE_SCHANNEL=OFF -DCURL_USE_OPENSSL=ON -DUSE_OPENSSL_QUIC=ON
|
||||
-DCURL_USE_LIBPSL=OFF
|
||||
|
||||
- name: 'openssl'
|
||||
install: 'brotli zlib zstd libpsl nghttp2 nghttp3 openssl libssh2 pkgconf gsasl c-ares libuv krb5'
|
||||
@ -596,16 +732,16 @@ jobs:
|
||||
-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
|
||||
|
||||
- name: 'openssl'
|
||||
install: 'brotli zlib zstd nghttp2 nghttp3 openssl libssh2'
|
||||
- name: 'schannel MultiSSL U'
|
||||
install: 'brotli zlib zstd libpsl nghttp2 libssh2[core,zlib] pkgconf gsasl openssl mbedtls wolfssl'
|
||||
arch: 'x64'
|
||||
plat: 'uwp'
|
||||
plat: 'windows'
|
||||
type: 'Debug'
|
||||
tflags: 'skiprun'
|
||||
tflags: '~1516 ~2301 ~2302 ~2303 ~2307 ~2310'
|
||||
config: >-
|
||||
-DCURL_USE_LIBSSH2=ON
|
||||
-DCURL_USE_SCHANNEL=OFF -DCURL_USE_OPENSSL=ON -DUSE_OPENSSL_QUIC=ON
|
||||
-DCURL_USE_LIBPSL=OFF
|
||||
-DCURL_USE_SCHANNEL=ON -DCURL_USE_OPENSSL=ON -DCURL_USE_MBEDTLS=ON -DCURL_USE_WOLFSSL=ON -DCURL_DEFAULT_SSL_BACKEND=schannel
|
||||
-DCURL_USE_GSASL=ON -DUSE_WIN32_IDN=ON -DENABLE_UNICODE=ON -DUSE_SSLS_EXPORT=ON
|
||||
|
||||
- name: 'libressl'
|
||||
install: 'brotli zlib zstd libpsl nghttp2 libressl libssh2[core,zlib] pkgconf ngtcp2[libressl] nghttp3'
|
||||
@ -647,6 +783,7 @@ jobs:
|
||||
plat: 'windows'
|
||||
type: 'Debug'
|
||||
tflags: '~1516'
|
||||
chkprefill: '_chkprefill'
|
||||
# WARNING: libssh uses hard-coded world-writable paths (/etc/..., ~/.ssh/) to
|
||||
# read its configuration from, making it vulnerable to attacks on
|
||||
# Windows. Do not use this component till there is a fix for these.
|
||||
@ -683,28 +820,36 @@ jobs:
|
||||
timeout-minutes: 5
|
||||
run: |
|
||||
PATH="/c/msys64/usr/bin:$PATH"
|
||||
if [ '${{ matrix.plat }}' = 'uwp' ]; then
|
||||
options+=' -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0'
|
||||
cflags='-DWINAPI_FAMILY=WINAPI_FAMILY_PC_APP'
|
||||
ldflags='-OPT:NOREF -OPT:NOICF -APPCONTAINER:NO'
|
||||
vsglobals=';AppxPackage=false;WindowsAppContainer=false'
|
||||
for _chkprefill in '' ${{ matrix.chkprefill }}; do
|
||||
options=''
|
||||
if [ '${{ matrix.plat }}' = 'uwp' ]; then
|
||||
options+=' -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0'
|
||||
cflags='-DWINAPI_FAMILY=WINAPI_FAMILY_PC_APP'
|
||||
ldflags='-OPT:NOREF -OPT:NOICF -APPCONTAINER:NO'
|
||||
vsglobals=';AppxPackage=false;WindowsAppContainer=false'
|
||||
fi
|
||||
[ '${{ matrix.arch }}' = 'arm64' ] && options+=' -A ARM64'
|
||||
[ '${{ 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" \
|
||||
-DVCPKG_INSTALLED_DIR="$VCPKG_INSTALLATION_ROOT/installed" \
|
||||
-DVCPKG_TARGET_TRIPLET='${{ matrix.arch }}-${{ matrix.plat }}' \
|
||||
-DCMAKE_C_FLAGS="${cflags}" \
|
||||
-DCMAKE_EXE_LINKER_FLAGS="-INCREMENTAL:NO ${ldflags}" \
|
||||
-DCMAKE_SHARED_LINKER_FLAGS="-INCREMENTAL:NO ${ldflags}" \
|
||||
-DCMAKE_VS_GLOBALS="TrackFileAccess=false${vsglobals}" \
|
||||
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON \
|
||||
-DCURL_WERROR=ON \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
-DENABLE_DEBUG=ON \
|
||||
${{ 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
|
||||
cmake -B bld ${options} \
|
||||
-DCMAKE_TOOLCHAIN_FILE="$VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake" \
|
||||
-DVCPKG_INSTALLED_DIR="$VCPKG_INSTALLATION_ROOT/installed" \
|
||||
-DVCPKG_TARGET_TRIPLET='${{ matrix.arch }}-${{ matrix.plat }}' \
|
||||
-DCMAKE_C_FLAGS="${cflags}" \
|
||||
-DCMAKE_EXE_LINKER_FLAGS="-INCREMENTAL:NO ${ldflags}" \
|
||||
-DCMAKE_SHARED_LINKER_FLAGS="-INCREMENTAL:NO ${ldflags}" \
|
||||
-DCMAKE_VS_GLOBALS="TrackFileAccess=false${vsglobals}" \
|
||||
-DCMAKE_BUILD_TYPE='${{ matrix.type }}' \
|
||||
-DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON \
|
||||
-DCURL_WERROR=ON \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
-DENABLE_DEBUG=ON \
|
||||
-DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG= \
|
||||
-DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE= \
|
||||
${{ matrix.config }}
|
||||
|
||||
- name: 'configure log'
|
||||
if: ${{ !cancelled() }}
|
||||
@ -724,10 +869,10 @@ jobs:
|
||||
- name: 'curl version'
|
||||
timeout-minutes: 1
|
||||
run: |
|
||||
PATH=/usr/bin find . \( -name '*.exe' -o -name '*.dll' -o -name '*.lib' \) -exec file '{}' \;
|
||||
PATH=/usr/bin find . \( -name '*.exe' -o -name '*.dll' -o -name '*.lib' -o -name '*.pdb' \) -exec file '{}' \;
|
||||
if [ '${{ matrix.plat }}' != 'uwp' ]; then # Missing: ucrtbased.dll, VCRUNTIME140D.dll, VCRUNTIME140D_APP.dll
|
||||
PATH="$PWD/bld/lib:$PATH"
|
||||
bld/src/curl.exe --disable --version
|
||||
PATH="$PWD/bld/lib/${{ matrix.type }}:$PATH"
|
||||
'bld/src/${{ matrix.type }}/curl.exe' --disable --version
|
||||
fi
|
||||
|
||||
- name: 'build tests'
|
||||
@ -749,17 +894,27 @@ 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
|
||||
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'
|
||||
if: ${{ matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }}
|
||||
timeout-minutes: 10
|
||||
run: |
|
||||
export CURL_DIRSUFFIX='${{ matrix.type }}'
|
||||
export TFLAGS='-j8 ~WebSockets ~SCP ~612 ${{ matrix.tflags }}'
|
||||
if [[ '${{ matrix.install }}' = *'libssh2[core,zlib]'* ]]; then
|
||||
TFLAGS+=' ~SFTP'
|
||||
elif [[ '${{ matrix.install }}' = *'libssh '* ]]; then
|
||||
TFLAGS+=' ~614' # 'SFTP pre-quote chmod' SFTP, pre-quote, directory
|
||||
fi
|
||||
PATH="$PWD/bld/lib:$PATH:/c/Program Files (x86)/stunnel/bin:/c/Program Files/OpenSSH-Win64"
|
||||
PATH="$PWD/bld/lib/${{ matrix.type }}:$PATH:/c/Program Files (x86)/stunnel/bin:/c/Program Files/OpenSSH-Win64"
|
||||
PATH="/c/msys64/usr/bin:$PATH"
|
||||
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_*(),
|
||||
# so disable symbol hiding for debug builds and for memory tracking.
|
||||
set(CURL_HIDDEN_SYMBOLS OFF)
|
||||
elseif(DOS OR AMIGA)
|
||||
elseif(DOS OR AMIGA OR MINGW32CE)
|
||||
set(CURL_HIDDEN_SYMBOLS OFF)
|
||||
endif()
|
||||
|
||||
|
||||
@ -30,14 +30,14 @@
|
||||
/* */
|
||||
#if defined(sun) || defined(__sun__) || \
|
||||
defined(__SUNPRO_C) || defined(__SUNPRO_CC)
|
||||
# if defined(__SVR4) || defined(__srv4__)
|
||||
# define PLATFORM_SOLARIS
|
||||
# else
|
||||
# define PLATFORM_SUNOS4
|
||||
# endif
|
||||
# if defined(__SVR4) || defined(__srv4__)
|
||||
# define PLATFORM_SOLARIS
|
||||
# else
|
||||
# define PLATFORM_SUNOS4
|
||||
# endif
|
||||
#endif
|
||||
#if (defined(_AIX) || defined(__xlC__)) && !defined(_AIX41)
|
||||
# define PLATFORM_AIX_V3
|
||||
# define PLATFORM_AIX_V3
|
||||
#endif
|
||||
/* */
|
||||
#if defined(PLATFORM_SUNOS4) || defined(PLATFORM_AIX_V3)
|
||||
@ -55,72 +55,52 @@ int main(void)
|
||||
#endif
|
||||
|
||||
/* tests for gethostbyname_r */
|
||||
#if defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT) || \
|
||||
defined(HAVE_GETHOSTBYNAME_R_5_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_3_REENTRANT) || \
|
||||
defined(HAVE_GETHOSTBYNAME_R_5) || \
|
||||
defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT) || \
|
||||
defined(HAVE_GETHOSTBYNAME_R_6) || \
|
||||
defined(TEST_GETHOSTBYFOO_REENTRANT)
|
||||
defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT)
|
||||
#include <sys/types.h>
|
||||
#include <netdb.h>
|
||||
int main(void)
|
||||
{
|
||||
char *address = "example.com";
|
||||
int length = 0;
|
||||
int type = 0;
|
||||
const char *address = "example.com";
|
||||
struct hostent h;
|
||||
int rc = 0;
|
||||
#if defined(HAVE_GETHOSTBYNAME_R_3) || \
|
||||
defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT)
|
||||
#if defined(HAVE_GETHOSTBYNAME_R_3) || \
|
||||
defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT)
|
||||
struct hostent_data hdata;
|
||||
#elif defined(HAVE_GETHOSTBYNAME_R_5) || \
|
||||
defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT) || \
|
||||
defined(HAVE_GETHOSTBYNAME_R_6) || \
|
||||
defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT)
|
||||
char buffer[8192];
|
||||
int h_errnop;
|
||||
struct hostent *hp;
|
||||
int h_errnop;
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_GETHOSTBYNAME_R_3) || \
|
||||
defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT)
|
||||
rc = gethostbyname_r(address, &h, &hdata);
|
||||
(void)hdata;
|
||||
#elif defined(HAVE_GETHOSTBYNAME_R_5) || \
|
||||
defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT)
|
||||
rc = gethostbyname_r(address, &h, buffer, 8192, &h_errnop);
|
||||
(void)hp; /* not used for test */
|
||||
(void)h_errnop;
|
||||
#elif defined(HAVE_GETHOSTBYNAME_R_6) || \
|
||||
defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT)
|
||||
rc = gethostbyname_r(address, &h, buffer, 8192, &hp, &h_errnop);
|
||||
(void)hp;
|
||||
(void)h_errnop;
|
||||
#endif
|
||||
|
||||
(void)length;
|
||||
(void)type;
|
||||
(void)h;
|
||||
(void)rc;
|
||||
return 0;
|
||||
}
|
||||
#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_SYS_TYPES_H
|
||||
#include <sys/types.h>
|
||||
@ -130,10 +110,7 @@ int main(void)
|
||||
#endif
|
||||
int main(void)
|
||||
{
|
||||
if(sizeof(bool *))
|
||||
return 0;
|
||||
;
|
||||
return 0;
|
||||
return (int)sizeof(bool *);
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -146,18 +123,20 @@ int main(void) { return 0; }
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_FILE_OFFSET_BITS
|
||||
#undef _FILE_OFFSET_BITS
|
||||
#define _FILE_OFFSET_BITS 64
|
||||
#include <sys/types.h>
|
||||
/* Check that off_t can represent 2**63 - 1 correctly.
|
||||
We cannot simply define LARGE_OFF_T to be 9223372036854775807,
|
||||
since some C++ compilers masquerading as C compilers
|
||||
incorrectly reject 9223372036854775807. */
|
||||
#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
||||
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
||||
&& LARGE_OFF_T % 2147483647 == 1)
|
||||
? 1 : -1];
|
||||
int main(void) { return 0; }
|
||||
static int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 &&
|
||||
LARGE_OFF_T % 2147483647 == 1)
|
||||
? 1 : -1];
|
||||
int main(void)
|
||||
{
|
||||
(void)off_t_is_large;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_IOCTLSOCKET
|
||||
@ -167,9 +146,9 @@ int main(void) { return 0; }
|
||||
int main(void)
|
||||
{
|
||||
/* ioctlsocket source code */
|
||||
int socket;
|
||||
int socket = -1;
|
||||
unsigned long flags = ioctlsocket(socket, FIONBIO, &flags);
|
||||
;
|
||||
(void)flags;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -182,7 +161,6 @@ int main(void)
|
||||
/* IoctlSocket source code */
|
||||
if(0 != IoctlSocket(0, 0, 0))
|
||||
return 1;
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
@ -198,7 +176,7 @@ int main(void)
|
||||
long flags = 0;
|
||||
if(0 != IoctlSocket(0, FIONBIO, &flags))
|
||||
return 1;
|
||||
;
|
||||
(void)flags;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
@ -212,7 +190,7 @@ int main(void)
|
||||
unsigned long flags = 0;
|
||||
if(0 != ioctlsocket(0, FIONBIO, &flags))
|
||||
return 1;
|
||||
;
|
||||
(void)flags;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
@ -239,7 +217,7 @@ int main(void)
|
||||
int flags = 0;
|
||||
if(0 != ioctl(0, FIONBIO, &flags))
|
||||
return 1;
|
||||
;
|
||||
(void)flags;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
@ -267,7 +245,7 @@ int main(void)
|
||||
struct ifreq ifr;
|
||||
if(0 != ioctl(0, SIOCGIFADDR, &ifr))
|
||||
return 1;
|
||||
;
|
||||
(void)ifr;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
@ -286,7 +264,6 @@ int main(void)
|
||||
{
|
||||
if(0 != setsockopt(0, SOL_SOCKET, SO_NONBLOCK, 0, 0))
|
||||
return 1;
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
@ -295,7 +272,7 @@ int main(void)
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
void check(char c) {}
|
||||
static void check(char c) { (void)c; }
|
||||
|
||||
int main(void)
|
||||
{
|
||||
@ -311,7 +288,7 @@ int main(void)
|
||||
#include <errno.h>
|
||||
|
||||
/* Float, because a pointer cannot be implicitly cast to float */
|
||||
void check(float f) {}
|
||||
static void check(float f) { (void)f; }
|
||||
|
||||
int main(void)
|
||||
{
|
||||
@ -335,7 +312,7 @@ int main(void)
|
||||
#include <sys/xattr.h> /* header from libc, not from libattr */
|
||||
int main(void)
|
||||
{
|
||||
fsetxattr(0, 0, 0, 0, 0);
|
||||
fsetxattr(0, "", 0, 0, 0);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
@ -344,8 +321,9 @@ int main(void)
|
||||
#include <time.h>
|
||||
int main(void)
|
||||
{
|
||||
struct timespec ts = {0, 0};
|
||||
clock_gettime(CLOCK_MONOTONIC, &ts);
|
||||
struct timespec ts;
|
||||
(void)clock_gettime(CLOCK_MONOTONIC, &ts);
|
||||
(void)ts;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -51,6 +51,7 @@ if(CURL_USE_PKGCONFIG AND
|
||||
endif()
|
||||
|
||||
if(BROTLI_FOUND AND BROTLIDEC_FOUND)
|
||||
set(Brotli_FOUND TRUE)
|
||||
list(APPEND BROTLIDEC_LIBRARIES ${BROTLI_LIBRARIES}) # order is significant: brotlidec then brotlicommon
|
||||
list(REVERSE BROTLIDEC_LIBRARIES)
|
||||
list(REMOVE_DUPLICATES BROTLIDEC_LIBRARIES)
|
||||
|
||||
@ -48,6 +48,7 @@ if(CURL_USE_PKGCONFIG AND
|
||||
endif()
|
||||
|
||||
if(CARES_FOUND)
|
||||
set(Cares_FOUND TRUE)
|
||||
string(REPLACE ";" " " CARES_CFLAGS "${CARES_CFLAGS}")
|
||||
message(STATUS "Found Cares (via pkg-config): ${CARES_INCLUDE_DIRS} (found version \"${CARES_VERSION}\")")
|
||||
else()
|
||||
|
||||
@ -48,6 +48,7 @@ if(CURL_USE_PKGCONFIG AND
|
||||
endif()
|
||||
|
||||
if(LIBGSASL_FOUND)
|
||||
set(Libgsasl_FOUND TRUE)
|
||||
string(REPLACE ";" " " LIBGSASL_CFLAGS "${LIBGSASL_CFLAGS}")
|
||||
message(STATUS "Found Libgsasl (via pkg-config): ${LIBGSASL_INCLUDE_DIRS} (found version \"${LIBGSASL_VERSION}\")")
|
||||
else()
|
||||
|
||||
@ -48,6 +48,7 @@ if(CURL_USE_PKGCONFIG AND
|
||||
endif()
|
||||
|
||||
if(LIBIDN2_FOUND)
|
||||
set(Libidn2_FOUND TRUE)
|
||||
string(REPLACE ";" " " LIBIDN2_CFLAGS "${LIBIDN2_CFLAGS}")
|
||||
message(STATUS "Found Libidn2 (via pkg-config): ${LIBIDN2_INCLUDE_DIRS} (found version \"${LIBIDN2_VERSION}\")")
|
||||
else()
|
||||
|
||||
@ -48,6 +48,7 @@ if(CURL_USE_PKGCONFIG AND
|
||||
endif()
|
||||
|
||||
if(LIBPSL_FOUND AND LIBPSL_INCLUDE_DIRS)
|
||||
set(Libpsl_FOUND TRUE)
|
||||
string(REPLACE ";" " " LIBPSL_CFLAGS "${LIBPSL_CFLAGS}")
|
||||
message(STATUS "Found Libpsl (via pkg-config): ${LIBPSL_INCLUDE_DIRS} (found version \"${LIBPSL_VERSION}\")")
|
||||
else()
|
||||
|
||||
@ -48,6 +48,7 @@ if(CURL_USE_PKGCONFIG AND
|
||||
endif()
|
||||
|
||||
if(LIBRTMP_FOUND AND LIBRTMP_INCLUDE_DIRS)
|
||||
set(Librtmp_FOUND TRUE)
|
||||
string(REPLACE ";" " " LIBRTMP_CFLAGS "${LIBRTMP_CFLAGS}")
|
||||
message(STATUS "Found Librtmp (via pkg-config): ${LIBRTMP_INCLUDE_DIRS} (found version \"${LIBRTMP_VERSION}\")")
|
||||
else()
|
||||
|
||||
@ -48,6 +48,7 @@ if(CURL_USE_PKGCONFIG AND
|
||||
endif()
|
||||
|
||||
if(LIBSSH_FOUND)
|
||||
set(Libssh_FOUND TRUE)
|
||||
string(REPLACE ";" " " LIBSSH_CFLAGS "${LIBSSH_CFLAGS}")
|
||||
message(STATUS "Found Libssh (via pkg-config): ${LIBSSH_INCLUDE_DIRS} (found version \"${LIBSSH_VERSION}\")")
|
||||
else()
|
||||
|
||||
@ -48,6 +48,7 @@ if(CURL_USE_PKGCONFIG AND
|
||||
endif()
|
||||
|
||||
if(LIBSSH2_FOUND AND LIBSSH2_INCLUDE_DIRS)
|
||||
set(Libssh2_FOUND TRUE)
|
||||
string(REPLACE ";" " " LIBSSH2_CFLAGS "${LIBSSH2_CFLAGS}")
|
||||
message(STATUS "Found Libssh2 (via pkg-config): ${LIBSSH2_INCLUDE_DIRS} (found version \"${LIBSSH2_VERSION}\")")
|
||||
else()
|
||||
|
||||
@ -48,6 +48,7 @@ if(CURL_USE_PKGCONFIG AND
|
||||
endif()
|
||||
|
||||
if(LIBUV_FOUND)
|
||||
set(Libuv_FOUND TRUE)
|
||||
string(REPLACE ";" " " LIBUV_CFLAGS "${LIBUV_CFLAGS}")
|
||||
message(STATUS "Found Libuv (via pkg-config): ${LIBUV_INCLUDE_DIRS} (found version \"${LIBUV_VERSION}\")")
|
||||
else()
|
||||
|
||||
@ -60,6 +60,7 @@ if(CURL_USE_PKGCONFIG AND
|
||||
endif()
|
||||
|
||||
if(MBEDTLS_FOUND AND MBEDX509_FOUND AND MBEDCRYPTO_FOUND)
|
||||
set(MbedTLS_FOUND TRUE)
|
||||
list(APPEND MBEDTLS_LIBRARIES ${MBEDX509_LIBRARIES} ${MBEDCRYPTO_LIBRARIES})
|
||||
list(REVERSE MBEDTLS_LIBRARIES)
|
||||
list(REMOVE_DUPLICATES MBEDTLS_LIBRARIES)
|
||||
|
||||
@ -48,6 +48,7 @@ if(CURL_USE_PKGCONFIG AND
|
||||
endif()
|
||||
|
||||
if(NETTLE_FOUND)
|
||||
set(Nettle_FOUND TRUE)
|
||||
string(REPLACE ";" " " NETTLE_CFLAGS "${NETTLE_CFLAGS}")
|
||||
message(STATUS "Found Nettle (via pkg-config): ${NETTLE_INCLUDE_DIRS} (found version \"${NETTLE_VERSION}\")")
|
||||
else()
|
||||
|
||||
@ -48,6 +48,7 @@ if(CURL_USE_PKGCONFIG AND
|
||||
endif()
|
||||
|
||||
if(QUICHE_FOUND)
|
||||
set(Quiche_FOUND TRUE)
|
||||
string(REPLACE ";" " " QUICHE_CFLAGS "${QUICHE_CFLAGS}")
|
||||
message(STATUS "Found Quiche (via pkg-config): ${QUICHE_INCLUDE_DIRS} (found version \"${QUICHE_VERSION}\")")
|
||||
else()
|
||||
|
||||
@ -48,6 +48,7 @@ if(CURL_USE_PKGCONFIG AND
|
||||
endif()
|
||||
|
||||
if(RUSTLS_FOUND)
|
||||
set(Rustls_FOUND TRUE)
|
||||
string(REPLACE ";" " " RUSTLS_CFLAGS "${RUSTLS_CFLAGS}")
|
||||
message(STATUS "Found Rustls (via pkg-config): ${RUSTLS_INCLUDE_DIRS} (found version \"${RUSTLS_VERSION}\")")
|
||||
else()
|
||||
|
||||
@ -57,6 +57,7 @@ if(CURL_USE_PKGCONFIG AND
|
||||
endif()
|
||||
|
||||
if(WOLFSSL_FOUND)
|
||||
set(WolfSSL_FOUND TRUE)
|
||||
string(REPLACE ";" " " WOLFSSL_CFLAGS "${WOLFSSL_CFLAGS}")
|
||||
message(STATUS "Found WolfSSL (via pkg-config): ${WOLFSSL_INCLUDE_DIRS} (found version \"${WOLFSSL_VERSION}\")")
|
||||
else()
|
||||
|
||||
@ -57,6 +57,7 @@ if(CURL_USE_PKGCONFIG AND
|
||||
endif()
|
||||
|
||||
if(ZSTD_FOUND)
|
||||
set(Zstd_FOUND TRUE)
|
||||
string(REPLACE ";" " " ZSTD_CFLAGS "${ZSTD_CFLAGS}")
|
||||
message(STATUS "Found Zstd (via pkg-config): ${ZSTD_INCLUDE_DIRS} (found version \"${ZSTD_VERSION}\")")
|
||||
else()
|
||||
|
||||
@ -34,11 +34,14 @@ macro(check_include_file_concat_curl _file _variable)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
set(CURL_TEST_DEFINES "") # Initialize global variable
|
||||
|
||||
# For other curl specific tests, use this macro.
|
||||
# Return result in variable: CURL_TEST_OUTPUT
|
||||
macro(curl_internal_test _curl_test)
|
||||
if(NOT DEFINED "${_curl_test}")
|
||||
string(REPLACE ";" " " _cmake_required_definitions "${CMAKE_REQUIRED_DEFINITIONS}")
|
||||
set(_curl_test_add_libraries "")
|
||||
if(CMAKE_REQUIRED_LIBRARIES)
|
||||
set(_curl_test_add_libraries
|
||||
"-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
|
||||
@ -84,3 +87,10 @@ macro(curl_required_libpaths _libpaths_arg)
|
||||
list(APPEND CMAKE_REQUIRED_LINK_DIRECTORIES "${_libpaths_arg}")
|
||||
endif()
|
||||
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,6 +65,9 @@ endif()
|
||||
set(_source_epilogue "#undef inline")
|
||||
curl_add_header_include(HAVE_SYS_TIME_H "sys/time.h")
|
||||
check_c_source_compiles("${_source_epilogue}
|
||||
#ifdef _MSC_VER
|
||||
#include <winsock2.h>
|
||||
#endif
|
||||
#include <time.h>
|
||||
int main(void)
|
||||
{
|
||||
@ -104,11 +107,10 @@ if(NOT DEFINED HAVE_GETADDRINFO_THREADSAFE)
|
||||
check_c_source_compiles("${_source_epilogue}
|
||||
int main(void)
|
||||
{
|
||||
#ifdef h_errno
|
||||
return 0;
|
||||
#else
|
||||
#ifndef h_errno
|
||||
#error force compilation error
|
||||
#endif
|
||||
return 0;
|
||||
}" HAVE_H_ERRNO)
|
||||
|
||||
if(NOT HAVE_H_ERRNO)
|
||||
@ -124,12 +126,11 @@ if(NOT DEFINED HAVE_GETADDRINFO_THREADSAFE)
|
||||
int main(void)
|
||||
{
|
||||
#if defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200809L)
|
||||
return 0;
|
||||
#elif defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 700)
|
||||
return 0;
|
||||
#else
|
||||
#error force compilation error
|
||||
#endif
|
||||
return 0;
|
||||
}" HAVE_H_ERRNO_SBS_ISSUE_7)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@ -44,6 +44,15 @@ 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
|
||||
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(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
|
||||
@ -113,6 +122,7 @@ if(PICKY_COMPILER)
|
||||
-Wtype-limits # clang 2.7 gcc 4.3
|
||||
-Wunreachable-code # clang 2.7 gcc 4.1
|
||||
# -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
|
||||
-Wvla # clang 2.8 gcc 4.3
|
||||
)
|
||||
@ -172,12 +182,19 @@ if(PICKY_COMPILER)
|
||||
-Wold-style-declaration # gcc 4.3
|
||||
-Wpragmas # clang 3.5 gcc 4.1 appleclang 6.0
|
||||
-Wstrict-aliasing=3 # gcc 4.0
|
||||
-ftree-vrp # gcc 4.3 (required for -Warray-bounds, included in -Wall)
|
||||
)
|
||||
endif()
|
||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.5 AND MINGW)
|
||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.5)
|
||||
list(APPEND _picky_enable
|
||||
-Wno-pedantic-ms-format # gcc 4.5 (MinGW-only)
|
||||
-Wjump-misses-init # gcc 4.5
|
||||
)
|
||||
|
||||
if(MINGW)
|
||||
list(APPEND _picky_enable
|
||||
-Wno-pedantic-ms-format # gcc 4.5 (MinGW-only)
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.8)
|
||||
list(APPEND _picky_enable
|
||||
@ -188,7 +205,7 @@ if(PICKY_COMPILER)
|
||||
endif()
|
||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 5.0)
|
||||
list(APPEND _picky_enable
|
||||
-Warray-bounds=2 -ftree-vrp # clang 3.0 gcc 5.0 (clang default: -Warray-bounds)
|
||||
-Warray-bounds=2 # clang 3.0 gcc 5.0 (clang default: -Warray-bounds)
|
||||
)
|
||||
endif()
|
||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 6.0)
|
||||
@ -252,6 +269,9 @@ if(PICKY_COMPILER)
|
||||
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
|
||||
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()
|
||||
@ -274,6 +294,6 @@ endif()
|
||||
|
||||
if(_picky)
|
||||
string(REPLACE ";" " " _picky "${_picky}")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_picky}")
|
||||
string(APPEND CMAKE_C_FLAGS " ${_picky}")
|
||||
message(STATUS "Picky compiler options: ${_picky}")
|
||||
endif()
|
||||
|
||||
@ -47,7 +47,7 @@ function(curl_dumpvars)
|
||||
if(_var_advanced)
|
||||
set(_var_advanced " [adv]")
|
||||
endif()
|
||||
message("${_var}${_var_type}${_var_advanced} = ${${_var}}")
|
||||
message("${_var}${_var_type}${_var_advanced} = '${${_var}}'")
|
||||
endforeach()
|
||||
message("::endgroup::")
|
||||
endfunction()
|
||||
|
||||
311
CMake/unix-cache.cmake
Normal file
311
CMake/unix-cache.cmake
Normal file
@ -0,0 +1,311 @@
|
||||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# 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,7 +35,6 @@ if(MINGW)
|
||||
set(HAVE_STDINT_H 1) # detected by CMake internally in check_type_size()
|
||||
set(HAVE_STDBOOL_H 1)
|
||||
set(HAVE_BOOL_T "${HAVE_STDBOOL_H}")
|
||||
set(HAVE_STRTOLL 1)
|
||||
set(HAVE_BASENAME 1)
|
||||
set(HAVE_FTRUNCATE 1)
|
||||
set(HAVE_SYS_PARAM_H 1)
|
||||
@ -45,21 +44,6 @@ if(MINGW)
|
||||
set(HAVE_UTIME_H 1) # wrapper to sys/utime.h
|
||||
set(HAVE_DIRENT_H 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()
|
||||
set(HAVE_LIBGEN_H 0)
|
||||
set(HAVE_FTRUNCATE 0)
|
||||
@ -73,32 +57,36 @@ else()
|
||||
if(MSVC)
|
||||
set(HAVE_UNISTD_H 0)
|
||||
set(HAVE_STDDEF_H 1) # detected by CMake internally in check_type_size()
|
||||
set(HAVE_STDATOMIC_H 0)
|
||||
if(NOT MSVC_VERSION LESS 1600)
|
||||
if(MSVC_VERSION GREATER_EQUAL 1600)
|
||||
set(HAVE_STDINT_H 1) # detected by CMake internally in check_type_size()
|
||||
else()
|
||||
set(HAVE_STDINT_H 0) # detected by CMake internally in check_type_size()
|
||||
endif()
|
||||
if(NOT MSVC_VERSION LESS 1800)
|
||||
if(MSVC_VERSION GREATER_EQUAL 1800)
|
||||
set(HAVE_STDBOOL_H 1)
|
||||
set(HAVE_STRTOLL 1)
|
||||
else()
|
||||
set(HAVE_STDBOOL_H 0)
|
||||
set(HAVE_STRTOLL 0)
|
||||
endif()
|
||||
set(HAVE_BOOL_T "${HAVE_STDBOOL_H}")
|
||||
if(NOT MSVC_VERSION LESS 1900)
|
||||
if(MSVC_VERSION GREATER_EQUAL 1900)
|
||||
set(HAVE_SNPRINTF 1)
|
||||
else()
|
||||
set(HAVE_SNPRINTF 0)
|
||||
endif()
|
||||
set(HAVE_BASENAME 0)
|
||||
set(HAVE_STRTOK_R 0)
|
||||
set(HAVE_FILE_OFFSET_BITS 0)
|
||||
set(HAVE_ATOMIC 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))
|
||||
# MinGW or clang-cl
|
||||
set(HAVE_STDATOMIC_H 1)
|
||||
set(HAVE_ATOMIC 1)
|
||||
else()
|
||||
set(HAVE_STDATOMIC_H 0)
|
||||
set(HAVE_ATOMIC 0)
|
||||
endif()
|
||||
|
||||
# Available in Windows XP and newer
|
||||
set(HAVE_GETADDRINFO 1)
|
||||
set(HAVE_FREEADDRINFO 1)
|
||||
@ -198,8 +186,59 @@ set(HAVE_GETHOSTBYNAME_R_5_REENTRANT 0)
|
||||
set(HAVE_GETHOSTBYNAME_R_6 0)
|
||||
set(HAVE_GETHOSTBYNAME_R_6_REENTRANT 0)
|
||||
|
||||
set(HAVE_IN_ADDR_T 0)
|
||||
set(STDC_HEADERS 1)
|
||||
|
||||
set(HAVE_SIZEOF_SUSECONDS_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()
|
||||
|
||||
536
CMakeLists.txt
536
CMakeLists.txt
File diff suppressed because it is too large
Load Diff
@ -60,8 +60,12 @@ CMAKE_DIST = \
|
||||
CMake/OtherTests.cmake \
|
||||
CMake/PickyWarnings.cmake \
|
||||
CMake/Utilities.cmake \
|
||||
CMake/unix-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 \
|
||||
projects/build-openssl.bat \
|
||||
|
||||
755
RELEASE-NOTES
755
RELEASE-NOTES
@ -1,272 +1,136 @@
|
||||
curl and libcurl 8.12.0
|
||||
curl and libcurl 8.13.0
|
||||
|
||||
Public curl releases: 264
|
||||
Public curl releases: 266
|
||||
Command line options: 267
|
||||
curl_easy_setopt() options: 306
|
||||
Public functions in libcurl: 96
|
||||
Contributors: 3332
|
||||
Contributors: 3354
|
||||
|
||||
This release includes the following changes:
|
||||
|
||||
o curl: add byte range support to --variable reading from file [56]
|
||||
o curl: make --etag-save acknowledge --create-dirs [31]
|
||||
o getinfo: fix CURLINFO_QUEUE_TIME_T and add 'time_queue' var [55]
|
||||
o getinfo: provide info which auth was used for HTTP and proxy [40]
|
||||
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]
|
||||
o curl: add write-out variable 'tls_earlydata' [79]
|
||||
o rustls: add support for CERTINFO [106]
|
||||
o tool_getparam: make --url support a file with URLs [104]
|
||||
o var: add a '64dec' function that can base64 decode a string [78]
|
||||
o wolfssl: tls early data support [50]
|
||||
|
||||
This release includes the following bugfixes:
|
||||
|
||||
o altsvc: avoid integer overflow in expire calculation [16]
|
||||
o altsvc: return error on dot-only name [178]
|
||||
o android: add CI jobs, buildinfo, cmake docs, disable `CURL_USE_PKGCONFIG` by default [185]
|
||||
o asyn-ares: acknowledge CURLOPT_DNS_SERVERS set to NULL [190]
|
||||
o asyn-ares: fix memory leak [233]
|
||||
o asyn-ares: initial HTTPS resolve support [166]
|
||||
o asyn-thread: use c-ares to resolve HTTPS RR [205]
|
||||
o async-thread: avoid closing eventfd twice [9]
|
||||
o autotools: add support for mingw UWP builds [192]
|
||||
o autotools: silence gcc warnings in libtool code [96]
|
||||
o binmode: convert to macro and use it from tests [44]
|
||||
o build: delete `-Wsign-conversion` related FIXMEs [137]
|
||||
o build: drop `-Winline` picky warning [53]
|
||||
o build: drop `tool_hugehelp.c.cvs`, tidy up macros, drop `buildconf.bat` [200]
|
||||
o build: drop macro used to enable `-Wsign-conversion` warnings in CI [224]
|
||||
o build: drop unused feature macros, update exception list [51]
|
||||
o build: fix `-Wtrampolines` picky warning for gcc 4.x versions [156]
|
||||
o build: fix compiling with GCC 4.x versions [214]
|
||||
o build: fix the tidy targets for autotools [52]
|
||||
o build: fix unsigned `time_t` detection for cmake, MS-DOS, AmigaOS [104]
|
||||
o build: replace configure check with PP condition (Android <21) [97]
|
||||
o build: stop detecting `sched_yield()` on Windows [176]
|
||||
o c-ares: fix/tidy-up macro initializations, avoid a deprecated function [209]
|
||||
o cd2nroff: do not insist on quoted <> within backticks [222]
|
||||
o cd2nroff: support "none" as a TLS backend [29]
|
||||
o cf-https-connect: look into httpsrr alpns when available [152]
|
||||
o cf-socket: error if address can't be copied [72]
|
||||
o cfilters: kill connection filter events attach+detach [217]
|
||||
o checksrc.bat: remove explicit SNPRINTF bypass [174]
|
||||
o checksrc: ban use of sscanf() [7]
|
||||
o checksrc: check for return with parens around a value/name [130]
|
||||
o checksrc: exclude generated bundle files to avoid race condition [235]
|
||||
o checksrc: fix the return() checker [35]
|
||||
o checksrc: introduce 'banfunc' to ban specific functions [117]
|
||||
o cmake/Find: add `iphlpapi` for c-ares, omit syslibs if dep not found [203]
|
||||
o cmake/FindLDAP: avoid empty 'Requires' item when omitting `pkg-config` module [90]
|
||||
o cmake/FindLDAP: avoid framework locations for libs too (Apple) [122]
|
||||
o cmake/FindLibpsl: protect against `pkg-config` "half-detection" [89]
|
||||
o cmake/FindLibssh: sync header comment with other modules
|
||||
o cmake/FindMbedTLS: drop lib duplicates early [17]
|
||||
o cmake: add `librtmp` Find module [86]
|
||||
o cmake: add LDAP Find module [46]
|
||||
o cmake: add native `pkg-config` detection for remaining Find modules [37]
|
||||
o cmake: allow `CURL_LTO` regardless of `CURL_BUILD_TYPE`, enable in CI [88]
|
||||
o cmake: clang-cl improvements [42]
|
||||
o cmake: delete accidental debug message
|
||||
o cmake: deprecate winbuild, add migration guide from legacy build methods [157]
|
||||
o cmake: detect mingw-w64 version, pre-fill `HAVE_STRTOK_R` [179]
|
||||
o cmake: do not store `MINGW64_VERSION` in cache [175]
|
||||
o cmake: drop `CURL_USE_PKGCONFIG` from `curl-config.cmake.in` [208]
|
||||
o cmake: drop `fseeko()` pre-fill and check for Windows [201]
|
||||
o cmake: drop duplicate Windows cache value [81]
|
||||
o cmake: drop redundant FOUND checks (libgsasl, libssh, libuv) [49]
|
||||
o cmake: drop redundant opening/closing `.*` from `MATCH` expressions [64]
|
||||
o cmake: drop unused `HAVE_SYS_XATTR_H` detection [79]
|
||||
o cmake: drop VS2010 "Dialog Hell" workaround added in 2013 [136]
|
||||
o cmake: extend zlib's `AUTO` option to brotli, zstd and enable if found [36]
|
||||
o cmake: fix `net/in.h` detection for MS-DOS [103]
|
||||
o cmake: improve `curl_dumpvars()` and move to `Utilities.cmake` [50]
|
||||
o cmake: make libpsl required by default [45]
|
||||
o cmake: make system libraries `dl`, `m`, `pthread` customizable [123]
|
||||
o cmake: move `pkg-config` names to Find modules [87]
|
||||
o cmake: move GSS init before feature detections [93]
|
||||
o cmake: move mingw UWP workaround from GHA to `CMakeLists.txt` [194]
|
||||
o cmake: namespace functions and macros [41]
|
||||
o cmake: optimize out 4 picky warning option detections with gcc [78]
|
||||
o cmake: pick a better IPv6 feature flag when assembling the feature list [132]
|
||||
o cmake: pre-fill `HAVE_STDATOMIC_H`, `HAVE_ATOMIC` for mingw-w64 [180]
|
||||
o cmake: pre-fill `HAVE_STDINT_H` on Windows [149]
|
||||
o cmake: prefer dash-style MSVC options [216]
|
||||
o cmake: publish/check supported protocols/features via `CURLConfig.cmake` [100]
|
||||
o cmake: replace `unset(VAR)` with `set(VAR "")` for init [43]
|
||||
o cmake: sync OpenSSL QUIC fork detection with autotools [102]
|
||||
o cmake: use `CMAKE_REQUIRED_LINK_DIRECTORIES` [48]
|
||||
o cmake: use `STREQUAL` to detect Linux [68]
|
||||
o cmake: warn for OpenSSL versions missing TLS 1.3 support [221]
|
||||
o cmdline-opts/version.md: describe multissl, mention SSLS-EXPORT [170]
|
||||
o completion.pl: add completion for paths after @ for fish [82]
|
||||
o config-mac: drop `MACOS_SSL_SUPPORT` macro [63]
|
||||
o config: drop unused code and variables [135]
|
||||
o configure: do not inline 'dnl' comments
|
||||
o configure: drop unused detections and macros [105]
|
||||
o configure: streamline Windows large file feature check [138]
|
||||
o configure: UWP and Android follow-up fixes [184]
|
||||
o conncache: count shutdowns against host and max limits [154]
|
||||
o conncache: result_cb comment removed from function docs [1]
|
||||
o content_encoding: drop support for zlib before 1.2.0.4 [211]
|
||||
o content_encoding: namespace GZIP flag constants [147]
|
||||
o content_encoding: put the decomp buffers into the writer structs [210]
|
||||
o content_encoding: support use of custom libzstd memory functions [186]
|
||||
o cookie: cap expire times to 400 days [111]
|
||||
o cookie: fix crash in netscape cookie parsing [84]
|
||||
o cookie: parse only the exact expire date [3]
|
||||
o curl-functions.m4: fix indentation in `CURL_SIZEOF()` [131]
|
||||
o curl: return error if etag options are used with multiple URLs [5]
|
||||
o curl_multi_fdset: include the shutdown connections in the set [168]
|
||||
o curl_multi_waitfds.md: tidy up the example [162]
|
||||
o curl_multibyte: support Windows paths longer than MAX_PATH [76]
|
||||
o curl_setup: fix missing `ADDRESS_FAMILY` type in rare build cases [144]
|
||||
o curl_sha512_256: rename symbols to the curl namespace [124]
|
||||
o curl_url_set.md: adjust the added-in to 7.62.0 [94]
|
||||
o curl_ws_recv.md: fix typo
|
||||
o CURLOPT_CONNECT_ONLY.md: an easy handle with this option set cannot be reused [164]
|
||||
o CURLOPT_PROXY.md: clarify the crendential support in proxy URLs [66]
|
||||
o CURLOPT_RESOLVE.md: fix wording [30]
|
||||
o CURLOPT_SEEKFUNCTION.md: used for FTP, HTTP and SFTP (only) [109]
|
||||
o docs/BUGS.md: remove leading space from a link
|
||||
o docs/cmdline-opts/_ENVIRONMENT.md: minor language fix [119]
|
||||
o docs/cmdline-opts/location.md: fix typos for location flag [226]
|
||||
o docs/HTTP-COOKIES.md: link to more information [125]
|
||||
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]
|
||||
o addrinfo: add curl macro to avoid redefining foreign symbols [29]
|
||||
o asyn-thread: avoid the separate 'struct resdata' alloc [20]
|
||||
o asyn-thread: avoid the separate curl_mutex_t alloc [6]
|
||||
o asyn-thread: do not allocate thread_data separately [21]
|
||||
o asyn-thread: remove 'status' from struct Curl_async [36]
|
||||
o build: add Windows CE / CeGCC support, with CI jobs [87]
|
||||
o build: drop unused `getpart` tool [107]
|
||||
o build: enable -Wjump-misses-init for GCC 4.5+ [62]
|
||||
o build: fix compiler warnings in feature detections [39]
|
||||
o build: set `HAVE_WRITABLE_ARGV` for Apple cross-builds [8]
|
||||
o build: silence bogus `-Wconversion` warnings with gcc 5.1-5.4 [68]
|
||||
o c-ares: error out for unsupported versions, drop unused macros [85]
|
||||
o ca-native.md: sync with CURLSSLOPT_NATIVE_CA [72]
|
||||
o cf-socket: deduplicate Windows Vista detection [11]
|
||||
o client writer: handle pause before deocding [61]
|
||||
o cmake: `SHARE_LIB_OBJECT=ON` requires CMake 3.12 or newer [46]
|
||||
o cmake: add pre-fill for Unix, enable in GHA/macos, verify pre-fills [42]
|
||||
o cmake: allow empty `IMPORT_LIB_SUFFIX`, add suffix collision detection [41]
|
||||
o cmake: avoid `-Wnonnull` warning in `HAVE_FSETXATTR_5` detection [81]
|
||||
o cmake: disable HTTPS-proxy as a feature if proxy is disabled [77]
|
||||
o cmake: drop `CURL_DISABLE_TESTS` option [94]
|
||||
o cmake: drop `HAVE_IN_ADDR_T` from pre-fill too
|
||||
o cmake: drop two stray TLS feature checks for wolfSSL [9]
|
||||
o cmake: fix `HAVE_ATOMIC`/`HAVE_STDATOMIC` pre-fill for clang-cl [28]
|
||||
o cmake: fix ECH detection in custom-patched OpenSSL [32]
|
||||
o cmake: hide empty `MINGW64_VERSION` output for mingw32ce [114]
|
||||
o cmake: mention 'insecure' in the debug build warning [15]
|
||||
o cmake: misc tidy-ups [38]
|
||||
o cmake: pre-fill known type sizes for Windows OSes [100]
|
||||
o cmake: restrict static CRT builds to static curl exe, test in CI [113]
|
||||
o cmake: sync cutoff version with autotools for picky option `-ftree-vrp` [99]
|
||||
o cmake: sync OpenSSL(-fork) feature checks with `./configure` [49]
|
||||
o CODE_STYLE: readability and banned functions [35]
|
||||
o configure: silence compiler warnings in feature checks, drop duplicates [86]
|
||||
o configure: use `curl_cv_apple` variable [40]
|
||||
o conn: fix connection reuse when SSL is optional [54]
|
||||
o contributors.sh: lowercase 'github' for consistency [52]
|
||||
o contrithanks.sh: update docs/THANKS in place [119]
|
||||
o cookie: do prefix matching case-sensitively [82]
|
||||
o cookie: minor parser simplification [58]
|
||||
o cookie: simplify invalid_octets() [24]
|
||||
o curl.h: change some enums to defines with L suffix [84]
|
||||
o curl_msh3: remove verify bypass from DEBUGBUILDs [43]
|
||||
o curl_trc: fix build with CURL_DISABLE_VERBOSE_STRINGS [109]
|
||||
o CURLMOPT_SOCKETFUNCTION.md: add advice for socket callback invocation[69]
|
||||
o CURLOPT_HTTPHEADER.md: add comments to the example [90]
|
||||
o CURLOPT_HTTPHEADER.md: rephrases [108]
|
||||
o docs: add FD_ZERO to curl_multi_fdset example [19]
|
||||
o docs: bump `rustls` to 0.14.1 [111]
|
||||
o docs: correct argument names & URL redirection [4]
|
||||
o eventfd: allow use on all CPUs [93]
|
||||
o gnutls: fix connection state check on handshake [80]
|
||||
o hash: use single linked list for entries [57]
|
||||
o hostip: make CURLOPT_RESOLVE support replacing IPv6 addresses [47]
|
||||
o HTTP3.md: only speak about minimal versions [18]
|
||||
o http: convert parsers to strparse [48]
|
||||
o http: fix NTLM info message typo [22]
|
||||
o http: fix the auth check [88]
|
||||
o http: make the RTSP version check stricter [73]
|
||||
o http: negotiation and room for alt-svc/https rr to navigate [64]
|
||||
o http: version negotiation [45]
|
||||
o http_aws_sigv4: use strparse more for parsing [55]
|
||||
o https-rr: implementation improvements [44]
|
||||
o httpsrr: fix port detection [51]
|
||||
o httpsrr: fix the HTTPS-RR threaded-resolver build combo [67]
|
||||
o INSTALL-CMAKE.md: CMake usage updates [101]
|
||||
o INSTALL-CMAKE.md: mention `ZLIB_USE_STATIC_LIBS` [112]
|
||||
o lib: better optimized casecompare() and ncasecompare() [3]
|
||||
o lib: simplify more white space loops [60]
|
||||
o lib: strtoofft.h header cleanup [17]
|
||||
o lib: use Curl_str_* instead of strtok_r() [59]
|
||||
o lib: use Curl_str_number() for parsing decimal numbers [13]
|
||||
o libtest/libprereq.c: set CURLOPT_FOLLOWLOCATION with a long [89]
|
||||
o managen: correct the warning for un-escaped '<' and '>' [1]
|
||||
o msvc: drop support for VS2005 and older [96]
|
||||
o multi: event based rework [74]
|
||||
o openssl: check return value of X509_get0_pubkey [105]
|
||||
o openssl: drop support for old OpenSSL/LibreSSL versions [95]
|
||||
o openssl: remove bad `goto`s into other scope [63]
|
||||
o runtests: drop recognizing 'winssl' as Schannel [102]
|
||||
o runtests: drop ref to unused external function
|
||||
o runtests: recognize AWS-LC as OpenSSL [103]
|
||||
o runtests: support multi-target cmake, drop workarounds from CI [116]
|
||||
o schannel: deduplicate Windows Vista detection [98]
|
||||
o schannel: enable ALPN support under WINE 6.0+ [92]
|
||||
o schannel: enable ALPN with MinGW, fix ALPN for UWP builds [71]
|
||||
o schannel: guard ALPN init code to ALPN builds [91]
|
||||
o scripts/managen: fix option 'single' [31]
|
||||
o scripts/managen: fix parsing of markdown code sections [30]
|
||||
o setopt: remove unnecesary void pointer typecasts [76]
|
||||
o ssh: consider sftp quote commands case sensitive [33]
|
||||
o ssl session cache: add exportable flag [56]
|
||||
o strparse: make Curl_str_number() return error for no digits [14]
|
||||
o strparse: switch the API to work on 'const char *' [2]
|
||||
o strparse: switch to curl_off_t as base data type [7]
|
||||
o tests: fix enum/int confusion, fix autotools `CFLAGS` for `servers` [27]
|
||||
o tidy-up: align MSYS2/Cygwin codepaths, follow Cygwin `MAX_PID` bump [97]
|
||||
o tidy-up: delete, comment or scope C macros reported unused [16]
|
||||
o tidy-up: drop unused `CURL_INADDR_NONE` macro and `in_addr_t` type [26]
|
||||
o tidy-up: use `CURL_ARRAYSIZE()` [37]
|
||||
o timediff: fix comment for curlx_mstotv() [25]
|
||||
o timediff: remove unnecessary double typecast [53]
|
||||
o tool_getparam: clear sensitive arguments better [66]
|
||||
o tool_operate: fail SSH transfers without server auth [70]
|
||||
o urlapi: simplify junkscan [23]
|
||||
o variable.md: clarify 'trim' example [12]
|
||||
o windows: drop code and curl manifest targeting W2K and older [115]
|
||||
o wolfssh: retrieve the error using wolfSSH_get_error [5]
|
||||
o wolfssl: fix CA certificate multiple location import [34]
|
||||
o wolfssl: warn if CA native import option is ignored [65]
|
||||
o wolfssl: when using PQ KEM, use ML-KEM, not Kyber [10]
|
||||
|
||||
This release includes the following known bugs:
|
||||
|
||||
See docs/KNOWN_BUGS (https://curl.se/docs/knownbugs.html)
|
||||
See https://curl.se/docs/knownbugs.html
|
||||
|
||||
For all changes ever done in curl:
|
||||
|
||||
@ -275,268 +139,135 @@ For all changes ever done in curl:
|
||||
Planned upcoming removals include:
|
||||
|
||||
o Support for the msh3 HTTP/3 backend
|
||||
o The winbuild build system
|
||||
o TLS libraries not supporting TLS 1.3
|
||||
|
||||
See https://curl.se/dev/deprecate.html for details
|
||||
See https://curl.se/dev/deprecate.html
|
||||
|
||||
This release would not have looked like this without help, code, reports and
|
||||
advice from friends like these:
|
||||
|
||||
9cel, Aleksander Mazur, Andrew Kaster, Andy Pan, Asger Hautop Drewsen,
|
||||
baranyaib90 on github, Ben Zanin, Brad House, Calvin Ruocco,
|
||||
Christian Heusel, Christian Schmitz, Christopher Dannemiller, Dan Fandrich,
|
||||
Daniel Stenberg, Darren Banfi, Deniz Sökmen, dependabot[bot], Derek Huang,
|
||||
Dexter Gerig, Donguk Kim, dwickr, Edoardo Lolletti, Ganesh Viswanathan,
|
||||
Harry Sintonen, Hermes Zhang, IcedCoffeee on github, Igor Todorovski,
|
||||
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)
|
||||
Anthony Hu, Dan Fandrich, Daniel Stenberg, dependabot[bot], Derek Huang,
|
||||
Dexter Gerig, Harry Sintonen, Jeremy Drake, John Bampton, Joseph Chen,
|
||||
kayrus on github, kriztalz, Laurențiu Nicola, lf- on github, Marcel Raad,
|
||||
Mark Phillips, qhill on github, Ray Satiro, renovate[bot], rmg-x on github,
|
||||
RubisetCie on github, Sergey, Stefan Eissing, Tianyi Song, Timo Tijhof,
|
||||
Viktor Szakats, Yedaya Katsman, Zenju on github
|
||||
(28 contributors)
|
||||
|
||||
References to bug reports and discussions on issues:
|
||||
|
||||
[1] = https://curl.se/bug/?i=15720
|
||||
[2] = https://curl.se/bug/?i=15714
|
||||
[3] = https://curl.se/bug/?i=15709
|
||||
[4] = https://curl.se/bug/?i=15708
|
||||
[5] = https://curl.se/bug/?i=15729
|
||||
[6] = https://curl.se/bug/?i=15734
|
||||
[7] = https://curl.se/bug/?i=15687
|
||||
[8] = https://curl.se/bug/?i=15692
|
||||
[9] = https://curl.se/bug/?i=15725
|
||||
[10] = https://curl.se/bug/?i=15711
|
||||
[11] = https://curl.se/bug/?i=15723
|
||||
[12] = https://curl.se/bug/?i=15721
|
||||
[13] = https://curl.se/bug/?i=15752
|
||||
[14] = https://curl.se/bug/?i=15753
|
||||
[15] = https://curl.se/bug/?i=15749
|
||||
[16] = https://issues.oss-fuzz.com/issues/383911309
|
||||
[17] = https://curl.se/bug/?i=15495
|
||||
[18] = https://curl.se/bug/?i=15743
|
||||
[19] = https://curl.se/bug/?i=15742
|
||||
[20] = https://curl.se/bug/?i=15741
|
||||
[21] = https://curl.se/bug/?i=15740
|
||||
[22] = https://curl.se/bug/?i=15737
|
||||
[23] = https://curl.se/bug/?i=15779
|
||||
[24] = https://curl.se/bug/?i=15778
|
||||
[25] = https://curl.se/bug/?i=15776
|
||||
[26] = https://curl.se/bug/?i=15775
|
||||
[27] = https://curl.se/bug/?i=15772
|
||||
[28] = https://curl.se/bug/?i=15767
|
||||
[29] = https://curl.se/bug/?i=15769
|
||||
[30] = https://curl.se/bug/?i=15770
|
||||
[31] = https://curl.se/bug/?i=15730
|
||||
[32] = https://curl.se/bug/?i=15763
|
||||
[33] = https://curl.se/bug/?i=15761
|
||||
[34] = https://curl.se/bug/?i=15596
|
||||
[35] = https://curl.se/bug/?i=15764
|
||||
[36] = https://curl.se/bug/?i=15431
|
||||
[37] = https://curl.se/bug/?i=15408
|
||||
[38] = https://curl.se/bug/?i=15543
|
||||
[39] = https://curl.se/bug/?i=15796
|
||||
[40] = https://curl.se/bug/?i=15450
|
||||
[41] = https://curl.se/bug/?i=15498
|
||||
[42] = https://curl.se/bug/?i=15478
|
||||
[43] = https://curl.se/bug/?i=15255
|
||||
[44] = https://curl.se/bug/?i=15787
|
||||
[45] = https://curl.se/bug/?i=15464
|
||||
[46] = https://curl.se/bug/?i=15273
|
||||
[47] = https://curl.se/bug/?i=15523
|
||||
[48] = https://curl.se/bug/?i=15280
|
||||
[49] = https://curl.se/bug/?i=15465
|
||||
[50] = https://curl.se/bug/?i=15562
|
||||
[51] = https://curl.se/bug/?i=15577
|
||||
[52] = https://curl.se/bug/?i=15813
|
||||
[53] = https://curl.se/bug/?i=15815
|
||||
[54] = https://curl.se/bug/?i=15788
|
||||
[55] = https://curl.se/bug/?i=15512
|
||||
[56] = https://curl.se/bug/?i=15739
|
||||
[57] = https://curl.se/bug/?i=15120
|
||||
[58] = https://curl.se/bug/?i=15789
|
||||
[59] = https://curl.se/bug/?i=15785
|
||||
[60] = https://curl.se/bug/?i=15774
|
||||
[61] = https://curl.se/bug/?i=15667
|
||||
[62] = https://curl.se/bug/?i=15786
|
||||
[63] = https://curl.se/bug/?i=15777
|
||||
[64] = https://curl.se/bug/?i=15773
|
||||
[65] = https://curl.se/bug/?i=15812
|
||||
[66] = https://curl.se/bug/?i=15805
|
||||
[67] = https://curl.se/bug/?i=15814
|
||||
[68] = https://curl.se/bug/?i=15855
|
||||
[69] = https://curl.se/bug/?i=15807
|
||||
[70] = https://curl.se/bug/?i=15808
|
||||
[71] = https://curl.se/bug/?i=15806
|
||||
[72] = https://curl.se/bug/?i=15784
|
||||
[73] = https://curl.se/bug/?i=15146
|
||||
[74] = https://curl.se/bug/?i=15748
|
||||
[75] = https://curl.se/bug/?i=15468
|
||||
[76] = https://curl.se/bug/?i=13522
|
||||
[77] = https://curl.se/bug/?i=15587
|
||||
[78] = https://curl.se/bug/?i=15850
|
||||
[79] = https://curl.se/bug/?i=15845
|
||||
[80] = https://curl.se/bug/?i=15842
|
||||
[81] = https://curl.se/bug/?i=15840
|
||||
[82] = https://curl.se/bug/?i=15928
|
||||
[83] = https://curl.se/bug/?i=15884
|
||||
[84] = https://curl.se/bug/?i=15826
|
||||
[85] = https://curl.se/bug/?i=15883
|
||||
[86] = https://curl.se/bug/?i=15832
|
||||
[87] = https://curl.se/bug/?i=15800
|
||||
[88] = https://curl.se/bug/?i=15829
|
||||
[89] = https://curl.se/bug/?i=15827
|
||||
[90] = https://curl.se/bug/?i=15828
|
||||
[91] = https://curl.se/bug/?i=15882
|
||||
[92] = https://curl.se/bug/?i=15765
|
||||
[93] = https://curl.se/bug/?i=15809
|
||||
[94] = https://curl.se/bug/?i=15822
|
||||
[95] = https://curl.se/bug/?i=15820
|
||||
[96] = https://curl.se/bug/?i=15915
|
||||
[97] = https://curl.se/bug/?i=15871
|
||||
[98] = https://curl.se/bug/?i=15876
|
||||
[99] = https://curl.se/bug/?i=15906
|
||||
[100] = https://curl.se/bug/?i=15854
|
||||
[101] = https://curl.se/bug/?i=15945
|
||||
[102] = https://curl.se/bug/?i=15873
|
||||
[103] = https://curl.se/bug/?i=15869
|
||||
[104] = https://curl.se/bug/?i=15868
|
||||
[105] = https://curl.se/bug/?i=15867
|
||||
[106] = https://curl.se/bug/?i=15844
|
||||
[107] = https://curl.se/bug/?i=15833
|
||||
[108] = https://curl.se/bug/?i=15908
|
||||
[109] = https://curl.se/bug/?i=15903
|
||||
[110] = https://curl.se/bug/?i=15861
|
||||
[111] = https://curl.se/bug/?i=15937
|
||||
[112] = https://curl.se/bug/?i=15902
|
||||
[113] = https://curl.se/bug/?i=15898
|
||||
[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
|
||||
[1] = https://curl.se/bug/?i=16315
|
||||
[2] = https://curl.se/bug/?i=16316
|
||||
[3] = https://curl.se/bug/?i=16311
|
||||
[4] = https://curl.se/bug/?i=16334
|
||||
[5] = https://curl.se/bug/?i=16335
|
||||
[6] = https://curl.se/bug/?i=16323
|
||||
[7] = https://curl.se/bug/?i=16336
|
||||
[8] = https://curl.se/bug/?i=16338
|
||||
[9] = https://curl.se/bug/?i=16339
|
||||
[10] = https://curl.se/bug/?i=16337
|
||||
[11] = https://curl.se/bug/?i=16400
|
||||
[12] = https://curl.se/bug/?i=16346
|
||||
[13] = https://curl.se/bug/?i=16319
|
||||
[14] = https://curl.se/bug/?i=16319
|
||||
[15] = https://curl.se/bug/?i=16327
|
||||
[16] = https://curl.se/bug/?i=16279
|
||||
[17] = https://curl.se/bug/?i=16331
|
||||
[18] = https://curl.se/bug/?i=16320
|
||||
[19] = https://curl.se/bug/?i=16325
|
||||
[20] = https://curl.se/bug/?i=16321
|
||||
[21] = https://curl.se/bug/?i=16241
|
||||
[22] = https://curl.se/bug/?i=16305
|
||||
[23] = https://curl.se/bug/?i=16307
|
||||
[24] = https://curl.se/bug/?i=16306
|
||||
[25] = https://curl.se/bug/?i=16310
|
||||
[26] = https://curl.se/bug/?i=16318
|
||||
[27] = https://curl.se/bug/?i=16314
|
||||
[28] = https://curl.se/bug/?i=16313
|
||||
[29] = https://curl.se/bug/?i=16274
|
||||
[30] = https://curl.se/bug/?i=16345
|
||||
[31] = https://curl.se/bug/?i=16344
|
||||
[32] = https://curl.se/bug/?i=16354
|
||||
[33] = https://curl.se/bug/?i=16382
|
||||
[34] = https://curl.se/bug/?i=16391
|
||||
[35] = https://curl.se/bug/?i=16349
|
||||
[36] = https://curl.se/bug/?i=16347
|
||||
[37] = https://curl.se/bug/?i=16381
|
||||
[38] = https://curl.se/bug/?i=16238
|
||||
[39] = https://curl.se/bug/?i=16287
|
||||
[40] = https://curl.se/bug/?i=16340
|
||||
[41] = https://curl.se/bug/?i=16324
|
||||
[42] = https://curl.se/bug/?i=15841
|
||||
[43] = https://curl.se/bug/?i=16342
|
||||
[44] = https://curl.se/bug/?i=16132
|
||||
[45] = https://curl.se/bug/?i=16100
|
||||
[46] = https://curl.se/bug/?i=16375
|
||||
[47] = https://curl.se/bug/?i=16357
|
||||
[48] = https://curl.se/bug/?i=16436
|
||||
[49] = https://curl.se/bug/?i=16352
|
||||
[50] = https://curl.se/bug/?i=16167
|
||||
[51] = https://curl.se/bug/?i=16409
|
||||
[52] = https://curl.se/bug/?i=16443
|
||||
[53] = https://curl.se/bug/?i=16367
|
||||
[54] = https://curl.se/bug/?i=16384
|
||||
[55] = https://curl.se/bug/?i=16366
|
||||
[56] = https://curl.se/bug/?i=16322
|
||||
[57] = https://curl.se/bug/?i=16351
|
||||
[58] = https://curl.se/bug/?i=16362
|
||||
[59] = https://curl.se/bug/?i=16360
|
||||
[60] = https://curl.se/bug/?i=16363
|
||||
[61] = https://curl.se/bug/?i=16280
|
||||
[62] = https://curl.se/bug/?i=16252
|
||||
[63] = https://curl.se/bug/?i=16356
|
||||
[64] = https://curl.se/bug/?i=16117
|
||||
[65] = https://curl.se/bug/?i=16417
|
||||
[66] = https://curl.se/bug/?i=16396
|
||||
[67] = https://curl.se/bug/?i=16399
|
||||
[68] = https://curl.se/bug/?i=16398
|
||||
[69] = https://curl.se/bug/?i=16441
|
||||
[70] = https://curl.se/bug/?i=16205
|
||||
[71] = https://curl.se/bug/?i=16385
|
||||
[72] = https://curl.se/bug/?i=16373
|
||||
[73] = https://curl.se/bug/?i=16435
|
||||
[74] = https://curl.se/bug/?i=16308
|
||||
[76] = https://curl.se/bug/?i=16426
|
||||
[77] = https://curl.se/bug/?i=16434
|
||||
[78] = https://curl.se/bug/?i=16330
|
||||
[79] = https://curl.se/bug/?i=15956
|
||||
[80] = https://curl.se/bug/?i=16423
|
||||
[81] = https://curl.se/bug/?i=16427
|
||||
[82] = https://curl.se/bug/?i=16494
|
||||
[84] = https://curl.se/bug/?i=16482
|
||||
[85] = https://curl.se/bug/?i=16407
|
||||
[86] = https://curl.se/bug/?i=16377
|
||||
[87] = https://curl.se/bug/?i=15975
|
||||
[88] = https://curl.se/bug/?i=16419
|
||||
[89] = https://curl.se/bug/?i=16487
|
||||
[90] = https://curl.se/bug/?i=16488
|
||||
[91] = https://curl.se/bug/?i=16420
|
||||
[92] = https://curl.se/bug/?i=16393
|
||||
[93] = https://curl.se/bug/?i=16277
|
||||
[94] = https://curl.se/bug/?i=16134
|
||||
[95] = https://curl.se/bug/?i=16104
|
||||
[96] = https://curl.se/bug/?i=16004
|
||||
[97] = https://curl.se/bug/?i=16217
|
||||
[98] = https://curl.se/bug/?i=16408
|
||||
[99] = https://curl.se/bug/?i=16478
|
||||
[100] = https://curl.se/bug/?i=16464
|
||||
[101] = https://curl.se/bug/?i=16329
|
||||
[102] = https://curl.se/bug/?i=16467
|
||||
[103] = https://curl.se/bug/?i=16466
|
||||
[104] = https://curl.se/bug/?i=16099
|
||||
[105] = https://curl.se/bug/?i=16468
|
||||
[106] = https://curl.se/bug/?i=16459
|
||||
[107] = https://curl.se/bug/?i=16460
|
||||
[108] = https://curl.se/bug/?i=16461
|
||||
[109] = https://curl.se/bug/?i=16462
|
||||
[111] = https://curl.se/bug/?i=16446
|
||||
[112] = https://curl.se/bug/?i=16457
|
||||
[113] = https://curl.se/bug/?i=16456
|
||||
[114] = https://curl.se/bug/?i=16455
|
||||
[115] = https://curl.se/bug/?i=16453
|
||||
[116] = https://curl.se/bug/?i=16452
|
||||
[119] = https://curl.se/bug/?i=16448
|
||||
|
||||
180
acinclude.m4
180
acinclude.m4
@ -48,7 +48,7 @@ AC_DEFUN([CURL_CHECK_DEF], [
|
||||
tmp_exp=""
|
||||
AC_PREPROC_IFELSE([
|
||||
AC_LANG_SOURCE(
|
||||
ifelse($2,,,[$2])[[
|
||||
ifelse($2,,,[$2])[[
|
||||
#ifdef $1
|
||||
CURL_DEF_TOKEN $1
|
||||
#endif
|
||||
@ -88,14 +88,13 @@ AC_DEFUN([CURL_CHECK_DEF_CC], [
|
||||
ifelse($3,,[AC_MSG_CHECKING([for compiler definition of $1])])
|
||||
AC_COMPILE_IFELSE([
|
||||
AC_LANG_SOURCE(
|
||||
ifelse($2,,,[$2])[[
|
||||
ifelse($2,,,[$2])[[
|
||||
int main(void)
|
||||
{
|
||||
#ifdef $1
|
||||
return 0;
|
||||
#else
|
||||
#ifndef $1
|
||||
#error force compilation error
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
]])
|
||||
],[
|
||||
@ -126,12 +125,11 @@ AC_DEFUN([CURL_CHECK_LIB_XNET], [
|
||||
int main(void)
|
||||
{
|
||||
#if defined(__hpux) && defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 600)
|
||||
return 0;
|
||||
#elif defined(__hpux) && defined(_XOPEN_SOURCE_EXTENDED)
|
||||
return 0;
|
||||
#else
|
||||
#error force compilation error
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
]])
|
||||
],[
|
||||
@ -180,7 +178,8 @@ AC_DEFUN([CURL_CHECK_NATIVE_WINDOWS], [
|
||||
AC_LANG_PROGRAM([[
|
||||
]],[[
|
||||
#ifdef _WIN32
|
||||
int dummy=1;
|
||||
int dummy = 1;
|
||||
(void)dummy;
|
||||
#else
|
||||
#error Not a native Windows build target.
|
||||
#endif
|
||||
@ -306,6 +305,7 @@ AC_DEFUN([CURL_CHECK_HEADER_LDAP], [
|
||||
]],[[
|
||||
LDAP *ldp = ldap_init("0.0.0.0", LDAP_PORT);
|
||||
int res = ldap_unbind(ldp);
|
||||
(void)res;
|
||||
]])
|
||||
],[
|
||||
curl_cv_header_ldap_h="yes"
|
||||
@ -354,6 +354,7 @@ AC_DEFUN([CURL_CHECK_HEADER_LDAP_SSL], [
|
||||
#include <ldap_ssl.h>
|
||||
]],[[
|
||||
LDAP *ldp = ldapssl_init("0.0.0.0", LDAPS_PORT, 1);
|
||||
(void)ldp;
|
||||
]])
|
||||
],[
|
||||
curl_cv_header_ldap_ssl_h="yes"
|
||||
@ -433,6 +434,7 @@ AC_DEFUN([CURL_CHECK_LIBS_WINLDAP], [
|
||||
LDAP *ldp = ldap_init("0.0.0.0", LDAP_PORT);
|
||||
ULONG res = ldap_unbind(ldp);
|
||||
ber_free(bep, 1);
|
||||
(void)res;
|
||||
]])
|
||||
],[
|
||||
curl_cv_ldap_LIBS="$x_nlibs"
|
||||
@ -543,6 +545,7 @@ AC_DEFUN([CURL_CHECK_LIBS_LDAP], [
|
||||
LDAP *ldp = ldap_init("0.0.0.0", LDAP_PORT);
|
||||
int res = ldap_unbind(ldp);
|
||||
ber_free(bep, 1);
|
||||
(void)res;
|
||||
]])
|
||||
],[
|
||||
curl_cv_ldap_LIBS="$x_nlibs"
|
||||
@ -686,7 +689,8 @@ AC_DEFUN([CURL_CHECK_FUNC_SEND], [
|
||||
#endif
|
||||
#endif
|
||||
]],[[
|
||||
send(0, 0, 0, 0);
|
||||
char s[] = "";
|
||||
send(0, (void *)s, 0, 0);
|
||||
]])
|
||||
],[
|
||||
AC_MSG_RESULT([yes])
|
||||
@ -729,7 +733,8 @@ AC_DEFUN([CURL_CHECK_MSG_NOSIGNAL], [
|
||||
#endif
|
||||
#endif
|
||||
]],[[
|
||||
int flag=MSG_NOSIGNAL;
|
||||
int flag = MSG_NOSIGNAL;
|
||||
(void)flag;
|
||||
]])
|
||||
],[
|
||||
curl_cv_msg_nosignal="yes"
|
||||
@ -777,6 +782,7 @@ AC_DEFUN([CURL_CHECK_STRUCT_TIMEVAL], [
|
||||
struct timeval ts;
|
||||
ts.tv_sec = 0;
|
||||
ts.tv_usec = 0;
|
||||
(void)ts;
|
||||
]])
|
||||
],[
|
||||
curl_cv_struct_timeval="yes"
|
||||
@ -793,84 +799,6 @@ 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 -------------------------------------------------
|
||||
dnl Check if monotonic clock_gettime is available.
|
||||
@ -892,6 +820,7 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC], [
|
||||
]],[[
|
||||
struct timespec ts;
|
||||
(void)clock_gettime(CLOCK_MONOTONIC, &ts);
|
||||
(void)ts;
|
||||
]])
|
||||
],[
|
||||
AC_MSG_RESULT([yes])
|
||||
@ -926,6 +855,7 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC_RAW], [
|
||||
]],[[
|
||||
struct timespec ts;
|
||||
(void)clock_gettime(CLOCK_MONOTONIC_RAW, &ts);
|
||||
(void)ts;
|
||||
]])
|
||||
],[
|
||||
AC_MSG_RESULT([yes])
|
||||
@ -972,6 +902,7 @@ AC_DEFUN([CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC], [
|
||||
]],[[
|
||||
struct timespec ts;
|
||||
(void)clock_gettime(CLOCK_MONOTONIC, &ts);
|
||||
(void)ts;
|
||||
]])
|
||||
],[
|
||||
curl_cv_gclk_LIBS="$x_xlibs"
|
||||
@ -1018,10 +949,10 @@ AC_DEFUN([CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC], [
|
||||
#include <time.h>
|
||||
]],[[
|
||||
struct timespec ts;
|
||||
if (0 == clock_gettime(CLOCK_MONOTONIC, &ts))
|
||||
exit(0);
|
||||
else
|
||||
exit(1);
|
||||
if(0 == clock_gettime(CLOCK_MONOTONIC, &ts))
|
||||
return 0;
|
||||
(void)ts;
|
||||
return 1;
|
||||
]])
|
||||
],[
|
||||
AC_MSG_RESULT([yes])
|
||||
@ -1168,7 +1099,7 @@ AC_DEFUN([CURL_VERIFY_RUNTIMELIBS], [
|
||||
dnl point also is available run-time!
|
||||
AC_MSG_CHECKING([run-time libs availability])
|
||||
CURL_RUN_IFELSE([
|
||||
int main()
|
||||
int main(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@ -1380,16 +1311,13 @@ AC_DEFUN([CURL_CHECK_WIN32_LARGEFILE], [
|
||||
AC_REQUIRE([CURL_CHECK_NATIVE_WINDOWS])dnl
|
||||
if test "$curl_cv_native_windows" = 'yes'; then
|
||||
AC_MSG_CHECKING([whether build target supports Win32 large files])
|
||||
case $host_os in
|
||||
mingw32ce*|cegcc*)
|
||||
dnl Windows CE does not support large files
|
||||
curl_win32_has_largefile='no'
|
||||
;;
|
||||
*)
|
||||
dnl All mingw-w64 versions support large files
|
||||
curl_win32_has_largefile='yes'
|
||||
;;
|
||||
esac
|
||||
if test "$curl_cv_wince" = 'yes'; then
|
||||
dnl Windows CE does not support large files
|
||||
curl_win32_has_largefile='no'
|
||||
else
|
||||
dnl All mingw-w64 versions support large files
|
||||
curl_win32_has_largefile='yes'
|
||||
fi
|
||||
case "$curl_win32_has_largefile" in
|
||||
yes)
|
||||
if test x"$enable_largefile" = 'xno'; then
|
||||
@ -1523,9 +1451,9 @@ dnl Save build info for test runner to pick up and log
|
||||
|
||||
AC_DEFUN([CURL_PREPARE_BUILDINFO], [
|
||||
curl_pflags=""
|
||||
case $host in
|
||||
*-apple-*) curl_pflags="${curl_pflags} APPLE";;
|
||||
esac
|
||||
if test "$curl_cv_apple" = 'yes'; then
|
||||
curl_pflags="${curl_pflags} APPLE"
|
||||
fi
|
||||
case $host in
|
||||
*-*-*bsd*|*-*-aix*|*-*-hpux*|*-*-interix*|*-*-irix*|*-*-linux*|*-*-solaris*|*-*-sunos*|*-apple-*|*-*-cygwin*|*-*-msys*)
|
||||
curl_pflags="${curl_pflags} UNIX";;
|
||||
@ -1546,14 +1474,24 @@ AC_DEFUN([CURL_PREPARE_BUILDINFO], [
|
||||
if test "$curl_cv_native_windows" = 'yes'; then
|
||||
curl_pflags="${curl_pflags} WIN32"
|
||||
fi
|
||||
if test "$curl_cv_wince" = 'yes'; then
|
||||
curl_pflags="${curl_pflags} WINCE"
|
||||
fi
|
||||
if test "$curl_cv_winuwp" = 'yes'; then
|
||||
curl_pflags="${curl_pflags} UWP"
|
||||
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
|
||||
curl_pflags="${curl_pflags} CYGWIN"
|
||||
fi
|
||||
case $host_os in
|
||||
msys*) curl_pflags="${curl_pflags} MSYS";;
|
||||
msdos*) curl_pflags="${curl_pflags} DOS";;
|
||||
amiga*) curl_pflags="${curl_pflags} AMIGA";;
|
||||
esac
|
||||
@ -1639,27 +1577,13 @@ dnl with very low deployment targets.
|
||||
dnl
|
||||
|
||||
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
|
||||
CFLAGS="$CFLAGS -Werror=partial-availability"
|
||||
AC_MSG_CHECKING([whether $CC accepts -Werror=partial-availability])
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])
|
||||
CFLAGS=$old_CFLAGS])
|
||||
fi
|
||||
|
||||
old_CFLAGS=$CFLAGS
|
||||
CFLAGS="$CFLAGS -Werror=partial-availability"
|
||||
AC_MSG_CHECKING([whether $CC accepts -Werror=partial-availability])
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])
|
||||
CFLAGS=$old_CFLAGS])
|
||||
])
|
||||
|
||||
|
||||
|
||||
101
appveyor.sh
101
appveyor.sh
@ -28,45 +28,75 @@ set -eux; [ -n "${BASH:-}${ZSH_NAME:-}" ] && set -o pipefail
|
||||
|
||||
# build
|
||||
|
||||
case "${TARGET:-}" in
|
||||
*Win32) openssl_suffix='-Win32';;
|
||||
*) openssl_suffix='-Win64';;
|
||||
esac
|
||||
|
||||
if [ "${APPVEYOR_BUILD_WORKER_IMAGE}" = 'Visual Studio 2022' ]; then
|
||||
openssl_root_win='C:/OpenSSL-v34-Win64'
|
||||
openssl_root_win="C:/OpenSSL-v34${openssl_suffix}"
|
||||
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
|
||||
openssl_root_win='C:/OpenSSL-v111-Win64'
|
||||
openssl_root_win="C:/OpenSSL-v111${openssl_suffix}"
|
||||
fi
|
||||
openssl_root="$(cygpath "${openssl_root_win}")"
|
||||
|
||||
if [ "${BUILD_SYSTEM}" = 'CMake' ]; then
|
||||
options=''
|
||||
[[ "${TARGET:-}" = *'ARM64'* ]] && SKIP_RUN='ARM64 architecture'
|
||||
[ -n "${TOOLSET:-}" ] && options+=" -T ${TOOLSET}"
|
||||
[ "${OPENSSL}" = 'ON' ] && options+=" -DOPENSSL_ROOT_DIR=${openssl_root_win}"
|
||||
[ -n "${CURLDEBUG:-}" ] && options+=" -DENABLE_CURLDEBUG=${CURLDEBUG}"
|
||||
[ "${PRJ_CFG}" = 'Debug' ] && options+=' -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG='
|
||||
[ "${PRJ_CFG}" = 'Release' ] && options+=' -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE='
|
||||
[[ "${PRJ_GEN}" = *'Visual Studio'* ]] && options+=' -DCMAKE_VS_GLOBALS=TrackFileAccess=false'
|
||||
# shellcheck disable=SC2086
|
||||
cmake -B _bld "-G${PRJ_GEN}" ${TARGET:-} ${options} \
|
||||
"-DCURL_USE_OPENSSL=${OPENSSL}" \
|
||||
"-DCURL_USE_SCHANNEL=${SCHANNEL}" \
|
||||
"-DHTTP_ONLY=${HTTP_ONLY}" \
|
||||
"-DBUILD_SHARED_LIBS=${SHARED}" \
|
||||
"-DCMAKE_UNITY_BUILD=${UNITY}" \
|
||||
'-DCURL_TEST_BUNDLES=ON' \
|
||||
'-DCURL_WERROR=ON' \
|
||||
"-DENABLE_DEBUG=${DEBUG}" \
|
||||
"-DENABLE_UNICODE=${ENABLE_UNICODE}" \
|
||||
'-DCMAKE_INSTALL_PREFIX=C:/curl' \
|
||||
"-DCMAKE_BUILD_TYPE=${PRJ_CFG}" \
|
||||
'-DCURL_USE_LIBPSL=OFF'
|
||||
if false; then
|
||||
cat _bld/CMakeFiles/CMakeConfigureLog.yaml 2>/dev/null || true
|
||||
# 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=''
|
||||
[ "${_chkprefill}" = '_chkprefill' ] && options+=' -D_CURL_PREFILL=OFF'
|
||||
[[ "${TARGET}" = *'ARM64'* ]] && SKIP_RUN='ARM64 architecture'
|
||||
[ -n "${TOOLSET:-}" ] && options+=" -T ${TOOLSET}"
|
||||
[ "${OPENSSL}" = 'ON' ] && options+=" -DOPENSSL_ROOT_DIR=${openssl_root_win}"
|
||||
[ -n "${CURLDEBUG:-}" ] && options+=" -DENABLE_CURLDEBUG=${CURLDEBUG}"
|
||||
if [ "${APPVEYOR_BUILD_WORKER_IMAGE}" = 'Visual Studio 2013' ]; then
|
||||
mkdir "_bld${_chkprefill}"
|
||||
cd "_bld${_chkprefill}"
|
||||
options+=' ..'
|
||||
root='..'
|
||||
else
|
||||
options+=" -B _bld${_chkprefill}"
|
||||
options+=' -DCMAKE_VS_GLOBALS=TrackFileAccess=false'
|
||||
options+=" -DCMAKE_UNITY_BUILD=${UNITY}"
|
||||
root='.'
|
||||
fi
|
||||
# shellcheck disable=SC2086
|
||||
time cmake -G "${PRJ_GEN}" ${TARGET} \
|
||||
-DCURL_TEST_BUNDLES=ON \
|
||||
-DCURL_WERROR=ON \
|
||||
-DBUILD_SHARED_LIBS="${SHARED}" \
|
||||
-DCURL_STATIC_CRT=ON \
|
||||
-DENABLE_DEBUG="${DEBUG}" \
|
||||
-DENABLE_UNICODE="${ENABLE_UNICODE}" \
|
||||
-DHTTP_ONLY="${HTTP_ONLY}" \
|
||||
-DCURL_USE_SCHANNEL="${SCHANNEL}" \
|
||||
-DCURL_USE_OPENSSL="${OPENSSL}" \
|
||||
-DCURL_USE_LIBPSL=OFF \
|
||||
${options} \
|
||||
|| { cat ${root}/_bld/CMakeFiles/CMake* 2>/dev/null; false; }
|
||||
[ "${APPVEYOR_BUILD_WORKER_IMAGE}" = 'Visual Studio 2013' ] && cd ..
|
||||
done
|
||||
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
|
||||
echo 'curl_config.h'; grep -F '#define' _bld/lib/curl_config.h | sort || true
|
||||
# shellcheck disable=SC2086
|
||||
cmake --build _bld --config "${PRJ_CFG}" --parallel 2 -- ${BUILD_OPT:-}
|
||||
[ "${SHARED}" = 'ON' ] && PATH="$PWD/_bld/lib:$PATH"
|
||||
[ "${OPENSSL}" = 'ON' ] && PATH="${openssl_root}:$PATH"
|
||||
curl='_bld/src/curl.exe'
|
||||
if ! time cmake --build _bld --config "${PRJ_CFG}" --parallel 2 -- ${BUILD_OPT:-}; then
|
||||
if [ "${PRJ_GEN}" = 'Visual Studio 9 2008' ]; then
|
||||
find . -name BuildLog.htm -exec dos2unix '{}' +
|
||||
find . -name BuildLog.htm -exec cat '{}' +
|
||||
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
|
||||
(
|
||||
cd projects
|
||||
@ -99,7 +129,7 @@ EOF
|
||||
curl="builds/libcurl-vc14.10-x64-${PATHPART}-dll-ssl-dll-ipv6-sspi/bin/curl.exe"
|
||||
fi
|
||||
|
||||
find . \( -name '*.exe' -o -name '*.dll' -o -name '*.lib' \) -exec file '{}' \;
|
||||
find . \( -name '*.exe' -o -name '*.dll' -o -name '*.lib' -o -name '*.pdb' \) -exec file '{}' \;
|
||||
if [ -z "${SKIP_RUN:-}" ]; then
|
||||
"${curl}" --disable --version
|
||||
else
|
||||
@ -110,13 +140,14 @@ fi
|
||||
|
||||
if [ "${TFLAGS}" != 'skipall' ] && \
|
||||
[ "${BUILD_SYSTEM}" = 'CMake' ]; then
|
||||
cmake --build _bld --config "${PRJ_CFG}" --parallel 2 --target testdeps
|
||||
time cmake --build _bld --config "${PRJ_CFG}" --parallel 2 --target testdeps
|
||||
fi
|
||||
|
||||
# run tests
|
||||
|
||||
if [ "${TFLAGS}" != 'skipall' ] && \
|
||||
[ "${TFLAGS}" != 'skiprun' ]; then
|
||||
export CURL_DIRSUFFIX="${PRJ_CFG}"
|
||||
if [ -x "$(cygpath "${SYSTEMROOT}/System32/curl.exe")" ]; then
|
||||
TFLAGS+=" -ac $(cygpath "${SYSTEMROOT}/System32/curl.exe")"
|
||||
elif [ -x "$(cygpath 'C:/msys64/usr/bin/curl.exe')" ]; then
|
||||
@ -124,12 +155,12 @@ if [ "${TFLAGS}" != 'skipall' ] && \
|
||||
fi
|
||||
TFLAGS+=' -j0'
|
||||
if [ "${BUILD_SYSTEM}" = 'CMake' ]; then
|
||||
cmake --build _bld --config "${PRJ_CFG}" --target test-ci
|
||||
time cmake --build _bld --config "${PRJ_CFG}" --target test-ci
|
||||
else
|
||||
(
|
||||
TFLAGS="-a -p !flaky -r -rm ${TFLAGS}"
|
||||
cd _bld/tests
|
||||
./runtests.pl
|
||||
time ./runtests.pl
|
||||
)
|
||||
fi
|
||||
fi
|
||||
@ -138,5 +169,5 @@ fi
|
||||
|
||||
if [ "${EXAMPLES}" = 'ON' ] && \
|
||||
[ "${BUILD_SYSTEM}" = 'CMake' ]; then
|
||||
cmake --build _bld --config "${PRJ_CFG}" --parallel 2 --target curl-examples
|
||||
time cmake --build _bld --config "${PRJ_CFG}" --parallel 2 --target curl-examples
|
||||
fi
|
||||
|
||||
89
appveyor.yml
89
appveyor.yml
@ -31,8 +31,11 @@
|
||||
version: 7.50.0.{build}
|
||||
|
||||
environment:
|
||||
BUILD_SYSTEM: CMake
|
||||
UNITY: 'ON'
|
||||
OPENSSL: 'OFF'
|
||||
SCHANNEL: 'OFF'
|
||||
ENABLE_UNICODE: 'OFF'
|
||||
DEBUG: 'ON'
|
||||
SHARED: 'OFF'
|
||||
HTTP_ONLY: 'OFF'
|
||||
@ -45,89 +48,77 @@ environment:
|
||||
|
||||
- job_name: 'CMake, VS2022, Release, x64, OpenSSL 3.4, Shared, Build-tests'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
||||
BUILD_SYSTEM: CMake
|
||||
PRJ_GEN: 'Visual Studio 17 2022'
|
||||
TARGET: '-A x64'
|
||||
PRJ_CFG: Release
|
||||
OPENSSL: 'ON'
|
||||
SCHANNEL: 'OFF'
|
||||
ENABLE_UNICODE: 'OFF'
|
||||
SHARED: 'ON'
|
||||
- job_name: 'CMake, VS2022, Release, arm64, Schannel, Static, Build-tests'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
||||
BUILD_SYSTEM: CMake
|
||||
PRJ_GEN: 'Visual Studio 17 2022'
|
||||
TARGET: '-A ARM64'
|
||||
PRJ_CFG: Release
|
||||
SCHANNEL: 'ON'
|
||||
ENABLE_UNICODE: 'OFF'
|
||||
DEBUG: 'OFF'
|
||||
CURLDEBUG: 'ON'
|
||||
- job_name: 'CMake, VS2010, Release, x86, Schannel, Static, Build-tests'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
||||
BUILD_SYSTEM: CMake
|
||||
PRJ_GEN: 'Visual Studio 10 2010'
|
||||
- job_name: 'CMake, VS2008, Debug, x86, OpenSSL 1.0.2 + Schannel, Shared, Build-tests & examples'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2013'
|
||||
PRJ_GEN: 'Visual Studio 9 2008'
|
||||
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'
|
||||
TARGET: '-A x64'
|
||||
PRJ_CFG: Debug
|
||||
SCHANNEL: 'ON'
|
||||
ENABLE_UNICODE: 'OFF'
|
||||
SHARED: 'ON'
|
||||
EXAMPLES: 'ON'
|
||||
- job_name: 'CMake, VS2012, Debug, x64, OpenSSL 1.1.1, Build-tests'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
||||
BUILD_SYSTEM: CMake
|
||||
PRJ_GEN: 'Visual Studio 11 2012'
|
||||
TARGET: '-A x64'
|
||||
PRJ_CFG: Debug
|
||||
OPENSSL: 'ON'
|
||||
SCHANNEL: 'OFF'
|
||||
ENABLE_UNICODE: 'OFF'
|
||||
SCHANNEL: 'ON'
|
||||
SHARED: 'ON'
|
||||
- job_name: 'CMake, VS2013, Debug, x64, OpenSSL 1.1.1, Build-only'
|
||||
EXAMPLES: 'ON'
|
||||
- job_name: 'CMake, VS2010, Debug, x64, Schannel, Shared, Build-tests & examples'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
||||
PRJ_GEN: 'Visual Studio 10 2010'
|
||||
TARGET: '-A x64'
|
||||
PRJ_CFG: Debug
|
||||
SCHANNEL: 'ON'
|
||||
SHARED: 'ON'
|
||||
EXAMPLES: 'ON'
|
||||
- job_name: 'CMake, VS2012, Release, x86, OpenSSL 1.1.1 + Schannel, Shared, Build-tests'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
||||
PRJ_GEN: 'Visual Studio 11 2012'
|
||||
TARGET: '-A Win32'
|
||||
PRJ_CFG: Release
|
||||
OPENSSL: 'ON'
|
||||
SCHANNEL: 'ON'
|
||||
SHARED: 'ON'
|
||||
- job_name: 'CMake, VS2013, Debug, x64, OpenSSL 1.1.1, Shared, Build-only'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
||||
BUILD_SYSTEM: CMake
|
||||
PRJ_GEN: 'Visual Studio 12 2013'
|
||||
TARGET: '-A x64'
|
||||
PRJ_CFG: Debug
|
||||
OPENSSL: 'ON'
|
||||
SCHANNEL: 'OFF'
|
||||
ENABLE_UNICODE: 'OFF'
|
||||
SHARED: 'ON'
|
||||
TFLAGS: 'skipall'
|
||||
- job_name: 'CMake, VS2015, Debug, x64, OpenSSL 1.1.1, Build-only'
|
||||
- job_name: 'CMake, VS2015, Debug, x64, OpenSSL 1.1.1, Static, Build-only'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015'
|
||||
BUILD_SYSTEM: CMake
|
||||
PRJ_GEN: 'Visual Studio 14 2015'
|
||||
TARGET: '-A x64'
|
||||
PRJ_CFG: Debug
|
||||
OPENSSL: 'ON'
|
||||
SCHANNEL: 'OFF'
|
||||
ENABLE_UNICODE: 'OFF'
|
||||
SHARED: 'ON'
|
||||
TFLAGS: 'skipall'
|
||||
- job_name: 'CMake, VS2017, Debug, x64, OpenSSL 1.1.1, Build-only'
|
||||
- job_name: 'CMake, VS2017, Debug, x64, OpenSSL 1.1.1, Shared, Build-only'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017'
|
||||
BUILD_SYSTEM: CMake
|
||||
PRJ_GEN: 'Visual Studio 15 2017'
|
||||
TARGET: '-A x64'
|
||||
PRJ_CFG: Debug
|
||||
OPENSSL: 'ON'
|
||||
SCHANNEL: 'OFF'
|
||||
ENABLE_UNICODE: 'OFF'
|
||||
SHARED: 'ON'
|
||||
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'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
||||
BUILD_SYSTEM: CMake
|
||||
PRJ_GEN: 'Visual Studio 17 2022'
|
||||
TARGET: '-A x64'
|
||||
PRJ_CFG: Debug
|
||||
@ -137,7 +128,6 @@ environment:
|
||||
TOOLSET: 'ClangCl'
|
||||
- job_name: 'CMake, VS2022, Debug, x64, Schannel, Static, Unicode, Build-tests'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
||||
BUILD_SYSTEM: CMake
|
||||
PRJ_GEN: 'Visual Studio 17 2022'
|
||||
TARGET: '-A x64'
|
||||
PRJ_CFG: Debug
|
||||
@ -145,7 +135,6 @@ environment:
|
||||
ENABLE_UNICODE: 'ON'
|
||||
- job_name: 'CMake, VS2022, Release, x64, Schannel, Shared, Unicode, DEBUGBUILD, no-CURLDEBUG, Build-tests'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
||||
BUILD_SYSTEM: CMake
|
||||
PRJ_GEN: 'Visual Studio 17 2022'
|
||||
TARGET: '-A x64'
|
||||
PRJ_CFG: Release
|
||||
@ -155,20 +144,14 @@ environment:
|
||||
CURLDEBUG: 'OFF'
|
||||
- job_name: 'CMake, VS2022, Debug, x64, no SSL, Static, Build-tests'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
||||
BUILD_SYSTEM: CMake
|
||||
PRJ_GEN: 'Visual Studio 17 2022'
|
||||
TARGET: '-A x64'
|
||||
PRJ_CFG: Debug
|
||||
SCHANNEL: 'OFF'
|
||||
ENABLE_UNICODE: 'OFF'
|
||||
- job_name: 'CMake, VS2022, Debug, x64, no SSL, Static, HTTP only, Build-tests'
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2022'
|
||||
BUILD_SYSTEM: CMake
|
||||
PRJ_GEN: 'Visual Studio 17 2022'
|
||||
TARGET: '-A x64'
|
||||
PRJ_CFG: Debug
|
||||
SCHANNEL: 'OFF'
|
||||
ENABLE_UNICODE: 'OFF'
|
||||
HTTP_ONLY: 'ON'
|
||||
|
||||
# winbuild-based builds
|
||||
@ -254,5 +237,5 @@ skip_commits:
|
||||
#artifacts:
|
||||
# - path: '**/curl.exe'
|
||||
# name: curl
|
||||
# - path: '**/*curl*.dll'
|
||||
# - path: '**/*.dll'
|
||||
# name: libcurl dll
|
||||
|
||||
246
configure.ac
246
configure.ac
@ -493,8 +493,12 @@ dnl **********************************************************************
|
||||
CURL_CHECK_COMPILER
|
||||
CURL_CHECK_NATIVE_WINDOWS
|
||||
|
||||
curl_cv_wince='no'
|
||||
curl_cv_winuwp='no'
|
||||
if test "$curl_cv_native_windows" = "yes"; then
|
||||
case $host_os in
|
||||
mingw32ce*) curl_cv_wince='yes';;
|
||||
esac
|
||||
case "$CPPFLAGS" in
|
||||
*-DWINSTORECOMPAT*) curl_cv_winuwp='yes';;
|
||||
esac
|
||||
@ -591,14 +595,16 @@ dnl **********************************************************************
|
||||
CURL_CHECK_WIN32_LARGEFILE
|
||||
CURL_CHECK_WIN32_CRYPTO
|
||||
|
||||
CURL_DARWIN_CFLAGS
|
||||
|
||||
curl_cv_apple='no'
|
||||
case $host in
|
||||
*-apple-*)
|
||||
CURL_SUPPORTS_BUILTIN_AVAILABLE
|
||||
;;
|
||||
*-apple-*) curl_cv_apple='yes';;
|
||||
esac
|
||||
|
||||
if test "$curl_cv_apple" = 'yes'; then
|
||||
CURL_DARWIN_CFLAGS
|
||||
CURL_SUPPORTS_BUILTIN_AVAILABLE
|
||||
fi
|
||||
|
||||
curl_cv_cygwin='no'
|
||||
case $host_os in
|
||||
cygwin*|msys*) curl_cv_cygwin='yes';;
|
||||
@ -881,7 +887,7 @@ AS_HELP_STRING([--disable-telnet],[Disable TELNET support]),
|
||||
AC_MSG_RESULT(yes)
|
||||
)
|
||||
|
||||
if test "$curl_cv_winuwp" = 'yes'; then
|
||||
if test "$curl_cv_winuwp" = 'yes' -o "$curl_cv_wince" = 'yes'; then
|
||||
AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET])
|
||||
CURL_DISABLE_TELNET=1
|
||||
fi
|
||||
@ -1159,11 +1165,42 @@ if test "$HAVE_GETHOSTBYNAME" != "1"; then
|
||||
])
|
||||
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
|
||||
# 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
|
||||
dnl This is for Winsock systems
|
||||
if test "$curl_cv_native_windows" = "yes"; then
|
||||
dnl This is for Winsock systems
|
||||
winsock_LIB="-lws2_32"
|
||||
if test ! -z "$winsock_LIB"; then
|
||||
my_ac_save_LIBS=$LIBS
|
||||
@ -1241,7 +1278,8 @@ if test "$HAVE_GETHOSTBYNAME" != "1" -o "${with_amissl+set}" = set; then
|
||||
struct Library *SocketBase = NULL;
|
||||
#endif
|
||||
]],[[
|
||||
gethostbyname("localhost");
|
||||
unsigned char host[] = "localhost";
|
||||
gethostbyname(host);
|
||||
]])
|
||||
],[
|
||||
AC_MSG_RESULT([yes])
|
||||
@ -1715,12 +1753,11 @@ AS_HELP_STRING([--disable-ipv6],[Disable IPv6 support]),
|
||||
#include <netinet/in6.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
int main(void)
|
||||
{
|
||||
struct sockaddr_in6 s;
|
||||
int s = (int)sizeof(struct sockaddr_in6);
|
||||
(void)s;
|
||||
return socket(AF_INET6, SOCK_STREAM, 0) < 0;
|
||||
return socket(AF_INET6, SOCK_STREAM, 0) > 0;
|
||||
}
|
||||
]])
|
||||
],
|
||||
@ -1731,6 +1768,10 @@ AS_HELP_STRING([--disable-ipv6],[Disable IPv6 support]),
|
||||
)
|
||||
)
|
||||
|
||||
if test "$curl_cv_wince" = 'yes'; then
|
||||
ipv6=no
|
||||
fi
|
||||
|
||||
if test "$ipv6" = yes; then
|
||||
curl_ipv6_msg="enabled"
|
||||
AC_DEFINE(USE_IPV6, 1, [Define if you want to enable IPv6 support])
|
||||
@ -1752,6 +1793,7 @@ if test "$ipv6" = yes; then
|
||||
]], [[
|
||||
struct sockaddr_in6 s;
|
||||
s.sin6_scope_id = 0;
|
||||
(void)s;
|
||||
]])
|
||||
],[
|
||||
AC_MSG_RESULT([yes])
|
||||
@ -1788,6 +1830,9 @@ int main(int argc, char **argv)
|
||||
],[
|
||||
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
|
||||
yes)
|
||||
AC_DEFINE(HAVE_WRITABLE_ARGV, 1, [Define this symbol if your OS supports changing the contents of argv])
|
||||
@ -1933,51 +1978,48 @@ if test x"$want_gss" = xyes; then
|
||||
LIBS="-lgss $LIBS"
|
||||
link_pkgconfig=1
|
||||
elif test -z "$GSSAPI_LIB_DIR"; then
|
||||
case $host in
|
||||
*-apple-*)
|
||||
LIBS="-lgssapi_krb5 -lresolv $LIBS"
|
||||
;;
|
||||
*)
|
||||
if test $GSSAPI_ROOT != "/usr"; then
|
||||
CURL_CHECK_PKGCONFIG(mit-krb5-gssapi, $GSSAPI_ROOT/lib/pkgconfig)
|
||||
else
|
||||
CURL_CHECK_PKGCONFIG(mit-krb5-gssapi)
|
||||
fi
|
||||
if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
|
||||
dnl krb5-config doesn't have --libs-only-L or similar, put everything
|
||||
dnl into LIBS
|
||||
gss_libs=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --libs gssapi`
|
||||
LIBS="$gss_libs $LIBS"
|
||||
elif test "$PKGCONFIG" != "no"; then
|
||||
gss_libs=`$PKGCONFIG --libs mit-krb5-gssapi`
|
||||
LIBS="$gss_libs $LIBS"
|
||||
link_pkgconfig=1
|
||||
elif test -f "$KRB5CONFIG"; then
|
||||
dnl krb5-config doesn't have --libs-only-L or similar, put everything
|
||||
dnl into LIBS
|
||||
gss_libs=`$KRB5CONFIG --libs gssapi`
|
||||
LIBS="$gss_libs $LIBS"
|
||||
link_pkgconfig=1
|
||||
else
|
||||
case $host in
|
||||
*-hp-hpux*)
|
||||
gss_libname="gss"
|
||||
;;
|
||||
*)
|
||||
gss_libname="gssapi"
|
||||
;;
|
||||
esac
|
||||
if test "$curl_cv_apple" = 'yes'; then
|
||||
LIBS="-lgssapi_krb5 -lresolv $LIBS"
|
||||
else
|
||||
if test $GSSAPI_ROOT != "/usr"; then
|
||||
CURL_CHECK_PKGCONFIG(mit-krb5-gssapi, $GSSAPI_ROOT/lib/pkgconfig)
|
||||
else
|
||||
CURL_CHECK_PKGCONFIG(mit-krb5-gssapi)
|
||||
fi
|
||||
if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
|
||||
dnl krb5-config doesn't have --libs-only-L or similar, put everything
|
||||
dnl into LIBS
|
||||
gss_libs=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --libs gssapi`
|
||||
LIBS="$gss_libs $LIBS"
|
||||
elif test "$PKGCONFIG" != "no"; then
|
||||
gss_libs=`$PKGCONFIG --libs mit-krb5-gssapi`
|
||||
LIBS="$gss_libs $LIBS"
|
||||
link_pkgconfig=1
|
||||
elif test -f "$KRB5CONFIG"; then
|
||||
dnl krb5-config doesn't have --libs-only-L or similar, put everything
|
||||
dnl into LIBS
|
||||
gss_libs=`$KRB5CONFIG --libs gssapi`
|
||||
LIBS="$gss_libs $LIBS"
|
||||
link_pkgconfig=1
|
||||
else
|
||||
case $host in
|
||||
*-hp-hpux*)
|
||||
gss_libname="gss"
|
||||
;;
|
||||
*)
|
||||
gss_libname="gssapi"
|
||||
;;
|
||||
esac
|
||||
|
||||
if test "$GSSAPI_ROOT" != "yes"; then
|
||||
LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff"
|
||||
LDFLAGSPC="$LDFLAGSPC -L$GSSAPI_ROOT/lib$libsuff"
|
||||
LIBS="-l$gss_libname $LIBS"
|
||||
else
|
||||
LIBS="-l$gss_libname $LIBS"
|
||||
fi
|
||||
if test "$GSSAPI_ROOT" != "yes"; then
|
||||
LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff"
|
||||
LDFLAGSPC="$LDFLAGSPC -L$GSSAPI_ROOT/lib$libsuff"
|
||||
LIBS="-l$gss_libname $LIBS"
|
||||
else
|
||||
LIBS="-l$gss_libname $LIBS"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
else
|
||||
LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
|
||||
LDFLAGSPC="$LDFLAGSPC $GSSAPI_LIB_DIR"
|
||||
@ -2059,11 +2101,14 @@ CURL_WITH_RUSTLS
|
||||
|
||||
dnl link required libraries for USE_WIN32_CRYPTO or SCHANNEL_ENABLED
|
||||
if test "x$USE_WIN32_CRYPTO" = "x1" -o "x$SCHANNEL_ENABLED" = "x1"; then
|
||||
LIBS="-ladvapi32 -lcrypt32 $LIBS"
|
||||
LIBS="-lcrypt32 $LIBS"
|
||||
if test "$curl_cv_wince" = 'no'; then
|
||||
LIBS="-ladvapi32 $LIBS"
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl link bcrypt for BCryptGenRandom() (used when building for Vista or newer)
|
||||
if test "x$curl_cv_native_windows" = "xyes"; then
|
||||
if test "x$curl_cv_native_windows" = "xyes" -a "$curl_cv_wince" = 'no'; then
|
||||
LIBS="-lbcrypt $LIBS"
|
||||
fi
|
||||
|
||||
@ -2329,8 +2374,8 @@ if test X"$OPT_LIBSSH2" != Xno; then
|
||||
CPPFLAGS="$CPPFLAGS $CPP_SSH2"
|
||||
LIBS="$LIB_SSH2 $LIBS"
|
||||
|
||||
dnl check for function added in libssh2 version 1.0
|
||||
AC_CHECK_LIB(ssh2, libssh2_session_block_directions)
|
||||
dnl check for function added in libssh2 version 1.2.8
|
||||
AC_CHECK_LIB(ssh2, libssh2_free)
|
||||
|
||||
AC_CHECK_HEADER(libssh2.h,
|
||||
curl_ssh_msg="enabled (libssh2)"
|
||||
@ -2608,7 +2653,11 @@ dnl ----------------------------
|
||||
dnl check Windows Unicode option
|
||||
dnl ----------------------------
|
||||
|
||||
want_winuni="no"
|
||||
if test "$curl_cv_wince" = 'yes'; then
|
||||
want_winuni="yes"
|
||||
else
|
||||
want_winuni="no"
|
||||
fi
|
||||
if test "$curl_cv_native_windows" = "yes"; then
|
||||
if test "$curl_cv_winuwp" = 'yes'; then
|
||||
want_winuni="yes"
|
||||
@ -2732,36 +2781,34 @@ dnl Check for the presence of AppleIDN
|
||||
dnl **********************************************************************
|
||||
|
||||
tst_links_appleidn='no'
|
||||
case $host in
|
||||
*-apple-*)
|
||||
AC_MSG_CHECKING([whether to build with Apple IDN])
|
||||
OPT_IDN="default"
|
||||
AC_ARG_WITH(apple-idn,
|
||||
if test "$curl_cv_apple" = 'yes'; then
|
||||
AC_MSG_CHECKING([whether to build with Apple IDN])
|
||||
OPT_IDN="default"
|
||||
AC_ARG_WITH(apple-idn,
|
||||
AS_HELP_STRING([--with-apple-idn],[Enable AppleIDN])
|
||||
AS_HELP_STRING([--without-apple-idn],[Disable AppleIDN]),
|
||||
[OPT_IDN=$withval])
|
||||
case "$OPT_IDN" in
|
||||
yes)
|
||||
dnl --with-apple-idn option used
|
||||
AC_MSG_RESULT([yes, check])
|
||||
AC_CHECK_LIB(icucore, uidna_openUTS46,
|
||||
[
|
||||
AC_CHECK_HEADERS(unicode/uidna.h,
|
||||
curl_idn_msg="enabled (AppleIDN)"
|
||||
AC_DEFINE(USE_APPLE_IDN, 1, [if AppleIDN])
|
||||
USE_APPLE_IDN=1
|
||||
IDN_ENABLED=1
|
||||
LIBS="-licucore -liconv $LIBS"
|
||||
tst_links_appleidn='yes'
|
||||
)
|
||||
])
|
||||
;;
|
||||
*)
|
||||
AC_MSG_RESULT([no])
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
[OPT_IDN=$withval])
|
||||
case "$OPT_IDN" in
|
||||
yes)
|
||||
dnl --with-apple-idn option used
|
||||
AC_MSG_RESULT([yes, check])
|
||||
AC_CHECK_LIB(icucore, uidna_openUTS46,
|
||||
[
|
||||
AC_CHECK_HEADERS(unicode/uidna.h,
|
||||
curl_idn_msg="enabled (AppleIDN)"
|
||||
AC_DEFINE(USE_APPLE_IDN, 1, [if AppleIDN])
|
||||
USE_APPLE_IDN=1
|
||||
IDN_ENABLED=1
|
||||
LIBS="-licucore -liconv $LIBS"
|
||||
tst_links_appleidn='yes'
|
||||
)
|
||||
])
|
||||
;;
|
||||
*)
|
||||
AC_MSG_RESULT([no])
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
dnl **********************************************************************
|
||||
dnl Check for the presence of libidn2
|
||||
@ -4005,8 +4052,6 @@ case $host_os in
|
||||
;;
|
||||
esac
|
||||
|
||||
TYPE_IN_ADDR_T
|
||||
|
||||
TYPE_SOCKADDR_STORAGE
|
||||
|
||||
CURL_CHECK_FUNC_SELECT
|
||||
@ -4044,8 +4089,6 @@ CURL_CHECK_FUNC_SOCKET
|
||||
CURL_CHECK_FUNC_SOCKETPAIR
|
||||
CURL_CHECK_FUNC_STRDUP
|
||||
CURL_CHECK_FUNC_STRERROR_R
|
||||
CURL_CHECK_FUNC_STRTOK_R
|
||||
CURL_CHECK_FUNC_STRTOLL
|
||||
|
||||
case $host in
|
||||
*msdosdjgpp)
|
||||
@ -4065,14 +4108,12 @@ AC_CHECK_FUNCS([\
|
||||
getpwuid_r \
|
||||
getrlimit \
|
||||
gettimeofday \
|
||||
if_nametoindex \
|
||||
mach_absolute_time \
|
||||
pipe \
|
||||
poll \
|
||||
sendmsg \
|
||||
sendmmsg \
|
||||
setlocale \
|
||||
setmode \
|
||||
setrlimit \
|
||||
snprintf \
|
||||
utime \
|
||||
@ -4080,14 +4121,21 @@ AC_CHECK_FUNCS([\
|
||||
])
|
||||
|
||||
if test "$curl_cv_native_windows" != 'yes'; then
|
||||
AC_CHECK_FUNCS([sched_yield])
|
||||
AC_CHECK_FUNCS([\
|
||||
if_nametoindex \
|
||||
realpath \
|
||||
sched_yield \
|
||||
])
|
||||
CURL_CHECK_FUNC_STRCASECMP
|
||||
CURL_CHECK_FUNC_STRCMPI
|
||||
CURL_CHECK_FUNC_STRICMP
|
||||
fi
|
||||
|
||||
if test "$curl_cv_native_windows" = 'yes' -o "$curl_cv_cygwin" = 'yes'; then
|
||||
AC_CHECK_FUNCS([_setmode])
|
||||
if test "$curl_cv_wince" = 'no'; then
|
||||
AC_CHECK_FUNCS([setmode])
|
||||
if test "$curl_cv_native_windows" = 'yes' -o "$curl_cv_cygwin" = 'yes'; then
|
||||
AC_CHECK_FUNCS([_setmode])
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -z "$ssl_backends"; then
|
||||
@ -4136,7 +4184,7 @@ AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
|
||||
CURL_CHECK_LIB_ARES
|
||||
CURL_CHECK_OPTION_THREADED_RESOLVER
|
||||
|
||||
if test "$ipv6" = yes; then
|
||||
if test "$ipv6" = yes -a "$curl_cv_apple" = 'yes'; then
|
||||
CURL_DARWIN_SYSTEMCONFIGURATION
|
||||
fi
|
||||
|
||||
@ -4467,7 +4515,7 @@ AS_HELP_STRING([--disable-unix-sockets],[Disable Unix domain sockets]),
|
||||
want_unix_sockets=auto
|
||||
]
|
||||
)
|
||||
if test "x$want_unix_sockets" != "xno"; then
|
||||
if test "x$want_unix_sockets" != "xno" -a "$curl_cv_wince" = 'no'; then
|
||||
if test "x$curl_cv_native_windows" = "xyes"; then
|
||||
USE_UNIX_SOCKETS=1
|
||||
AC_DEFINE(USE_UNIX_SOCKETS, 1, [Use Unix domain sockets])
|
||||
@ -5017,7 +5065,7 @@ if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1" \
|
||||
-o "x$USE_THREADS_WIN32" = "x1"; then
|
||||
SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
|
||||
fi
|
||||
if test "x$USE_ARES" = "x1" -a "$want_threaded_resolver" = "yes"; then
|
||||
if test "x$USE_ARES" = "x1" -a "$want_threaded_resolver" = "yes" -a "x$want_httpsrr" != "xno"; then
|
||||
SUPPORT_FEATURES="$SUPPORT_FEATURES asyn-rr"
|
||||
fi
|
||||
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
|
||||
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
|
||||
`--chiphers` and `--tl13-ciphers` options curl passes this flag by default.
|
||||
`--ciphers` and `--tls13-ciphers` options curl passes this flag by default.
|
||||
|
||||
## Examples
|
||||
|
||||
|
||||
@ -43,15 +43,19 @@ 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.
|
||||
|
||||
* `ngtcp2`: v1.2.0
|
||||
* `nghttp3`: v1.1.0
|
||||
While any version of `ngtcp2` and `nghttp3` from v1.0.0 on are expected to
|
||||
work, using the latest versions often brings functional and performance
|
||||
improvements.
|
||||
|
||||
The build examples use `$NGHTTP3_VERION` and `$NGTCP2_VERION` as placeholders
|
||||
for the version you build.
|
||||
|
||||
## Build with quictls
|
||||
|
||||
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*.
|
||||
|
||||
Build quictls:
|
||||
Build quictls (any `+quic` tagged version works):
|
||||
|
||||
% git clone --depth 1 -b openssl-3.1.4+quic https://github.com/quictls/openssl
|
||||
% cd openssl
|
||||
@ -62,7 +66,7 @@ Build quictls:
|
||||
Build nghttp3:
|
||||
|
||||
% cd ..
|
||||
% git clone -b v1.1.0 https://github.com/ngtcp2/nghttp3
|
||||
% git clone -b $NGHTTP3_VERION https://github.com/ngtcp2/nghttp3
|
||||
% cd nghttp3
|
||||
% git submodule update --init
|
||||
% autoreconf -fi
|
||||
@ -73,7 +77,7 @@ Build nghttp3:
|
||||
Build ngtcp2:
|
||||
|
||||
% cd ..
|
||||
% git clone -b v1.2.0 https://github.com/ngtcp2/ngtcp2
|
||||
% git clone -b $NGTCP2_VERION https://github.com/ngtcp2/ngtcp2
|
||||
% cd ngtcp2
|
||||
% autoreconf -fi
|
||||
% ./configure PKG_CONFIG_PATH=<somewhere1>/lib/pkgconfig:<somewhere2>/lib/pkgconfig LDFLAGS="-Wl,-rpath,<somewhere1>/lib" --prefix=<somewhere3> --enable-lib-only
|
||||
@ -106,7 +110,7 @@ Build GnuTLS:
|
||||
Build nghttp3:
|
||||
|
||||
% cd ..
|
||||
% git clone -b v1.1.0 https://github.com/ngtcp2/nghttp3
|
||||
% git clone -b $NGHTTP3_VERION https://github.com/ngtcp2/nghttp3
|
||||
% cd nghttp3
|
||||
% git submodule update --init
|
||||
% autoreconf -fi
|
||||
@ -117,7 +121,7 @@ Build nghttp3:
|
||||
Build ngtcp2:
|
||||
|
||||
% cd ..
|
||||
% git clone -b v1.2.0 https://github.com/ngtcp2/ngtcp2
|
||||
% git clone -b $NGTCP2_VERION https://github.com/ngtcp2/ngtcp2
|
||||
% cd ngtcp2
|
||||
% autoreconf -fi
|
||||
% ./configure PKG_CONFIG_PATH=<somewhere1>/lib/pkgconfig:<somewhere2>/lib/pkgconfig LDFLAGS="-Wl,-rpath,<somewhere1>/lib" --prefix=<somewhere3> --enable-lib-only --with-gnutls
|
||||
@ -148,7 +152,7 @@ Build wolfSSL:
|
||||
Build nghttp3:
|
||||
|
||||
% cd ..
|
||||
% git clone -b v1.1.0 https://github.com/ngtcp2/nghttp3
|
||||
% git clone -b $NGHTTP3_VERION https://github.com/ngtcp2/nghttp3
|
||||
% cd nghttp3
|
||||
% git submodule update --init
|
||||
% autoreconf -fi
|
||||
@ -159,7 +163,7 @@ Build nghttp3:
|
||||
Build ngtcp2:
|
||||
|
||||
% cd ..
|
||||
% git clone -b v1.2.0 https://github.com/ngtcp2/ngtcp2
|
||||
% git clone -b $NGTCP2_VERION https://github.com/ngtcp2/ngtcp2
|
||||
% cd ngtcp2
|
||||
% autoreconf -fi
|
||||
% ./configure PKG_CONFIG_PATH=<somewhere1>/lib/pkgconfig:<somewhere2>/lib/pkgconfig LDFLAGS="-Wl,-rpath,<somewhere1>/lib" --prefix=<somewhere3> --enable-lib-only --with-wolfssl
|
||||
@ -210,10 +214,12 @@ Build curl:
|
||||
|
||||
QUIC support is **EXPERIMENTAL**
|
||||
|
||||
Build OpenSSL 3.3.1:
|
||||
Use OpenSSL 3.3.1 or newer (QUIC support was added in 3.3.0, with
|
||||
shortcomings on some platforms like macOS). 3.4.1 or newer is recommended.
|
||||
Build via:
|
||||
|
||||
% cd ..
|
||||
% git clone -b openssl-3.3.1 https://github.com/openssl/openssl
|
||||
% git clone -b $OPENSSL_VERSION https://github.com/openssl/openssl
|
||||
% cd openssl
|
||||
% ./config enable-tls1_3 --prefix=<somewhere> --libdir=lib
|
||||
% make
|
||||
@ -222,7 +228,7 @@ Build OpenSSL 3.3.1:
|
||||
Build nghttp3:
|
||||
|
||||
% cd ..
|
||||
% git clone -b v1.1.0 https://github.com/ngtcp2/nghttp3
|
||||
% git clone -b $NGHTTP3_VERION https://github.com/ngtcp2/nghttp3
|
||||
% cd nghttp3
|
||||
% git submodule update --init
|
||||
% autoreconf -fi
|
||||
@ -245,7 +251,7 @@ You can build curl with cmake:
|
||||
% cd ..
|
||||
% git clone https://github.com/curl/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 --install bld
|
||||
|
||||
|
||||
@ -21,6 +21,12 @@ CMake's GUIs.
|
||||
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.
|
||||
|
||||
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`
|
||||
|
||||
You can configure for in source tree builds or for a build tree
|
||||
@ -31,10 +37,14 @@ that is apart from the source tree.
|
||||
$ cmake -B .
|
||||
|
||||
- Build in a separate directory (parallel to the curl source tree in this
|
||||
example). The build directory is created for you.
|
||||
example). The build directory is created for you. This is recommended over
|
||||
building in the source tree to separate source and build artifacts.
|
||||
|
||||
$ 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
|
||||
|
||||
CMake before version 3.13 does not support the `-B` option. In that case,
|
||||
@ -129,6 +139,12 @@ Install to default location (you have to specify the build directory).
|
||||
|
||||
$ 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
|
||||
|
||||
CMake before version 3.15 does not support the `--install` option. In that
|
||||
@ -139,6 +155,68 @@ assumes that CMake generates `Makefile`:
|
||||
$ cd ../curl-build
|
||||
$ 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
|
||||
|
||||
- `BUILD_CURL_EXE`: Build curl executable. Default: `ON`
|
||||
@ -160,16 +238,17 @@ assumes that CMake generates `Makefile`:
|
||||
- `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_LTO`: Enable compiler Link Time Optimizations. Default: `OFF`
|
||||
- `CURL_STATIC_CRT`: Build libcurl with static CRT with MSVC (`/MT`). Default: `OFF`
|
||||
- `CURL_STATIC_CRT`: Build libcurl with static CRT with MSVC (`/MT`) (requires static or no curl executable). Default: `OFF`
|
||||
- `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_WERROR`: Turn compiler warnings into errors. Default: `OFF`
|
||||
- `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_DEBUG`: Enable curl debug features (for developing curl itself). Default: `OFF`
|
||||
- `IMPORT_LIB_SUFFIX`: Import library suffix. Default: `_imp`
|
||||
- `IMPORT_LIB_SUFFIX`: Import library suffix. Default: `_imp` for MSVC-like toolchains, otherwise empty.
|
||||
- `LIBCURL_OUTPUT_NAME`: Basename of the curl library. Default: `libcurl`
|
||||
- `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)
|
||||
|
||||
## CA bundle options
|
||||
@ -305,6 +384,7 @@ Details via CMake
|
||||
- `OPENSSL_USE_STATIC_LIBS`: Look for static OpenSSL libraries.
|
||||
- `ZLIB_INCLUDE_DIR`: The zlib include directory.
|
||||
- `ZLIB_LIBRARY`: Path to `zlib` library.
|
||||
- `ZLIB_USE_STATIC_LIBS`: Look for static ZLIB library (requires CMake v3.24).
|
||||
|
||||
## Dependency options
|
||||
|
||||
@ -378,7 +458,7 @@ Details via CMake
|
||||
|
||||
# Migrating from Visual Studio IDE Project Files
|
||||
|
||||
We recommend CMake to build curl with MSVC.
|
||||
We recommend using CMake to build curl with MSVC.
|
||||
|
||||
The project build files reside in project/Windows/VC\* for VS2010, VS2010 and
|
||||
VS2013 respectively.
|
||||
@ -398,8 +478,8 @@ Configuration element | Equivalent CMake options
|
||||
`Win32` | `-A Win32`
|
||||
`DLL` | `BUILD_SHARED_LIBS=ON`, `BUILD_STATIC_LIBS=OFF`, (default)
|
||||
`LIB` | `BUILD_SHARED_LIBS=OFF`, `BUILD_STATIC_LIBS=ON`
|
||||
`Debug` | `CMAKE_BUILD_TYPE=Debug`
|
||||
`Release` | `CMAKE_BUILD_TYPE=Release`
|
||||
`Debug` | `CMAKE_BUILD_TYPE=Debug` (`-G "NMake Makefiles"` only)
|
||||
`Release` | `CMAKE_BUILD_TYPE=Release` (`-G "NMake Makefiles"` only)
|
||||
`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 libssh2` | `CURL_USE_LIBSSH2=ON`, optional: `LIBSSH2_INCLUDE_DIR`, `LIBSSH2_LIBRARY`
|
||||
@ -413,7 +493,13 @@ For example these commands:
|
||||
|
||||
translate to:
|
||||
|
||||
> 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 . -G "Visual Studio 12 2013" -A x64 -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
|
||||
|
||||
@ -436,7 +522,7 @@ winbuild options | Equivalent CMake options
|
||||
`DEBUG` | `CMAKE_BUILD_TYPE=Debug`
|
||||
`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`
|
||||
`VC` | see CMake `-G` [options](https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html)
|
||||
`VC`: `<N>` | see the CMake [Visual Studio generators](https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html#visual-studio-generators)
|
||||
`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)
|
||||
`RTLIBCFG`: `static` | `CURL_STATIC_CRT=ON`
|
||||
@ -466,4 +552,8 @@ For example this command-line:
|
||||
|
||||
translates to:
|
||||
|
||||
> 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 . -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 --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,11 +24,13 @@ versions of libs and build tools.
|
||||
|
||||
We aim to support these or later versions.
|
||||
|
||||
- OpenSSL 0.9.7
|
||||
- OpenSSL 1.0.2a
|
||||
- LibreSSL 2.9.1
|
||||
- GnuTLS 3.1.10
|
||||
- zlib 1.2.0.4
|
||||
- libssh2 1.0
|
||||
- c-ares 1.16.0
|
||||
- libssh2 1.2.8
|
||||
- c-ares 1.6.0
|
||||
- libssh 0.9.0
|
||||
- libidn2 2.0.0
|
||||
- wolfSSL 3.4.6
|
||||
- OpenLDAP 2.0
|
||||
|
||||
@ -17,7 +17,6 @@ problems may have been fixed or changed somewhat since this was written.
|
||||
2.1 IMAPS connection fails with Rustls error
|
||||
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.5 Client cert handling with Issuer DN differs between backends
|
||||
2.7 Client cert (MTLS) issues with Schannel
|
||||
2.11 Schannel TLS 1.2 handshake bug in old Windows versions
|
||||
2.13 CURLOPT_CERTINFO results in CURLE_OUT_OF_MEMORY with Schannel
|
||||
@ -68,7 +67,8 @@ problems may have been fixed or changed somewhat since this was written.
|
||||
9.4 libssh blocking and infinite loop problem
|
||||
9.5 Cygwin: "WARNING: UNPROTECTED PRIVATE KEY FILE!"
|
||||
|
||||
10. SOCKS
|
||||
10. Connection
|
||||
10.1 --interface with link-scoped IPv6 address
|
||||
|
||||
11. Internals
|
||||
11.1 gssapi library name + version is missing in curl_version_info()
|
||||
@ -136,14 +136,6 @@ problems may have been fixed or changed somewhat since this was written.
|
||||
function rejects certificates that do not have a password.
|
||||
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
|
||||
|
||||
See https://github.com/curl/curl/issues/3145
|
||||
@ -445,7 +437,23 @@ problems may have been fixed or changed somewhat since this was written.
|
||||
|
||||
https://github.com/curl/curl/issues/11244
|
||||
|
||||
10. SOCKS
|
||||
10. Connection
|
||||
|
||||
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
|
||||
|
||||
@ -625,7 +633,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
|
||||
|
||||
It has been observered that by making the speed limit less accurate we could
|
||||
It has been observed that by making the speed limit less accurate we could
|
||||
improve this performance. (by reverting
|
||||
https://github.com/curl/curl/commit/db5c9f4f9e0779b49624752b135281a0717b277b)
|
||||
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:
|
||||
-m 1800
|
||||
# ... and we use a proxy for all accesses:
|
||||
proxy = proxy.our.domain.com:8080
|
||||
proxy = proxy.our.domain.example.com:8080
|
||||
|
||||
Whitespaces ARE significant at the end of lines, but all whitespace leading
|
||||
up to the first characters of each line are ignored.
|
||||
|
||||
@ -52,6 +52,7 @@ INTERNALDOCS = \
|
||||
internals/HASH.md \
|
||||
internals/LLIST.md \
|
||||
internals/MQTT.md \
|
||||
internals/MULTI-EV.md \
|
||||
internals/NEW-PROTOCOL.md \
|
||||
internals/README.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
|
||||
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
|
||||
version of curl depends on version v0.14.0 of rustls-ffi.
|
||||
version of curl is compatible with `rustls-ffi` v0.14.x.
|
||||
|
||||
# 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:
|
||||
|
||||
% git clone https://github.com/rustls/rustls-ffi -b v0.14.0
|
||||
% git clone https://github.com/rustls/rustls-ffi -b v0.14.1
|
||||
% cd rustls-ffi
|
||||
% make
|
||||
% make DESTDIR=${HOME}/rustls-ffi-built/ install
|
||||
|
||||
@ -25,7 +25,8 @@ named sponsor level: **Silver**, **Gold**, **Platinum** or **Top**.
|
||||
|
||||
Sponsors on a named level can provide their logo image and preferred URL and
|
||||
get recognition on the curl website's [sponsor
|
||||
page](https://curl.se/sponsors.html).
|
||||
page](https://curl.se/sponsors.html), assuming they meet the project's
|
||||
standards and requirements.
|
||||
|
||||
- **Silver Sponsor** at least 100 USD/month
|
||||
- **Gold Sponsor** at least 500 USD/month
|
||||
@ -45,3 +46,10 @@ gambling, pornography, social media manipulation etc.
|
||||
|
||||
Sponsors that stop paying are considered *Past Sponsors* and are not displayed
|
||||
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,6 +182,7 @@ Andrei Benea
|
||||
Andrei Bica
|
||||
Andrei Cipu
|
||||
Andrei Karas
|
||||
Andrei Korshikov
|
||||
Andrei Kurushin
|
||||
Andrei Neculau
|
||||
Andrei Rybak
|
||||
@ -259,6 +260,7 @@ arainchik on github
|
||||
Archangel_SDY on github
|
||||
Arjan van de Ven
|
||||
Arkadiusz Miskiewicz
|
||||
arlt on github
|
||||
Armel Asselin
|
||||
Arnaud Compan
|
||||
Arnaud Ebalard
|
||||
@ -596,6 +598,7 @@ Cris Bailiff
|
||||
Cristian Greco
|
||||
Cristian Morales Vega
|
||||
Cristian Rodríguez
|
||||
CueXXIII on Github
|
||||
Curt Bogmine
|
||||
Cynthia Coan
|
||||
Cyril B
|
||||
@ -738,6 +741,7 @@ dbrowndan on github
|
||||
dEajL3kA on github
|
||||
Deal(一线灵)
|
||||
dekerser on github
|
||||
deliciouslytyped on github
|
||||
delogicsreal on github
|
||||
dengjfzh on github
|
||||
Dengminwen
|
||||
@ -975,6 +979,7 @@ farazrbx on github
|
||||
Farzin on github
|
||||
Fata Nugraha
|
||||
Fawad Mirza
|
||||
Fay Stegerman
|
||||
FC Stegerman
|
||||
fds242 on github
|
||||
Federico Bianchi
|
||||
@ -2162,6 +2167,7 @@ Mostyn Bramley-Moore
|
||||
Moti Avrahami
|
||||
MrdUkk on github
|
||||
MrSorcus on github
|
||||
mschroeder-fzj on github
|
||||
Muhammad Herdiansyah
|
||||
Muhammad Hussein Ammari
|
||||
Muhammed Yavuz Nuzumlalı
|
||||
@ -2258,6 +2264,7 @@ nobedee on github
|
||||
NobodyXu on github
|
||||
Nobuhiro Ban
|
||||
Nodak Sodak
|
||||
nono303 on github
|
||||
nopjmp on github
|
||||
Norbert Frese
|
||||
Norbert Kett
|
||||
@ -2485,6 +2492,7 @@ pszlazak on github
|
||||
puckipedia on github
|
||||
Puneet Pawaia
|
||||
Pēteris Caune
|
||||
qhill
|
||||
qiandu2006 on github
|
||||
Qriist on github
|
||||
Quagmire
|
||||
@ -2513,6 +2521,7 @@ RainRat
|
||||
Raito Bezarius
|
||||
Rajesh Naganathan
|
||||
Rajkumar Mandal
|
||||
Ralf A. Timmermann
|
||||
Ralf S. Engelschall
|
||||
ralfjunker on github
|
||||
Ralph Beckmann
|
||||
@ -2968,6 +2977,7 @@ tbugfinder on github
|
||||
Ted Lyngmo
|
||||
Teemu Yli-Elsila
|
||||
Temprimus
|
||||
Terence Eden
|
||||
Terri Oda
|
||||
Terry Wu
|
||||
thanhchungbtc on github
|
||||
@ -2978,6 +2988,7 @@ Theo
|
||||
Theodore Dubois
|
||||
therealhirudo on github
|
||||
Thiago Suchorski
|
||||
thisisgk on github
|
||||
tholin on github
|
||||
Thomas
|
||||
Thomas Bouzerar
|
||||
|
||||
@ -156,3 +156,5 @@ s/Testclutch//
|
||||
s/edmcln\z/edmcln on github/
|
||||
s/andrewkirillov-ibm/Andrew Kirillov/
|
||||
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
|
||||
already do much worse harm and the problem is not really in curl.
|
||||
|
||||
## Experiments
|
||||
## Debug & Experiments
|
||||
|
||||
Vulnerabilities in features which are off by default (in the build) and
|
||||
documented as experimental, are not eligible for a reward and we do not
|
||||
consider them security problems.
|
||||
documented as experimental, or exist only in debug mode, are not eligible for a
|
||||
reward and we do not consider them security problems.
|
||||
|
||||
## URL inconsistencies
|
||||
|
||||
|
||||
@ -27,10 +27,10 @@ set:
|
||||
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
|
||||
white space with `trim`, it can output the contents as a JSON quoted string
|
||||
with `json`, URL encode the string with `url` or base64 encode it with `b64`.
|
||||
To apply functions to a variable expansion, add them colon separated to the
|
||||
right side of the variable. Variable content holding null bytes that are not
|
||||
encoded when expanded cause error.
|
||||
with `json`, URL encode the string with `url`, base64 encode it with `b64` and
|
||||
base64 decode it with `64dec`. To apply functions to a variable expansion, add
|
||||
them colon separated to the right side of the variable. Variable content
|
||||
holding null bytes that are not encoded when expanded cause error.
|
||||
|
||||
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
|
||||
|
||||
@ -12,18 +12,27 @@ See-also:
|
||||
- capath
|
||||
- dump-ca-embed
|
||||
- insecure
|
||||
- proxy-ca-native
|
||||
Example:
|
||||
- --ca-native $URL
|
||||
---
|
||||
|
||||
# `--ca-native`
|
||||
|
||||
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.
|
||||
Use the operating system's native CA store for certificate verification.
|
||||
|
||||
This option works for curl on Windows when built to use OpenSSL, wolfSSL
|
||||
(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
|
||||
store.
|
||||
This option is independent of other CA certificate locations set at run time or
|
||||
build time. Those locations are searched in addition to the native CA store.
|
||||
|
||||
This option works with OpenSSL and its forks (LibreSSL, BoringSSL, etc) on
|
||||
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,10 +55,14 @@ among others and should be added with this option.
|
||||
You need --proxy-header to send custom headers intended for an HTTP proxy.
|
||||
(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.
|
||||
|
||||
**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
|
||||
the header being sent to other hosts than the original host, so sensitive
|
||||
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.
|
||||
|
||||
A quick and simple example of how to setup a *.netrc* to allow curl to FTP to
|
||||
the machine host.domain.com with username 'myself' and password 'secret' could
|
||||
the machine host.example.com with username 'myself' and password 'secret' could
|
||||
look similar to:
|
||||
|
||||
machine host.domain.com
|
||||
machine host.example.com
|
||||
login myself
|
||||
password secret
|
||||
|
||||
@ -8,6 +8,7 @@ Category: tls
|
||||
Added: 8.2.0
|
||||
Multi: boolean
|
||||
See-also:
|
||||
- ca-native
|
||||
- cacert
|
||||
- capath
|
||||
- dump-ca-embed
|
||||
@ -18,11 +19,12 @@ Example:
|
||||
|
||||
# `--proxy-ca-native`
|
||||
|
||||
Use the CA store from the native operating system to verify the 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.
|
||||
Use the operating system's native CA store for certificate verification of the
|
||||
HTTPS proxy.
|
||||
|
||||
This option works for curl on Windows when built to use OpenSSL, wolfSSL
|
||||
(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
|
||||
store.
|
||||
This option is independent of other HTTPS proxy CA certificate locations set at
|
||||
run time or build time. Those locations are searched in addition to the native
|
||||
CA store.
|
||||
|
||||
Equivalent to --ca-native but used in HTTPS proxy context. Refer to --ca-native
|
||||
for TLS backend limitations.
|
||||
|
||||
@ -22,7 +22,7 @@ Use the specified proxy.
|
||||
The proxy string can be specified with a protocol:// prefix. No protocol
|
||||
specified or http:// it is treated as an HTTP proxy. Use socks4://,
|
||||
socks4a://, socks5:// or socks5h:// to request a specific SOCKS version to be
|
||||
used. (Added in 7.21.7)
|
||||
used. (Added in 7.21.7)
|
||||
|
||||
Unix domain sockets are supported for socks proxy. Set localhost for the host
|
||||
part. e.g. socks5h://localhost/path/to/socket.sock
|
||||
@ -59,4 +59,4 @@ used.
|
||||
|
||||
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
|
||||
work, including --ftp-ssl-reqd and --ftp-ssl-control.
|
||||
work, including --ssl-reqd and --ftp-ssl-control.
|
||||
|
||||
@ -41,9 +41,10 @@ specifies two separate 100-byte ranges(*) (HTTP)
|
||||
|
||||
##
|
||||
|
||||
(*) = NOTE that these make the server reply with a multipart response, which
|
||||
is returned as-is by curl. Parsing or otherwise transforming this response is
|
||||
the responsibility of the caller.
|
||||
(*) = NOTE that if specifying multiple ranges and the server supports it then
|
||||
it replies with a multiple part response that curl returns as-is. It
|
||||
contains meta information in addition to the requested bytes. Parsing or
|
||||
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
|
||||
'start-stop' range syntax. If a non-digit character is given in the range, the
|
||||
|
||||
@ -12,6 +12,7 @@ See-also:
|
||||
- alt-svc
|
||||
Example:
|
||||
- --resolve example.com:443:127.0.0.1 $URL
|
||||
- --resolve example.com:443:[2001:db8::252f:efd6] $URL
|
||||
---
|
||||
|
||||
# `--resolve`
|
||||
@ -20,8 +21,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
|
||||
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
|
||||
the number used for the specific protocol the host is used for. It means
|
||||
you need several entries if you want to provide address for the same host but
|
||||
the number used for the specific protocol the host is used for. It means you
|
||||
need several entries if you want to provide addresses for the same host but
|
||||
different ports.
|
||||
|
||||
By specifying `*` as host you can tell curl to resolve any host and specific
|
||||
@ -37,9 +38,13 @@ 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
|
||||
expired.
|
||||
|
||||
Provide IPv6 addresses within [brackets].
|
||||
|
||||
To redirect connects from a specific hostname or any hostname, independently
|
||||
of port number, consider the --connect-to option.
|
||||
|
||||
Support for resolving with wildcard was added in 7.64.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,5 +38,8 @@ 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
|
||||
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
|
||||
details.
|
||||
|
||||
@ -2,16 +2,19 @@
|
||||
c: Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
SPDX-License-Identifier: curl
|
||||
Long: url
|
||||
Arg: <url>
|
||||
Help: URL to work with
|
||||
Arg: <url/file>
|
||||
Help: URL(s) to work with
|
||||
Category: curl
|
||||
Added: 7.5
|
||||
Multi: append
|
||||
See-also:
|
||||
- next
|
||||
- config
|
||||
- path-as-is
|
||||
- disallow-username-in-url
|
||||
Example:
|
||||
- --url $URL
|
||||
- --url @file
|
||||
---
|
||||
|
||||
# `--url`
|
||||
@ -32,3 +35,15 @@ destination option unless --remote-name-all is used.
|
||||
|
||||
On Windows, `file://` accesses can be converted to network accesses by the
|
||||
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,30 +66,45 @@ error.
|
||||
|
||||
Available functions:
|
||||
|
||||
## trim
|
||||
## `trim`
|
||||
|
||||
removes all leading and trailing white space.
|
||||
|
||||
Example:
|
||||
|
||||
curl --expand-url https.//example.com/{{url:trim}}
|
||||
curl --expand-url https://example.com/{{var:trim}}
|
||||
|
||||
## `json`
|
||||
|
||||
## json
|
||||
outputs the content using JSON string quoting rules.
|
||||
|
||||
Example:
|
||||
|
||||
curl --expand-data {{data:json}} https://example.com
|
||||
|
||||
## url
|
||||
## `url`
|
||||
|
||||
shows the content URL (percent) encoded.
|
||||
|
||||
Example:
|
||||
|
||||
curl --expand-url https://example.com/{{path:url}}
|
||||
|
||||
## b64
|
||||
## `b64`
|
||||
|
||||
expands the variable base64 encoded
|
||||
|
||||
Example:
|
||||
|
||||
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,3 +53,8 @@ to trace the specific components you wish to see.
|
||||
Note that verbose output of curl activities and network traffic might contain
|
||||
sensitive data, including usernames, credentials or secret data content. Be
|
||||
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,10 +32,11 @@ 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
|
||||
%{stderr} and %output{}.
|
||||
|
||||
Output HTTP headers from the most recent request by using *%header{name}*
|
||||
where *name* is the case insensitive name of the header (without the trailing
|
||||
colon). The header contents are exactly as sent over the network, with leading
|
||||
and trailing whitespace trimmed (added in 7.84.0).
|
||||
Output HTTP header values from the transfer's most recent server response by
|
||||
using *%header{name}* where *name* is the case insensitive name of the header
|
||||
(without the trailing colon). The header contents are exactly as delivered over
|
||||
the network but with leading and trailing whitespace and newlines stripped off
|
||||
(added in 7.84.0).
|
||||
|
||||
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
|
||||
@ -61,7 +62,7 @@ The variables available are:
|
||||
|
||||
## `certs`
|
||||
Output the certificate chain with details. Supported only by the OpenSSL,
|
||||
GnuTLS, Schannel and Secure Transport backends. (Added in 7.88.0)
|
||||
GnuTLS, Schannel, Rustls, and Secure Transport backends. (Added in 7.88.0)
|
||||
|
||||
## `conn_id`
|
||||
The connection identifier last used by the transfer. The connection id is
|
||||
@ -87,6 +88,11 @@ most useful in combination with the --remote-header-name option.
|
||||
The initial path curl ended up in when logging on to the remote FTP
|
||||
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`
|
||||
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
|
||||
@ -122,7 +128,7 @@ The http method used in the most recent HTTP request. (Added in 7.72.0)
|
||||
|
||||
## `num_certs`
|
||||
Number of server certificates received in the TLS handshake. Supported only by
|
||||
the OpenSSL, GnuTLS, Schannel and Secure Transport backends.
|
||||
the OpenSSL, GnuTLS, Schannel, Rustls and Secure Transport backends.
|
||||
(Added in 7.88.0)
|
||||
|
||||
## `num_connects`
|
||||
@ -143,6 +149,12 @@ 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.
|
||||
(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`
|
||||
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)
|
||||
@ -250,6 +262,12 @@ the result.
|
||||
## `time_total`
|
||||
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`
|
||||
The URL that was fetched. (Added in 7.75.0)
|
||||
|
||||
|
||||
@ -24,53 +24,53 @@ displays information about the curl and libcurl installation.
|
||||
|
||||
# OPTIONS
|
||||
|
||||
## --ca
|
||||
## `--ca`
|
||||
|
||||
Displays the built-in path to the CA cert bundle this libcurl uses.
|
||||
|
||||
## --cc
|
||||
## `--cc`
|
||||
|
||||
Displays the compiler used to build libcurl.
|
||||
|
||||
## --cflags
|
||||
## `--cflags`
|
||||
|
||||
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.
|
||||
|
||||
## --checkfor [version]
|
||||
## `--checkfor [version]`
|
||||
|
||||
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
|
||||
outputs a text saying that the current version is not new enough. (Added in
|
||||
7.15.4)
|
||||
|
||||
## --configure
|
||||
## `--configure`
|
||||
|
||||
Displays the arguments given to configure when building curl.
|
||||
|
||||
## --feature
|
||||
## `--feature`
|
||||
|
||||
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
|
||||
any particular order. The keywords are separated by newlines. There may be
|
||||
none, one, or several keywords in the list.
|
||||
|
||||
## --help
|
||||
## `--help`
|
||||
|
||||
Displays the available options.
|
||||
|
||||
## --libs
|
||||
## `--libs`
|
||||
|
||||
Shows the complete set of libs and other linker options you need in order to
|
||||
link your application with libcurl.
|
||||
|
||||
## --prefix
|
||||
## `--prefix`
|
||||
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
no, one or several names. If more than one name, they appear comma-separated.
|
||||
(Added in 7.58.0)
|
||||
|
||||
## --static-libs
|
||||
## `--static-libs`
|
||||
|
||||
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)
|
||||
|
||||
## --version
|
||||
## `--version`
|
||||
|
||||
Outputs version information about the installed libcurl.
|
||||
|
||||
## --vernum
|
||||
## `--vernum`
|
||||
|
||||
Outputs version information about the installed libcurl, in numerical mode.
|
||||
This shows the version number, in hexadecimal, using 8 bits for each part:
|
||||
@ -104,22 +104,21 @@ omitted. (This option was broken in the 7.15.0 release.)
|
||||
# EXAMPLES
|
||||
|
||||
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?
|
||||
~~~
|
||||
$ curl-config --cflags
|
||||
~~~
|
||||
|
||||
$ curl-config --cflags
|
||||
|
||||
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?
|
||||
~~~
|
||||
$ curl-config --version
|
||||
~~~
|
||||
|
||||
$ curl-config --version
|
||||
|
||||
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,6 +44,9 @@ AM_CPPFLAGS += -DCURL_NO_OLDIES
|
||||
if USE_CPPFLAG_CURL_STATICLIB
|
||||
AM_CPPFLAGS += -DCURL_STATICLIB
|
||||
endif
|
||||
if DOING_NATIVE_WINDOWS
|
||||
AM_CPPFLAGS += -DWIN32_LEAN_AND_MEAN
|
||||
endif
|
||||
|
||||
# Prevent LIBS from being used for all link targets
|
||||
LIBS = $(BLANK_AT_MAKETIME)
|
||||
|
||||
@ -103,7 +103,11 @@ int main(int argc, char **argv)
|
||||
if(!fp)
|
||||
return 2;
|
||||
|
||||
#ifdef UNDER_CE
|
||||
stat(file, &file_info);
|
||||
#else
|
||||
fstat(fileno(fp), &file_info);
|
||||
#endif
|
||||
|
||||
/* In Windows, this inits the Winsock stuff */
|
||||
curl_global_init(CURL_GLOBAL_ALL);
|
||||
|
||||
@ -29,9 +29,9 @@
|
||||
* filter IP addresses.
|
||||
*/
|
||||
|
||||
#ifdef __AMIGA__
|
||||
#if defined(__AMIGA__) || defined(UNDER_CE)
|
||||
#include <stdio.h>
|
||||
int main(void) { printf("AmigaOS is not supported.\n"); return 1; }
|
||||
int main(void) { printf("Platform not supported.\n"); return 1; }
|
||||
#else
|
||||
|
||||
#ifdef _WIN32
|
||||
@ -298,14 +298,19 @@ int main(void)
|
||||
|
||||
filter = (struct connection_filter *)calloc(1, sizeof(*filter));
|
||||
if(!filter)
|
||||
exit(1);
|
||||
return 1;
|
||||
|
||||
if(curl_global_init(CURL_GLOBAL_DEFAULT))
|
||||
exit(1);
|
||||
if(curl_global_init(CURL_GLOBAL_DEFAULT)) {
|
||||
free(filter);
|
||||
return 1;
|
||||
}
|
||||
|
||||
curl = curl_easy_init();
|
||||
if(!curl)
|
||||
exit(1);
|
||||
if(!curl) {
|
||||
curl_global_cleanup();
|
||||
free(filter);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Set the target URL */
|
||||
curl_easy_setopt(curl, CURLOPT_URL, "http://localhost");
|
||||
|
||||
@ -79,12 +79,12 @@ int main(int argc, char *argv[])
|
||||
fprintf(stderr,
|
||||
"\rUsage: %s [-m=1|2|5|10|20|50|100] [-t] [-x] [url]\n",
|
||||
appname);
|
||||
exit(1);
|
||||
return 1;
|
||||
case 'v':
|
||||
case 'V':
|
||||
fprintf(stderr, "\r%s %s - %s\n",
|
||||
appname, CHKSPEED_VERSION, curl_version());
|
||||
exit(1);
|
||||
return 1;
|
||||
case 'a':
|
||||
case 'A':
|
||||
prtall = 1;
|
||||
|
||||
@ -34,8 +34,7 @@
|
||||
#include <curl/curl.h>
|
||||
#include <curl/mprintf.h>
|
||||
|
||||
static void
|
||||
print_cookies(CURL *curl)
|
||||
static int print_cookies(CURL *curl)
|
||||
{
|
||||
CURLcode res;
|
||||
struct curl_slist *cookies;
|
||||
@ -47,7 +46,7 @@ print_cookies(CURL *curl)
|
||||
if(res != CURLE_OK) {
|
||||
fprintf(stderr, "Curl curl_easy_getinfo failed: %s\n",
|
||||
curl_easy_strerror(res));
|
||||
exit(1);
|
||||
return 1;
|
||||
}
|
||||
nc = cookies;
|
||||
i = 1;
|
||||
@ -60,6 +59,8 @@ print_cookies(CURL *curl)
|
||||
printf("(none)\n");
|
||||
}
|
||||
curl_slist_free_all(cookies);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
|
||||
@ -418,22 +418,22 @@ static int init_fifo(GlobalInfo *g)
|
||||
struct epoll_event epev;
|
||||
|
||||
fprintf(MSG_OUT, "Creating named pipe \"%s\"\n", fifo);
|
||||
if(lstat (fifo, &st) == 0) {
|
||||
if(lstat(fifo, &st) == 0) {
|
||||
if((st.st_mode & S_IFMT) == S_IFREG) {
|
||||
errno = EEXIST;
|
||||
perror("lstat");
|
||||
exit(1);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
unlink(fifo);
|
||||
if(mkfifo (fifo, 0600) == -1) {
|
||||
if(mkfifo(fifo, 0600) == -1) {
|
||||
perror("mkfifo");
|
||||
exit(1);
|
||||
return 1;
|
||||
}
|
||||
sockfd = open(fifo, O_RDWR | O_NONBLOCK, 0);
|
||||
if(sockfd == -1) {
|
||||
perror("open");
|
||||
exit(1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
g->fifofd = sockfd;
|
||||
@ -449,9 +449,9 @@ static int init_fifo(GlobalInfo *g)
|
||||
|
||||
static void clean_fifo(GlobalInfo *g)
|
||||
{
|
||||
epoll_ctl(g->epfd, EPOLL_CTL_DEL, g->fifofd, NULL);
|
||||
fclose(g->input);
|
||||
unlink(fifo);
|
||||
epoll_ctl(g->epfd, EPOLL_CTL_DEL, g->fifofd, NULL);
|
||||
fclose(g->input);
|
||||
unlink(fifo);
|
||||
}
|
||||
|
||||
|
||||
@ -478,13 +478,13 @@ int main(int argc, char **argv)
|
||||
g.epfd = epoll_create1(EPOLL_CLOEXEC);
|
||||
if(g.epfd == -1) {
|
||||
perror("epoll_create1 failed");
|
||||
exit(1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
g.tfd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK | TFD_CLOEXEC);
|
||||
if(g.tfd == -1) {
|
||||
perror("timerfd_create failed");
|
||||
exit(1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
memset(&its, 0, sizeof(struct itimerspec));
|
||||
@ -496,7 +496,8 @@ int main(int argc, char **argv)
|
||||
ev.data.fd = g.tfd;
|
||||
epoll_ctl(g.epfd, EPOLL_CTL_ADD, g.tfd, &ev);
|
||||
|
||||
init_fifo(&g);
|
||||
if(init_fifo(&g))
|
||||
return 1;
|
||||
g.multi = curl_multi_init();
|
||||
|
||||
/* setup the generic multi interface options we want */
|
||||
@ -521,7 +522,7 @@ int main(int argc, char **argv)
|
||||
}
|
||||
else {
|
||||
perror("epoll_wait");
|
||||
exit(1);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -402,22 +402,22 @@ static int init_fifo(GlobalInfo *g)
|
||||
curl_socket_t sockfd;
|
||||
|
||||
fprintf(MSG_OUT, "Creating named pipe \"%s\"\n", fifo);
|
||||
if(lstat (fifo, &st) == 0) {
|
||||
if(lstat(fifo, &st) == 0) {
|
||||
if((st.st_mode & S_IFMT) == S_IFREG) {
|
||||
errno = EEXIST;
|
||||
perror("lstat");
|
||||
exit(1);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
unlink(fifo);
|
||||
if(mkfifo (fifo, 0600) == -1) {
|
||||
if(mkfifo(fifo, 0600) == -1) {
|
||||
perror("mkfifo");
|
||||
exit(1);
|
||||
return 1;
|
||||
}
|
||||
sockfd = open(fifo, O_RDWR | O_NONBLOCK, 0);
|
||||
if(sockfd == -1) {
|
||||
perror("open");
|
||||
exit(1);
|
||||
return 1;
|
||||
}
|
||||
g->input = fdopen(sockfd, "r");
|
||||
|
||||
@ -436,7 +436,8 @@ int main(int argc, char **argv)
|
||||
memset(&g, 0, sizeof(GlobalInfo));
|
||||
g.loop = ev_default_loop(0);
|
||||
|
||||
init_fifo(&g);
|
||||
if(init_fifo(&g))
|
||||
return 1;
|
||||
g.multi = curl_multi_init();
|
||||
|
||||
ev_timer_init(&g.timer_event, timer_cb, 0., 0.);
|
||||
|
||||
@ -25,7 +25,7 @@
|
||||
* Pass in a custom socket for libcurl to use.
|
||||
* </DESC>
|
||||
*/
|
||||
#ifdef _WIN32
|
||||
#ifdef _MSC_VER
|
||||
#ifndef _WINSOCK_DEPRECATED_NO_WARNINGS
|
||||
#define _WINSOCK_DEPRECATED_NO_WARNINGS /* for inet_addr() */
|
||||
#endif
|
||||
@ -46,7 +46,11 @@
|
||||
#include <unistd.h> /* misc. Unix functions */
|
||||
#endif
|
||||
|
||||
#ifdef UNDER_CE
|
||||
#define strerror(e) "?"
|
||||
#else
|
||||
#include <errno.h>
|
||||
#endif
|
||||
|
||||
/* The IP address and port number to connect to */
|
||||
#define IPADDR "127.0.0.1"
|
||||
|
||||
@ -51,7 +51,11 @@ int main(void)
|
||||
return 1; /* cannot continue */
|
||||
|
||||
/* to get the file size */
|
||||
#ifdef UNDER_CE
|
||||
if(stat("debugit", &file_info) != 0) {
|
||||
#else
|
||||
if(fstat(fileno(fd), &file_info) != 0) {
|
||||
#endif
|
||||
fclose(fd);
|
||||
return 1; /* cannot continue */
|
||||
}
|
||||
|
||||
@ -28,7 +28,11 @@
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#ifdef UNDER_CE
|
||||
#define strerror(e) "?"
|
||||
#else
|
||||
#include <errno.h>
|
||||
#endif
|
||||
#ifdef _WIN32
|
||||
#include <io.h>
|
||||
#undef stat
|
||||
|
||||
@ -77,7 +77,9 @@ static int upload(CURL *curlhandle, const char *remotepath,
|
||||
|
||||
f = fopen(localpath, "rb");
|
||||
if(!f) {
|
||||
#ifndef UNDER_CE
|
||||
perror(NULL);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@ -392,21 +392,21 @@ int init_fifo(void)
|
||||
if((st.st_mode & S_IFMT) == S_IFREG) {
|
||||
errno = EEXIST;
|
||||
perror("lstat");
|
||||
exit(1);
|
||||
return CURL_SOCKET_BAD;
|
||||
}
|
||||
}
|
||||
|
||||
unlink(fifo);
|
||||
if(mkfifo (fifo, 0600) == -1) {
|
||||
if(mkfifo(fifo, 0600) == -1) {
|
||||
perror("mkfifo");
|
||||
exit(1);
|
||||
return CURL_SOCKET_BAD;
|
||||
}
|
||||
|
||||
socket = open(fifo, O_RDWR | O_NONBLOCK, 0);
|
||||
|
||||
if(socket == -1) {
|
||||
if(socket == CURL_SOCKET_BAD) {
|
||||
perror("open");
|
||||
exit(1);
|
||||
return socket;
|
||||
}
|
||||
MSG_OUT("Now, pipe some URL's into > %s\n", fifo);
|
||||
|
||||
@ -421,6 +421,8 @@ int main(void)
|
||||
GIOChannel* ch;
|
||||
|
||||
fd = init_fifo();
|
||||
if(fd == CURL_SOCKET_BAD)
|
||||
return 1;
|
||||
ch = g_io_channel_unix_new(fd);
|
||||
g_io_add_watch(ch, G_IO_IN, fifo_cb, g);
|
||||
gmain = g_main_loop_new(NULL, FALSE);
|
||||
|
||||
@ -399,22 +399,22 @@ static int init_fifo(GlobalInfo *g)
|
||||
curl_socket_t sockfd;
|
||||
|
||||
fprintf(MSG_OUT, "Creating named pipe \"%s\"\n", fifo);
|
||||
if(lstat (fifo, &st) == 0) {
|
||||
if(lstat(fifo, &st) == 0) {
|
||||
if((st.st_mode & S_IFMT) == S_IFREG) {
|
||||
errno = EEXIST;
|
||||
perror("lstat");
|
||||
exit(1);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
unlink(fifo);
|
||||
if(mkfifo (fifo, 0600) == -1) {
|
||||
perror("mkfifo");
|
||||
exit(1);
|
||||
return 1;
|
||||
}
|
||||
sockfd = open(fifo, O_RDWR | O_NONBLOCK, 0);
|
||||
if(sockfd == -1) {
|
||||
perror("open");
|
||||
exit(1);
|
||||
return 1;
|
||||
}
|
||||
g->input = fdopen(sockfd, "r");
|
||||
|
||||
@ -440,7 +440,8 @@ int main(int argc, char **argv)
|
||||
|
||||
memset(&g, 0, sizeof(GlobalInfo));
|
||||
g.evbase = event_base_new();
|
||||
init_fifo(&g);
|
||||
if(init_fifo(&g))
|
||||
return 1;
|
||||
g.multi = curl_multi_init();
|
||||
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) {
|
||||
fprintf(stderr, "Failed to create CURL connection\n");
|
||||
exit(EXIT_FAILURE);
|
||||
return false;
|
||||
}
|
||||
|
||||
code = curl_easy_setopt(conn, CURLOPT_ERRORBUFFER, errorBuffer);
|
||||
@ -270,7 +270,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
if(argc != 2) {
|
||||
fprintf(stderr, "Usage: %s <url>\n", argv[0]);
|
||||
exit(EXIT_FAILURE);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
curl_global_init(CURL_GLOBAL_DEFAULT);
|
||||
@ -279,7 +279,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
if(!init(conn, argv[1])) {
|
||||
fprintf(stderr, "Connection initialization failed\n");
|
||||
exit(EXIT_FAILURE);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
// Retrieve content for the URL
|
||||
@ -289,7 +289,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
if(code != CURLE_OK) {
|
||||
fprintf(stderr, "Failed to get '%s' [%s]\n", argv[1], errorBuffer);
|
||||
exit(EXIT_FAILURE);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
// Parse the (assumed) HTML code
|
||||
|
||||
@ -28,7 +28,11 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#ifdef UNDER_CE
|
||||
#define strerror(e) "?"
|
||||
#else
|
||||
#include <errno.h>
|
||||
#endif
|
||||
|
||||
/* curl stuff */
|
||||
#include <curl/curl.h>
|
||||
@ -138,7 +142,7 @@ int my_trace(CURL *handle, curl_infotype type,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void setup(struct transfer *t, int num)
|
||||
static int setup(struct transfer *t, int num)
|
||||
{
|
||||
char filename[128];
|
||||
CURL *hnd;
|
||||
@ -151,7 +155,7 @@ static void setup(struct transfer *t, int num)
|
||||
if(!t->out) {
|
||||
fprintf(stderr, "error: could not open file %s for writing: %s\n",
|
||||
filename, strerror(errno));
|
||||
exit(1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* write to this file */
|
||||
@ -175,6 +179,7 @@ static void setup(struct transfer *t, int num)
|
||||
/* wait for pipe connection to confirm */
|
||||
curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -200,7 +205,8 @@ int main(int argc, char **argv)
|
||||
multi_handle = curl_multi_init();
|
||||
|
||||
for(i = 0; i < num_transfers; i++) {
|
||||
setup(&trans[i], i);
|
||||
if(setup(&trans[i], i))
|
||||
return 1;
|
||||
|
||||
/* add the individual transfer */
|
||||
curl_multi_add_handle(multi_handle, trans[i].easy);
|
||||
|
||||
@ -30,7 +30,11 @@
|
||||
#include <string.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/stat.h>
|
||||
#ifdef UNDER_CE
|
||||
#define strerror(e) "?"
|
||||
#else
|
||||
#include <errno.h>
|
||||
#endif
|
||||
|
||||
/* somewhat Unix-specific */
|
||||
#ifndef _MSC_VER
|
||||
@ -196,7 +200,7 @@ static size_t read_callback(char *ptr, size_t size, size_t nmemb, void *userp)
|
||||
return retcode;
|
||||
}
|
||||
|
||||
static void setup(struct input *i, int num, const char *upload)
|
||||
static int setup(struct input *i, int num, const char *upload)
|
||||
{
|
||||
FILE *out;
|
||||
char url[256];
|
||||
@ -205,14 +209,15 @@ static void setup(struct input *i, int num, const char *upload)
|
||||
curl_off_t uploadsize;
|
||||
CURL *hnd;
|
||||
|
||||
hnd = i->hnd = curl_easy_init();
|
||||
hnd = i->hnd = NULL;
|
||||
|
||||
i->num = num;
|
||||
curl_msnprintf(filename, 128, "dl-%d", num);
|
||||
out = fopen(filename, "wb");
|
||||
if(!out) {
|
||||
fprintf(stderr, "error: could not open file %s for writing: %s\n", upload,
|
||||
strerror(errno));
|
||||
exit(1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
curl_msnprintf(url, 256, "https://localhost:8443/upload-%d", num);
|
||||
@ -221,7 +226,8 @@ static void setup(struct input *i, int num, const char *upload)
|
||||
if(stat(upload, &file_info)) {
|
||||
fprintf(stderr, "error: could not stat file %s: %s\n", upload,
|
||||
strerror(errno));
|
||||
exit(1);
|
||||
fclose(out);
|
||||
return 1;
|
||||
}
|
||||
|
||||
uploadsize = file_info.st_size;
|
||||
@ -230,9 +236,12 @@ static void setup(struct input *i, int num, const char *upload)
|
||||
if(!i->in) {
|
||||
fprintf(stderr, "error: could not open file %s for reading: %s\n", upload,
|
||||
strerror(errno));
|
||||
exit(1);
|
||||
fclose(out);
|
||||
return 1;
|
||||
}
|
||||
|
||||
hnd = i->hnd = curl_easy_init();
|
||||
|
||||
/* write to this file */
|
||||
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, out);
|
||||
|
||||
@ -265,6 +274,7 @@ static void setup(struct input *i, int num, const char *upload)
|
||||
/* wait for pipe connection to confirm */
|
||||
curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -297,7 +307,8 @@ int main(int argc, char **argv)
|
||||
multi_handle = curl_multi_init();
|
||||
|
||||
for(i = 0; i < num_transfers; i++) {
|
||||
setup(&trans[i], i, filename);
|
||||
if(setup(&trans[i], i, filename))
|
||||
return 1;
|
||||
|
||||
/* add the individual transfer */
|
||||
curl_multi_add_handle(multi_handle, trans[i].hnd);
|
||||
|
||||
@ -90,7 +90,9 @@ static int sftpResumeUpload(CURL *curlhandle, const char *remotepath,
|
||||
|
||||
f = fopen(localpath, "rb");
|
||||
if(!f) {
|
||||
#ifndef UNDER_CE
|
||||
perror(NULL);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -99,7 +101,7 @@ static int sftpResumeUpload(CURL *curlhandle, const char *remotepath,
|
||||
curl_easy_setopt(curlhandle, CURLOPT_READFUNCTION, readfunc);
|
||||
curl_easy_setopt(curlhandle, CURLOPT_READDATA, f);
|
||||
|
||||
#ifdef _WIN32
|
||||
#if defined(_WIN32) && !defined(UNDER_CE)
|
||||
_fseeki64(f, remoteFileSizeByte, SEEK_SET);
|
||||
#else
|
||||
fseek(f, (long)remoteFileSizeByte, SEEK_SET);
|
||||
|
||||
@ -82,7 +82,7 @@ int main(void)
|
||||
curl = curl_easy_init();
|
||||
if(curl) {
|
||||
/* what call to write: */
|
||||
curl_easy_setopt(curl, CURLOPT_URL, "HTTPS://your.favourite.ssl.site");
|
||||
curl_easy_setopt(curl, CURLOPT_URL, "HTTPS://secure.site.example");
|
||||
curl_easy_setopt(curl, CURLOPT_HEADERDATA, headerfile);
|
||||
|
||||
#ifdef _MSC_VER
|
||||
|
||||
@ -27,6 +27,14 @@ 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
|
||||
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
|
||||
|
||||
Try using a non-confusing naming scheme for your new functions and variable
|
||||
@ -314,3 +322,42 @@ typedef struct {
|
||||
} something;
|
||||
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
|
||||
|
||||
127
docs/internals/MULTI-EV.md
Normal file
127
docs/internals/MULTI-EV.md
Normal file
@ -0,0 +1,127 @@
|
||||
<!--
|
||||
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,6 +30,19 @@ 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`
|
||||
|
||||
~~~c
|
||||
@ -94,11 +107,32 @@ Advance over a single ASCII space. Return non-zero on error.
|
||||
## `Curl_str_number`
|
||||
|
||||
~~~c
|
||||
int Curl_str_number(char **linep, size_t *nump, size_t max);
|
||||
int Curl_str_number(char **linep, curl_size_t *nump, size_t max);
|
||||
~~~
|
||||
|
||||
Get an unsigned decimal number. Leading zeroes are just swallowed. Return
|
||||
non-zero on error.
|
||||
Get an unsigned decimal 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_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`
|
||||
|
||||
@ -107,3 +141,30 @@ int Curl_str_newline(char **linep);
|
||||
~~~
|
||||
|
||||
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,11 +28,10 @@ const struct curl_easyoption *curl_easy_option_by_id(CURLoption id);
|
||||
# DESCRIPTION
|
||||
|
||||
Given a *CURLoption* **id**, this function returns a pointer to the
|
||||
*curl_easyoption* struct, holding information about the
|
||||
curl_easy_setopt(3) option using that id. The option id is the CURLOPT_
|
||||
prefix ones provided in the standard curl/curl.h header file. This function
|
||||
returns the non-alias version of the cases where there is an alias function as
|
||||
well.
|
||||
*curl_easyoption* struct, holding information about the curl_easy_setopt(3)
|
||||
option using that id. The option id is the `CURLOPT_` prefixed ones provided
|
||||
in the standard curl/curl.h header file. This function 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.
|
||||
|
||||
|
||||
@ -27,11 +27,10 @@ const struct curl_easyoption *curl_easy_option_by_name(const char *name);
|
||||
|
||||
# DESCRIPTION
|
||||
|
||||
Given a **name**, this function returns a pointer to the
|
||||
*curl_easyoption* struct, holding information about the
|
||||
curl_easy_setopt(3) option using that name. The name should be specified
|
||||
without the "CURLOPT_" prefix and the name comparison is made case
|
||||
insensitive.
|
||||
Given a **name**, this function returns a pointer to the *curl_easyoption*
|
||||
struct, holding information about the curl_easy_setopt(3) option using that
|
||||
name. The name should be specified 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.
|
||||
|
||||
|
||||
@ -316,4 +316,4 @@ filenames are now escaped before transmission.
|
||||
# RETURN VALUE
|
||||
|
||||
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);"
|
||||
~~~
|
||||
|
||||
The curl_formget_callback is invoked for each part of the HTTP POST chain. The
|
||||
character buffer passed to the callback must not be freed. The callback should
|
||||
return the buffer length passed to it on success.
|
||||
The *curl_formget_callback* is invoked for each part of the HTTP POST chain.
|
||||
The character buffer passed to the callback must not be freed. The callback
|
||||
should return the buffer length passed to it on success.
|
||||
|
||||
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.
|
||||
|
||||
@ -64,16 +64,17 @@ 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.
|
||||
This does not just mean no other thread that is using libcurl.
|
||||
|
||||
# OpenSSL
|
||||
# Names
|
||||
|
||||
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
|
||||
forks/flavors in this function. OpenSSL, BoringSSL, LibreSSL, quictls and
|
||||
AmiSSL are all supported by libcurl, but in the eyes of
|
||||
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 the exact
|
||||
OpenSSL flavor and version number is use.
|
||||
provide the same API. curl_version_info(3) can return more specific info about
|
||||
the exact OpenSSL flavor and version number in use.
|
||||
|
||||
# struct
|
||||
|
||||
|
||||
@ -97,13 +97,38 @@ 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
|
||||
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`
|
||||
|
||||
Tracing of DNS-over-HTTP operations to resolve hostnames.
|
||||
Former name for DNS-over-HTTP operations. Now an alias for `dns`.
|
||||
|
||||
## `multi`
|
||||
|
||||
Traces multi operations managing transfers' state changes and sockets poll
|
||||
states.
|
||||
|
||||
## `read`
|
||||
|
||||
Traces reading of upload data from the application in order to send it to the server.
|
||||
Traces reading of upload data from the application in order to send it to the
|
||||
server.
|
||||
|
||||
## `ssls`
|
||||
|
||||
|
||||
@ -100,6 +100,10 @@ int main(void)
|
||||
|
||||
/* call curl_multi_perform() */
|
||||
|
||||
FD_ZERO(&fdread);
|
||||
FD_ZERO(&fdwrite);
|
||||
FD_ZERO(&fdexcep);
|
||||
|
||||
/* get file descriptors from the transfers */
|
||||
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