use vars qw( @ISA @EXPORT $VERSION );
@ISA = 'Exporter';
@EXPORT = '&Mksymlists';
-$VERSION = '1.03';
+$VERSION = substr q$Revision: 1.13 $, 10;
sub Mksymlists {
my(%spec) = @_;
if ($osname eq 'aix') { _write_aix(\%spec); }
elsif ($osname eq 'VMS') { _write_vms(\%spec) }
- elsif ($osname =~ m|^os/?2$|i) { _write_os2(\%spec) }
+ elsif ($osname eq 'os2') { _write_os2(\%spec) }
else { croak("Don't know how to create linker option file for $osname\n"); }
}
my($data) = @_;
require Config; # a reminder for once we do $^O
+ require ExtUtils::XSSymSet;
my($isvax) = $Config::Config{'arch'} =~ /VAX/i;
+ my($set) = new ExtUtils::XSSymSet;
my($sym);
rename "$data->{FILE}.opt", "$data->{FILE}.opt_old";
# the GSMATCH criteria for a dynamic extension
foreach $sym (@{$data->{FUNCLIST}}) {
- if ($isvax) { print OPT "UNIVERSAL=$sym\n" }
- else { print OPT "SYMBOL_VECTOR=($sym=PROCEDURE)\n"; }
+ my $safe = $set->addsym($sym);
+ if ($isvax) { print OPT "UNIVERSAL=$safe\n" }
+ else { print OPT "SYMBOL_VECTOR=($safe=PROCEDURE)\n"; }
}
foreach $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=$sym\n" }
- else { print OPT "SYMBOL_VECTOR=($sym=DATA)\n"; }
+ if ($isvax) { print OPT "UNIVERSAL=$safe\n" }
+ else { print OPT "SYMBOL_VECTOR=($safe=DATA)\n"; }
}
close OPT;
=head1 DESCRIPTION
C<ExtUtils::Mksymlists> produces files used by the linker under some OSs
-during the creation of shared libraries for synamic extensions. It is
+during the creation of shared libraries for dynamic extensions. It is
normally called from a MakeMaker-generated Makefile when the extension
is built. The linker option file is generated by calling the function
C<Mksymlists>, which is exported by default from C<ExtUtils::Mksymlists>.
It takes one argument, a list of key-value pairs, in which the following
keys are recognized:
+=over
+
=item NAME
This gives the name of the extension (I<e.g.> Tk::Canvas) for which
name of the extension). If it is not specified, it is derived
from the NAME attribute. It is presently used only by OS2.
+=back
+
When calling C<Mksymlists>, one should always specify the NAME
attribute. In most cases, this is all that's necessary. In
the case of unusual extensions, however, the other attributes