123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- #!/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.
- #
- # SPDX-License-Identifier: curl
- #
- ###########################################################################
- # 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,
- $defaulton{$w} ? " (auto)":"";
- }
- }
- 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;
- }
- }
- print "ENABLED configure options that aren't available\n";
- for my $w (sort keys %with) {
- if(!$avail{$w}) {
- printf " %s\n", $w;
- }
- }
|