1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
#!/usr/bin/perl -w
my ($ok, $no) = (-t 1)? ("\e[32;1m✓\e[0m ", "\e[31;1m✗\e[0m ") : ("", "");
open MAKEFILE, "<Makefile";
{undef local $/; $_=<MAKEFILE>}
close MAKEFILE;
/^ARCHS=((?:[a-z0-9-]| |\t|\\\n)*)/m
or die "Couldn't parse ARCHS= in the Makefile\n";
$ARCH{$_}=1 for($1=~/[a-z0-9-]+/g);
my @FOUND;
sub alt
{
my $arch = shift;
for (@_)
{
`which "$_-as"`;
$VARS{$arch}=$_, last unless $?;
}
if ($VARS{$arch})
{
s/\$\($arch\)/$VARS{$arch}/g;
}
else
{
$VARS{$arch}="{".join(',', @_)."}";
s/\$\($arch\)/$_[0]/g;
}
}
alt qw(X86 x86_64-linux-gnu i386-linux-gnu i486-linux-gnu i586-linux-gnu
i686-linux-gnu x86_64-linux-gnux32);
alt qw(MIPS mips-linux-gnu mipsel-linux-gnu mips64-linux-gnuabi64
mips64el-linux-gnuabi64);
alt qw(POWERPC powerpc-linux-gnu powerpc64-linux-gnu);
alt qw(ARM arm-linux-gnueabihf arm-linux-gnueabi);
alt qw(SPARC sparc64-linux-gnu sparc-linux-gnu);
alt qw(RISCV riscv64-linux-gnu riscv32-linux-gnu);
while (/^arch-test-([a-z0-9-]+):.*\n\t([a-z0-9_.-]+-(?:gcc|as))/mg)
{
$ARCH{$1} or die "Error: $1 known but not listed.\n";
delete $ARCH{$1};
`which $2`;
if ($?)
{
print "${no}Missing $1: $2 not installed\n";
}
else
{
print "$ok$1: $2\n";
push @FOUND, "$1";
}
}
die "Error: ".join(' ',keys %ARCH)." listed but not known.\n" if (%ARCH);
open CONFIG, ">config";
print CONFIG "ARCHS=@FOUND\n";
print CONFIG "$_=$VARS{$_}\n" for keys %VARS;
|