aboutsummaryrefslogtreecommitdiffstats
path: root/krozat/admin/conf.change.pl
blob: 7793be406ad7dd1c8ff30b2cdac0a74506519dc8 (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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#!/usr/bin/perl -w

# this script patches a config.status file, to use our own perl script
# in the main loop
# we do it this way to circumvent hacking (and thereby including)
# autoconf function (which are GPL) into our LGPL acinclude.m4.in
# written by Michael Matz <matz@ifh.de>

# we have to change two places
# 1. the splitting of the substitutions into chunks of 90 (or even 48 in
#    later autoconf's
# 2. the big main loop which patches all Makefile.in's
use File::Basename;

my $ac_aux_dir = dirname($0);
my ($flag);
my $ac_version = 0;
my $vpath_seen = 0;
$flag = 0;

while (<>) {
# usage of $flag: 0 -- we have seen nothing yet
#   1 -- we are in (1)
#   2 -- we have ended (1)
#   3 -- we are in (2)
#   4 -- we ended (2)

    if ($flag == 4) {
        print;
    } elsif ($flag == 0) {
# 1. begins with (including): "ac_max_sed_\S+\s*=\s*[0-9]+..."
#    ends with (excluding) "CONFIG_FILE=..."
#    in later autoconf (2.14.1) there is no CONFIG_FILES= line,
#    but instead the (2) directly follow (1)
        if (/^\s*ac_max_sed_([a-z]+).*=\s*([0-9]+)/ ) {
	    $flag = 1;
	    if ($1 eq 'lines') {
                # lets hope its different with 2141, 
                # wasn't able to verify that
              if ($2 eq '48') {
                $ac_version = 250;
              }
              else {
	        $ac_version = 2141;
              }
	    } elsif ($1 eq 'cmds') {
	        $ac_version = 213;
	    }
	    # hmm, we don't know the autoconf version, but we try anyway
	} else {
	    print;
	}
    } elsif ($flag == 1) {
        if (/^\s*CONFIG_FILES=/ && ($ac_version != 250)) {
	     print;
	     $flag = 2;
	} elsif (/^\s*for\s+ac_file\s+in\s+.*CONFIG_FILES/ ) {
	     $flag = 3;
	}
    } elsif ($flag == 2) {
# 2. begins with: "for ac_file in.*CONFIG_FILES"  (the next 'for' after (1))
#    end with: "rm -f conftest.s\*"
# on autoconf 250, it ends with '# CONFIG_HEADER section'
	if (/^\s*for\s+ac_file\s+in\s+.*CONFIG_FILES/ ) {
	    $flag = 3;
	} else {
	    print;
	}
    } elsif ($flag == 3) {
        if (/^\s*rm\s+-f\s+conftest/ ) {
	    $flag = 4;
	    insert_main_loop();
	} elsif (/^\s*rm\s+-f\s+.*ac_cs_root/ ) {
	    $flag = 4;
	    insert_main_loop();
	    #die "hhhhhhh";
	    if ($ac_version != 2141) {
	        print STDERR "hmm, don't know autoconf version\n";
	    }
        } elsif (/^\#\s*CONFIG_HEADER section.*/) {
          $flag = 4;
          insert_main_loop();
          if($ac_version != 250) {
            print STDERR "hmm, something went wrong :-(\n";
          }
	} elsif (/VPATH/ ) {
	    $vpath_seen = 1;
	}
    }
}

die "wrong input (flag != 4)" unless $flag == 4;
print STDERR "hmm, don't know autoconf version\n" unless $ac_version;
die "autoconf 2.50 is currently not supported" if  $ac_version == 250;

sub insert_main_loop {
    print <<EOF;
#echo Doing the fast build of Makefiles -- autoconf $ac_version
if test "x\$ac_cs_root" = "x" ; then
    ac_cs_root=conftest
fi
EOF
    if ($vpath_seen) {
        print <<EOF;
# VPATH subst was seen in original config.status main loop
echo '/^[ 	]*VPATH[ 	]*=[^:]*\$/d' >> \$ac_cs_root.subs
EOF
    }
    print <<EOF;
rm -f \$ac_cs_root.sacfiles
for ac_file in .. \$CONFIG_FILES ; do
    if test "x\$ac_file" != x..; then
        echo \$ac_file >> \$ac_cs_root.sacfiles
    fi
done
if test -f \$ac_cs_root.sacfiles ; then
    perl $ac_aux_dir/config.pl "\$ac_cs_root" "\$ac_given_srcdir" "\$ac_given_INSTALL"
fi
rm -f \$ac_cs_root.s*

EOF
    return;
}