2022-02-13 05:54:27 +08:00
|
|
|
#!/usr/bin/perl
|
|
|
|
#***************************************************************************
|
|
|
|
# _ _ ____ _
|
|
|
|
# Project ___| | | | _ \| |
|
|
|
|
# / __| | | | |_) | |
|
|
|
|
# | (__| |_| | _ <| |___
|
|
|
|
# \___|\___/|_| \_\_____|
|
|
|
|
#
|
|
|
|
# Copyright (C) 2022, 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.
|
|
|
|
#
|
2022-05-17 17:16:50 +08:00
|
|
|
# SPDX-License-Identifier: curl
|
|
|
|
#
|
2022-02-13 05:54:27 +08:00
|
|
|
###########################################################################
|
|
|
|
|
|
|
|
# these options are enabled by default in the sense that they will attempt to
|
|
|
|
# check for and use this feature without the configure flag
|
|
|
|
my %defaulton = (
|
|
|
|
# --enable-
|
|
|
|
'shared' => 1,
|
|
|
|
'static' => 1,
|
|
|
|
'fast-install' => 1,
|
|
|
|
'silent-rules' => 1,
|
|
|
|
'optimize' => 1,
|
|
|
|
'http' => 1,
|
|
|
|
'ftp' => 1,
|
|
|
|
'file' => 1,
|
|
|
|
'ldap' => 1,
|
|
|
|
'ldaps' => 1,
|
|
|
|
'rtsp' => 1,
|
|
|
|
'proxy' => 1,
|
|
|
|
'dict' => 1,
|
|
|
|
'telnet' => 1,
|
|
|
|
'tftp' => 1,
|
|
|
|
'pop3' => 1,
|
|
|
|
'imap' => 1,
|
|
|
|
'smb' => 1,
|
|
|
|
'smtp' => 1,
|
|
|
|
'gopher' => 1,
|
|
|
|
'mqtt' => 1,
|
|
|
|
'manual' => 1,
|
|
|
|
'libcurl-option' => 1,
|
|
|
|
'libgcc' => 1,
|
|
|
|
'ipv6' => 1,
|
|
|
|
'openssl-auto-load-config' => 1,
|
|
|
|
'versioned-symbols' => 1,
|
|
|
|
'symbol-hiding' => 1,
|
|
|
|
'threaded-resolver' => 1,
|
|
|
|
'pthreads' => 1,
|
|
|
|
'verbose' => 1,
|
|
|
|
'crypto-auth' => 1,
|
|
|
|
'ntlm' => 1,
|
|
|
|
'ntlm-wb' => 1,
|
|
|
|
'tls-srp' => 1,
|
|
|
|
'unix-sockets' => 1,
|
|
|
|
'cookies' => 1,
|
|
|
|
'socketpair' => 1,
|
|
|
|
'http-auth' => 1,
|
|
|
|
'doh' => 1,
|
|
|
|
'mime' => 1,
|
|
|
|
'dateparse' => 1,
|
|
|
|
'netrc' => 1,
|
|
|
|
'progress-meter' => 1,
|
|
|
|
'dnsshuffle' => 1,
|
|
|
|
'get-easy-options' => 1,
|
|
|
|
'alt-svc' => 1,
|
|
|
|
'hsts' => 1,
|
|
|
|
|
|
|
|
# --with-
|
|
|
|
'aix-soname' => 1,
|
|
|
|
'pic' => 1,
|
|
|
|
'zlib' => 1,
|
|
|
|
'zstd' => 1,
|
|
|
|
'brotli' => 1,
|
|
|
|
'random' => 1,
|
|
|
|
'egd-socket' => 1,
|
|
|
|
'ca-bundle' => 1,
|
|
|
|
'ca-path' => 1,
|
|
|
|
'libssh2' => 1,
|
|
|
|
'nghttp2' => 1,
|
|
|
|
'librtmp' => 1,
|
|
|
|
'libidn2' => 1,
|
|
|
|
'sysroot' => 1,
|
|
|
|
'lber-lib' => 1,
|
|
|
|
'ldap-lib' => 1,
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
sub configureopts {
|
|
|
|
my ($opts)=@_;
|
|
|
|
my %thisin;
|
|
|
|
my %thisout;
|
|
|
|
|
|
|
|
while($opts =~ s/--with-([^ =]*)//) {
|
|
|
|
$with{$1}++;
|
|
|
|
$used{$1}++;
|
|
|
|
$thisin{$1}++;
|
|
|
|
}
|
|
|
|
while($opts =~ s/--enable-([^ =]*)//) {
|
|
|
|
$with{$1}++;
|
|
|
|
$used{$1}++;
|
|
|
|
$thisin{$1}++;
|
|
|
|
}
|
|
|
|
|
|
|
|
while($opts =~ s/--without-([^ =]*)//) {
|
|
|
|
$without{$1}++;
|
|
|
|
$used{$1}++;
|
|
|
|
$thisout{$1}++;
|
|
|
|
}
|
|
|
|
while($opts =~ s/--disable-([^ =]*)//) {
|
|
|
|
$without{$1}++;
|
|
|
|
$used{$1}++;
|
|
|
|
$thisout{$1}++;
|
|
|
|
}
|
|
|
|
return join(" ", sort(keys %thisin), "/", sort(keys %thisout));
|
|
|
|
}
|
|
|
|
|
|
|
|
# run configure --help and check what available WITH/ENABLE options that exist
|
|
|
|
sub configurehelp {
|
|
|
|
open(C, "./configure --help|");
|
|
|
|
while(<C>) {
|
|
|
|
if($_ =~ /^ --(with|enable)-([a-z0-9-]+)/) {
|
|
|
|
$avail{$2}++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
close(C);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub scanjobs {
|
|
|
|
|
|
|
|
my $jobs;
|
|
|
|
open(CI, "./scripts/cijobs.pl|");
|
|
|
|
while(<CI>) {
|
|
|
|
if($_ =~ /^\#\#\#/) {
|
|
|
|
$jobs++;
|
|
|
|
}
|
|
|
|
if($_ =~ /^configure: (.*)/) {
|
|
|
|
my $c= configureopts($1);
|
|
|
|
#print "C: $c\n";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
close(CI);
|
|
|
|
}
|
|
|
|
|
|
|
|
configurehelp();
|
|
|
|
scanjobs();
|
|
|
|
|
|
|
|
print "Used configure options (with / without)\n";
|
|
|
|
for my $w (sort keys %used) {
|
|
|
|
printf " %s: %d %d%s\n", $w, $with{$w}, $without{$w},
|
|
|
|
$defaulton{$w} ? " (auto)":"";
|
|
|
|
}
|
|
|
|
|
|
|
|
print "Never used configure options\n";
|
|
|
|
for my $w (sort keys %avail) {
|
|
|
|
if(!$used{$w}) {
|
|
|
|
printf " %s%s\n", $w,
|
2022-04-14 19:06:32 +08:00
|
|
|
$defaulton{$w} ? " (auto)":"";
|
2022-02-13 05:54:27 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
print "Never ENABLED configure options that aren't on by default\n";
|
|
|
|
for my $w (sort keys %avail) {
|
|
|
|
if(!$with{$w} && !$defaulton{$w}) {
|
|
|
|
printf " %s\n", $w;
|
|
|
|
}
|
|
|
|
}
|
2022-02-14 15:38:37 +08:00
|
|
|
|
|
|
|
|
|
|
|
print "ENABLED configure options that aren't available\n";
|
|
|
|
for my $w (sort keys %with) {
|
|
|
|
if(!$avail{$w}) {
|
|
|
|
printf " %s\n", $w;
|
|
|
|
}
|
|
|
|
}
|