2 # Makefile 1.13 86/03/11
6 # These symbols are used to configure the compiler:
7 # ASSTRINGS assembler handles string initializations
8 # STABDOT assembler understands .stabd
9 # LCOMM assembler supports .lcomm
10 # FIXSTRUCT no trickery (just output structure)
12 # Some symbols are specific to certain compilers:
13 # ONEPASS compile pass 1 and pass 2 together
14 # SPRECC do single precision in single not double
15 # FORT get f77-style pass 2
17 CONFIG= -DASSTRINGS -DSTABDOT -DLCOMM "-DFIXSTRUCT=outstruct"
19 CFLAGS = $(O) -I. -I$(M) $(CONFIG)
21 COPTS = -DONEPASS $(CFLAGS)
22 SCOPTS = -DONEPASS -DSPRECC $(CFLAGS)
23 FOPTS = -DFORT $(CFLAGS)
29 SFILES= strees.c slocal.c slocal2.c sallo.c sorder.c stable.c
30 SOBJS= strees.o slocal.o slocal2.o sallo.o sorder.o stable.o
31 FFILES= freader.c fallo.c fmatch.c ftable.c forder.c flocal2.c fcomm2.c
32 FOBJS= freader.o fallo.o fmatch.o ftable.o forder.o flocal2.o fcomm2.o
34 P1INCS= $M/pass1.h macdefs.h $M/manifest.h pcclocal.h $M/config.h $M/ndu.h
36 # /usr/include/stdio.h
37 P2INCS= $M/pass2.h macdefs.h mac2defs.h $M/manifest.h pcclocal.h $M/config.h \
39 # /usr/include/stdio.h
49 # 'ccom' is a one-pass C compiler.
52 ccom: cgram.o xdefs.o scan.o pftn.o trees.o optim.o code.o local.o \
53 reader.o local2.o order.o match.o allo.o comm1.o table.o stab.o
55 $(CC) $(LDFLAGS) cgram.o xdefs.o scan.o pftn.o trees.o \
56 optim.o code.o local.o reader.o local2.o order.o match.o \
57 allo.o comm1.o table.o stab.o -o $(TESTDIR)/ccom
58 trees.o: $(P1INCS) $M/trees.c
59 $(CC) -c $(COPTS) $M/trees.c
60 optim.o: $(P1INCS) $M/optim.c
61 $(CC) -c $(COPTS) $M/optim.c
62 pftn.o: $(P1INCS) $M/pftn.c
63 $(CC) -c $(COPTS) $M/pftn.c
64 code.o: $(P1INCS) code.c
65 $(CC) -c $(COPTS) code.c
66 local.o: $(P1INCS) local.c
67 $(CC) -c $(COPTS) local.c
68 scan.o: $(P1INCS) $M/scan.c
69 $(CC) -c $(COPTS) $M/scan.c
70 xdefs.o: $(P1INCS) $M/xdefs.c
71 $(CC) -c $(COPTS) $M/xdefs.c
72 cgram.o: $(P1INCS) cgram.c
73 $(CC) -c $(COPTS) cgram.c
75 # $(CC) -c $(COPTS) -R rodata.c
79 # cat pcctokens $M/cgram.y > gram.in
83 # sh ./:yyfix yyexca yyact yypact yypgo yyr1 yyr2 yychk yydef
85 #comm1.o: $(P1INCS) $M/common.c
86 # $(LN) $M/common.c comm1.c
87 # $(CC) -c $(COPTS) -DPASS1COMMON comm1.c
89 comm1.o: $(P1INCS) comm1.c
90 $(CC) -c $(COPTS) -R comm1.c
91 stab.o: $(P1INCS) stab.c
93 # /usr/include/stab.h /usr/include/a.out.h /usr/include/sys/types.h
94 $(CC) -c $(COPTS) stab.c
95 table.o: $(P2INCS) table.c
96 $(CC) -c $(COPTS) -R table.c
97 reader.o: $(P2INCS) $M/reader.c
98 $(CC) -c $(COPTS) $M/reader.c
99 local2.o: $(P2INCS) local2.c
100 $(CC) -c $(COPTS) local2.c
101 order.o: $(P2INCS) order.c
102 $(CC) -c $(COPTS) order.c
103 match.o: $(P2INCS) $M/match.c
104 $(CC) -c $(COPTS) $M/match.c
105 allo.o: $(P2INCS) $M/allo.c
106 $(CC) -c $(COPTS) $M/allo.c
109 # 'sccom' is a C compiler that does single precision computations in
110 # single precision rather than double precision.
112 sccom: rodata.o cgram.o xdefs.o scan.o pftn.o strees.o optim.o code.o slocal.o \
113 reader.o slocal2.o sorder.o match.o sallo.o comm1.o stable.o stab.o
114 $(CC) $(LDFLAGS) rodata.o cgram.o xdefs.o scan.o pftn.o strees.o \
115 optim.o code.o slocal.o reader.o slocal2.o sorder.o match.o \
116 sallo.o comm1.o stable.o stab.o -o $(TESTDIR)/sccom
117 strees.o: $(P1INCS) $M/trees.c
118 $(LN) $M/trees.c strees.c
119 $(CC) -c $(SCOPTS) strees.c
121 slocal.o: $(P1INCS) local.c
122 $(LN) local.c slocal.c
123 $(CC) -c $(SCOPTS) slocal.c
125 slocal2.o: $(P2INCS) local2.c
126 $(LN) local2.c slocal2.c
127 $(CC) -c $(SCOPTS) slocal2.c
129 sallo.o: $(P2INCS) $M/allo.c
130 $(LN) $M/allo.c sallo.c
131 $(CC) -c $(SCOPTS) sallo.c
133 sorder.o: $(P2INCS) order.c
134 $(LN) order.c sorder.c
135 $(CC) -c $(SCOPTS) sorder.c
137 stable.o: $(P2INCS) table.c
138 $(LN) table.c stable.c
139 $(CC) -c $(SCOPTS) -R stable.c
143 # 'f1' is the f77 and pc code generator.
145 f1: fort.o freader.o fallo.o fmatch.o ftable.o forder.o flocal2.o \
147 $(CC) $(LDFLAGS) fort.o freader.o fallo.o fmatch.o ftable.o \
148 forder.o flocal2.o fcomm2.o -o $(TESTDIR)/f1
149 fort.o: $(P2INCS) fort.h $M/fort.c
150 $(CC) -c $(FOPTS) $M/fort.c
151 freader.o: $(P2INCS) $M/reader.c
152 $(LN) $M/reader.c freader.c
153 $(CC) -c $(FOPTS) freader.c
155 fallo.o: $(P2INCS) $M/allo.c
156 $(LN) $M/allo.c fallo.c
157 $(CC) -c $(FOPTS) fallo.c
159 fmatch.o: $(P2INCS) $M/match.c
160 $(LN) $M/match.c fmatch.c
161 $(CC) -c $(FOPTS) fmatch.c
163 ftable.o: $(P2INCS) table.c
164 $(LN) table.c ftable.c
165 $(CC) -c -R $(FOPTS) ftable.c
167 forder.o: $(P2INCS) order.c
168 $(LN) order.c forder.c
169 $(CC) -c $(FOPTS) forder.c
171 flocal2.o: $(P2INCS) local2.c
172 $(LN) local2.c flocal2.c
173 $(CC) -c $(FOPTS) flocal2.c
175 fcomm2.o: $(P2INCS) $M/common.c
176 $(LN) $M/common.c fcomm2.c
177 $(CC) -c $(FOPTS) -DPASS2COMMON fcomm2.c
181 install -s ${TESTDIR}/ccom ${DESTDIR}/lib/ccom
182 install -s ${TESTDIR}/sccom ${DESTDIR}/lib/sccom
183 install -s ${TESTDIR}/f1 ${DESTDIR}/lib/f1
187 ##pcclocal.h: localdefs.h /usr/include/pcc.h
188 #pcclocal.h: localdefs.h $M/pcc.h
190 ## cat /usr/include/pcc.h localdefs.h | $(GREP) '^#[ ]*(define[ ][ ]*PCC(F|T|TM|OM)?_|ifdef|ifndef|endif)' | sed -e 's/PCC[A-Z]*_//' > pcclocal.h
191 # cat $M/pcc.h localdefs.h | $(GREP) '^#[ ]*(define[ ][ ]*PCC(F|T|TM|OM)?_|ifdef|ifndef|endif)' | sed -e 's/PCC[A-Z]*_//' > pcclocal.h
193 ##pcctokens: localdefs.h /usr/include/pcc.h
194 #pcctokens: localdefs.h $M/pcc.h
196 ## cat /usr/include/pcc.h localdefs.h | $(GREP) '^#[ ]*define[ ][ ]*PCC_' | sed -e 's/^#[ ]*define[ ][ ]*PCC_/%term /' > pcctokens
197 # cat $M/pcc.h localdefs.h | $(GREP) '^#[ ]*define[ ][ ]*PCC_' | sed -e 's/^#[ ]*define[ ][ ]*PCC_/%term /' > pcctokens
199 DUMMIES= $(SFILES) $(FFILES)
202 $(RM) *.o ccom sccom f1 $(DUMMIES)
204 # $(RM) *.o ccom sccom f1 cgram.c rodata.c pcctokens pcclocal.h gram.in $(DUMMIES)
209 $(RM) $(SOBJS) $(SFILES)
213 $(RM) $(FOBJS) $(FFILES)
216 lint -hax -I. -I$M cgram.c $M/xdefs.c $M/scan.c $M/pftn.c \
217 $M/trees.c $M/optim.c code.c local.c stab.c $M/reader.c \
218 local2.c order.c $M/match.c $M/allo.c $M/comm1.c table.c