Configure: move the processing of predefined macros to a function
Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/4899)
This commit is contained in:
parent
cac19d19e7
commit
6d75a83c07
1 changed files with 35 additions and 22 deletions
57
Configure
57
Configure
|
@ -1235,33 +1235,20 @@ unless ($disabled{asm}) {
|
|||
}
|
||||
}
|
||||
|
||||
my %predefined;
|
||||
my %predefined = compiler_predefined($target{cc});
|
||||
|
||||
if ($^O ne "VMS") {
|
||||
my $cc = "$config{cross_compile_prefix}$target{cc}";
|
||||
|
||||
# collect compiler pre-defines from gcc or gcc-alike...
|
||||
open(PIPE, "$cc -dM -E -x c /dev/null 2>&1 |");
|
||||
while (<PIPE>) {
|
||||
m/^#define\s+(\w+(?:\(\w+\))?)(?:\s+(.+))?/ or last;
|
||||
$predefined{$1} = $2 // "";
|
||||
}
|
||||
close(PIPE);
|
||||
|
||||
if (!$disabled{makedepend}) {
|
||||
# We know that GNU C version 3 and up as well as all clang
|
||||
# versions support dependency generation
|
||||
if ($predefined{__GNUC__} >= 3) {
|
||||
$config{makedepprog} = $cc;
|
||||
} else {
|
||||
$config{makedepprog} = which('makedepend');
|
||||
$disabled{makedepend} = "unavailable" unless $config{makedepprog};
|
||||
}
|
||||
if (!$disabled{makedepend}) {
|
||||
# We know that GNU C version 3 and up as well as all clang
|
||||
# versions support dependency generation
|
||||
if ($predefined{__GNUC__} >= 3) {
|
||||
$config{makedepprog} = "\$(CROSS_COMPILE)$target{cc}";
|
||||
} else {
|
||||
$config{makedepprog} = which('makedepend');
|
||||
$disabled{makedepend} = "unavailable" unless $config{makedepprog};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
# Deal with bn_ops ###################################################
|
||||
|
||||
$config{bn_ll} =0;
|
||||
|
@ -2514,6 +2501,32 @@ sub run_dofile
|
|||
rename("$out.new", $out) || die "Can't rename $out.new, $!";
|
||||
}
|
||||
|
||||
sub compiler_predefined {
|
||||
state %predefined;
|
||||
my $default_compiler = shift;
|
||||
|
||||
return () if $^O eq 'VMS';
|
||||
|
||||
die 'compiler_predefines called without a default compiler'
|
||||
unless $default_compiler;
|
||||
|
||||
if (! $predefined{$default_compiler}) {
|
||||
my $cc = "$config{cross_compile_prefix}$default_compiler";
|
||||
|
||||
$predefined{$default_compiler} = {};
|
||||
|
||||
# collect compiler pre-defines from gcc or gcc-alike...
|
||||
open(PIPE, "$cc -dM -E -x c /dev/null 2>&1 |");
|
||||
while (my $l = <PIPE>) {
|
||||
$l =~ m/^#define\s+(\w+(?:\(\w+\))?)(?:\s+(.+))?/ or last;
|
||||
$predefined{$default_compiler}->{$1} = $2 // '';
|
||||
}
|
||||
close(PIPE);
|
||||
}
|
||||
|
||||
return %{$predefined{$default_compiler}};
|
||||
}
|
||||
|
||||
sub which
|
||||
{
|
||||
my ($name)=@_;
|
||||
|
|
Loading…
Reference in a new issue