Configure: give config targets the possibility to enable or disable features
Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/3745)
This commit is contained in:
parent
410e8c9356
commit
906eb3d031
3 changed files with 49 additions and 19 deletions
|
@ -42,6 +42,10 @@
|
||||||
|
|
||||||
BASE_common => {
|
BASE_common => {
|
||||||
template => 1,
|
template => 1,
|
||||||
|
|
||||||
|
enable => [],
|
||||||
|
disable => [],
|
||||||
|
|
||||||
defines =>
|
defines =>
|
||||||
sub {
|
sub {
|
||||||
my @defs = ();
|
my @defs = ();
|
||||||
|
|
|
@ -34,6 +34,13 @@ In each table entry, the following keys are significant:
|
||||||
sys_id => System identity for systems where that
|
sys_id => System identity for systems where that
|
||||||
is difficult to determine automatically.
|
is difficult to determine automatically.
|
||||||
|
|
||||||
|
enable => Enable specific configuration features.
|
||||||
|
This MUST be an array of words.
|
||||||
|
disable => Disable specific configuration features.
|
||||||
|
This MUST be an array of words.
|
||||||
|
Note: if the same feature is both enabled
|
||||||
|
and disabled, disable wins.
|
||||||
|
|
||||||
cc => The C compiler command, usually one of "cc",
|
cc => The C compiler command, usually one of "cc",
|
||||||
"gcc" or "clang". This command is normally
|
"gcc" or "clang". This command is normally
|
||||||
also used to link object files and
|
also used to link object files and
|
||||||
|
|
57
Configure
57
Configure
|
@ -857,6 +857,44 @@ if ($target =~ m/^CygWin32(-.*)$/) {
|
||||||
$target = "Cygwin".$1;
|
$target = "Cygwin".$1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Support for legacy targets having a name starting with 'debug-'
|
||||||
|
my ($d, $t) = $target =~ m/^(debug-)?(.*)$/;
|
||||||
|
if ($d) {
|
||||||
|
$config{build_type} = "debug";
|
||||||
|
|
||||||
|
# If we do not find debug-foo in the table, the target is set to foo.
|
||||||
|
if (!$table{$target}) {
|
||||||
|
$target = $t;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$config{target} = $target;
|
||||||
|
my %target = resolve_config($target);
|
||||||
|
|
||||||
|
&usage if (!%target || $target{template});
|
||||||
|
|
||||||
|
my %conf_files = map { $_ => 1 } (@{$target{_conf_fname_int}});
|
||||||
|
$config{conf_files} = [ sort keys %conf_files ];
|
||||||
|
%target = ( %{$table{DEFAULTS}}, %target );
|
||||||
|
|
||||||
|
foreach my $feature (@{$target{disable}}) {
|
||||||
|
if (exists $deprecated_disablables{$feature}) {
|
||||||
|
warn "***** config $target disables deprecated feature $feature\n";
|
||||||
|
} elsif (!grep { $feature eq $_ } @disablables) {
|
||||||
|
die "***** config $target disables unknown feature $feature\n";
|
||||||
|
}
|
||||||
|
$disabled{$feature} = 'config';
|
||||||
|
}
|
||||||
|
foreach my $feature (@{$target{enable}}) {
|
||||||
|
if ("default" eq ($disabled{$_} // "")) {
|
||||||
|
if (exists $deprecated_disablables{$feature}) {
|
||||||
|
warn "***** config $target enables deprecated feature $feature\n";
|
||||||
|
} elsif (!grep { $feature eq $_ } @disablables) {
|
||||||
|
die "***** config $target enables unknown feature $feature\n";
|
||||||
|
}
|
||||||
|
delete $disabled{$_};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
foreach (sort (keys %disabled))
|
foreach (sort (keys %disabled))
|
||||||
{
|
{
|
||||||
$config{options} .= " no-$_";
|
$config{options} .= " no-$_";
|
||||||
|
@ -921,25 +959,6 @@ foreach (sort (keys %disabled))
|
||||||
print "\n";
|
print "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
# Support for legacy targets having a name starting with 'debug-'
|
|
||||||
my ($d, $t) = $target =~ m/^(debug-)?(.*)$/;
|
|
||||||
if ($d) {
|
|
||||||
$config{build_type} = "debug";
|
|
||||||
|
|
||||||
# If we do not find debug-foo in the table, the target is set to foo.
|
|
||||||
if (!$table{$target}) {
|
|
||||||
$target = $t;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$config{target} = $target;
|
|
||||||
my %target = resolve_config($target);
|
|
||||||
|
|
||||||
&usage if (!%target || $target{template});
|
|
||||||
|
|
||||||
my %conf_files = map { $_ => 1 } (@{$target{_conf_fname_int}});
|
|
||||||
$config{conf_files} = [ sort keys %conf_files ];
|
|
||||||
%target = ( %{$table{DEFAULTS}}, %target );
|
|
||||||
|
|
||||||
$target{cxxflags}=$target{cflags} unless defined $target{cxxflags};
|
$target{cxxflags}=$target{cflags} unless defined $target{cxxflags};
|
||||||
$target{exe_extension}="";
|
$target{exe_extension}="";
|
||||||
$target{exe_extension}=".exe" if ($config{target} eq "DJGPP"
|
$target{exe_extension}=".exe" if ($config{target} eq "DJGPP"
|
||||||
|
|
Loading…
Reference in a new issue