Sophie

Sophie

distrib > Mandriva > 2007.1 > x86_64 > by-pkgid > 4ee2dd6e74dd012a3b8e15b7da81f596 > files > 3

autoconf2.5-2.61-1mdv2007.1.src.rpm

#!/usr/bin/perl
#
#
# Guillaume Cottenceau (gc@mandrakesoft.com)
# Abel Cheung (deaddog@deaddog.org)
#
# Copyright 2001-2002, 2004 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.5x
# - runs autoconf-2.13 only if:
#   - envvar WANT_AUTOCONF_2_1 is set to `1'
#     -or-
#   - `configure' is already present and was generated by autoconf 2.13
#
#######################################################################
#
# ChangeLog:
# 
# * Fri May 14 2004
# - Use autoconf 2.5x by default, unless `configure' is generated by
#   autoconf 2.13, or WANT_AUTOCONF_2_1 is set.
# - WANT_AUTOCONF_2_5 has no effect now
#
# * Thu May 27 2004
# - Almost rewrite
# - Introduce FORCE_AUTOCONF_2_5 (avoid misuse with WANT_*), which can be used
#   when you want to play with fire :-)
# - More verbose and user oriented messages (gc et. al.)
#
# * Sat Jul 03 2004
# - require autoconf2.1 and remove special error message
# - allow use of tools without configure.in or configure.ac (2.5 only)
#   required for autodetection by apps

use MDK::Common qw(cat_ basename);
use strict;

sub errmsg {
	my $dummy = 0;
	my @msg = @_;
	foreach (@msg) {
		print STDERR (($dummy++ == 0)? "ac-wrapper: " : "            ") . $_ . "\n";
	}
	exit 1;
}

errmsg ("Don't call this script directly.") if (basename("$0") eq "ac-wrapper.pl");

#
# go away naughty guys/gals
#
if (($ENV{WANT_AUTOCONF_2_1}) && ($ENV{FORCE_AUTOCONF_2_5})) {
	errmsg ("You can only set either WANT_AUTOCONF_2_1 or FORCE_AUTOCONF_2_5,",
		"but not both.");
}

if (($ENV{WANT_AUTOCONF_2_1}) && (basename("$0") eq "autom4te")) {
	errmsg ("Autoconf 2.13 doesn't contain autom4te.",
		"Either unset WANT_AUTOCONF_2_1 or don't execute anything",
		"that would use autom4te.");
}

my $binary_new = "$0-2.5x";
my $binary_old = "$0-2.13";
my $binary = $binary_new;
my $confversion = 'Undetected';

if ((-f "configure.ac") || (-f "configure.in")) {
#
# autodetect routine
#
	if ($ENV{WANT_AUTOCONF_2_1}) {
		if ((-f "configure.in") && (! -f "configure.ac")) {
			$binary = $binary_old;
		} else {
			errmsg ("Since configure.ac is present, aclocal always use",
				"autoconf 2.5x, which conflicts with your choice and",
				"causes error. You have two options:",
				"1. Try execute command again after removing configure.ac",
				"2. Don't set WANT_AUTOCONF_2_1 variable");
		}
	} elsif (!($ENV{FORCE_AUTOCONF_2_5})) {
		# U > [0-9] in lexicon comparison
		$confversion = (cat_('configure') =~ /^# Generated (by (?:GNU )?Autoconf|automatically using autoconf version) (\S+)/m ? $2 : 'Unknown');
	
		if (("$confversion" lt '2.5') && (! -f "configure.ac")) {
			$binary = $binary_old;
		}
	}
}

if ($ENV{WANT_ACWRAPPER_DEBUG}) {
	print STDERR "ac-wrapper: DEBUG: Detected version is '$confversion'\n";
	print STDERR "ac-wrapper: DEBUG: WANT_AUTOCONF_2_1 is set\n" if ($ENV{WANT_AUTOCONF_2_1});
	print STDERR "ac-wrapper: DEBUG: FORCE_AUTOCONF_2_5 is set\n" if ($ENV{FORCE_AUTOCONF_2_5});
	print STDERR "ac-wrapper: DEBUG: will execute <$binary>\n";
}

#
# for further consistency
#
$ENV{WANT_AUTOCONF_2_1} = 1 if ("$binary" eq "$binary_old");
$ENV{FORCE_AUTOCONF_2_5} = 1 if ("$binary" eq "$binary_new");

if (! -x "$binary") {
	# this shouldn't happen
	errmsg ("$binary is missing or not executable.",
		"Something is very wrong.");
}

exec $binary, @ARGV;