Codebase list arch-test / 3613eac3-b753-4e53-986b-742227a4eefb/main configure
3613eac3-b753-4e53-986b-742227a4eefb/main

Tree @3613eac3-b753-4e53-986b-742227a4eefb/main (Download .tar.gz)

configure @3613eac3-b753-4e53-986b-742227a4eefb/mainraw · history · blame

#!/usr/bin/perl -w

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);

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 "Missing $1: $2 not installed\n";
    }
    else
    {
        print "$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;