aboutsummaryrefslogtreecommitdiff
blob: bb397c72f11419776a3b91ce0624b7e07d95ba03 (plain)
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
63
64
65
66
67
68
69
70
71
72
73
#!/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 automake-1.4
# - runs automake-1.6x if it exists and...
#   - envvar WANT_AUTOMAKE_1_6 is set to `1'
#     -or-
#   - `Makefile.in' was generated by automake-1.6 or superior, which
#     specifically needs automake-1.6x
# - runs automake-1.5x if it exists and...
#   - envvar WANT_AUTOMAKE_1_5 is set to `1'
#     -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.5x or superior, which
#     specifically needs automake-1.5x
#
#use MDK::Common;

sub cat_ { local *F; open F, $_[0] or return; my @l = <F>; wantarray ? @l : join '', @l }

my $binary      = "$0-1.4";
my $binary_new  = "$0-1.5x";
my $binary_vnew = "$0-1.6x";

# question here is do we really want 1.5 or 1.6?  Out of a KDE outlook, it
# should rather be 1.5, and since most people would rather have migrated to
# 1.5, and then stay with it for a bit (those 1.4 die hards ..), only have
# the 'configure.ac' test for 1.5 ...
if (!$ENV{WANT_AUTOMAKE_1_4}) {
    if (-x $binary_vnew                  # user may not have _1_6
	&& ($ENV{WANT_AUTOMAKE_1_6}
	    || (cat_('Makefile.in') =~ /^# Makefile\.in generated by automake (\S+)/ ? $1 : '') ge '1.6')) {
	$binary 		= $binary_vnew;
    } elsif (-x $binary_new                  # user may have only 2.13
	&& ($ENV{WANT_AUTOMAKE_1_5}
	    || -r 'configure.ac'
	    || (cat_('configure.in') =~ /^\s*AC_PREREQ\(\[?([^\)]{3})[^\)]*\)/m ? $1 : '') gt '2.1' 
	    || (cat_('configure') =~ /^# Generated by Autoconf (\S+)/m ? $1 : '') gt '2.1'
	    || (cat_('Makefile.in') =~ /^# Makefile\.in generated by automake (\S+)/ ? $1 : '') ge '1.5'
	    || (cat_('aclocal.m4') =~ /^\s*AC_PREREQ\(\[?([^\)]{3})[^\)]*\)/m ? $1 : '') gt '2.1')) {
	$ENV{WANT_AUTOMAKE_1_5} = 1;    # to prevent further "cats" and to enhance consistency (possible cwd etc)
	$binary 		= $binary_new;
    } else {
	$ENV{WANT_AUTOMAKE_1_4} = 1;    # for further consistency
    }
}

$ENV{WANT_AMWRAPPER_DEBUG} and print STDERR "am-wrapper: will execute <$binary>\n";

exec $binary, @ARGV;

die "am-wrapper: ouch, couldn't call binary ($binary).\n";