#!/usr/bin/perl # # # Guillaume Cottenceau (gc@mandrakesoft.com) # # Copyright 2001 MandrakeSoft # # This software may be freely redistributed under the terms of the GNU # public license. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # # # Executes the correct autoconf version. # # - defaults to autoconf-2.59 # - runs autoconf-2.13 if it exists and... # - envvar WANT_AUTOCONF is set to `2.1' # -or- # - `configure.in' contains AC_PREREQ and the value's 2 first letters # are stringwise equal to '2.1' # -or- # - `configure' is already present and was generated by autoconf equal to # '2.13' # #use MDK::Common; sub cat_ { local *F; open F, $_[0] or return; my @l = ; wantarray ? @l : join '', @l } sub ac_version { return ((@versions = cat_(shift) =~ /^\s*\[?AC_PREREQ\(\[?([^\)]{2}[0-9]?)[^\)]*\]?\)/mg) ? ((sort @versions)[-1]) : ''); } my $binary_old = "$0-2.13"; my $binary = "$0-2.59"; # Autoconf is really getting out of hand, so rather start supporting # WANT_AUTOCONF = "2.5" the like. Unfortunately it override the old # variables, so if not set, just convert the old variables .... if ($ENV{WANT_AUTOCONF} eq "") { if ($ENV{WANT_AUTOCONF_2_1}) { $ENV{WANT_AUTOCONF} = '2.1'; } elsif ($ENV{WANT_AUTOCONF_2_5}) { $ENV{WANT_AUTOCONF} = '2.5'; } } if ($ENV{WANT_AUTOCONF} ne '2.5') { if ((-x $binary_old && (($ENV{WANT_AUTOCONF} eq '2.1') || ac_version('configure.in') eq '2.1' || (cat_('configure') =~ /^# Generated automatically using autoconf version (\S+)/m ? $1 : '') eq '2.13' || ac_version('aclocal.m4') eq '2.1'))) { $ENV{WANT_AUTOCONF} = '2.1'; # to prevent further "cats" and to enhance consistency (possible cwd etc) $binary = $binary_old; } else { $ENV{WANT_AUTOCONF} = '2.5'; # for further consistency } } # Set AUTOM4TE to the proper version (bug #40983). # Do not set it for 2.13 though, as it does not ship autom4te. if(($ENV{AUTOM4TE} eq "") && ($ENV{WANT_AUTOCONF} = '2.5') && ($0 ne 'autom4te')) { $ENV{AUTOM4TE} = "autom4te-2.59"; } $ENV{WANT_ACWRAPPER_DEBUG} and print STDERR "ac-wrapper: will execute <$binary>\n"; exec $binary, @ARGV; die "ac-wrapper: ouch, couldn't call binary ($binary).\n";