File: configure

package info (click to toggle)
arch-test 0.22-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 260 kB
  • sloc: asm: 461; perl: 187; makefile: 155; sh: 149; ansic: 6
file content (62 lines) | stat: -rwxr-xr-x 1,526 bytes parent folder | download
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;