summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-devel/autoconf/files/ac-wrapper-4.pl')
-rw-r--r--sys-devel/autoconf/files/ac-wrapper-4.pl83
1 files changed, 83 insertions, 0 deletions
diff --git a/sys-devel/autoconf/files/ac-wrapper-4.pl b/sys-devel/autoconf/files/ac-wrapper-4.pl
new file mode 100644
index 000000000000..e03c0fdd666c
--- /dev/null
+++ b/sys-devel/autoconf/files/ac-wrapper-4.pl
@@ -0,0 +1,83 @@
+#!/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.13
+# - runs autoconf-2.5x if it exists and...
+# - envvar WANT_AUTOCONF is set to `2.5'
+# -or-
+# - configure.ac is present
+# -or-
+# - `configure.in' contains AC_PREREQ and the value's 3 first letters
+# are stringwise greater than '2.1'
+# -or-
+# - `configure' is already present and was generated by autoconf greater than
+# '2.1'
+# -or-
+# - `Makefile.in' was generated by automake-1.6 or superior, which
+# specifically needs autoconf-2.5x
+#
+
+#use MDK::Common;
+
+sub cat_ { local *F; open F, $_[0] or return; my @l = <F>; wantarray ? @l : join '', @l }
+sub ac_version {
+ return ((@versions = cat_(shift) =~ /^\s*\[?AC_PREREQ\(\[?([^\)]{3}[0-9]?)[^\)]*\]?\)/mg) ? ((sort @versions)[-1]) : '');
+}
+
+my $binary = "$0-2.13";
+my $binary_new = "$0-2.5x";
+
+# 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.1') {
+ if ((! -x $binary) # handle stuff like autom4te, where only 2.5x have the binary
+ || (-x $binary_new # user may have only 2.13
+ && (($ENV{WANT_AUTOCONF} eq '2.5')
+ || -r 'configure.ac'
+ || ac_version('configure.in') gt '2.13'
+ || (cat_('configure') =~ /^# Generated by Autoconf (\S+)/m ? $1 : '') gt '2.13'
+ || (cat_('Makefile.in') =~ /^# Makefile\.in generated by automake (\S+)/ ? $1 : '') ge '1.6'
+ || ac_version('aclocal.m4') gt '2.13'))) {
+ $ENV{WANT_AUTOCONF} = '2.5'; # to prevent further "cats" and to enhance consistency (possible cwd etc)
+ $binary = $binary_new;
+ } else {
+ $ENV{WANT_AUTOCONF} = '2.1'; # 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.5x";
+}
+
+$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";