# # # $Header: Make.vms 1.3 83/04/26 14:22:20 sklower 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.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