X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=configpm;h=86abd6d48701af82c50aca85c853995a2f83f727;hb=3fadfdf11dfb17421538d2f4280b4d99a5c6cb5a;hp=193a8a7032bc41aa3f88a488b5547d6d18edd0e6;hpb=46f3656755f4dcd943e54fd6c5ad2f077d5ce681;p=p5sagit%2Fp5-mst-13.2.git diff --git a/configpm b/configpm index 193a8a7..86abd6d 100755 --- a/configpm +++ b/configpm @@ -60,7 +60,7 @@ $in_v = 0; while (<>) { next if m:^#!/bin/sh:; - # Catch CONFIGDOTSH=true and PERL_VERSION=n line from Configure. + # Catch PERL_CONFIG_SH=true and PERL_VERSION=n line from Configure. s/^(\w+)=(true|\d+)\s*$/$1='$2'\n/; my ($k,$v) = ($1,$2); # grandfather PATCHLEVEL and SUBVERSION and CONFIG @@ -71,7 +71,7 @@ while (<>) { elsif ($k eq 'PERL_SUBVERSION') { push @v_others, "SUBVERSION='$v'\n"; } - elsif ($k eq 'CONFIGDOTSH') { + elsif ($k eq 'PERL_CONFIG_SH') { push @v_others, "CONFIG='$v'\n"; } } @@ -130,16 +130,46 @@ sub FETCH { my($value, $start, $marker, $quote_type); $quote_type = "'"; + # Virtual entries. if ($_[1] eq 'byteorder') { + # byteorder does exist on its own but we overlay a virtual + # dynamically recomputed value. my $t = $Config{ivtype}; my $s = $Config{ivsize}; my $f = $t eq 'long' ? 'L!' : $s == 8 ? 'Q': 'I'; - my $i = unpack($f, pack('C*', map { ord() } 1..$s)); if ($s == 4 || $s == 8) { + my $i = 0; + foreach my $c (reverse(2..$s)) { $i |= ord($c); $i <<= 8 } + $i |= ord(1); $value = join('', unpack('a'x$s, pack($f, $i))); } else { $value = '?'x$s; } + } elsif ($_[1] =~ /^((?:cc|ld)flags|libs(?:wanted)?)_nolargefiles/) { + # These are purely virtual, they do not exist, but need to + # be computed on demand for largefile-incapable extensions. + my $key = "${1}_uselargefiles"; + $value = $Config{$1}; + my $withlargefiles = $Config{$key}; + if ($key =~ /^(?:cc|ld)flags_/) { + $value =~ s/\Q$withlargefiles\E\b//; + } elsif ($key =~ /^libs/) { + my @lflibswanted = split(' ', $Config{libswanted_uselargefiles}); + if (@lflibswanted) { + my %lflibswanted; + @lflibswanted{@lflibswanted} = (); + if ($key =~ /^libs_/) { + my @libs = grep { /^-l(.+)/ && + not exists $lflibswanted{$1} } + split(' ', $Config{libs}); + $Config{libs} = join(' ', @libs); + } elsif ($key =~ /^libswanted_/) { + my @libswanted = grep { not exists $lflibswanted{$_} } + split(' ', $Config{libswanted}); + $Config{libswanted} = join(' ', @libswanted); + } + } + } } else { $marker = "$_[1]="; # return undef unless (($value) = $config_sh =~ m/^$_[1]='(.*)'\s*$/m); @@ -204,7 +234,8 @@ sub EXISTS { index($config_sh, "\n$_[1]='") != -1 or substr($config_sh, 0, length($_[1])+2) eq "$_[1]='" or index($config_sh, "\n$_[1]=\"") != -1 or - substr($config_sh, 0, length($_[1])+2) eq "$_[1]=\""; + substr($config_sh, 0, length($_[1])+2) eq "$_[1]=\"" or + $_[1] =~ /^(?:(?:cc|ld)flags|libs(?:wanted)?)_nolargefiles$/; } sub STORE { die "\%Config::Config is read-only\n" } @@ -243,6 +274,7 @@ if ($OS2::is_aout) { $preconfig{$_} = $v eq 'undef' ? undef : $v; } } +$preconfig{d_fork} = undef unless $OS2::can_fork; # Some funny cases can't sub TIEHASH { bless {%preconfig} } ENDOFSET } else { @@ -387,7 +419,7 @@ EOF print CONFIG <