Add an explicit list of options that can be disabled, enabled, ...

Configure has, so far, had no control at all of which 'no-' options it
can be given.  This means that, for example, someone could configure
with something absurd like 'no-stack' and then watch the build crumble
to dust...  or file a bug report.

This introduces some sanity into the possible choices.

The added list comes from looking for the explicit ones used in
Configure, and from grepping after OPENSSL_NO_ in all source files.

Reviewed-by: Rich Salz <rsalz@openssl.org>
This commit is contained in:
Richard Levitte 2015-10-22 17:09:14 +02:00
parent 15db6a40d3
commit 8b527be2db
1 changed files with 89 additions and 0 deletions

View File

@ -796,6 +796,86 @@ my $default_ranlib;
my $perl;
my $fips=0;
# Explicitelly known options that are possible to disable. They can
# be regexps, and will be used like this: /^no-${option}$/
# For developers: keep it sorted alphabetically
my @disablables = (
"aes",
"asm",
"bf",
"camellia",
"capieng",
"cast",
"cmac",
"cms",
"comp",
"ct",
"deprecated",
"des",
"dgram",
"dh",
"dsa",
"dso",
"dtls1?",
"dynamic[-_]engine",
"ec",
"ec2m",
"ec_nistp_64_gcc_128",
"engine",
"err", # Really???
"gmp",
"gost",
"heartbeats",
"hmac",
"hw(-.+)?",
"idea",
"jpake",
"locking", # Really???
"md2",
"md4",
"md5",
"mdc2",
"md[-_]ghost94",
"nextprotoneg",
"ocb",
"ocsp",
"posix-io",
"psk",
"rc2",
"rc4",
"rc5",
"rdrand",
"rfc3779",
"rijndael", # Old AES name
"rmd160",
"rsa",
"scrypt",
"sct",
"sctp",
"seed",
"sha",
"shared",
"sock",
"srp",
"srtp",
"sse2",
"ssl",
"ssl3",
"ssl3-method",
"ssl-trace",
"static-engine",
"stdio",
"store",
"threads",
"tls",
"tls1",
"unit-test",
"whirlpool",
"zlib",
"zlib-dynamic",
);
# All of the following is disabled by default (RC5 was enabled before 0.9.8):
my %disabled = ( # "what" => "comment" [or special keyword "experimental"]
@ -878,6 +958,15 @@ PROCESS_ARGS:
s /^zlib$/enable-zlib/;
s /^zlib-dynamic$/enable-zlib-dynamic/;
if (/^(no|disable|enable|experimental)-(.+)$/)
{
my $word = $2;
if (!grep { $word =~ /^${_}$/ } @disablables)
{
warn "Unsupported option ${word}, ignored...\n";
next;
}
}
if (/^no-(.+)$/ || /^disable-(.+)$/)
{
if (!($disabled{$1} eq "experimental"))