From ed4a07ffcc2c4468c7f918c139f26b994fa46620 Mon Sep 17 00:00:00 2001 From: Mark Murray Date: Sun, 11 Oct 1998 18:13:42 +0000 Subject: [PATCH] Very substantial debug/improvement of the FreeBSD/Perl5 build. o make install ; make install now works o make all ; make all is quiet the second time o Dependancies are properliy debugged; this means that make -jN has a far hihjer likelyhood of working. o a proper 'link farm' has been constructed for the build. This dramatically simplifies the dependancy tangle. o for perldoc's use, all the .pod files are installed. o the man3 docs are properly compressed. o the man pages and libary code are installed by the makefiles, not by a perl script. o at the end, h2ph is run. --- gnu/usr.bin/perl/Makefile.inc | 38 +++- gnu/usr.bin/perl/miniperl/Makefile | 4 +- gnu/usr.bin/perl/perl/Makefile | 160 +++++++++------- gnu/usr.bin/perl/perl/install_perl_libs | 234 ------------------------ gnu/usr.bin/perl/pod/pod/Makefile | 10 +- gnu/usr.bin/perl/suidperl/Makefile | 80 ++++---- gnu/usr.bin/perl/utils/h2ph/Makefile | 7 +- 7 files changed, 169 insertions(+), 364 deletions(-) delete mode 100755 gnu/usr.bin/perl/perl/install_perl_libs diff --git a/gnu/usr.bin/perl/Makefile.inc b/gnu/usr.bin/perl/Makefile.inc index eb885a2db848..46f3d1bee7a4 100644 --- a/gnu/usr.bin/perl/Makefile.inc +++ b/gnu/usr.bin/perl/Makefile.inc @@ -1,4 +1,4 @@ -# $Id: Makefile.inc,v 1.4 1998/09/12 19:16:32 markm Exp $ +# $Id: Makefile.inc,v 1.5 1998/09/22 12:00:58 markm Exp $ PERL5SRC?= ${.CURDIR}/../../../../contrib/perl5 @@ -25,11 +25,33 @@ CLEANFILES+= ${.OBJDIR}/${I} DEPEND_H+= ${.OBJDIR}/${I} .endfor -lib ext Porting hints: - @rm -rf ${.TARGET} - for i in `cd ${PERL5SRC}; find ${.TARGET} -type d` ; do \ - mkdir -p $${i} ;\ - done - for i in `cd ${PERL5SRC}; find ${.TARGET} -type f` ; do \ - ln -s ${PERL5SRC}/$${i} $${i} ;\ +linkfarm: ${DEPEND_H} + @for d in ${CLEANDIRS} ; do \ + rm -rf $${d} ;\ + for i in `cd ${PERL5SRC}; find $${d} -type d -a \! -name CVS` ;\ + do \ + mkdir -p $${i} ;\ + done ;\ + for i in `cd ${PERL5SRC}; find $${d} -type f` ;\ + do \ + if [ -d `dirname $${i}` ] ; then \ + ln -s ${PERL5SRC}/$${i} $${i} ;\ + fi ;\ + done ;\ done + @mkdir lib/auto + @mkdir build + @ln -sf ${PERL5SRC}/config_h.SH config_h.sh + @ln -sf ${PERL5SRC}/cflags.SH cflags.sh + @ln -sf ${PERL5SRC}/ext/re/re.pm lib/re.pm + @ln -sf ${PERL5SRC}/myconfig myconfig + @ln -sf ${PERL5SRC}/miniperlmain.c miniperlmain.c + @ln -sf ${PERL5SRC}/writemain.SH writemain.sh + @ln -sf ${PERL5SRC}/regcomp.c regcomp.c + @ln -sf ${PERL5SRC}/regexec.c regexec.c + @ln -sf ${.CURDIR}/../libperl/config.SH-${OBJFORMAT}.${MACHINE_ARCH} \ + config.sh + @touch ${.TARGET} + +CLEANFILES+= linkfarm +CLEANDIRS+= lib ext Porting hints build diff --git a/gnu/usr.bin/perl/miniperl/Makefile b/gnu/usr.bin/perl/miniperl/Makefile index 3b0d6a1a6a54..f72e70bc124a 100644 --- a/gnu/usr.bin/perl/miniperl/Makefile +++ b/gnu/usr.bin/perl/miniperl/Makefile @@ -1,11 +1,13 @@ # -# $Id: Makefile,v 1.5 1998/09/23 06:05:28 markm Exp $ +# $Id: Makefile,v 1.6 1998/09/26 16:17:05 markm Exp $ # PROG= miniperl NOMAN= true CFLAGS+=-I${PERL5SRC} -I${.OBJDIR} SRCS= miniperlmain.c config.h +# Miniperl _must_ be static!! +NOSHARED= yes DPADD= ${LIBPERL} ${LIBM} ${LIBCRYPT} LDADD= -lperl -lm -lcrypt diff --git a/gnu/usr.bin/perl/perl/Makefile b/gnu/usr.bin/perl/perl/Makefile index 0479fbc37a0a..64427825c6dc 100644 --- a/gnu/usr.bin/perl/perl/Makefile +++ b/gnu/usr.bin/perl/perl/Makefile @@ -1,5 +1,5 @@ # -# $Id: Makefile,v 1.13 1998/09/22 12:00:58 markm Exp $ +# $Id: Makefile,v 1.14 1998/09/23 06:05:28 markm Exp $ # PROG= perl @@ -14,10 +14,8 @@ LINKS= ${BINDIR}/${PROG} ${BINDIR}/perl5 \ CLEANFILES= config.h config.sh config_h.sh writemain writemain.sh \ Config.pm cflags cflags.sh myconfig perlmain.c miniperlmain.c \ - ${.OBJDIR}/regcomp.c ${.OBJDIR}/regexec.c -CLEANDIRS= lib ext Porting hints - -.include + autosplit regcomp.c regexec.c pod2man.PL pod2man ext.libs \ + man3pages STATIC_EXT= DynaLoader/DynaLoader @@ -25,70 +23,46 @@ DYNAMIC_EXT= B/B DB_File/DB_File Data/Dumper/Dumper Fcntl/Fcntl IO/IO \ IPC/SysV/SysV NDBM_File/NDBM_File Opcode/Opcode POSIX/POSIX \ SDBM_File/SDBM_File Socket/Socket attrs/attrs re/re -#NONXS_EXT= Errno/pm_to_blib +NONXS_EXT= Errno/pm_to_blib -${PROG}: Config.pm lib/auto/DynaLoader/DynaLoader.a +.include -lib/auto/DynaLoader/DynaLoader.a: Config.pm autosplit +${PROG}: linkfarm Config.pm autosplit lib/auto/DynaLoader/DynaLoader.a -config.h: config_h.sh config.sh +config.h: linkfarm sh config_h.sh -config.sh: ${.CURDIR}/../libperl/config.SH-${OBJFORMAT}.${MACHINE_ARCH} - ln -sf ${.OODATE} ${.TARGET} +cflags: linkfarm + sh cflags.sh -config_h.sh: config_h.SH - ln -sf ${.OODATE} ${.TARGET} - -cflags.sh: cflags.SH - ln -sf ${.OODATE} ${.TARGET} - -cflags: cflags.sh - sh ${.OODATE} - -lib/re.pm: lib ext hints ext/re/re.pm - cat ${PERL5SRC}/ext/re/re.pm > ${.OBJDIR}/lib/re.pm - -lib/Config.pm: Config.pm - cp -p ${.OODATE} ${.TARGET} - -myconfig: ${PERL5SRC}/myconfig - ln -sf ${.OODATE} ${.TARGET} - -Config.pm: myconfig config.sh lib ext hints Porting lib/re.pm +Config.pm: linkfarm miniperl ${PERL5SRC}/configpm \ Config.pm Porting/Glossary myconfig config.sh + cd lib ; ln -sf ../${.TARGET} -${.OBJDIR}/miniperlmain.c: miniperlmain.c - @ln -sf ${.OODATE} ${.TARGET} - -perlmain.c: ${.OBJDIR}/miniperlmain.c config.sh writemain config.h +perlmain.c: linkfarm writemain config.h sh writemain lib/auto/DynaLoader/DynaLoader.a > ${.TARGET} -writemain.sh: writemain.SH - @ln -sf ${.OODATE} ${.TARGET} +writemain: linkfarm + sh writemain.sh -writemain: writemain.sh - sh ${.OODATE} - -${.OBJDIR}/regcomp.c: ${PERL5SRC}/regcomp.c - @ln -sf ${.OODATE} ${.TARGET} - -${.OBJDIR}/regexec.c: ${PERL5SRC}/regexec.c - @ln -sf ${.OODATE} ${.TARGET} - -autosplit: lib ext Porting hints +autosplit: linkfarm Config.pm lib/*.pm lib/*/*.pm miniperl -I${.OBJDIR}/lib \ -e 'use AutoSplit; autosplit_lib_modules(@ARGV)' \ lib/*.pm lib/*/*.pm + touch ${.TARGET} .for I in ${STATIC_EXT} -lib/auto/${I}.a: ext/${I:H}/Makefile.PL cflags lib/Config.pm ${DEPEND_H} +ext/${I:H}/Makefile: linkfarm ext/${I:H}/Makefile.PL cflags Config.pm cd ext/${I:H}; \ miniperl -I${.OBJDIR}/lib Makefile.PL \ - INSTALLDIRS=perl PERL_SRC=${.OBJDIR}; \ - make -B config PERL_SRC=${.OBJDIR}; \ - make -B all LINKTYPE=static PERL_SRC=${.OBJDIR} + LINKTYPE=static INSTALLDIRS=perl PERL_SRC=${.OBJDIR} \ + LIBS="-lperl" INSTALLMAN3DIR=${DESTDIR}/usr/share/perl/man3; \ + make -B config PERL_SRC=${.OBJDIR} + +lib/auto/${I}.a: linkfarm ext/${I:H}/Makefile + cd ext/${I:H}; \ + make -B all PERL_SRC=${.OBJDIR} all: lib/auto/${I}.a @@ -96,33 +70,85 @@ STATICS+= lib/auto/${I}.a .endfor .for I in ${DYNAMIC_EXT} -lib/auto/${I}.so: ${PROG} ext/${I:H}/Makefile.PL cflags lib/Config.pm \ - ${DEPEND_H} ${.OBJDIR}/regcomp.c ${.OBJDIR}/regexec.c +ext/${I:H}/Makefile: linkfarm ext/${I:H}/Makefile.PL cflags Config.pm pod2man cd ext/${I:H}; \ miniperl -I${.OBJDIR}/lib Makefile.PL \ - INSTALLDIRS=perl PERL_SRC=${.OBJDIR} LIBS="-lperl"; \ - make -B config PERL_SRC=${.OBJDIR}; \ - make -B all LINKTYPE=dynamic PERL_SRC=${.OBJDIR} + LINKTYPE=dynamic INSTALLDIRS=perl PERL_SRC=${.OBJDIR} \ + LIBS="-lperl" INSTALLMAN3DIR=${DESTDIR}/usr/share/perl/man3 \ + INST_LIB=${.OBJDIR}/build/${I:H} \ + INST_ARCHLIB=${.OBJDIR}/build/${I:H} ;\ + make -B config PERL_SRC=${.OBJDIR} + + +lib/auto/${I}.so: linkfarm ${PROG} ext/${I:H}/Makefile + cd ext/${I:H}; \ + make -B all PERL_SRC=${.OBJDIR} all: lib/auto/${I}.so DYNAMICS+= lib/auto/${I}.so .endfor -#.for I in ${NONXS_EXT} -#lib/auto/${I}: ${PROG} ext/${I:H}/Makefile.PL cflags lib/Config.pm -# cd ext/${I:H}; \ -# miniperl -I${.OBJDIR}/lib Makefile.PL \ -# INSTALLDIRS=perl PERL_SRC=${.OBJDIR}; \ -# make -B config PERL_SRC=${.OBJDIR}; \ -# make -B all LINKTYPE=nonxs PERL_SRC=${.OBJDIR} -# -#NONXSS+= lib/auto/${I} -#.endfor +.for I in ${NONXS_EXT} +ext/${I:H}/Makefile: linkfarm ext/${I:H}/Makefile.PL cflags lib/Config.pm + mkdir -p ${.OBJDIR}/lib/auto/${I:H} ;\ + cd ext/${I:H} ;\ + miniperl -I${.OBJDIR}/lib Makefile.PL \ + INSTALLDIRS=perl PERL_SRC=${.OBJDIR} \ + INSTALLMAN3DIR=/usr/share/perl/man3 \ + INST_LIB=${.OBJDIR}/lib/auto/${I:H} \ + INST_ARCHLIB=${.OBJDIR}/lib/auto/${I:H} ;\ + make -B config PERL_SRC=${.OBJDIR} -#all: ${DYNAMICS} ${NONXSS} +lib/auto/${I}: linkfarm ${PROG} ext/${I:H}/Makefile + cd ext/${I:H}; \ + make -B all LINKTYPE=nonxs PERL_SRC=${.OBJDIR} + +NONXSS+= lib/auto/${I} +.endfor + +pod2man: Config.pm autosplit ${PERL5SRC}/pod/pod2man.PL + ln -sf ${PERL5SRC}/pod/pod2man.PL + miniperl -I${.OBJDIR}/lib pod2man.PL + +man3pages: pod2man + cd ${.OBJDIR}/lib ;\ + for i in `find . -name \*.pm | grep -v Functions.pm` ; do \ + j=`echo $$i | sed -e 's|./||' -e 's|/|::|g' -e 's|.pm|.3|'` ;\ + echo Manifying $$j ;\ + miniperl -I${.OBJDIR}/lib ${.OBJDIR}/pod2man $$i > $$j ;\ + gzip -fn $$j ;\ + done + cd ${.OBJDIR}/ext ;\ + for i in `find . -name \*.pm -o -name \*.pod | grep -v POSIX.pm` ; do \ + j=`echo $$i | sed -e 's|./||' -e 's|/SysV/|/IPC/|' \ + -e 's|/Dumper/|/Data/|' -e 's|/lib/|/|' \ + -e 's|^[^/]*/||' \ + -e 's|/|::|g' -e 's|.pm|.3|' -e 's|.pod|.3|'`;\ + i=`echo $$i | sed -e 's|./||'` ;\ + echo Manifying $$j ;\ + miniperl -I${.OBJDIR}/lib ${.OBJDIR}/pod2man $$i > ../lib/$$j ;\ + gzip -fn ../lib/$$j ;\ + done + touch ${.TARGET} + +all: man3pages install: - miniperl ${.CURDIR}/install_perl_libs -d ${DESTDIR} +.for I in ${DYNAMIC_EXT} + cd ${.OBJDIR}/ext/${I:H} ;\ + make -B install \ + INSTALLPRIVLIB=${DESTDIR}/usr/libdata/perl/5.00502 \ + INSTALLARCHLIB=${DESTDIR}/usr/libdata/perl/5.00502/mach +.endfor + cd ${.OBJDIR}/lib ;\ + for i in `find . \! -type d \! -name \*.3.gz` ; do \ + j=`echo $$i|sed -e 's|auto/DynaLoader|mach/auto/DynaLoader|'` ;\ + ${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ + $$i ${DESTDIR}/usr/libdata/perl/5.00502/$$j ;\ + done + cd ${.OBJDIR}/lib ;\ + ${INSTALL} ${COPY} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} \ + *.3.gz ${DESTDIR}/usr/share/perl/man/man3 .PATH: ${PERL5SRC} diff --git a/gnu/usr.bin/perl/perl/install_perl_libs b/gnu/usr.bin/perl/perl/install_perl_libs deleted file mode 100755 index 6e03b52180c7..000000000000 --- a/gnu/usr.bin/perl/perl/install_perl_libs +++ /dev/null @@ -1,234 +0,0 @@ -#!./perl - -# -# This was perl 5.00502's installperl, very thoroughly hacked to only -# install the perl libraries. -# -# $Id: install_perl_libs,v 1.2 1998/09/23 06:05:28 markm Exp $ -# - -BEGIN { - require 5.004; - @INC = 'lib'; - $ENV{PERL5LIB} = 'lib'; -} - -use strict; -use vars qw($nonono $versiononly $depth $destdir $pod2man @modpods $manpage $mod); - -use File::Find; -use File::Compare; -use File::Copy (); -use File::Path (); -use Config; -use subs qw(chmod); - -while (@ARGV) { - $nonono = 1 if $ARGV[0] eq '-n'; - $versiononly = 1 if $ARGV[0] eq '-v'; - $destdir = $ARGV[1] if $ARGV[0] eq '-d'; - shift; -} - -umask 022; - -# Specify here any .pm files that are actually architecture-dependent. -# (Those included with XS extensions under ext/ are automatically -# added later.) -my %archpms = ( - Config => 1, -); - -find(sub { - if ("$File::Find::dir/$_" =~ m{^ext/[^/]+/(.*)\.pm$}) { - (my $pm = $1) =~ s{^lib/}{}; - $archpms{$pm} = 1; - } - }, 'ext'); - -my $ver = $]; -my $patchlevel = substr($ver,3,2); -die "Patchlevel of perl ($patchlevel)", - "and patchlevel of config.sh ($Config{'PATCHLEVEL'}) don't match\n" - if $patchlevel != $Config{'PATCHLEVEL'}; - -# Fetch some frequently-used items from %Config -my $installprivlib = $destdir . $Config{installprivlib}; -my $installarchlib = $destdir . $Config{installarchlib}; -my $man1dir = $destdir . $Config{man1dir}; -my $man1ext = $Config{man1ext}; -my $man3dir = $destdir . '/usr/share/perl/man/man3'; -my $man3ext = $Config{man3ext}; -my $libperl = $Config{libperl}; -# Shared library and dynamic loading suffixes. -my $dlext = $Config{dlext}; - -# Install library files. - -my ($do_installarchlib, $do_installprivlib) = (0, 0); - -if (chdir "lib") { - $do_installarchlib = ! samepath($installarchlib, '.'); - $do_installprivlib = ! samepath($installprivlib, '.'); - $do_installprivlib = 0 if $versiononly && !($installprivlib =~ m/\Q$]/); - - if ($do_installarchlib || $do_installprivlib) { - find(\&installlib, '.'); - } - chdir ".." || die "Can't cd back to source directory: $!\n"; -} -else { - warn "Can't cd to lib to install lib files: $!\n"; -} - -# Install header files and libraries. -my @corefiles; -@corefiles = <*.h libperl*.*>; -foreach my $file (@corefiles) { - copy($file,"$installarchlib/CORE/$file") - and chmod($file =~ /\.(so|\Q$dlext\E)$/ ? 0555 : 0444, - "$installarchlib/CORE/$file"); -} - -runpod2man('lib', $man3dir, $man3ext); - -print STDERR " Installation complete\n"; - -exit 0; - -############################################################################### - -sub chmod { - my($mode,$name) = @_; - - return if ($^O eq 'dos'); - printf STDERR " chmod %o %s\n", $mode, $name; - CORE::chmod($mode,$name) - || warn sprintf("Couldn't chmod %o %s: $!\n", $mode, $name) - unless $nonono; -} - -sub copy { - my($from,$to) = @_; - - print STDERR " cp $from $to\n"; - File::Copy::copy($from, $to) - || warn "Couldn't copy $from to $to: $!\n" - unless $nonono; -} - -sub samepath { - my($p1, $p2) = @_; - - if ($p1 ne $p2) { - my($dev1, $ino1, $dev2, $ino2); - ($dev1, $ino1) = stat($p1); - ($dev2, $ino2) = stat($p2); - ($dev1 == $dev2 && $ino1 == $ino2); - } - else { - 1; - } -} - -sub installlib { - my $dir = $File::Find::dir; - $dir =~ s#^\.(?![^/])/?##; - local($depth) = $dir ? "lib/$dir" : "lib"; - - my $name = $_; - - if ($name eq 'CVS' && -d $name) { - $File::Find::prune = 1; - return; - } - - # ignore patch backups and the .exists files. - return if $name =~ m{\.orig$|~$|^\.exists}; - - $name = "$dir/$name" if $dir ne ''; - - my $installlib = $installprivlib; - if ($dir =~ /^auto/ || - ($name =~ /^(.*)\.(?:pm|pod)$/ && $archpms{$1}) || - ($name =~ /^(.*)\.(?:h|lib)$/i) - ) { - $installlib = $installarchlib; - return unless $do_installarchlib; - } else { - return unless $do_installprivlib; - } - - if (-f $_) { - if (/\.(?:al|ix)$/ && !($dir =~ m[^auto/(.*)$] && $archpms{$1})) { - $installlib = $installprivlib; - } - copy($_, "$installlib/$name") - and chmod($name =~ /\.(so|$dlext)$/o ? 0555 : 0444, - "$installlib/$name"); - } -} - -sub runpod2man { - my($poddir, $mandir, $manext) = @_; - - my($builddir) = Cwd::getcwd(); - my($zipman) = "gzip -f"; - - if ($mandir eq ' ' or $mandir eq '') { - print STDERR "Skipping installation of $poddir man pages.\n"; - return; - } - - print STDERR "chdir $poddir\n"; - chdir $poddir || die "Unable to cd to $poddir directory!\n$!\n"; - - -r "../../pod/pod2man" || die "Executable pod/pod2man not found.\n"; - $pod2man = "miniperl -I lib ../../pod/pod2man/pod2man --section=$manext --official"; - - @modpods = (); - find(\&lsmodpods, '.'); - foreach $mod (@modpods) { - $manpage = $mod; - my $tmp; - # Skip .pm files that have corresponding .pod files, and Functions.pm. - next if (($tmp = $mod) =~ s/\.pm$/.pod/ && -f $tmp); - next if ($mod eq 'Pod/Functions.pm'); #### Used only by pod itself - # Convert name from File/Basename.pm to File::Basename.3 format, - # if necessary. - $manpage =~ s#\.p(m|od)$##; - $manpage =~ s#/#::#g; - $tmp = $destdir ."${mandir}/${manpage}.tmp"; - $manpage = $destdir . "${mandir}/${manpage}.${manext}"; - if (&cmd("$pod2man $mod > $tmp") == 0 && -s $tmp) { - if (!$nonono) { - print STDERR "Compressing $manpage\n"; - rename($tmp, $manpage) && system($zipman, $manpage) && next; - } - else { - unlink($tmp); - } - } - } - chdir "$builddir" || die "Unable to cd back to $builddir directory!\n$!\n"; - print STDERR "chdir $builddir\n"; -} - -sub lsmodpods { - my $dir = $File::Find::dir; - my $name = $File::Find::name; - if (-f $_) { - $name =~ s#^\./##; - push(@modpods, $name) if ($name =~ /\.p(m|od)$/); - } -} - -sub cmd { - my($cmd) = @_; - print STDERR " $cmd\n"; - unless ($nonono) { - system $cmd; - warn "Command failed!!\n" if $?; - } - return $? != 0; -} diff --git a/gnu/usr.bin/perl/pod/pod/Makefile b/gnu/usr.bin/perl/pod/pod/Makefile index 07636c61a9c5..92062b80c65a 100644 --- a/gnu/usr.bin/perl/pod/pod/Makefile +++ b/gnu/usr.bin/perl/pod/pod/Makefile @@ -1,5 +1,5 @@ # -# $Id$ +# $Id: Makefile,v 1.1 1998/09/09 07:20:27 markm Exp $ # PODS= perl.pod perl5004delta.pod perlapio.pod perlbook.pod perlbot.pod \ @@ -26,9 +26,11 @@ MAN1+= ${I}.1 CLEANFILES+= ${.OBJDIR}/${I}.pod ${I}.1 .endfor -test: - echo ${MAN1} - .include +install: + cd ${PERL5SRC}/pod ;\ + ${INSTALL} ${COPY} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} \ + ${PODS} ${DESTDIR}/usr/libdata/perl/5.00502/pod + .PATH: ${PERL5SRC}/pod diff --git a/gnu/usr.bin/perl/suidperl/Makefile b/gnu/usr.bin/perl/suidperl/Makefile index 6c4fc6e33624..5194251fb65e 100644 --- a/gnu/usr.bin/perl/suidperl/Makefile +++ b/gnu/usr.bin/perl/suidperl/Makefile @@ -1,5 +1,5 @@ # -# $Id: Makefile,v 1.3 1998/09/16 17:25:52 markm Exp $ +# $Id: Makefile,v 1.4 1998/09/22 12:00:58 markm Exp $ # PROG= suidperl @@ -13,72 +13,54 @@ BINOWN= root BINMODE=4511 CLEANFILES= config.h config.sh config_h.sh writemain writemain.sh \ - Config.pm cflags cflags.sh myconfig perlmain.c miniperlmain.c -CLEANDIRS= lib ext Porting hints - -.include + Config.pm cflags cflags.sh myconfig perlmain.c miniperlmain.c \ + autosplit regcomp.c regexec.c ext.libs sperl.c STATIC_EXT= DynaLoader/DynaLoader -${PROG}: Config.pm lib/auto/DynaLoader/DynaLoader.a +.include -lib/auto/DynaLoader/DynaLoader.a: Config.pm autosplit - -config.h: config_h.sh config.sh - sh config_h.sh - -config.sh: ${.CURDIR}/../libperl/config.SH-${OBJFORMAT}.${MACHINE_ARCH} - ln -sf ${.OODATE} ${.TARGET} - -config_h.sh: config_h.SH - ln -sf ${.OODATE} ${.TARGET} - -cflags.sh: cflags.SH - ln -sf ${.OODATE} ${.TARGET} - -cflags: cflags.sh - sh ${.OODATE} - -lib/re.pm: lib ext hints ext/re/re.pm - cat ${PERL5SRC}/ext/re/re.pm > ${.OBJDIR}/lib/re.pm - -lib/Config.pm: Config.pm - cp -p ${.OODATE} ${.TARGET} - -myconfig: ${PERL5SRC}/myconfig - ln -sf ${.OODATE} ${.TARGET} - -Config.pm: myconfig config.sh lib ext hints Porting lib/re.pm - miniperl ${PERL5SRC}/configpm \ - Config.pm Porting/Glossary myconfig config.sh - -${.OBJDIR}/miniperlmain.c: miniperlmain.c - @ln -sf ${.OODATE} ${.TARGET} +${PROG}: linkfarm Config.pm autosplit lib/auto/DynaLoader/DynaLoader.a sperl.c: perl.c @ln -sf ${.OODATE} ${.TARGET} -perlmain.c: ${.OBJDIR}/miniperlmain.c config.sh writemain config.h +config.h: linkfarm + sh config_h.sh + +cflags: linkfarm + sh cflags.sh + +Config.pm: linkfarm + miniperl ${PERL5SRC}/configpm \ + Config.pm Porting/Glossary myconfig config.sh + cd lib ; ln -sf ../${.TARGET} + +perlmain.c: linkfarm writemain config.h sh writemain lib/auto/DynaLoader/DynaLoader.a > ${.TARGET} -writemain.sh: writemain.SH - @ln -sf ${.OODATE} ${.TARGET} +writemain: linkfarm + sh writemain.sh -writemain: writemain.sh - sh ${.OODATE} - -autosplit: lib ext Porting hints +autosplit: linkfarm Config.pm lib/*.pm lib/*/*.pm miniperl -I${.OBJDIR}/lib \ -e 'use AutoSplit; autosplit_lib_modules(@ARGV)' \ lib/*.pm lib/*/*.pm + touch ${.TARGET} .for I in ${STATIC_EXT} -lib/auto/${I}.a: cflags lib/Config.pm ${DEPEND_H} +ext/${I:H}/Makefile: linkfarm ext/${I:H}/Makefile.PL cflags Config.pm cd ext/${I:H}; \ miniperl -I${.OBJDIR}/lib Makefile.PL \ - INSTALLDIRS=perl PERL_SRC=${.OBJDIR}; \ - make -B config PERL_SRC=${.OBJDIR}; \ - make -B all LINKTYPE=static PERL_SRC=${.OBJDIR} + LINKTYPE=static INSTALLDIRS=perl PERL_SRC=${.OBJDIR} \ + LIBS="-lperl" INSTALLMAN3DIR=${DESTDIR}/usr/share/perl/man3; \ + make -B config PERL_SRC=${.OBJDIR} + +lib/auto/${I}.a: linkfarm ext/${I:H}/Makefile + cd ext/${I:H}; \ + make -B all PERL_SRC=${.OBJDIR} + +all: lib/auto/${I}.a STATICS+= lib/auto/${I}.a .endfor diff --git a/gnu/usr.bin/perl/utils/h2ph/Makefile b/gnu/usr.bin/perl/utils/h2ph/Makefile index ea5a1958e3e5..c22fdb73c0ef 100644 --- a/gnu/usr.bin/perl/utils/h2ph/Makefile +++ b/gnu/usr.bin/perl/utils/h2ph/Makefile @@ -1,7 +1,12 @@ # -# $Id$ +# $Id: Makefile,v 1.1 1998/09/09 07:20:29 markm Exp $ # PROG= h2ph .include + +afterinstall: + cd ${DESTDIR}/usr/include; \ + miniperl ${.OBJDIR}/${PROG} -d \ + ${DESTDIR}/usr/libdata/perl/5.00502/mach * sys/*