|
|
BSD 4.3
#
#
# $Header: /var/lib/cvsd/repos/CSRG/43BSD/ucb/lisp/franz/vax/Make.vms,v 1.1.1.1 2018/04/24 16:12:55 root Exp $
#
# $Locker: $
# Franz Lisp C coded kernel
#
#-- Default Paths:
# see ../../ReadMe for a explaination of what LibDir and CopyTo mean
# D is the directory used for holding intermediate files during
# compilation
#-- Options:
# there is one compile time options which can be set in this file
# * do profiling (ala the unix prof(1) command)
#
# The selection of this options is made below
# Other options can be selected by editing h/config.h or via
# ../../lispconf
#
AS = vmsas # Generate VMS object files
LibDir = /usr/lib/lisp
ObjDir = /usr/ucb
CopyTo = /dev/null
Liszt = liszt
Lisp = lisp
# if you change this you must recompile rlc.c
# (and change the value in ../Makefile)
#
HOLE=2097152
.DEFAULT: nlisp
MipSrc1= ../low.c ../lowaux.s
MipSrc2= ../alloc.c ../data.c
MipSrc3= ../rlc.c
MipSrc4= ../lisp.c ../eval.c ../eval2.c ../inits.c ../io.c ../error.c \
../sysat.c ../lam1.c ../lam2.c ../lam3.c ../lam4.c ../lam5.c\
../lam6.c ../lam7.c ../lam8.c ../lam9.c ../lamr.c ../lamp.c \
../fex1.c ../fex2.c ../fex3.c ../fex4.c ../fexr.c\
../fpipe.c \
../subbig.c ../pbignum.c ../divbig.c \
../ffasl.c ../fasl.c \
../trace.c ../evalf.c ../frame.c ../lamgc.c
MipSrc = ${MipSrc1} ${MipSrc2} ${MipSrc3} ${MipSrc4}
MipObj1= ../low.o ../lowaux.o
MipObj2= ../alloc.o ../data.o
HoleMipObj2 = ../Salloc.o ../Sdata.o
HoleMipObj3 = ../rlc.o
MipObj4= ../lisp.o ../eval.o ../eval2.o ../inits.o ../io.o ../error.o \
../sysat.o ../lam1.o ../lam2.o ../lam3.o ../lam4.o ../lam5.o\
../lam6.o ../lam7.o ../lam8.o ../lam9.o ../lamr.o ../lamp.o \
../fex1.o ../fex2.o ../fex3.o ../fex4.o ../fexr.o\
../fpipe.o \
../subbig.o ../pbignum.o ../divbig.o \
../ffasl.o ../fasl.o \
../trace.o ../evalf.o ../frame.o ../lamgc.o
# this list must contain all the include files, not just those used
# in the vax version. The include filenames are relative to ..
#
Includes = h/config.h h/global.h h/oaout.h h/vaxframe.h \
h/catchfram.h h/dfuncs.h h/gtabs.h h/sigtab.h \
h/chars.h h/frame.h h/lfuncs.h h/structs.h \
h/chkrtab.h h/gc.h h/naout.h h/types.h \
h/lconf.h h/ltypes.h
#------ Options
#--- profiling selection
# If the lisp system is to run with profiling, this must be done:
# 1) remove the # (comment character) from the ProfFlag and
# ProfFlag2 definitions below (also do it in ../Makefile)
# 2) remove all .o files and do a make.
#
ProfFlag = # -XP
ProfFlag2 = # -DPROF
# The order of loading of certain files is important.
# low.o must be first and lowaux second.
#
BottomObj = ${MipObj1}
# Different objects are required depending on whether there is to be
# a hole between text and data space.
#
NoHoleObj = ${MipObj2}
HoleObj = hole.obj ${HoleMipObj2} ${HoleMipObj3}
VaxObj = bigmath.o qfuncl.o vax.o prealloc.o
VaxSrc = bigmath.c qfuncl.c vax.c crt0.s hcrt0.s
# AllSrc does not (and should not) include ${Includes}
AllSrc = Makefile fixmask.c fixpbig.e ${VaxSrc} ${MipSrc}
.SUFFIXES : .c.l
#
# use temporary files rather than pipes to keep the number of procs. down
# thus, users with low process quotas on VMS can still build lisp
#
.c.o :
@csh -cfe "echo cc -c $*.c;\
rm -f $*.o;\
/lib/cpp $< -I../h > $*.tm0;\
/lib/ccom ${ProfFlag} $*.tm0 $*.tm1;\
fixmask <$*.tm1 >$*.tm2;\
sed -f fixpbig.e <$*.tm2 >$*.tm3;\
/lib/c2 $*.tm3 >$*.tms;\
${AS} -o $*.o $*.tms;\
rm $*.tms $*.tm0 $*.tm1 $*.tm2 $*.tm3"
.l.o :
liszt $< > #resc
@echo liszt $< done
# one special case:
# add -DPROF if you want to profile the assembler code
# EXPLICITLY USE "unixcpp" SO THAT "$"s IN ASSEMBLER CODE WORK!
qfuncl.o: qfuncl.c
/lib/unixcpp -I../h ${ProfFlag2} qfuncl.c | ${AS} -o qfuncl.o
bigmath.o: bigmath.c
/lib/unixcpp -I../h ${ProfFlag2} bigmath.c | ${AS} -o bigmath.o
../rlc.o: ../rlc.c
cc -S -O -DHOLE=${HOLE} ../rlc.c
${AS} -o rlc.o rlc.s
rm rlc.s
mv rlc.o ../rlc.o
../low.o: ../low.c
cc -I../h -R -S ../low.c
${AS} -R -o low.o low.s
rm low.s
mv low.o ../low.o
../Salloc.o: ../alloc.c
(echo "# define HOLE"; cat ../alloc.c) > Salloc.c;\
make Salloc.o; mv Salloc.o .. < /dev/null ; rm Salloc.c
../Sdata.o: ../data.c
(echo "# define HOLE=${HOLE}"; cat ../data.c) > Sdata.c;\
make Sdata.o; mv Sdata.o .. < /dev/null ; rm Sdata.c
fixmask: fixmask.c
cc -O -o fixmask fixmask.c
# rawlisp is the standard raw lisp system.
rawlisp: fixmask fixpbig.e rawlisp.com \
${BottomObj} ${NoHoleObj} ${MipObj4} ${VaxObj}
rm -f rawlisp
vms @rawlisp.com
ls -l rawlisp
# hlisp is a raw lisp system with a hole between text and data
rawhlisp: fixmask fixpbig.e rawhlisp.com \
${BottomObj} ${HoleObj} ${MipObj4} ${VaxObj}
rm -f rawhlisp
vms @rawhlisp.com ${HOLE}
ls -l rawhlisp
clean:
rm -f *.o
lint:
lint h/*.h *.c
install: nlisp
-rm -f ${ObjDir}/lisp
mv nlisp ${ObjDir}/lisp
@echo lisp installed
nlisp: rawlisp ${LibDir}
-rm -f nlisp
(cd ${LibDir} ; make Liszt=${Liszt} required)
echo "(progn (setq build:map 'map \
build:lisp-type 'franz \
lisp-library-directory '${LibDir} \
build:dir '${LibDir} \
lisp-object-directory '${ObjDir}) \
(load '${LibDir}/buildlisp)\
(dumplisp nlisp))" | rawlisp
${LibDir}/tackon map nlisp
@echo nlisp built
donlisp:
-rm -f nlisp
make LibDir=${LibDir} Liszt=${Liszt} ObjDir=${ObjDir} nlisp
#--- snlisp: create a totally interpreted lisp.
# dump as snlisp
snlisp: rawlisp
echo "(progn (setq build:load t \
build:lisp-type 'franz \
build:dir '${LibDir} \
lisp-object-directory '${ObjDir}\
lisp-library-directory '${LibDir})\
(load '${LibDir}/buildlisp)\
(dumplisp snlisp))" | rawlisp
tags:
ctags $(VaxSrc) ${MipSrc}
#--- copysource : copy source files to another directory
# called via make CopyTo=/xx/yyy/zz copysource
#
copysource: ${AllSrc}
(tar cf - ${AllSrc} | (cd ${CopyTo} ; tar xf -))
copyobjects: ${AllObj}
(tar cf - ${AllObj} | (cd ${CopyTo} ; tar xf -))
scriptcatall: ${AllSrc}
@../../scriptcat . franz/vax ${AllSrc}
@../../scriptcat .. franz ${Includes}
#--- prealloc.o: the "C" runtime startup for EUNICE with data structure
# preallocation and restart capabilities
# NFILES - # file descriptors of data structure to allocate
# RESTART - allow restart from saved image
#
prealloc.o: Makefile
/lib/cpp -DNFILES=20 -DRESTART /usr/include/eunice/prealloc.c prealloc.tm0
/lib/ccom prealloc.tm0 prealloc.tm1
/lib/c2 prealloc.tm1 prealloc.tm2
sed -f /usr/include/eunice/sedfixup.e <prealloc.tm2 >prealloc.tm3
${AS} -o prealloc.o prealloc.tm3
rm prealloc.tm0 prealloc.tm1 prealloc.tm2 prealloc.tm3
rawlisp.com: rawlisp.unx totxtfile
totxtfile rawlisp.unx rawlisp.com
rawhlisp.com: rawhlisp.unx totxtfile
totxtfile rawhlisp.unx rawhlisp.com
hole.obj: hole.unx totxtfile
sed "s/%d/${HOLE}/" < hole.unx | totxtfile hole.mar
vms macro/nolist hole.mar
totxtfile: totxtfile.c
cc -O totxtfile.c -o totxtfile
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.