1g/'\(-arch [^ ]\+ \)\+ */s//'/g
2g/=\(-arch [^ ]\+ \)\+ *'/s//='/g
3g/=\(-arch [^ ]\+ \)\+-/s//=-/g
4g/=\(-arch [^ ]\+ \)\+ \+/s//= /g
5/^$_ =/s//my $_str1 =/
6/^extras=/a
7extrasarch='@EXTRASARCH@'
8extraslib='@EXTRASLIB@'
9.
10/^installarchlib=/s,'.*','@UPDATESARCH@',
11/^installbin/a
12installextrasarch='@EXTRASARCH@'
13installextraslib='@EXTRASLIB@'
14.
15/^installprivlib=/s,'.*','@UPDATESLIB@',
16/^installusrbinperl/i
17installupdatesarch='@UPDATESARCH@'
18installupdateslib='@UPDATESLIB@'
19.
20/^uniq=/a
21updatesarch='@UPDATESARCH@'
22updateslib='@UPDATESLIB@'
23.
24?^local \*_ =?m/^our $byteorder =/
25i
26my $_archflags = exists($ENV{ARCHFLAGS}) ? $ENV{ARCHFLAGS} : '@ARCHFLAGS@';
27my %_archkeys = (
28    archflags => 1,
29    ccflags => 1,
30    ccflags_nolargefiles => 1,
31    lddlflags => 1,
32    ldflags => 1,
33    ldflags_nolargefiles => 1,
34);
35my $_64bit = ((~0>>1) > 2147483647);
36my $_64bitdefine = ($_64bit ? 'define' : 'undef');
37my $_64bitsize = ($_64bit ? '8' : '4');
38my $_64bitundef = ($_64bit ? 'undef' : 'define');
39
40my %_change = (
41    byteorder => $Config::byteorder,
42    d_nv_preserves_uv => $_64bitundef,
43    gidformat => ($_64bit ? '"u"' : '"lu"'),
44    i32type => ($_64bit ? 'int' : 'long'),
45    i64type => ($_64bit ? 'long' : 'long long'),
46    ivsize => $_64bitsize,
47    longsize => $_64bitsize,
48    need_va_copy => $_64bitdefine,
49    nv_preserves_uv_bits => ($_64bit ? '53' : '32'),
50    ptrsize => $_64bitsize,
51    quadkind => ($_64bit ? '2' : '3'),
52    quadtype => ($_64bit ? 'long' : 'long long'),
53    sizesize => $_64bitsize,
54    u32type => ($_64bit ? 'unsigned int' : 'unsigned long'),
55    u64type => ($_64bit ? 'unsigned long' : 'unsigned long long'),
56    uidformat => ($_64bit ? '"u"' : '"lu"'),
57    uquadtype => ($_64bit ? 'unsigned long' : 'unsigned long long'),
58    use64bitall => $_64bitdefine,
59    use64bitint => $_64bitdefine,
60    uvsize => $_64bitsize,
61);
62if(exists($ENV{RC_XBS}) && $ENV{RC_XBS} eq 'YES') {
63    $_change{installarchlib} = '@ARCHLIB@';
64    $_change{installprivlib} = '@PRIVLIB@';
65}
66
67sub _fix {
68    my $in = shift;
69    my($k, $v);
70    local $_;
71    ($k, $_) = split('=', $in, 2);
72    return $in unless defined($k);
73    $_archkeys{$k} && do { s/(['"])/$1$_archflags /; return join('=', $k, $_); };
74    defined($v = $_change{$k}) && do { s/(['"]).*?\1/$1$v$1/; return join('=', $k, $_); };
75    $in;
76}
77
78.
79/^s\/(byteorder=/c
80$_ = $_part1 . "archflags='$_archflags'\n";
81.
82/^our $Config_SH_expanded =/a
83.
84.t/^EOVIRTUAL/
85s/<<.*/$_part2;/
86?^our $Config_SH_expanded =?a
87.
88.,/^EOVIRTUAL/m?^local \*_?-1
89?^our $Config_SH_expanded = .*<<?s//my $_part2 = join("\\n", map(_fix($_), split("\\n", <</
90s/;$/, -1)));/
91i
92my $_part1 = join("\n", map(_fix($_), split("\n", $_str1, -1)));
93.
94w!
95