X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FExtUtils%2FMksymlists.pm;h=0f0841e974ee805a004009028c8f701184199587;hb=76467b2a651c6c83b127a7ee5b8170cd17171b66;hp=2455072bd2e4a13193da7f6d4e9f748f761bc6f9;hpb=f6d6199cd6711f5e8a8e6c1a57445fa6f848c822;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/ExtUtils/Mksymlists.pm b/lib/ExtUtils/Mksymlists.pm index 2455072..0f0841e 100644 --- a/lib/ExtUtils/Mksymlists.pm +++ b/lib/ExtUtils/Mksymlists.pm @@ -7,10 +7,10 @@ use strict qw[ subs refs ]; use Carp; use Exporter; use Config; -our(@ISA, @EXPORT, $VERSION); -@ISA = 'Exporter'; -@EXPORT = '&Mksymlists'; -$VERSION = 1.18_00; + +our @ISA = qw(Exporter); +our @EXPORT = qw(&Mksymlists); +our $VERSION = '6.50'; sub Mksymlists { my(%spec) = @_; @@ -27,16 +27,17 @@ sub Mksymlists { unless ( ($spec{DL_FUNCS} and keys %{$spec{DL_FUNCS}}) or @{$spec{FUNCLIST}}); if (defined $spec{DL_FUNCS}) { - my($package); - foreach $package (keys %{$spec{DL_FUNCS}}) { - my($packprefix,$sym,$bootseen); + foreach my $package (keys %{$spec{DL_FUNCS}}) { + my($packprefix,$bootseen); ($packprefix = $package) =~ s/\W/_/g; - foreach $sym (@{$spec{DL_FUNCS}->{$package}}) { + foreach my $sym (@{$spec{DL_FUNCS}->{$package}}) { if ($sym =~ /^boot_/) { push(@{$spec{FUNCLIST}},$sym); $bootseen++; } - else { push(@{$spec{FUNCLIST}},"XS_${packprefix}_$sym"); } + else { + push(@{$spec{FUNCLIST}},"XS_${packprefix}_$sym"); + } } push(@{$spec{FUNCLIST}},"boot_$packprefix") unless $bootseen; } @@ -54,7 +55,9 @@ sub Mksymlists { elsif ($osname eq 'VMS') { _write_vms(\%spec) } elsif ($osname eq 'os2') { _write_os2(\%spec) } elsif ($osname eq 'MSWin32') { _write_win32(\%spec) } - else { croak("Don't know how to create linker option file for $osname\n"); } + else { + croak("Don't know how to create linker option file for $osname\n"); + } } @@ -63,11 +66,11 @@ sub _write_aix { rename "$data->{FILE}.exp", "$data->{FILE}.exp_old"; - open(EXP,">$data->{FILE}.exp") + open( my $exp, ">", "$data->{FILE}.exp") or croak("Can't create $data->{FILE}.exp: $!\n"); - print EXP join("\n",@{$data->{DL_VARS}}, "\n") if @{$data->{DL_VARS}}; - print EXP join("\n",@{$data->{FUNCLIST}}, "\n") if @{$data->{FUNCLIST}}; - close EXP; + print $exp join("\n",@{$data->{DL_VARS}}, "\n") if @{$data->{DL_VARS}}; + print $exp join("\n",@{$data->{FUNCLIST}}, "\n") if @{$data->{FUNCLIST}}; + close $exp; } @@ -87,30 +90,30 @@ sub _write_os2 { $Config::Config{version}, $threaded, $patchlevel, $data->{NAME}; chomp $comment; if ($data->{INSTALLDIRS} and $data->{INSTALLDIRS} eq 'perl') { - $distname = 'perl5-porters@perl.org'; - $comment = "Core $comment"; + $distname = 'perl5-porters@perl.org'; + $comment = "Core $comment"; } $comment = "$comment (Perl-config: $Config{config_args})"; $comment = substr($comment, 0, 200) . "...)" if length $comment > 203; rename "$data->{FILE}.def", "$data->{FILE}_def.old"; - open(DEF,">$data->{FILE}.def") + open(my $def, ">", "$data->{FILE}.def") or croak("Can't create $data->{FILE}.def: $!\n"); - print DEF "LIBRARY '$data->{DLBASE}' INITINSTANCE TERMINSTANCE\n"; - print DEF "DESCRIPTION '\@#$distname:$data->{VERSION}#\@ $comment'\n"; - print DEF "CODE LOADONCALL\n"; - print DEF "DATA LOADONCALL NONSHARED MULTIPLE\n"; - print DEF "EXPORTS\n "; - print DEF join("\n ",@{$data->{DL_VARS}}, "\n") if @{$data->{DL_VARS}}; - print DEF join("\n ",@{$data->{FUNCLIST}}, "\n") if @{$data->{FUNCLIST}}; + print $def "LIBRARY '$data->{DLBASE}' INITINSTANCE TERMINSTANCE\n"; + print $def "DESCRIPTION '\@#$distname:$data->{VERSION}#\@ $comment'\n"; + print $def "CODE LOADONCALL\n"; + print $def "DATA LOADONCALL NONSHARED MULTIPLE\n"; + print $def "EXPORTS\n "; + print $def join("\n ",@{$data->{DL_VARS}}, "\n") if @{$data->{DL_VARS}}; + print $def join("\n ",@{$data->{FUNCLIST}}, "\n") if @{$data->{FUNCLIST}}; if (%{$data->{IMPORTS}}) { - print DEF "IMPORTS\n"; - my ($name, $exp); - while (($name, $exp)= each %{$data->{IMPORTS}}) { - print DEF " $name=$exp\n"; - } + print $def "IMPORTS\n"; + my ($name, $exp); + while (($name, $exp)= each %{$data->{IMPORTS}}) { + print $def " $name=$exp\n"; + } } - close DEF; + close $def; } sub _write_win32 { @@ -123,13 +126,13 @@ sub _write_win32 { } rename "$data->{FILE}.def", "$data->{FILE}_def.old"; - open(DEF,">$data->{FILE}.def") + open( my $def, ">", "$data->{FILE}.def" ) or croak("Can't create $data->{FILE}.def: $!\n"); # put library name in quotes (it could be a keyword, like 'Alias') if ($Config::Config{'cc'} !~ /^gcc/i) { - print DEF "LIBRARY \"$data->{DLBASE}\"\n"; + print $def "LIBRARY \"$data->{DLBASE}\"\n"; } - print DEF "EXPORTS\n "; + print $def "EXPORTS\n "; my @syms; # Export public symbols both with and without underscores to # ensure compatibility between DLLs from different compilers @@ -137,24 +140,24 @@ sub _write_win32 { # so this is only to cover the case when the extension DLL may be # linked to directly from C. GSAR 97-07-10 if ($Config::Config{'cc'} =~ /^bcc/i) { - for (@{$data->{DL_VARS}}, @{$data->{FUNCLIST}}) { - push @syms, "_$_", "$_ = _$_"; - } + for (@{$data->{DL_VARS}}, @{$data->{FUNCLIST}}) { + push @syms, "_$_", "$_ = _$_"; + } } else { - for (@{$data->{DL_VARS}}, @{$data->{FUNCLIST}}) { - push @syms, "$_", "_$_ = $_"; - } + for (@{$data->{DL_VARS}}, @{$data->{FUNCLIST}}) { + push @syms, "$_", "_$_ = $_"; + } } - print DEF join("\n ",@syms, "\n") if @syms; + print $def join("\n ",@syms, "\n") if @syms; if (%{$data->{IMPORTS}}) { - print DEF "IMPORTS\n"; + print $def "IMPORTS\n"; my ($name, $exp); while (($name, $exp)= each %{$data->{IMPORTS}}) { - print DEF " $name=$exp\n"; + print $def " $name=$exp\n"; } } - close DEF; + close $def; } @@ -166,11 +169,10 @@ sub _write_vms { my($isvax) = $Config::Config{'archname'} =~ /VAX/i; my($set) = new ExtUtils::XSSymSet; - my($sym); rename "$data->{FILE}.opt", "$data->{FILE}.opt_old"; - open(OPT,">$data->{FILE}.opt") + open(my $opt,">", "$data->{FILE}.opt") or croak("Can't create $data->{FILE}.opt: $!\n"); # Options file declaring universal symbols @@ -180,21 +182,23 @@ sub _write_vms { # We don't do anything to preserve order, so we won't relax # the GSMATCH criteria for a dynamic extension - print OPT "case_sensitive=yes\n" + print $opt "case_sensitive=yes\n" if $Config::Config{d_vms_case_sensitive_symbols}; - foreach $sym (@{$data->{FUNCLIST}}) { + + foreach my $sym (@{$data->{FUNCLIST}}) { my $safe = $set->addsym($sym); - if ($isvax) { print OPT "UNIVERSAL=$safe\n" } - else { print OPT "SYMBOL_VECTOR=($safe=PROCEDURE)\n"; } + if ($isvax) { print $opt "UNIVERSAL=$safe\n" } + else { print $opt "SYMBOL_VECTOR=($safe=PROCEDURE)\n"; } } - foreach $sym (@{$data->{DL_VARS}}) { + + foreach my $sym (@{$data->{DL_VARS}}) { my $safe = $set->addsym($sym); - print OPT "PSECT_ATTR=${sym},PIC,OVR,RD,NOEXE,WRT,NOSHR\n"; - if ($isvax) { print OPT "UNIVERSAL=$safe\n" } - else { print OPT "SYMBOL_VECTOR=($safe=DATA)\n"; } + print $opt "PSECT_ATTR=${sym},PIC,OVR,RD,NOEXE,WRT,NOSHR\n"; + if ($isvax) { print $opt "UNIVERSAL=$safe\n" } + else { print $opt "SYMBOL_VECTOR=($safe=DATA)\n"; } } - close OPT; - + + close $opt; } 1;