summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAndy Dougherty <doughera@lafcol.lafayette.edu>1995-04-06 20:20:47 +0000
committerAndy Dougherty <doughera@lafcol.lafayette.edu>1995-04-06 20:20:47 +0000
commit232e078e289220085e912e3d740ae77767611478 (patch)
tree6dc7bc545fe55ce0be8fd1420256058ca7f26c57 /lib
parent56febc5ef28a2ff414c466231d08046390ce0f59 (diff)
downloadperl-232e078e289220085e912e3d740ae77767611478.tar.gz
perl5.001 patch.1c
Configure Updated to dist PL53. Fix overlapping memcpy test. Add check for ld. Use $cc instead, if on an ELF system. With -d, don't reuse config.sh unless $myuname matches. Warn more explicitly about changing compilers before reloading old config.sh. Detect Linux ELF format in nm scan. Better detection of d_castneg. (ISC 4.1 was passing the test, but couldn't cast in an argument list.) Suggest -fpic for dynamic loading if you're using GNU CC under any name. No longer test for byacc, fmod, or drem, since they are not used. Makefile.SH Use $ld, not ld (only matters for SVR4) Silence some byacc-related harmless error messages. README Suggest using -Dcc=gcc (or whatever). Warn about reusing old config.sh. (The warning was already there in 5.001; I've just expanded it a little.) Warn against using GNU as and GNU ld on SunOS & Solaris. config.H config_h.SH Updated to match Configure. doio.c Add socket includes. ext/Fcntl/Fcntl.xs Fix typo: s/SETFL/F_SETFL/; handy.h Check _G_HAVE_BOOL, not just if it's defined. hints/dynix.sh hints/hpux_9.sh hints/linux.sh hints/netbsd.sh hints/titanos.sh Updated. ELF on linux should probably work. installperl Install pod2html, pod2latex, and pod2man. lib/ExtUtils/MakeMaker.pm Updated to 4.091. (4.09 + a small writedoc() patch.) myconfig Now includes 'ld' command. perl.c Revised an #elif clause since Pyramid's cpp doesn't understand #elif. perl.h Fix U_L, I_V, and I_32 cast macros to ensure that the cast_ulong(), cast_iv(), and cast_i32() functions (if used) are passed a double. In particular, the FIXSTATUS macros were handing int's to U_L(). Remove unnecessary HAS_FMOD testing (See util.c). proto.h Remove my_fmod() prototype. (See util.c) sv.h Fix GV/CV typo. util.c Simplified cast_i32() and cast_iv() to mimic what *actually* happens on a SPARC running SunOS 4.1.3. (Previously, they did some complicated fmod() calculation. I've since discovered that's not what happens on the SPARC.) With this change, fmod() is no longer necessary. Hence my_fmod is removed. This also means the HAS_FMOD and HAS_DREM tests are no longer needed in Configure, so they are gone too. vms/config.vms Remove unnecessary HAS_FMOD and HAS_DREM defines. x2p/Makefile.SH Silence byacc-related things.
Diffstat (limited to 'lib')
-rw-r--r--lib/ExtUtils/MakeMaker.pm246
1 files changed, 183 insertions, 63 deletions
diff --git a/lib/ExtUtils/MakeMaker.pm b/lib/ExtUtils/MakeMaker.pm
index e09b438e75..73ad1ddebf 100644
--- a/lib/ExtUtils/MakeMaker.pm
+++ b/lib/ExtUtils/MakeMaker.pm
@@ -1,6 +1,6 @@
package ExtUtils::MakeMaker;
-$Version = 4.086; # Last edited 9 Mar 1995 by Andy Dougherty
+$Version = 4.091; # Last edited 31 Mar 1995 by Andreas Koenig
use Config;
check_hints();
@@ -9,10 +9,10 @@ use Cwd;
require Exporter;
@ISA = qw(Exporter);
-@EXPORT = qw(&WriteMakefile &mkbootstrap &mksymlists $Verbose);
+@EXPORT = qw(&WriteMakefile $Verbose);
@EXPORT_OK = qw($Version %att %skip %Recognized_Att_Keys
@MM_Sections %MM_Sections
- &help &lsdir &neatvalue);
+ &help &lsdir &neatvalue &mkbootstrap &mksymlists);
$Is_VMS = $Config{'osname'} eq 'VMS';
require ExtUtils::MM_VMS if $Is_VMS;
@@ -23,7 +23,6 @@ $Version = $Version;# avoid typo warning
$Verbose = 0;
$^W=1;
-
=head1 NAME
ExtUtils::MakeMaker - create an extension Makefile
@@ -73,7 +72,7 @@ done by specifying
perl Makefile.PL INST_LIB=~/myperllib INST_EXE=~/bin
Note, that in this example MakeMaker does the tilde expansion for you
-and INST_ARCHLIB is set to either C<INST_LIB/$Config{"osname"}> if
+and INST_ARCHLIB is set to either C<INST_LIB/$Config{"archname"}> if
that directory exists and otherwise to INST_LIB.
Other interesting targets in the generated Makefile are
@@ -392,6 +391,12 @@ $Attrib_Help = <<'END';
H: Ref to array of *.h file names. Similar to C: above.
+ PL_FILES: Ref to hash of files to be processed as perl programs. MakeMaker
+ will default to any found C<*.PL> file (except C<Makefile.PL>) being
+ keys and the basename of the file being the value. E.g.
+ C<{ 'foobar.PL' => 'foobar' }>. The C<*.PL> files are expected to
+ produce output to the target files themselves.
+
EXE_FILES: Ref to array of executable files. The files will be copied to
the INST_EXE directory. The installed files will be deleted
by a make realclean.
@@ -455,6 +460,7 @@ sub help {print $Attrib_Help;}
'tool_xsubpp' => {},
'tools_other' => {},
'post_constants' => {},
+ 'pasthru' => {},
'c_o' => {},
'xs_c' => {},
'xs_o' => {},
@@ -467,6 +473,7 @@ sub help {print $Attrib_Help;}
'static' => {},
'static_lib' => {},
'installpm' => {},
+ 'processPL' => {},
'installbin' => {},
'subdirs' => {},
'clean' => {},
@@ -527,6 +534,7 @@ sub WriteMakefile {
parse_args(\%att, @ARGV);
my(%initial_att) = %att; # record initial attributes
+ my($key);
MY->init_main();
@@ -553,6 +561,7 @@ sub WriteMakefile {
# build hash for SKIP to make testing easy
%skip = map( ($_,1), @{$att{'SKIP'} || []});
+ my $section;
foreach $section ( @MM_Sections ){
print "Processing Makefile '$section' section" if ($Verbose >= 2);
my($skipit) = skipcheck($section);
@@ -658,7 +667,6 @@ sub neatvalue{
return "{ ".join(', ',@m)." }";
}
-
# ------ Define the MakeMaker default methods in package MM_Unix ------
package MM_Unix;
@@ -687,8 +695,8 @@ sub init_main {
# --- Initialize PERL_LIB, INST_LIB, PERL_SRC
# *Real* information: where did we get these two from? ...
- $inc_config_dir = dirname($INC{'Config.pm'});
- $inc_carp_dir = dirname($INC{'Carp.pm'});
+ my $inc_config_dir = dirname($INC{'Config.pm'});
+ my $inc_carp_dir = dirname($INC{'Carp.pm'});
# Typically PERL_* and INST_* will be identical but that need
# not be the case (e.g., installing into project libraries etc).
@@ -704,7 +712,10 @@ sub init_main {
unless ($att{PERL_SRC}){
foreach(qw(../.. ../../.. ../../../..)){
- ($att{PERL_SRC}=$_, last) if -f "$_/config.sh";
+ if ( -f "$_/config.sh" && -f "$_/perl.h" && -f "$_/lib/Exporter.pm") {
+ $att{PERL_SRC}=$_ ;
+ last;
+ }
}
}
unless ($att{PERL_SRC}){
@@ -719,6 +730,19 @@ sub init_main {
$att{PERL_LIB} = "$att{PERL_SRC}/lib" unless $att{PERL_LIB};
$att{PERL_ARCHLIB} = $att{PERL_LIB};
$att{PERL_INC} = $att{PERL_SRC};
+ # catch an situation that has occurred a few times in the past:
+ warn <<EOM unless -s "$att{PERL_SRC}/cflags";
+You cannot build extensions below the perl source tree after executing
+a 'make clean' in the perl source tree.
+
+To rebuild extensions distributed with the perl source you should
+simply Configure (to include those extensions) and then build perl as
+normal. After installing perl the source tree can be deleted. It is not
+needed for building extensions.
+
+It is recommended that you unpack and build additional extensions away
+from the perl source tree.
+EOM
}
# INST_LIB typically pre-set if building an extension after
@@ -728,13 +752,13 @@ sub init_main {
if (defined $att{PERL_SRC}) {
$att{INST_LIB} = $att{PERL_LIB};
} else {
- $att{INST_LIB} = "$pwd/blib";
+ $att{INST_LIB} = "./blib";
}
}
# Try to work out what INST_ARCHLIB should be if not set:
unless ($att{INST_ARCHLIB}){
my(%archmap) = (
- "$pwd/blib" => "$pwd/blib", # our private build lib
+ "./blib" => "./blib", # our private build lib
$att{PERL_LIB} => $att{PERL_ARCHLIB},
$Config{'privlib'} => $Config{'archlib'},
$Config{'installprivlib'} => $Config{'installarchlib'},
@@ -810,7 +834,7 @@ sub init_main {
sub init_dirscan { # --- File and Directory Lists (.xs .pm etc)
- my($name, %dir, %xs, %c, %h, %ignore);
+ my($name, %dir, %xs, %c, %h, %ignore, %pl_files);
local(%pm); #the sub in find() has to see this hash
$ignore{'test.pl'} = 1;
$ignore{'makefile.pl'} = 1 if $Is_VMS;
@@ -828,6 +852,8 @@ sub init_dirscan { # --- File and Directory Lists (.xs .pm etc)
$h{$name} = 1;
} elsif ($name =~ /\.p[ml]$/){
$pm{$name} = "\$(INST_LIBDIR)/$name";
+ } elsif ($name =~ /\.PL$/ && $name ne "Makefile.PL") {
+ ($pl_files{$name} = $name) =~ s/\.PL$// ;
}
}
@@ -890,6 +916,7 @@ sub init_dirscan { # --- File and Directory Lists (.xs .pm etc)
my($sufx) = $Is_VMS ? '.obj' : '.o';
$att{O_FILES} = [grep s/\.c$/$sufx/, @o_files] ;
$att{H} = [sort keys %h] unless $att{H};
+ $att{PL_FILES} = \%pl_files unless $att{PL_FILES};
}
@@ -899,7 +926,7 @@ sub libscan {
}
sub init_others { # --- Initialize Other Attributes
-
+ my($key);
for $key (keys(%Recognized_Att_Keys), keys(%Other_Att_Keys)){
# avoid warnings for uninitialized vars
next if exists $att{$key};
@@ -1107,6 +1134,7 @@ INST_PM = '.join(" \\\n\t", sort values %{$att{PM}}).'
join('',@m);
}
+$Const_cccmd=0; # package global
sub const_cccmd{
my($self,$libperl)=@_;
@@ -1115,11 +1143,16 @@ sub const_cccmd{
# e.g., do both and compare results during the transition period.
my($cc,$ccflags,$optimize,$large,$split, $shflags)
= @Config{qw(cc ccflags optimize large split shellflags)};
+ my($optdebug)="";
+
$shflags = '' unless $shflags;
my($prog, $old, $uc, $perltype);
- chop($old = `cd $att{PERL_SRC}; sh $shflags ./cflags $libperl $att{BASEEXT}.c 2>/dev/null`)
- if $att{PERL_SRC};
+ unless ($Const_cccmd++){
+ chop($old = `cd $att{PERL_SRC}; sh $shflags ./cflags $libperl $att{BASEEXT}.c`)
+ if $att{PERL_SRC};
+ $Const_cccmd++; # shut up typo warning
+ }
my(%map) = (
D => '-DDEBUGGING',
@@ -1162,7 +1195,7 @@ sub const_cccmd{
echo large=\$large
echo split=\$split
`;
- my(%cflags);
+ my(%cflags,$line);
foreach $line (@o){
chomp $line;
if ($line =~ /(.*?)=\s*(.*)\s*$/){
@@ -1298,6 +1331,19 @@ sub post_constants{
"";
}
+sub pasthru {
+ my(@m,@pasthru,$key);
+ # It has to be considered carefully, which variables are apt to be passed through, e.g. PERL_SRC
+ # is not suited for subdirectories, as it might be relativ to the parent directory.
+ # Probably we need a PASTHRU2 variable. PASTHRU1 is a conservative approach, that hardly changes
+ # MakeMaker between version 4.086 and 4.09.
+ push @m, "\nPASTHRU1 = ";
+ foreach $key (qw(INST_ARCHLIB INST_EXE INST_LIB LIBPERL_A LINKTYPE)){
+ push @pasthru, "$key=\"\$($key)\"";
+ }
+ push @m, join "\\\n\t", @pasthru;
+ join "", @m;
+}
# --- Translation Sections ---
@@ -1334,10 +1380,11 @@ sub top_targets{
all :: config linkext $(INST_PM)
'.$att{NOOP}.'
-config :: '.$att{MAKEFILE}.'
- @ $(MKPATH) $(INST_LIBDIR) $(INST_ARCHAUTODIR)
+config :: '.$att{MAKEFILE}.' $(INST_LIBDIR)/.exists $(INST_ARCHAUTODIR)/.exists
';
+ push @m, MM->dir_target('$(INST_LIBDIR)', '$(INST_ARCHAUTODIR)');
+
push @m, '
$(O_FILES): $(H_FILES)
' if @{$att{O_FILES} || []} && @{$att{H} || []};
@@ -1375,8 +1422,8 @@ static :: $att{BASEEXT}.exp
push(@m,"
$att{BASEEXT}.exp: Makefile.PL
-",' $(PERL) $(I_PERL_LIBS) -e \'use ExtUtils::MakeMaker; \\
- mksymlists(DL_FUNCS => ',
+",' $(PERL) $(I_PERL_LIBS) -e \'use ExtUtils::MakeMaker qw(&mksymlists); \\
+ &mksymlists(DL_FUNCS => ',
%$funcs ? neatvalue($funcs) : '""',', DL_VARS => ',
@$vars ? neatvalue($vars) : '""', ", NAME => \"$att{NAME}\")'
");
@@ -1406,7 +1453,7 @@ BOOTSTRAP = '."$att{BASEEXT}.bs".'
$(BOOTSTRAP): '."$att{MAKEFILE} $att{BOOTDEP}".'
@ echo "Running mkbootstrap for $(NAME) ($(BSLOADLIBS))"
@ $(PERL) $(I_PERL_LIBS) \
- -e \'use ExtUtils::MakeMaker; &mkbootstrap("$(BSLOADLIBS)");\' \
+ -e \'use ExtUtils::MakeMaker qw(&mkbootstrap); &mkbootstrap("$(BSLOADLIBS)");\' \
INST_LIB=$(INST_LIB) INST_ARCHLIB=$(INST_ARCHLIB) PERL_SRC=$(PERL_SRC) NAME=$(NAME)
@ $(TOUCH) $(BOOTSTRAP)
@@ -1431,8 +1478,7 @@ sub dynamic_lib {
ARMAYBE = '.$armaybe.'
OTHERLDFLAGS = '.$otherldflags.'
-$(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP)
- @ $(MKPATH) $(INST_ARCHAUTODIR)
+$(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP) $(INST_ARCHAUTODIR)/.exists
');
if ($armaybe ne ':'){
$ldfrom = "tmp.a";
@@ -1442,6 +1488,8 @@ $(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP)
$ldfrom = "-all $ldfrom -none" if ($osname eq 'dec_osf');
push(@m,' $(LD) -o $@ $(LDDLFLAGS) '.$ldfrom.
' $(OTHERLDFLAGS) $(MYEXTLIB) $(LDLOADLIBS)'."\n");
+
+ push @m, MM->dir_target('$(INST_ARCHAUTODIR)');
join('',@m);
}
@@ -1460,8 +1508,7 @@ static :: '.$att{MAKEFILE}.' $(INST_STATIC) $(INST_PM)
sub static_lib{
my(@m);
push(@m, <<'END');
-$(INST_STATIC): $(OBJECT) $(MYEXTLIB)
- @ $(MKPATH) $(INST_ARCHAUTODIR)
+$(INST_STATIC): $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)/.exists
END
# If this extension has it's own library (eg SDBM_File)
# then copy that to $(INST_STATIC) and add $(OBJECT) into it.
@@ -1477,6 +1524,7 @@ END
push(@m, <<'END') if $att{PERL_SRC};
@ echo "$(EXTRALIBS)" >> $(PERL_SRC)/ext.libs
END
+ push @m, MM->dir_target('$(INST_ARCHAUTODIR)');
join('', "\n",@m);
}
@@ -1506,16 +1554,31 @@ sub installpm_x { # called by installpm per file
my($instdir) = $inst =~ m|(.*)/|;
my(@m);
push(@m,"
-$inst: $dist Makefile
+$inst: $dist Makefile $instdir/.exists
".' @ '.$att{RM_F}.' $@
- @ $(MKPATH) '.$instdir.'
'."$att{CP} $dist".' $@
');
push(@m, "\t\@\$(AUTOSPLITFILE) \$@ $splitlib/auto\n")
if ($splitlib and $inst =~ m/\.pm$/);
+
+ push @m, MM->dir_target($instdir);
join('', @m);
}
+sub processPL {
+ return "" unless $att{PL_FILES};
+ my(@m, $plfile);
+ foreach $plfile (sort keys %{$att{PL_FILES}}) {
+ push @m, "
+all :: $att{PL_FILES}->{$plfile}
+
+$att{PL_FILES}->{$plfile} :: $plfile
+ \$(PERL) -I\$(INST_ARCHLIB) -I\$(INST_LIB) -I\$(PERL_ARCHLIB) -I\$(PERL_LIB) $plfile
+";
+ }
+ join "", @m;
+}
+
sub installbin {
return "" unless $att{EXE_FILES} && ref $att{EXE_FILES} eq "ARRAY";
my(@m, $from, $to, %fromto, @to);
@@ -1589,20 +1652,18 @@ sub subdir_x {
# MY::subdir_x() method to override this one.
qq{
config :: $subdir/$att{MAKEFILE}
- cd $subdir ; \$(MAKE) config INST_LIB=\$(INST_LIB) INST_ARCHLIB=\$(INST_ARCHLIB) \\
- INST_EXE=\$(INST_EXE) LINKTYPE=\$(LINKTYPE) LIBPERL_A=\$(LIBPERL_A) \$(SUBDIR_MAKEFILE_PL_ARGS)
+ cd $subdir && \$(MAKE) config \$(PASTHRU1) \$(SUBDIR_MAKEFILE_PL_ARGS)
$subdir/$att{MAKEFILE}: $subdir/Makefile.PL \$(CONFIGDEP)
}.' @echo "Rebuilding $@ ..."
$(PERL) $(I_PERL_LIBS) \\
-e "use ExtUtils::MakeMaker; MM->runsubdirpl(qw('.$subdir.'))" \\
- INST_LIB=$(INST_LIB) INST_ARCHLIB=$(INST_ARCHLIB) \\
- INST_EXE=$(INST_EXE) LINKTYPE=\$(LINKTYPE) LIBPERL_A=$(LIBPERL_A) $(SUBDIR_MAKEFILE_PL_ARGS)
+ $(PASTHRU1) $(SUBDIR_MAKEFILE_PL_ARGS)
@echo "Rebuild of $@ complete."
'.qq{
subdirs ::
- cd $subdir ; \$(MAKE) all LINKTYPE=\$(LINKTYPE)
+ cd $subdir && \$(MAKE) all \$(PASTHRU1)
};
}
@@ -1640,7 +1701,7 @@ sub realclean {
realclean purge :: clean
');
# realclean subdirectories first (already cleaned)
- $sub = "\t-cd %s && test -f %s && \$(MAKE) %s realclean\n";
+ my $sub = "\t-cd %s && test -f %s && \$(MAKE) %s realclean\n";
foreach(@{$att{DIR}}){
push(@m, sprintf($sub,$_,"$att{MAKEFILE}.old","-f $att{MAKEFILE}.old"));
push(@m, sprintf($sub,$_,"$att{MAKEFILE}",''));
@@ -1670,8 +1731,8 @@ sub distclean {
distclean: clean
$preop
$att{RM_F} $mkfiles
- cd ..; tar $tarflags $tarname.tar \$(BASEEXT)
- cd ..; $compress $tarname.tar
+ cd .. && tar $tarflags $tarname.tar \$(BASEEXT)
+ cd .. && $compress $tarname.tar
$postop
";
}
@@ -1694,7 +1755,7 @@ END
push(@m, <<'END') if -f "test.pl";
$(FULLPERL) -I$(INST_ARCHLIB) -I$(INST_LIB) -I$(PERL_ARCHLIB) -I$(PERL_LIB) test.pl
END
- push(@m, map("\tcd $_ && test -f $att{MAKEFILE} && \$(MAKE) test LINKTYPE=\$(LINKTYPE)\n",
+ push(@m, map("\tcd $_ && test -f $att{MAKEFILE} && \$(MAKE) test \$(PASTHRU)\n",
@{$att{DIR}}));
push(@m, "\t\@echo 'No tests defined for \$(NAME) extension.'\n") unless @m > 1;
join("", @m);
@@ -1707,8 +1768,8 @@ sub install {
push @m, q{
doc_install ::
@ $(PERL) -I$(INST_ARCHLIB) -I$(INST_LIB) -I$(PERL_ARCHLIB) -I$(PERL_LIB) \\
- -e 'use ExtUtils::MakeMaker; MM->writedoc("Module", "$(NAME)", \\
- "LINKTYPE=$(LINKTYPE)", "VERSION=$(VERSION)", "EXE_FILES=$(EXE_FILES)")'
+ -e "use ExtUtils::MakeMaker; MM->writedoc('Module', '$(NAME)', \\
+ 'LINKTYPE=$(LINKTYPE)', 'VERSION=$(VERSION)', 'EXE_FILES=$(EXE_FILES)')"
};
push(@m, "
@@ -1761,7 +1822,7 @@ $(PERL_INC)/config.h: $(PERL_SRC)/config.sh
$(PERL_ARCHLIB)/Config.pm: $(PERL_SRC)/config.sh
@echo "Warning: $(PERL_ARCHLIB)/Config.pm may be out of date with $(PERL_SRC)/config.sh"
- cd $(PERL_SRC); $(MAKE) lib/Config.pm
+ cd $(PERL_SRC) && $(MAKE) lib/Config.pm
') if $att{PERL_SRC};
push(@m, join(" ", values %{$att{XS}})." : \$(XSUBPPDEPS)\n")
@@ -1784,16 +1845,39 @@ $(OBJECT) : '.$att{MAKEFILE}.'
@echo "Cleaning current config before rebuilding Makefile..."
-@mv '."$att{MAKEFILE} $att{MAKEFILE}.old".'
-$(MAKE) -f '.$att{MAKEFILE}.'.old clean >/dev/null 2>&1 || true
- $(PERL) $(I_PERL_LIBS) Makefile.PL
+ $(PERL) $(I_PERL_LIBS) Makefile.PL '."@ARGV".'
@echo "Now you must rerun make."; false
';
}
-
sub postamble{
"";
}
+# --- Make-Directories section (internal method) ---
+# dir_target(@array) returns a Makefile entry for the file .exists in each
+# named directory. Returns nothing, if the entry has already been processed.
+# We're helpless though, if the same directory comes as $(FOO) _and_ as "bar".
+# Both of them get an entry, that's why we use "::". I chose '$(PERL)' as the
+# prerequisite, because there has to be one, something that doesn't change
+# too often :)
+%Dir_Target = (); # package global
+
+sub dir_target {
+ my($self,@dirs)=@_;
+ my(@m,$dir);
+ foreach $dir (@dirs) {
+ next if $Dir_Target{$dir};
+ push @m, "
+$dir/.exists :: \$(PERL)
+ \@ \$(MKPATH) $dir
+ \@ \$(TOUCH) $dir/.exists
+";
+ $Dir_Target{$dir}++;
+ }
+ join "", @m;
+}
+
# --- Make-A-Perl section ---
sub staticmake {
@@ -1838,6 +1922,8 @@ sub makeaperl {
File::Find::find(sub {
return unless m/\.a$/;
return if m/^libperl/;
+ # don't include the installed version of this extension
+ return if $File::Find::name =~ m:auto/$att{FULLEXT}/$att{BASEEXT}.a$:;
$static{fastcwd() . "/" . $_}++;
}, grep( -d $_, @{$searchdirs || []}) );
@@ -1868,19 +1954,14 @@ join(" ", sort keys %static), "
MAP_EXTRA = @{$extra}
MAP_PRELIBS = $Config{'libs'} $Config{'cryptlib'}
";
- if ($libperl) {
- unless (-f $libperl || -f ($libperl = "$Config{'installarchlib'}/CORE/$libperl")){
- print STDOUT "Warning: $libperl not found";
- undef $libperl;
- }
- }
- unless ($libperl) {
- if (defined $att{PERL_SRC}) {
- $libperl = "$att{PERL_SRC}/libperl.a";
- } elsif ( -f ( $libperl = "$Config{'installarchlib'}/CORE/libperl.a" )) {
- } else {
- print STDOUT "Warning: $libperl not found";
- }
+
+ unless ($libperl && -f $libperl) {
+ my $dir = (defined $att{PERL_SRC}) ? $att{PERL_SRC}
+ : "$Config{'installarchlib'}/CORE";
+ $libperl = "libperl.a" unless $libperl;
+ $libperl = "$dir/$libperl";
+ print STDOUT "Warning: $libperl not found"
+ unless (-f $libperl || defined($att{PERL_SRC}));
}
push @m, "
@@ -1910,9 +1991,9 @@ $tmp/perlmain.c: $makefilename}, q{
# We write MAP_EXTRA outside the perl program to have it eval'd by the shell
push @m, q{
doc_inst_perl:
- @ $(FULLPERL) -e 'use ExtUtils::MakeMaker; MM->writedoc("Perl binary", \\
- "$(MAP_TARGET)", "MAP_STATIC=$(MAP_STATIC)", \\
- "MAP_EXTRA=@ARGV", "MAP_LIBPERL=$(MAP_LIBPERL)")' -- $(MAP_EXTRA)
+ @ $(FULLPERL) -e 'use ExtUtils::MakeMaker; MM->writedoc("Perl binary",' \\
+ -e '"$(MAP_TARGET)", "MAP_STATIC=$(MAP_STATIC)",' \\
+ -e '"MAP_EXTRA=@ARGV", "MAP_LIBPERL=$(MAP_LIBPERL)")' -- $(MAP_EXTRA)
};
push @m, qq{
@@ -2140,6 +2221,7 @@ generated C<*.bs> file.
sub mksymlists {
my($self) = shift;
+ my($pkg);
# only AIX requires a symbol list at this point
# (so does VMS, but that's handled by the MM_VMS package)
@@ -2157,6 +2239,7 @@ sub mksymlists {
print EXP join("\n",@{$att{DL_VARS}}) if $att{DL_VARS};
foreach $pkg (keys %{$att{DL_FUNCS}}) {
(my($prefix) = $pkg) =~ s/\W/_/g;
+ my $func;
foreach $func (@{$att{DL_FUNCS}->{$pkg}}) {
$func = "XS_${prefix}_$func" unless $func =~ /^boot_/;
print EXP "$func\n";
@@ -2199,6 +2282,7 @@ perllocal - locally installed modules and perl binaries
close POD;
}
+
=head1 AUTHORS
Andy Dougherty F<E<lt>doughera@lafcol.lafayette.eduE<gt>>, Andreas
@@ -2229,13 +2313,7 @@ v4.03 January 30th 1995 By Andreas Koenig
v4.04 Februeary 5th 1995 By Andreas Koenig
v4.05 February 8th 1995 By Andreas Koenig
v4.06 February 10th 1995 By Andreas Koenig
-
-Cleaning up the new interface. Suggestion to freeze now until 5.001.
-
v4.061 February 12th 1995 By Andreas Koenig
-
-Fixes of some my() declarations and of @extra computing in makeaperl().
-
v4.08 - 4.085 February 14th-21st 1995 by Andreas Koenig
Introduces EXE_FILES and INST_EXE for installing executable scripts
@@ -2273,6 +2351,48 @@ v4.086 March 9 1995 by Andy Dougherty
Fixed some AIX buglets. Fixed DLD support for Linux with gcc 2.6.2.
+v4.09 March 31 1995 by Andreas Koenig
+
+Patches from Tim (/usr/local/lib/perl5/hpux/CORE/libperl.a not found
+message eliminated, and a small makeaperl patch).
+
+blib now is a relative directory (./blib).
+
+Documentation bug fixed.
+
+Chdir in the Makefile always followed by "&&", not by ";".
+
+The output of cflags is no longer directed to /dev/null, but the shell
+version of cflags is now only called once.
+
+The result of MakeMaker's cflags takes precedence over
+shell-cflags.
+
+Introduced a $(PASTHRU) variable, that doesn't have much effect yet,
+but now it's easier to add variables that have to be passed to
+recursive makes.
+
+'make config' will now always reapply the original arguments to the
+'perl Makefile.PL'.
+
+MKPATH will be called only once for any directory (should speed up Tk
+building and installation considerably).
+
+"Subroutine mkbootstrap redefined" message eliminated. It was
+necessary to move &mkbootstrap and &mksymlists from @EXPORT to
+@EXPORT_OK.
+
+C<*.PL> files will be processed by C<$(PERL)>.
+
+Turned some globals into my() variables, where it was obvious to be an
+oversight.
+
+Changed some continuation lines so that they work on Solaris and Unicos.
+
+v4.091 April 3 1995 by Andy Dougherty
+
+Another attempt to fix writedoc() from Dean Roehrich.
+
=head1 NOTES
MakeMaker development work still to be done: