summaryrefslogtreecommitdiff
path: root/Makefile.SH
diff options
context:
space:
mode:
authorLarry Wall <larry@wall.org>1989-10-18 00:00:00 +0000
committerLarry Wall <larry@wall.org>1989-10-18 00:00:00 +0000
commita687059cbaf2c6fdccb5e0fae2aee80ec15625a8 (patch)
tree674c8533b7bd942204f23782934c72f8624dd308 /Makefile.SH
parent13281fa4f8547e0eb31d1986b865d9b7ec7d0dcc (diff)
downloadperl-a687059cbaf2c6fdccb5e0fae2aee80ec15625a8.tar.gz
perl 3.0: (no announcement message available)perl-3.000
A few of the new features: (18 Oct) * Perl can now handle binary data correctly and has functions to pack and unpack binary structures into arrays or lists. You can now do arbitrary ioctl functions. * You can now pass things to subroutines by reference. * Debugger enhancements. * An array or associative array may now appear in a local() list. * Array values may now be interpolated into strings. * Subroutine names are now distinguished by prefixing with &. You can call subroutines without using do, and without passing any argument list at all. * You can use the new -u switch to cause perl to dump core so that you can run undump and produce a binary executable image. Alternately you can use the "dump" operator after initializing any variables and such. * You can now chop lists. * Perl now uses /bin/csh to do filename globbing, if available. This means that filenames with spaces or other strangenesses work right. * New functions: mkdir and rmdir, getppid, getpgrp and setpgrp, getpriority and setpriority, chroot, ioctl and fcntl, flock, readlink, lstat, rindex, pack and unpack, read, warn, dbmopen and dbmclose, dump, reverse, defined, undef.
Diffstat (limited to 'Makefile.SH')
-rw-r--r--Makefile.SH244
1 files changed, 190 insertions, 54 deletions
diff --git a/Makefile.SH b/Makefile.SH
index 931a3af78c..6e66a4c7ed 100644
--- a/Makefile.SH
+++ b/Makefile.SH
@@ -25,24 +25,19 @@ esac
echo "Extracting Makefile (with variable substitutions)"
cat >Makefile <<!GROK!THIS!
-# $Header: Makefile.SH,v 2.0.1.1 88/06/28 16:26:04 root Exp $
+# $Header: Makefile.SH,v 3.0 89/10/18 15:06:43 lwall Locked $
#
# $Log: Makefile.SH,v $
-# Revision 2.0.1.1 88/06/28 16:26:04 root
-# patch1: support for DOSUID
-# patch1: realclean now knows about ~ extension
-#
-# Revision 2.0 88/06/05 00:07:54 root
-# Baseline version 2.0.
-#
+# Revision 3.0 89/10/18 15:06:43 lwall
+# 3.0 baseline
#
CC = $cc
bin = $bin
-lib = $privlib
+privlib = $privlib
mansrc = $mansrc
manext = $manext
-CFLAGS = $ccflags -O
+CFLAGS = $ccflags $optimize $sockethdr
LDFLAGS = $ldflags
SMALL = $small
LARGE = $large $split
@@ -50,37 +45,47 @@ mallocsrc = $mallocsrc
mallocobj = $mallocobj
SLN = $sln
-libs = $libnm -lm
+libs = $libnm -lm $libdbm $libs $libndir $socketlib
-public = perl perldb $suidperl
+public = perl taintperl $suidperl
!GROK!THIS!
cat >>Makefile <<'!NO!SUBS!'
private =
-manpages = perl.man perldb.man
+MAKE = make
+
+manpages = perl.man
util =
sh = Makefile.SH makedepend.SH
h1 = EXTERN.h INTERN.h arg.h array.h cmd.h config.h form.h handy.h
-h2 = hash.h perl.h regexp.h spat.h stab.h str.h util.h
+h2 = hash.h perl.h regcomp.h regexp.h spat.h stab.h str.h util.h
h = $(h1) $(h2)
-c1 = arg.c array.c cmd.c dump.c eval.c form.c hash.c $(mallocsrc)
-c2 = perly.c regexp.c stab.c str.c toke.c util.c version.c
+c1 = array.c cmd.c cons.c consarg.c doarg.c doio.c dolist.c dump.c
+c2 = eval.c form.c hash.c $(mallocsrc) perly.c regcomp.c regexec.c
+c3 = stab.c str.c toke.c util.c
+
+c = $(c1) $(c2) $(c3)
+
+obj1 = array.o cmd.o cons.o consarg.o doarg.o doio.o dolist.o dump.o
+obj2 = eval.o form.o hash.o $(mallocobj) perly.o regcomp.o regexec.o
+obj3 = stab.o str.o toke.o util.o
-c = $(c1) $(c2)
+obj = $(obj1) $(obj2) $(obj3)
-obj1 = arg.o array.o cmd.o dump.o eval.o form.o hash.o $(mallocobj)
-obj2 = regexp.o stab.o str.o toke.o util.o version.o
+tobj1 = tarray.o tcmd.o tcons.o tconsarg.o tdoarg.o tdoio.o tdolist.o tdump.o
+tobj2 = teval.o tform.o thash.o $(mallocobj) tregcomp.o tregexec.o
+tobj3 = tstab.o tstr.o ttoke.o tutil.o
-obj = $(obj1) $(obj2)
+tobj = $(tobj1) $(tobj2) $(tobj3)
-lintflags = -phbvxac
+lintflags = -hbvxac
addedbyconf = Makefile.old bsd eunice filexp loc pdp11 usg v7
@@ -90,57 +95,183 @@ SHELL = /bin/sh
.c.o:
$(CC) -c $(CFLAGS) $(LARGE) $*.c
-all: $(public) $(private) $(util)
+all: $(public) $(private) $(util) perl.man x2p/all
touch all
-perl: perly.o $(obj) perl.o
- $(CC) $(LDFLAGS) $(LARGE) perly.o $(obj) perl.o $(libs) -o perl
+x2p/all:
+ cd x2p; $(MAKE) all
-!NO!SUBS!
+# This is the standard version that contains no "taint" checks and is
+# used for all scripts that aren't set-id or running under something set-id.
-case "$d_dosuid" in
-*define*)
- cat >>Makefile <<'!NO!SUBS!'
+perl: perl.o $(obj)
+ $(CC) $(LARGE) $(LDFLAGS) $(obj) perl.o $(libs) -o perl
+
+# 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: sperly.o $(obj) perl.o
- $(CC) $(LDFLAGS) $(LARGE) sperly.o $(obj) perl.o $(libs) -o suidperl
+suidperl: tperl.o sperly.o $(tobj)
+ $(CC) $(LARGE) $(LDFLAGS) sperly.o $(tobj) tperl.o $(libs) -o suidperl
-sperly.o: perly.c
+# This version interprets scripts that are already set-id either via a wrapper
+# or through the kernel allowing set-id scripts (bad idea). Taintperl must
+# NOT be setuid to root or anything else. The only difference between it
+# and normal perl is the presence of the "taint" checks.
+
+taintperl: tperl.o tperly.o $(tobj)
+ $(CC) $(LARGE) $(LDFLAGS) tperly.o $(tobj) tperl.o $(libs) -o taintperl
+
+# Replicating all this junk is yucky, but I don't see a portable way to fix it.
+
+tperl.o: perl.c perly.h perl.h EXTERN.h regexp.h util.h INTERN.h handy.h \
+ config.h stab.h
+ /bin/rm -f tperl.c
+ $(SLN) perl.c tperl.c
+ $(CC) -c -DTAINT $(CFLAGS) $(LARGE) tperl.c
+ /bin/rm -f tperl.c
+
+tperly.o: perly.c
+ /bin/rm -f tperly.c
+ $(SLN) perly.c tperly.c
+ $(CC) -c -DTAINT $(CFLAGS) $(LARGE) tperly.c
+ /bin/rm -f tperly.c
+
+sperly.o: perly.c perl.h handy.h perly.h patchlevel.h
/bin/rm -f sperly.c
- ln perly.c sperly.c
- $(CC) -c -DIAMSUID $(CFLAGS) $(LARGE) sperly.c
+ $(SLN) perly.c sperly.c
+ $(CC) -c -DTAINT -DIAMSUID $(CFLAGS) $(LARGE) sperly.c
/bin/rm -f sperly.c
-!NO!SUBS!
- ;;
-esac
-cat >>Makefile <<'!NO!SUBS!'
+tarray.o: array.c
+ /bin/rm -f tarray.c
+ $(SLN) array.c tarray.c
+ $(CC) -c -DTAINT $(CFLAGS) $(LARGE) tarray.c
+ /bin/rm -f tarray.c
+
+tcmd.o: cmd.c
+ /bin/rm -f tcmd.c
+ $(SLN) cmd.c tcmd.c
+ $(CC) -c -DTAINT $(CFLAGS) $(LARGE) tcmd.c
+ /bin/rm -f tcmd.c
+
+tcons.o: cons.c
+ /bin/rm -f tcons.c
+ $(SLN) cons.c tcons.c
+ $(CC) -c -DTAINT $(CFLAGS) $(LARGE) tcons.c
+ /bin/rm -f tcons.c
+
+tconsarg.o: consarg.c
+ /bin/rm -f tconsarg.c
+ $(SLN) consarg.c tconsarg.c
+ $(CC) -c -DTAINT $(CFLAGS) $(LARGE) tconsarg.c
+ /bin/rm -f tconsarg.c
+
+tdoarg.o: doarg.c
+ /bin/rm -f tdoarg.c
+ $(SLN) doarg.c tdoarg.c
+ $(CC) -c -DTAINT $(CFLAGS) $(LARGE) tdoarg.c
+ /bin/rm -f tdoarg.c
+
+tdoio.o: doio.c
+ /bin/rm -f tdoio.c
+ $(SLN) doio.c tdoio.c
+ $(CC) -c -DTAINT $(CFLAGS) $(LARGE) tdoio.c
+ /bin/rm -f tdoio.c
+
+tdolist.o: dolist.c
+ /bin/rm -f tdolist.c
+ $(SLN) dolist.c tdolist.c
+ $(CC) -c -DTAINT $(CFLAGS) $(LARGE) tdolist.c
+ /bin/rm -f tdolist.c
+
+tdump.o: dump.c
+ /bin/rm -f tdump.c
+ $(SLN) dump.c tdump.c
+ $(CC) -c -DTAINT $(CFLAGS) $(LARGE) tdump.c
+ /bin/rm -f tdump.c
+
+teval.o: eval.c
+ /bin/rm -f teval.c
+ $(SLN) eval.c teval.c
+ $(CC) -c -DTAINT $(CFLAGS) $(LARGE) teval.c
+ /bin/rm -f teval.c
+
+tform.o: form.c
+ /bin/rm -f tform.c
+ $(SLN) form.c tform.c
+ $(CC) -c -DTAINT $(CFLAGS) $(LARGE) tform.c
+ /bin/rm -f tform.c
+
+thash.o: hash.c
+ /bin/rm -f thash.c
+ $(SLN) hash.c thash.c
+ $(CC) -c -DTAINT $(CFLAGS) $(LARGE) thash.c
+ /bin/rm -f thash.c
+
+tregcomp.o: regcomp.c
+ /bin/rm -f tregcomp.c
+ $(SLN) regcomp.c tregcomp.c
+ $(CC) -c -DTAINT $(CFLAGS) $(LARGE) tregcomp.c
+ /bin/rm -f tregcomp.c
+
+tregexec.o: regexec.c
+ /bin/rm -f tregexec.c
+ $(SLN) regexec.c tregexec.c
+ $(CC) -c -DTAINT $(CFLAGS) $(LARGE) tregexec.c
+ /bin/rm -f tregexec.c
+
+tstab.o: stab.c
+ /bin/rm -f tstab.c
+ $(SLN) stab.c tstab.c
+ $(CC) -c -DTAINT $(CFLAGS) $(LARGE) tstab.c
+ /bin/rm -f tstab.c
+
+tstr.o: str.c
+ /bin/rm -f tstr.c
+ $(SLN) str.c tstr.c
+ $(CC) -c -DTAINT $(CFLAGS) $(LARGE) tstr.c
+ /bin/rm -f tstr.c
+
+ttoke.o: toke.c
+ /bin/rm -f ttoke.c
+ $(SLN) toke.c ttoke.c
+ $(CC) -c -DTAINT $(CFLAGS) $(LARGE) ttoke.c
+ /bin/rm -f ttoke.c
+
+tutil.o: util.c
+ /bin/rm -f tutil.c
+ $(SLN) util.c tutil.c
+ $(CC) -c -DTAINT $(CFLAGS) $(LARGE) tutil.c
+ /bin/rm -f tutil.c
perl.c perly.h: perl.y
- @ echo Expect 37 shift/reduce errors...
+ @ echo Expect 25 shift/reduce errors...
yacc -d perl.y
mv y.tab.c perl.c
mv y.tab.h perly.h
-perl.o: perl.c perly.h perl.h EXTERN.h regexp.h util.h INTERN.h handy.h config.h
+perl.o: perl.c perly.h perl.h EXTERN.h regexp.h util.h INTERN.h handy.h \
+ config.h arg.h stab.h
$(CC) -c $(CFLAGS) $(LARGE) perl.c
-# if a .h file depends on another .h file...
-$(h):
- touch $@
-
-perl.man: perl.man.1 perl.man.2
- cat perl.man.1 perl.man.2 >perl.man
+perl.man: perl.man.1 perl.man.2 perl.man.3 perl.man.4 patchlevel.h perl
+ ./perl -e '($$r,$$p)=$$]=~/(\d+\.\d+).*\n\D*(\d+)/;' \
+ -e 'print ".ds RP Release $$r Patchlevel $$p\n";' >perl.man
+ cat perl.man.[1-4] >>perl.man
-install: perl perl.man
+install: all
# won't work with csh
export PATH || exit 1
+ - rm -f $(bin)/perl.old $(bin)/suidperl $(bin)/taintperl
- mv $(bin)/perl $(bin)/perl.old 2>/dev/null
- if test `pwd` != $(bin); then cp $(public) $(bin); fi
- cd $(bin); \
for pub in $(public); do \
chmod +x `basename $$pub`; \
done
+ - chmod 755 $(bin)/taintperl 2>/dev/null
!NO!SUBS!
case "$d_dosuid" in
@@ -154,13 +285,12 @@ esac
cat >>Makefile <<'!NO!SUBS!'
- test $(bin) = /usr/bin || rm -f /usr/bin/perl
- test $(bin) = /usr/bin || $(SLN) $(bin)/perl /usr/bin || cp $(bin)/perl /usr/bin
- chmod +x makedir
- - ./makedir $(lib)
+ - sh ./makedir $(privlib)
- \
-if test `pwd` != $(lib); then \
-cp $(private) lib/*.pl $(lib); \
+if test `pwd` != $(privlib); then \
+cp $(private) lib/*.pl $(privlib); \
fi
-# cd $(lib); \
+# cd $(privlib); \
#for priv in $(private); do \
#chmod +x `basename $$priv`; \
#done
@@ -169,12 +299,17 @@ for page in $(manpages); do \
cp $$page $(mansrc)/`basename $$page .man`.$(manext); \
done; \
fi
+ cd x2p; $(MAKE) install
clean:
- rm -f *.o
+ rm -f *.o all perl taintperl perl.man
+ cd x2p; $(MAKE) clean
realclean:
- rm -f perl *.orig */*.orig *~ */*~ *.o core $(addedbyconf)
+ cd x2p; $(MAKE) realclean
+ rm -f perl *.orig */*.orig *~ */*~ *.o core $(addedbyconf) perl.man
+ rm -f perl.c perly.h t/perl Makefile config.h makedepend makedir
+ rm -f x2p/Makefile
# The following lint has practically everything turned on. Unfortunately,
# you have to wade through a lot of mumbo jumbo that can't be suppressed.
@@ -188,9 +323,10 @@ depend: makedepend
- test -f perly.h || cp /dev/null perly.h
./makedepend
- test -s perly.h || /bin/rm -f perly.h
+ cd x2p; $(MAKE) depend
test: perl
- chmod +x t/TEST t/base.* t/comp.* t/cmd.* t/io.* t/op.*
+ - chmod +x t/TEST t/base.* t/comp.* t/cmd.* t/io.* t/op.*; \
cd t && (rm -f perl; $(SLN) ../perl .) && ./perl TEST
clist: