#!/usr/bin/perl -w use strict; no strict 'refs'; my %vars = (); foreach (@ARGV) { my ($n, $v) = split('=', $_); $vars{$n} = $v; } my @checks = qw( PERL CC AUTOMAKE AUTOCONF LIBTOOL ); foreach my $check (@checks) { my @check = &{"check_$check"}; $check = sprintf("% 10s %s %s", $check, shift(@check), shift(@check)); $check .= sprintf(" (%s)", join('; ', @check)) if @check; $check .= "\n"; print $check; } sub check_PERL { my @meta; my $pl = $vars{'PERL_BIN'} || ''; $pl = '' if $pl eq 'this'; $pl ||= $vars{'PERL'} || "perl"; $pl = (split(/\s+/, $pl))[0]; my @plver = split(/\s+/, `$pl --version 2>&1` || ''); my $plver; if($plver[4] ne 'version') { $plver = $plver[4]; $plver =~ s/^v//; } else { $plver = sprintf("%i.%i.%i", split(/[._]/, $plver[5]), 0); } push(@meta, 'override') if $vars{'PERL'} and $pl ne $vars{'PERL'}; return($pl, $plver, @meta); } sub check_CC { my @meta; my $cc = $vars{'CC'} || "cc"; my $ccver = (`$cc --version 2>&1`)[0] || 0; chomp($ccver); my $gnucc = grep("gnu", `$cc --help 2>&1` || ''); push(@meta, 'gnu') if $gnucc; return($cc, $ccver, @meta); } sub check_LIBC { my @meta; my $lc = grep(/libc/, (`ldd /bin/sh 2>&1`)); $lc = (split(/\s+/, $lc))[3]; return($lc, 0, @meta); } sub check_LDD { my @meta; } sub check_AUTOMAKE { my @meta; my $am = $vars{'AUTOMAKE'} || "automake"; my @amver = split(/\s+/, `$am --version 2>&1` || ''); my $gnuam = $amver[1] =~ /GNU/i; my $amver = $gnuam ? $amver[3] : 0; push(@meta, 'gnu') if $gnuam; return($am, $amver, @meta); } sub check_AUTOCONF { my @meta; my $ac = $vars{'AUTOCONF'} || "autoconf"; my @acver = split(/\s+/, `$ac --version 2>&1` || ''); my $gnuac = $acver[1] =~ /GNU/i; my $acver = $gnuac ? $acver[3] : 0; push(@meta, 'gnu') if $gnuac; return($ac, $acver, @meta); } sub check_LIBTOOL { my @meta; my $lt = $vars{'LIBTOOL'} || "libtool"; my @ltver = split(/\s+/, `$lt --version 2>&1` || ''); my $gnult = $ltver[1] =~ /GNU/i; my $ltver = $gnult ? $ltver[3] : 0; push(@meta, 'gnu') if $gnult; return($lt, $ltver, @meta); }