Add a platform specific configuration checker
For each platform, we may need to perform some basic checks to see that available tools perform as we expect them. For the moment, the added checkers test that Perl gives the expected path format. This should help MingW users to see if they run an appropriate Perl implementation, for example. Reviewed-by: Andy Polyakov <appro@openssl.org> (Merged from https://github.com/openssl/openssl/pull/2851)
This commit is contained in:
parent
697958313b
commit
d192a3aaeb
3 changed files with 63 additions and 0 deletions
22
Configurations/unix-checker.pm
Normal file
22
Configurations/unix-checker.pm
Normal file
|
@ -0,0 +1,22 @@
|
|||
#! /usr/bin/perl
|
||||
|
||||
use Config;
|
||||
|
||||
# Check that the perl implementation file modules generate paths that
|
||||
# we expect for the platform
|
||||
use File::Spec::Functions qw(:DEFAULT rel2abs);
|
||||
|
||||
if (rel2abs('.') !~ m|/|) {
|
||||
die <<EOF;
|
||||
|
||||
******************************************************************************
|
||||
This perl implementation doesn't produce Unix like paths (with forward slash
|
||||
directory separators). Please use an implementation that matches your
|
||||
building platform.
|
||||
|
||||
This Perl version: $Config{version} for $Config{archname}
|
||||
******************************************************************************
|
||||
EOF
|
||||
}
|
||||
|
||||
1;
|
22
Configurations/windows-checker.pm
Normal file
22
Configurations/windows-checker.pm
Normal file
|
@ -0,0 +1,22 @@
|
|||
#! /usr/bin/perl
|
||||
|
||||
use Config;
|
||||
|
||||
# Check that the perl implementation file modules generate paths that
|
||||
# we expect for the platform
|
||||
use File::Spec::Functions qw(:DEFAULT rel2abs);
|
||||
|
||||
if (rel2abs('.') !~ m|\\|) {
|
||||
die <<EOF;
|
||||
|
||||
******************************************************************************
|
||||
This perl implementation doesn't produce Windows like paths (with backward
|
||||
slash directory separators). Please use an implementation that matches your
|
||||
building platform.
|
||||
|
||||
This Perl version: $Config{version} for $Config{archname}
|
||||
******************************************************************************
|
||||
EOF
|
||||
}
|
||||
|
||||
1;
|
19
Configure
19
Configure
|
@ -993,6 +993,25 @@ $target{build_scheme} = [ $target{build_scheme} ]
|
|||
my ($builder, $builder_platform, @builder_opts) =
|
||||
@{$target{build_scheme}};
|
||||
|
||||
foreach my $checker (($builder_platform."-".$target{build_file}."-checker.pm",
|
||||
$builder_platform."-checker.pm")) {
|
||||
my $checker_path = catfile($srcdir, "Configurations", $checker);
|
||||
if (-f $checker_path) {
|
||||
my $fn = $ENV{CONFIGURE_CHECKER_WARN}
|
||||
? sub { warn $@; } : sub { die $@; };
|
||||
if (! do $checker_path) {
|
||||
if ($@) {
|
||||
$fn->($@);
|
||||
} elsif ($!) {
|
||||
$fn->($!);
|
||||
} else {
|
||||
$fn->("The detected tools didn't match the platform\n");
|
||||
}
|
||||
}
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
push @{$config{defines}}, "NDEBUG" if $config{build_type} eq "release";
|
||||
|
||||
if ($target =~ /^mingw/ && `$target{cc} --target-help 2>&1` =~ m/-mno-cygwin/m)
|
||||
|
|
Loading…
Reference in a new issue