diff options
author | Larry Wall <lwall@netlabs.com> | 1994-10-17 23:00:00 +0000 |
---|---|---|
committer | Larry Wall <lwall@netlabs.com> | 1994-10-17 23:00:00 +0000 |
commit | a0d0e21ea6ea90a22318550944fe6cb09ae10cda (patch) | |
tree | faca1018149b736b1142f487e44d1ff2de5cc1fa /Makefile.SH | |
parent | 85e6fe838fb25b257a1b363debf8691c0992ef71 (diff) | |
download | perl-a0d0e21ea6ea90a22318550944fe6cb09ae10cda.tar.gz |
perl 5.000perl-5.000
[editor's note: this commit combines approximate 4 months of furious
releases of Andy Dougherty and Larry Wall - see pod/perlhist.pod for
details. Andy notes that;
Alas neither my "Irwin AccuTrack" nor my DC 600A quarter-inch cartridge
backup tapes from that era seem to be readable anymore. I guess 13 years
exceeds the shelf life for that backup technology :-(.
]
Diffstat (limited to 'Makefile.SH')
-rw-r--r-- | Makefile.SH | 374 |
1 files changed, 177 insertions, 197 deletions
diff --git a/Makefile.SH b/Makefile.SH index 88b8b7194e..e1e666d883 100644 --- a/Makefile.SH +++ b/Makefile.SH @@ -22,51 +22,43 @@ case "$d_dosuid" in *) suidperl='';; esac -: Certain parts of Makefile need to be commented out if dynamic -: loading is not used. -case "$usedl" in -define) comment='' ;; -*) comment='#' ;; +: Configure sets byacc=byacc if byacc is not found. We reset it to '' +case "$byacc" in +''|'byacc') byacc='';; esac +: Prepare dependency lists for Makefile. +dynamic_list=' ' +for f in $dynamic_ext; do + : the dependency named here will never exist + dynamic_list="$dynamic_list $f.$dlext" +done + +static_list=' ' +static_ai_list=' ' +for f in $static_ext; do + base=`echo "$f" | sed 's/.*\///'` + static_list="$static_list ext/$f/$base.a" + if test -f ext/$f/AutoInit.c; then + static_ai_list="$static_ai_list ext/$f/AutoInit.c" + fi + if test -f ext/$f/AutoInit.pl; then + static_ai_list="$static_ai_list ext/$f/AutoInit.pl" + fi +done + echo "Extracting Makefile (with variable substitutions)" -: This section of the file will have variable substitutions done on it. -: Move anything that needs config subs from !NO!SUBS! section to !GROK!THIS!. -: Protect any dollar signs and backticks that you do not want interpreted -: by putting a backslash in front. You may delete these comments. -$spitshell >Makefile <<!GROK!THIS! -# $Makefile.SH,v $Revision: 4.1 $Date: 92/08/07 17:18:08 $ +$spitshell >Makefile <<'!NO!SUBS!' +# Makefile.SH # This file is derived from Makefile.SH. Any changes made here will # be lost the next time you run Configure. # Makefile is used to generate makefile. The only difference # is that makefile has the dependencies filled in at the end. # -# \$Log: Makefile.SH,v \$ -# Revision 4.1 92/08/07 17:18:08 lwall -# Stage 6 Snapshot -# -# Revision 4.0.1.4 92/06/08 11:40:43 lwall -# patch20: cray didn't give enough memory to /bin/sh -# patch20: various and sundry fixes -# -# Revision 4.0.1.3 91/11/05 15:48:11 lwall -# patch11: saberized perl -# patch11: added support for dbz -# -# Revision 4.0.1.2 91/06/07 10:14:43 lwall -# patch4: cflags now emits entire cc command except for the filename -# patch4: alternate make programs are now semi-supported -# patch4: uperl.o no longer tries to link in libraries prematurely -# patch4: installperl now installs x2p stuff too -# -# Revision 4.0.1.1 91/04/11 17:30:39 lwall -# patch1: C flags are now settable on a per-file basis -# -# Revision 4.0 91/03/20 00:58:54 lwall -# 4.0 baseline. -# # +!NO!SUBS! +$spitshell >>Makefile <<!GROK!THIS! # I now supply perly.c with the kits, so don't remake perly.c without byacc BYACC = $byacc CC = $cc @@ -82,9 +74,6 @@ SMALL = $small LARGE = $large $split mallocsrc = $mallocsrc mallocobj = $mallocobj -dlsrc = $dlsrc -dlobj = $dlobj -dldir = $dldir LNS = $lns RMS = rm -f ranlib = $ranlib @@ -94,7 +83,13 @@ ranlib = $ranlib LDDLFLAGS = $lddlflags CCDLFLAGS = $ccdlflags CCCDLFLAGS = $cccdlflags -SHLIBSUFFIX = $shlibsuffix +DLSUFFIX = .$dlext + +dynamic_ext = $dynamic_list +static_ext = $static_list +ext = \$(dynamic_ext) \$(static_ext) +static_ext_autoinit = $static_ai_list +DYNALOADER = ext/DynaLoader/DynaLoader.a libs = $libs $cryptlib @@ -102,55 +97,57 @@ public = perl $suidperl shellflags = $shellflags -## To use an alternate make, set $altmake in config.sh. +## To use an alternate make, set \$altmake in config.sh. MAKE = ${altmake-make} !GROK!THIS! ## In the following dollars and backticks do not need the extra backslash. $spitshell >>Makefile <<'!NO!SUBS!' -CCCMD = `sh $(shellflags) cflags $@` +CCCMD = `sh $(shellflags) cflags $(perllib) $@` private = -scripts = h2ph +scripts = -manpages = perl.man h2ph.man +manpages = perl.man util = sh = Makefile.SH cflags.SH embed_h.SH makedepend.SH makedir.SH writemain.SH -h1 = EXTERN.h INTERN.h av.h cop.h config.h embed.h form.h handy.h -h2 = hv.h op.h opcode.h perl.h regcomp.h regexp.h gv.h sv.h util.h - h1 = EXTERN.h INTERN.h XSUB.h av.h config.h cop.h cv.h dosish.h -h2 = embed.h form.h gv.h handy.h hv.h hvdbm.h keywords.h mg.h op.h +h2 = embed.h form.h gv.h handy.h hv.h keywords.h mg.h op.h h3 = opcode.h patchlevel.h perl.h perly.h pp.h proto.h regcomp.h h4 = regexp.h scope.h sv.h unixish.h util.h h = $(h1) $(h2) $(h3) $(h4) -c1 = av.c scope.c op.c doop.c doio.c dump.c hv.c -c2 = $(mallocsrc) mg.c perly.c pp.c regcomp.c regexec.c +c1 = $(mallocsrc) av.c scope.c op.c doop.c doio.c dump.c hv.c mg.c +c2 = perl.c perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c c3 = gv.c sv.c taint.c toke.c util.c deb.c run.c -c = $(c1) $(c2) $(c3) $(dlsrc) miniperlmain.c perlmain.c - -s1 = av.c scope.c op.c doop.c doio.c dump.c hv.c -s2 = $(mallocsrc) mg.c perly.c pp.c regcomp.c regexec.c -s3 = gv.c sv.c taint.c toke.c util.c deb.c run.c perly.c - -saber = $(s1) $(s2) $(s3) $(dlsrc) +c = $(c1) $(c2) $(c3) miniperlmain.c perlmain.c -obj1 = av.o scope.o op.o doop.o doio.o dump.o hv.o -obj2 = $(mallocobj) mg.o perly.o pp.o regcomp.o regexec.o -obj3 = gv.o sv.o taint.o toke.o util.o deb.o run.o +obj1 = $(mallocobj) gv.o toke.o perly.o op.o regcomp.o dump.o util.o mg.o +obj2 = hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o +obj3 = doop.o doio.o regexec.o taint.o deb.o obj = $(obj1) $(obj2) $(obj3) +# Once perl has been Configure'd and built ok you build different +# perl variants (Debugging, Embedded, Multiplicity etc) by saying: +# make clean; make perllib=libperl<type>.a +# where <type> is some combination of 'd' and(or) 'e' or 'm'. +# See cflags to understand how this works. +# +# Eventually some form of 'make-a-perl' script will automate this +# together with linking a perl executable with any desired +# static modules. +perllib = libperl.a + lintflags = -hbvxac -addedbyconf = Makefile.old bsd eunice filexp loc pdp11 usg v7 +addedbyconf = UU # grrr SHELL = /bin/sh @@ -158,142 +155,55 @@ SHELL = /bin/sh .c.o: $(CCCMD) $*.c -all: miniperl perl lib/Config.pm - -#all: $(public) $(private) $(util) $(scripts) -# cd x2p; $(MAKE) all -# touch all +all: makefile miniperl preplibrary $(public) $(dynamic_ext) + @echo " "; echo " Making x2p stuff"; cd x2p; $(MAKE) all + @echo " "; echo " Making docs"; cd pod; $(MAKE) all; # Phony target to force checking subdirectories. FORCE: !NO!SUBS! -### Some makes have problems with the following dependency -### if $(dlsrc) or $(dlobj) is empty. -### Therefore, comment it out if dlsrc is null. -### -$spitshell >>Makefile <<!GROK!THIS! -${comment} -${comment}\$(dlsrc): \$(dldir)/\$(dlsrc) -${comment} cp \$(dldir)/\$(dlsrc) \$(dlsrc) - -${comment}\$(dlobj): \$(dlsrc) -${comment} \$(CCCMD) \$(dlsrc) - -!GROK!THIS! - -### -### Boilerplate for all the .xs files in the ext directory. -### XXX FIXME: At some point we also need to copy .pm files out of -### XXX the ext directory into lib. -### XXX FIXME: At some point we need to run autosplit on the .pm -### XXX files. -### Configure sets extensions to a string like -### "ext/dbm/NDBM_File.xs ext/dbm/ODBM_File.xs ext/dbm/GDBM_File.xs \ -### ext/dbm/SDBM_File.xs ext/posix/POSIX.xs" -ext=" " -extdep=" " -extobj=" " -extsrc=" " -# extradep gives any extra dependencies of this extension. -# extraobj gives any extra thinks to link with this extension. -for f in $extensions -do - base=`echo $f | $sed -e 's@.*/\(.*\).xs@\1@'` - ext="$ext $base" - extsrc="$extsrc $base.c" - case $base in - SDBM_File) extradep="ext/dbm/sdbm/libsdbm.a" - extraobj="ext/dbm/sdbm/libsdbm.a" ;; - POSIX) extradep="" - extraobj="-lm" ;; - *) extradep="" - extraobj="" ;; - esac - case "$usedl" in - define) extdep="$extdep lib/auto/$base/${base}\$(SHLIBSUFFIX)" - ;; - *) extdep="$extdep $base.o $extradep" - extobj="$extobj $base.o $extraobj" ;; - esac - - $spitshell >>Makefile <<!GROK!THIS! - -# $base extension -$base.o: $base.c - \$(CCCMD) \$(CCCDLFLAGS) \$*.c - -$base.c: $f ext/xsubpp ext/typemap - test -f miniperl || make miniperl - ./miniperl ext/xsubpp $f >tmp - mv tmp $base.c - -${comment}lib/auto/$base/$base\$(SHLIBSUFFIX): $base.o $extradep -${comment} test -d lib/auto/$base || mkdir lib/auto/$base -${comment} ld \$(LDDLFLAGS) -o \$@ $base.o $extraobj -!GROK!THIS! - -done - -$spitshell >>Makefile <<!GROK!THIS! - -# List of extensions (used by writemain) to generate perlmain.c -ext=$ext -extsrc=$extsrc -# Extension dependencies. -extdep=$extdep -# How to include extensions in linking command -extobj=$extobj - -ext/dbm/sdbm/libsdbm.a: ext/dbm/sdbm/sdbm.h ext/dbm/sdbm/sdbm.c - cd ext/dbm/sdbm; \$(MAKE) -f Makefile libsdbm.a - -!GROK!THIS! - -### Now on to the rest of the Makefile. +: Now on to the rest of the Makefile. $spitshell >>Makefile <<'!NO!SUBS!' # The $& notation tells Sequent machines that it can do a parallel make, # and is harmless otherwise. -miniperl: $& miniperlmain.o perl.o $(obj) - $(CC) $(LARGE) $(CLDFLAGS) -o miniperl miniperlmain.o perl.o $(obj) $(libs) +miniperl: $& miniperlmain.o $(perllib) + $(CC) $(LARGE) $(CLDFLAGS) -o miniperl miniperlmain.o $(perllib) $(libs) -perlmain.c: miniperlmain.c - sh writemain $(ext) > perlmain.c +perlmain.c: miniperlmain.c config.sh makefile $(static_ext_autoinit) + sh writemain $(DYNALOADER) $(static_ext) > tmp + sh mv-if-diff tmp perlmain.c perlmain.o: perlmain.c -perl: $& perlmain.o perl.o $(obj) $(dlobj) $(extdep) - $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o perl perlmain.o perl.o $(obj) $(dlobj) $(extobj) $(libs) +# The file ext.libs is a list of libraries that must be linked in +# for static extensions, e.g. -lm -lgdbm, etc. The individual +# static extension Makefile's add to it. +ext.libs: $(static_ext) + -@test -f ext.libs || touch ext.libs -pureperl: $& perlmain.o perl.o $(obj) $(dlobj) $(extdep) - purify $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o pureperl perlmain.o perl.o $(obj) $(dlobj) $(extobj) $(libs) +perl: $& perlmain.o $(perllib) $(DYNALOADER) $(static_ext) ext.libs + $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o perl perlmain.o $(perllib) $(DYNALOADER) $(static_ext) `cat ext.libs` $(libs) -quantperl: $& perlmain.o perl.o $(obj) $(dlobj) $(extdep) - quantify $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o quantperl perlmain.o perl.o $(obj) $(dlobj) $(extobj) $(libs) +pureperl: $& perlmain.o $(perllib) $(DYNALOADER) $(static_ext) ext.libs + purify $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o pureperl perlmain.o $(perllib) $(DYNALOADER) $(static_ext) `cat ext.libs` $(libs) -libperl.rlb: libperl.a - $(ranlib) libperl.a - touch libperl.rlb +quantperl: $& perlmain.o $(perllib) $(DYNALOADER) $(static_ext) ext.libs + quantify $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o quantperl perlmain.o $(perllib) $(DYNALOADER) $(static_ext) `cat ext.libs` $(libs) -libperl.a: $& perl.o $(obj) - ar rcuv libperl.a $(obj) +$(perllib): $& perl.o $(obj) + ar rcu $(perllib) perl.o $(obj) + @$(ranlib) $(perllib) # This version, if specified in Configure, does ONLY those scripts which need # set-id emulation. Suidperl must be setuid root. It contains the "taint" # checks as well as the special code to validate that the script in question # has been invoked correctly. -suidperl: $& sperl.o perlmain.o libperl.rlb - $(CC) $(LARGE) $(CLDFLAGS) sperl.o perlmain.o libperl.a $(libs) -o suidperl - -lib/Config.pm: config.sh miniperl - ./miniperl configpm - -saber: $(saber) - # load $(saber) - # load /lib/libm.a +suidperl: $& sperl.o perlmain.o $(perllib) $(DYNALOADER) $(static_ext) ext.libs + $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o suidperl perlmain.o sperl.o $(perllib) $(DYNALOADER) $(static_ext) `cat ext.libs` $(libs) sperl.o: perl.c perly.h patchlevel.h $(h) $(RMS) sperl.c @@ -301,46 +211,109 @@ sperl.o: perl.c perly.h patchlevel.h $(h) $(CCCMD) -DIAMSUID sperl.c $(RMS) sperl.c -perly.h: perly.c - @ echo Dummy dependency for dumb parallel make - touch perly.h - opcode.h: opcode.pl - perl opcode.pl embed.h: embed_h.SH global.sym interp.sym sh embed_h.SH -perly.c: - @ echo 'Expect' 80 shift/reduce and 62 reduce/reduce conflicts - $(BYACC) -d perly.y - sh $(shellflags) ./perly.fixer y.tab.c perly.c - mv y.tab.h perly.h - echo 'extern YYSTYPE yylval;' >>perly.h +preplibrary: miniperl lib/Config.pm + @test -d lib/auto || mkdir lib/auto + @echo " AutoSplitting perl library" + @./miniperl -Ilib -e 'use AutoSplit; \ + autosplit_lib_modules(@ARGV)' lib/*.pm lib/*/*.pm -perly.o: perly.c perly.h $(h) - $(CCCMD) perly.c +lib/Config.pm: config.sh miniperl + ./miniperl configpm install: all ./perl installperl +!NO!SUBS! + +: Only print out the rules for running byacc if the user _has_ byacc. +: Otherwise, comment them out. Users who really know what they are +: doing can uncomment them and run yacc or bison or whatever. +: Configure sets byacc=byacc if byacc is not found. +case "$byacc" in +''|'byacc') + comment1='#' + comment2='' ;; +*) comment1='' + comment2='#' ;; +esac + +$spitshell >>Makefile <<!GROK!THIS! + +perly.h: perly.c + @ echo Dummy dependency for dumb parallel make + touch perly.h + +# I now supply perly.c with the kits, so the following section is +# commented out if you don't have byacc. + +${comment1}perly.c: perly.y perly.c.diff +${comment1} @ echo 'Expect' 109 shift/reduce and 1 reduce/reduce conflict +${comment1} \$(BYACC) -d perly.y +${comment1} sh \$(shellflags) ./perly.fixer y.tab.c perly.c +${comment1} mv y.tab.h perly.h +${comment1} echo 'extern YYSTYPE yylval;' >>perly.h + +# This version is used only if you do not have byacc. +${comment2}perly.c: perly.y +${comment2} touch perly.c + +!GROK!THIS! + +$spitshell >>Makefile <<'!NO!SUBS!' +# Extensions: +# Names added to $(dynamic_ext) or $(static_ext) will automatically +# get built. There should ordinarily be no need to change any of +# this part of makefile. +# +# The dummy dependency is a place holder in case $(dynamic_ext) or +# $(static_ext) is empty. +# +# DynaLoader may be needed for extensions that use Makefile.PL. + +$(DYNALOADER): miniperl preplibrary FORCE + @sh ext/util/make_ext static $@ + +d_dummy $(dynamic_ext): miniperl preplibrary $(DYNALOADER) FORCE + @sh ext/util/make_ext dynamic $@ + +s_dummy $(static_ext): miniperl preplibrary $(DYNALOADER) FORCE + @sh ext/util/make_ext static $@ clean: - rm -f *.o all perl miniperl - rm -f POSIX.c ?DBM_File.c perlmain.c - rm -f ext/dbm/sdbm/libsdbm.a - cd ext/dbm/sdbm; $(MAKE) -f Makefile clean - cd x2p; $(MAKE) clean + rm -f *.o *.a all perl suidperl miniperl + rm -f perlmain.c + rm -f perl.exp ext.libs ext/util/extlibist + -cd x2p; $(MAKE) clean + -cd pod; $(MAKE) clean + -@for x in ext/* ; do \ + if test -f $$x/Makefile; then \ + echo " Making clean in $$x"; \ + cd $$x; $(MAKE) clean ; cd ../.. ; \ + fi ; \ + done realclean: clean - cd x2p; $(MAKE) realclean - cd ext/dbm/sdbm; $(MAKE) -f Makefile realclean - rm -f *.orig */*.orig *~ */*~ core $(addedbyconf) h2ph h2ph.man - rm -f Makefile cflags embed_h makedepend makedir writemain - rm -f config.h t/perl makefile makefile.old cflags - rm -rf lib/auto/?DBM_File lib/auto/POSIX + -cd x2p; $(MAKE) realclean + -@for x in ext/* ; do \ + if test -f $$x/Makefile; then \ + echo " Making realclean in $$x"; \ + cd $$x; $(MAKE) realclean ; cd ../.. ; \ + fi ; \ + done + rm -f *.orig */*.orig *~ */*~ core t/core + rm -rf $(addedbyconf) + rm -f Makefile cflags makedepend makedir writemain + rm -f config.h t/perl makefile makefile.old rm -f x2p/Makefile x2p/makefile x2p/makefile.old x2p/cflags rm -f lib/Config.pm - rm -f c2ph pstruct + rm -rf lib/auto + rm -f h2ph h2ph.man c2ph pstruct + rm -rf .config # The following lint has practically everything turned on. Unfortunately, # you have to wade through a lot of mumbo jumbo that can't be suppressed. @@ -350,13 +323,18 @@ realclean: clean lint: perly.c $(c) lint $(lintflags) $(defs) perly.c $(c) > perl.fuzz +makefile: Makefile + make depend + +# When done, touch perlmain.c so that it doesn't get remade each time. depend: makedepend - test -f perly.h || cp /dev/null perly.h ./makedepend - test -s perly.h || /bin/rm -f perly.h + - test -s perlmain.c && touch perlmain.c cd x2p; $(MAKE) depend -test: perl lib/Config.pm +test: miniperl perl preplibrary $(dynamic_ext) - cd t && chmod +x TEST */*.t - cd t && (rm -f perl; $(LNS) ../perl perl) && ./perl TEST </dev/tty @@ -381,3 +359,5 @@ case `pwd` in ;; esac rm -f makefile + + |