X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FExtUtils%2FMkbootstrap.pm;h=71cc6b7707d01a2a8d97111fe31b1c74043b46ac;hb=3e15aad56068d2dfe80836fe1f37f2b0000476ee;hp=a074bb1dd2d99bf1ef0ba133dd0958125efc7ab2;hpb=005c1a0e007f6f2f3efe461d6a5930a88ccb88fb;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/ExtUtils/Mkbootstrap.pm b/lib/ExtUtils/Mkbootstrap.pm index a074bb1..71cc6b7 100644 --- a/lib/ExtUtils/Mkbootstrap.pm +++ b/lib/ExtUtils/Mkbootstrap.pm @@ -1,43 +1,22 @@ package ExtUtils::Mkbootstrap; -use Config; -use Exporter; -@ISA=('Exporter'); -@EXPORT='&Mkbootstrap'; -$Version=2.0; # just to start somewhere -sub Mkbootstrap { +# There's just too much Dynaloader incest here to turn on strict vars. +use strict 'refs'; -=head1 USEFUL SUBROUTINES +use vars qw($VERSION @ISA @EXPORT); +$VERSION = '6.38'; -=head2 Mkbootstrap() +require Exporter; +@ISA = ('Exporter'); +@EXPORT = ('&Mkbootstrap'); -Make a bootstrap file for use by this system's DynaLoader. It -typically gets called from an extension Makefile. +use Config; -There is no C<*.bs> file supplied with the extension. Instead a -C<*_BS> file which has code for the special cases, like posix for -berkeley db on the NeXT. +use vars qw($Verbose); -This file will get parsed, and produce a maybe empty -C<@DynaLoader::dl_resolve_using> array for the current architecture. -That will be extended by $BSLOADLIBS, which was computed by Andy's -extliblist script. If this array still is empty, we do nothing, else -we write a .bs file with an C<@DynaLoader::dl_resolve_using> array, but -without any Cs, because there is no longer a need to deal with -special cases. - -The C<*_BS> file can put some code into the generated C<*.bs> file by placing -it in C<$bscode>. This is a handy 'escape' mechanism that may prove -useful in complex situations. - -If @DynaLoader::dl_resolve_using contains C<-L*> or C<-l*> entries then -Mkbootstrap will automatically add a dl_findfile() call to the -generated C<*.bs> file. - -=cut +sub Mkbootstrap { my($baseext, @bsloadlibs)=@_; - @bsloadlibs = grep($_, @bsloadlibs); # strip empty libs print STDOUT " bsloadlibs=@bsloadlibs\n" if $Verbose; @@ -74,10 +53,10 @@ generated C<*.bs> file. or die "Unable to open $baseext.bs: $!"; print STDOUT "Writing $baseext.bs\n"; print STDOUT " containing: @all" if $Verbose; - print BS "# $baseext DynaLoader bootstrap file for $Config{'osname'} architecture.\n"; + print BS "# $baseext DynaLoader bootstrap file for $^O architecture.\n"; print BS "# Do not edit this file, changes will be lost.\n"; print BS "# This file was automatically generated by the\n"; - print BS "# Mkbootstrap routine in ExtUtils::Mkbootstrap (v$Version).\n"; + print BS "# Mkbootstrap routine in ExtUtils::Mkbootstrap (v$VERSION).\n"; print BS "\@DynaLoader::dl_resolve_using = "; # If @all contains names in the form -lxxx or -Lxxx then it's asking for # runtime library location so we automatically add a call to dl_findfile() @@ -93,3 +72,39 @@ generated C<*.bs> file. } } +1; + +__END__ + +=head1 NAME + +ExtUtils::Mkbootstrap - make a bootstrap file for use by DynaLoader + +=head1 SYNOPSIS + +C + +=head1 DESCRIPTION + +Mkbootstrap typically gets called from an extension Makefile. + +There is no C<*.bs> file supplied with the extension. Instead, there may +be a C<*_BS> file which has code for the special cases, like posix for +berkeley db on the NeXT. + +This file will get parsed, and produce a maybe empty +C<@DynaLoader::dl_resolve_using> array for the current architecture. +That will be extended by $BSLOADLIBS, which was computed by +ExtUtils::Liblist::ext(). If this array still is empty, we do nothing, +else we write a .bs file with an C<@DynaLoader::dl_resolve_using> +array. + +The C<*_BS> file can put some code into the generated C<*.bs> file by +placing it in C<$bscode>. This is a handy 'escape' mechanism that may +prove useful in complex situations. + +If @DynaLoader::dl_resolve_using contains C<-L*> or C<-l*> entries then +Mkbootstrap will automatically add a dl_findfile() call to the +generated C<*.bs> file. + +=cut