|
|
1.1 root 1: #
2: #
3: # $Header: Make.vms 1.3 83/04/26 14:22:20 sklower Exp $
4: #
5: # $Locker: $
6: # Franz Lisp C coded kernel
7: #
8: #-- Default Paths:
9: # see ../../ReadMe for a explaination of what LibDir and CopyTo mean
10: # D is the directory used for holding intermediate files during
11: # compilation
12: #-- Options:
13: # there is one compile time options which can be set in this file
14: # * do profiling (ala the unix prof(1) command)
15: #
16: # The selection of this options is made below
17: # Other options can be selected by editing h/config.h or via
18: # ../../lispconf
19: #
20: AS = vmsas # Generate VMS object files
21:
22: LibDir = /usr/lib/lisp
23: ObjDir = /usr/ucb
24: CopyTo = /dev/null
25: Liszt = liszt
26: Lisp = lisp
27: # if you change this you must recompile rlc.c
28: # (and change the value in ../Makefile)
29: #
30: HOLE=2097152
31:
32: .DEFAULT: nlisp
33:
34: MipSrc1= ../low.c ../lowaux.s
35: MipSrc2= ../alloc.c ../data.c
36: MipSrc3= ../rlc.c
37: MipSrc4= ../lisp.c ../eval.c ../eval2.c ../inits.c ../io.c ../error.c \
38: ../sysat.c ../lam1.c ../lam2.c ../lam3.c ../lam4.c ../lam5.c\
39: ../lam6.c ../lam7.c ../lam8.c ../lam9.c ../lamr.c ../lamp.c \
40: ../fex1.c ../fex2.c ../fex3.c ../fex4.c ../fexr.c\
41: ../fpipe.c \
42: ../subbig.c ../pbignum.c ../divbig.c \
43: ../ffasl.c ../fasl.c \
44: ../trace.c ../evalf.c ../frame.c ../lamgc.c
45:
46: MipSrc = ${MipSrc1} ${MipSrc2} ${MipSrc3} ${MipSrc4}
47:
48: MipObj1= ../low.o ../lowaux.o
49: MipObj2= ../alloc.o ../data.o
50: HoleMipObj2 = ../Salloc.o ../Sdata.o
51: HoleMipObj3 = ../rlc.o
52: MipObj4= ../lisp.o ../eval.o ../eval2.o ../inits.o ../io.o ../error.o \
53: ../sysat.o ../lam1.o ../lam2.o ../lam3.o ../lam4.o ../lam5.o\
54: ../lam6.o ../lam7.o ../lam8.o ../lam9.o ../lamr.o ../lamp.o \
55: ../fex1.o ../fex2.o ../fex3.o ../fex4.o ../fexr.o\
56: ../fpipe.o \
57: ../subbig.o ../pbignum.o ../divbig.o \
58: ../ffasl.o ../fasl.o \
59: ../trace.o ../evalf.o ../frame.o ../lamgc.o
60:
61: # this list must contain all the include files, not just those used
62: # in the vax version. The include filenames are relative to ..
63: #
64: Includes = h/config.h h/global.h h/oaout.h h/vaxframe.h \
65: h/catchfram.h h/dfuncs.h h/gtabs.h h/sigtab.h \
66: h/chars.h h/frame.h h/lfuncs.h h/structs.h \
67: h/chkrtab.h h/gc.h h/naout.h h/types.h \
68: h/lconf.h h/ltypes.h
69:
70: #------ Options
71:
72: #--- profiling selection
73: # If the lisp system is to run with profiling, this must be done:
74: # 1) remove the # (comment character) from the ProfFlag and
75: # ProfFlag2 definitions below (also do it in ../Makefile)
76: # 2) remove all .o files and do a make.
77: #
78: ProfFlag = # -XP
79: ProfFlag2 = # -DPROF
80:
81:
82: # The order of loading of certain files is important.
83: # low.o must be first and lowaux second.
84: #
85: BottomObj = ${MipObj1}
86:
87: # Different objects are required depending on whether there is to be
88: # a hole between text and data space.
89: #
90: NoHoleObj = ${MipObj2}
91: HoleObj = hole.obj ${HoleMipObj2} ${HoleMipObj3}
92:
93: VaxObj = bigmath.o qfuncl.o vax.o prealloc.o
94:
95: VaxSrc = bigmath.c qfuncl.c vax.c crt0.s hcrt0.s
96:
97: # AllSrc does not (and should not) include ${Includes}
98:
99: AllSrc = Makefile fixmask.c fixpbig.e ${VaxSrc} ${MipSrc}
100:
101:
102: .SUFFIXES : .c.l
103: #
104: # use temporary files rather than pipes to keep the number of procs. down
105: # thus, users with low process quotas on VMS can still build lisp
106: #
107: .c.o :
108: @csh -cfe "echo cc -c $*.c;\
109: rm -f $*.o;\
110: /lib/cpp $< -I../h > $*.tm0;\
111: /lib/ccom ${ProfFlag} $*.tm0 $*.tm1;\
112: fixmask <$*.tm1 >$*.tm2;\
113: sed -f fixpbig.e <$*.tm2 >$*.tm3;\
114: /lib/c2 $*.tm3 >$*.tms;\
115: ${AS} -o $*.o $*.tms;\
116: rm $*.tms $*.tm0 $*.tm1 $*.tm2 $*.tm3"
117:
118: .l.o :
119: liszt $< > #resc
120: @echo liszt $< done
121:
122: # one special case:
123: # add -DPROF if you want to profile the assembler code
124:
125: # EXPLICITLY USE "unixcpp" SO THAT "$"s IN ASSEMBLER CODE WORK!
126: qfuncl.o: qfuncl.c
127: /lib/unixcpp -I../h ${ProfFlag2} qfuncl.c | ${AS} -o qfuncl.o
128:
129: bigmath.o: bigmath.c
130: /lib/unixcpp -I../h ${ProfFlag2} bigmath.c | ${AS} -o bigmath.o
131:
132: ../rlc.o: ../rlc.c
133: cc -S -O -DHOLE=${HOLE} ../rlc.c
134: ${AS} -o rlc.o rlc.s
135: rm rlc.s
136: mv rlc.o ../rlc.o
137:
138: ../low.o: ../low.c
139: cc -I../h -R -S ../low.c
140: ${AS} -R -o low.o low.s
141: rm low.s
142: mv low.o ../low.o
143:
144: ../Salloc.o: ../alloc.c
145: (echo "# define HOLE"; cat ../alloc.c) > Salloc.c;\
146: make Salloc.o; mv Salloc.o .. < /dev/null ; rm Salloc.c
147:
148: ../Sdata.o: ../data.c
149: (echo "# define HOLE=${HOLE}"; cat ../data.c) > Sdata.c;\
150: make Sdata.o; mv Sdata.o .. < /dev/null ; rm Sdata.c
151:
152: fixmask: fixmask.c
153: cc -O -o fixmask fixmask.c
154:
155: # rawlisp is the standard raw lisp system.
156:
157: rawlisp: fixmask fixpbig.e rawlisp.com \
158: ${BottomObj} ${NoHoleObj} ${MipObj4} ${VaxObj}
159: rm -f rawlisp
160: vms @rawlisp.com
161: ls -l rawlisp
162:
163:
164: # hlisp is a raw lisp system with a hole between text and data
165:
166: rawhlisp: fixmask fixpbig.e rawhlisp.com \
167: ${BottomObj} ${HoleObj} ${MipObj4} ${VaxObj}
168: rm -f rawhlisp
169: vms @rawhlisp.com ${HOLE}
170: ls -l rawhlisp
171:
172:
173: clean:
174: rm -f *.o
175:
176: lint:
177: lint h/*.h *.c
178:
179: install: nlisp
180: -rm -f ${ObjDir}/lisp
181: mv nlisp ${ObjDir}/lisp
182: @echo lisp installed
183:
184: nlisp: rawlisp ${LibDir}
185: -rm -f nlisp
186: (cd ${LibDir} ; make Liszt=${Liszt} required)
187: echo "(progn (setq build:map 'map \
188: build:lisp-type 'franz \
189: lisp-library-directory '${LibDir} \
190: build:dir '${LibDir} \
191: lisp-object-directory '${ObjDir}) \
192: (load '${LibDir}/buildlisp)\
193: (dumplisp nlisp))" | rawlisp
194: ${LibDir}/tackon map nlisp
195: @echo nlisp built
196:
197:
198: donlisp:
199: -rm -f nlisp
200: make LibDir=${LibDir} Liszt=${Liszt} ObjDir=${ObjDir} nlisp
201:
202: #--- snlisp: create a totally interpreted lisp.
203: # dump as snlisp
204: snlisp: rawlisp
205: echo "(progn (setq build:load t \
206: build:lisp-type 'franz \
207: build:dir '${LibDir} \
208: lisp-object-directory '${ObjDir}\
209: lisp-library-directory '${LibDir})\
210: (load '${LibDir}/buildlisp)\
211: (dumplisp snlisp))" | rawlisp
212:
213:
214: tags:
215: ctags $(VaxSrc) ${MipSrc}
216:
217: #--- copysource : copy source files to another directory
218: # called via make CopyTo=/xx/yyy/zz copysource
219: #
220: copysource: ${AllSrc}
221: (tar cf - ${AllSrc} | (cd ${CopyTo} ; tar xf -))
222:
223: copyobjects: ${AllObj}
224: (tar cf - ${AllObj} | (cd ${CopyTo} ; tar xf -))
225:
226: scriptcatall: ${AllSrc}
227: @../../scriptcat . franz/vax ${AllSrc}
228: @../../scriptcat .. franz ${Includes}
229:
230:
231: #--- prealloc.o: the "C" runtime startup for EUNICE with data structure
232: # preallocation and restart capabilities
233: # NFILES - # file descriptors of data structure to allocate
234: # RESTART - allow restart from saved image
235: #
236: prealloc.o: Makefile
237: /lib/cpp -DNFILES=20 -DRESTART /usr/include/eunice/prealloc.c prealloc.tm0
238: /lib/ccom prealloc.tm0 prealloc.tm1
239: /lib/c2 prealloc.tm1 prealloc.tm2
240: sed -f /usr/include/eunice/sedfixup.e <prealloc.tm2 >prealloc.tm3
241: ${AS} -o prealloc.o prealloc.tm3
242: rm prealloc.tm0 prealloc.tm1 prealloc.tm2 prealloc.tm3
243:
244: rawlisp.com: rawlisp.unx totxtfile
245: totxtfile rawlisp.unx rawlisp.com
246:
247: rawhlisp.com: rawhlisp.unx totxtfile
248: totxtfile rawhlisp.unx rawhlisp.com
249:
250: hole.obj: hole.unx totxtfile
251: sed "s/%d/${HOLE}/" < hole.unx | totxtfile hole.mar
252: vms macro/nolist hole.mar
253:
254: totxtfile: totxtfile.c
255: 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.