From: Richard Levitte Date: Wed, 31 Aug 2016 17:47:35 +0000 (+0200) Subject: Have Configure's HASH or TABLE produce complete lists X-Git-Tag: OpenSSL_1_1_1-pre1~3608 X-Git-Url: https://git.openssl.org/?p=openssl.git;a=commitdiff_plain;h=d63c12c697faa4e2fa0e5d7565521a5813c86415;ds=sidebyside Have Configure's HASH or TABLE produce complete lists Because some targets execute perl code that might die, we risk incomplete lists. Make it so dying doesn't happen when we're listing targets. Reviewed-by: Rich Salz --- diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf index 2838c3d176..e75d164197 100644 --- a/Configurations/10-main.conf +++ b/Configurations/10-main.conf @@ -14,7 +14,10 @@ sub vc_win64a_info { asflags => "/c /Cp /Cx /Zi", asoutflag => "/Fo" }; } else { - die "NASM not found - please read INSTALL and NOTES.WIN for further details\n"; + $die->("NASM not found - please read INSTALL and NOTES.WIN for further details\n"); + $vc_win64a_info = { as => "{unknown}", + asflags => "", + asoutflag => "" }; } } return $vc_win64a_info; @@ -36,7 +39,11 @@ sub vc_win32_info { asoutflag => "/Fo", perlasm_scheme => "win32" }; } else { - die "NASM not found - please read INSTALL and NOTES.WIN for further details\n"; + $die->("NASM not found - please read INSTALL and NOTES.WIN for further details\n"); + $vc_win32_info = { as => "{unknown}", + asflags => "", + asoutflag => "", + perlasm_scheme => "win32" }; } } return $vc_win32_info; @@ -46,18 +53,26 @@ my $vc_wince_info = {}; sub vc_wince_info { unless (%$vc_wince_info) { # sanity check - die '%OSVERSION% is not defined' if (!defined($ENV{'OSVERSION'})); - die '%PLATFORM% is not defined' if (!defined($ENV{'PLATFORM'})); - die '%TARGETCPU% is not defined' if (!defined($ENV{'TARGETCPU'})); + $die->('%OSVERSION% is not defined') if (!defined($ENV{'OSVERSION'})); + $die->('%PLATFORM% is not defined') if (!defined($ENV{'PLATFORM'})); + $die->('%TARGETCPU% is not defined') if (!defined($ENV{'TARGETCPU'})); # # Idea behind this is to mimic flags set by eVC++ IDE... # my $wcevers = $ENV{'OSVERSION'}; # WCENNN - die '%OSVERSION% value is insane' - if ($wcevers !~ /^WCE([1-9])([0-9]{2})$/); - my $wcecdefs = "-D_WIN32_WCE=$1$2 -DUNDER_CE=$1$2"; # -D_WIN32_WCE=NNN - my $wcelflag = "/subsystem:windowsce,$1.$2"; # ...,N.NN + my $wcevernum; + my $wceverdotnum; + if ($wcevers =~ /^WCE([1-9])([0-9]{2})$/) { + $wcevernum = "$1$2"; + $wceverdotnum = "$1.$2"; + } else { + $die->('%OSVERSION% value is insane'); + $wcevernum = "{unknown}"; + $wceverdotnum = "{unknown}"; + } + my $wcecdefs = "-D_WIN32_WCE=$wcevernum -DUNDER_CE=$wcevernum"; # -D_WIN32_WCE=NNN + my $wcelflag = "/subsystem:windowsce,$wceverdotnum"; # ...,N.NN my $wceplatf = $ENV{'PLATFORM'}; diff --git a/Configure b/Configure index 4fec746c4c..4fbce036ce 100755 --- a/Configure +++ b/Configure @@ -788,7 +788,9 @@ while (@tocheckfor) { @tocheckfor = (keys %new_tocheckfor); } +our $die = sub { die @_; }; if ($target eq "TABLE") { + local $die = sub { warn @_; }; foreach (sort keys %table) { print_table_entry($_, "TABLE"); } @@ -803,6 +805,7 @@ if ($target eq "LIST") { } if ($target eq "HASH") { + local $die = sub { warn @_; }; print "%table = (\n"; foreach (sort keys %table) { print_table_entry($_, "HASH");