0f621bd45528bb93a6acdc87b739246ba94999db
[43bsd.git] / lib / pcc / Makefile
1 #
2 #       Makefile        1.13    86/03/11
3 #
4 # Makefile for PCC
5 #
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)
11 #
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
16 #
17 CONFIG= -DASSTRINGS -DSTABDOT -DLCOMM "-DFIXSTRUCT=outstruct"
18 O = -O
19 CFLAGS = $(O) -I. -I$(M) $(CONFIG)
20
21 COPTS = -DONEPASS $(CFLAGS)
22 SCOPTS = -DONEPASS -DSPRECC $(CFLAGS)
23 FOPTS = -DFORT $(CFLAGS)
24 LDFLAGS =
25
26 RM=     /bin/rm -f
27 LN=     /bin/ln -s
28
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
33
34 P1INCS= $M/pass1.h macdefs.h $M/manifest.h pcclocal.h $M/config.h $M/ndu.h
35 # \
36 #       /usr/include/stdio.h
37 P2INCS= $M/pass2.h macdefs.h mac2defs.h $M/manifest.h pcclocal.h $M/config.h \
38         $M/ndu.h
39 # /usr/include/stdio.h
40
41 #M=../mip
42 M=.
43 TESTDIR = .
44
45 #all: ccom sccom f1
46 all: ccom
47
48 #
49 # 'ccom' is a one-pass C compiler.
50 #
51 # rodata.o
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
54 # rodata.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
74 #rodata.o: rodata.c
75 #       $(CC) -c $(COPTS) -R rodata.c
76 #rodata.c
77 cgram.c: $M/cgram.y
78 # pcctokens
79 #       cat pcctokens $M/cgram.y > gram.in
80 #       $(YACC) gram.in
81         $(YACC) $M/cgram.y
82 #       $(RM) rodata.c
83 #       sh ./:yyfix yyexca yyact yypact yypgo yyr1 yyr2 yychk yydef
84         mv y.tab.c cgram.c
85 #comm1.o: $(P1INCS) $M/common.c
86 #       $(LN) $M/common.c comm1.c
87 #       $(CC) -c $(COPTS) -DPASS1COMMON comm1.c
88 #       $(RM) comm1.c
89 comm1.o: $(P1INCS) comm1.c
90         $(CC) -c $(COPTS) -R comm1.c
91 stab.o: $(P1INCS) stab.c
92 # \
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
107
108 #
109 # 'sccom' is a C compiler that does single precision computations in
110 #       single precision rather than double precision.
111 #
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
120         $(RM) strees.c
121 slocal.o: $(P1INCS) local.c
122         $(LN) local.c slocal.c
123         $(CC) -c $(SCOPTS) slocal.c
124         $(RM) slocal.c
125 slocal2.o: $(P2INCS) local2.c
126         $(LN) local2.c slocal2.c
127         $(CC) -c $(SCOPTS) slocal2.c
128         $(RM) slocal2.c
129 sallo.o: $(P2INCS) $M/allo.c
130         $(LN) $M/allo.c sallo.c
131         $(CC) -c $(SCOPTS) sallo.c
132         $(RM) sallo.c
133 sorder.o: $(P2INCS) order.c
134         $(LN) order.c sorder.c
135         $(CC) -c $(SCOPTS) sorder.c
136         $(RM) sorder.c
137 stable.o: $(P2INCS) table.c
138         $(LN) table.c stable.c
139         $(CC) -c $(SCOPTS) -R stable.c
140         $(RM) stable.c
141
142 #
143 # 'f1' is the f77 and pc code generator.
144 #
145 f1: fort.o freader.o fallo.o fmatch.o ftable.o forder.o flocal2.o \
146         fcomm2.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
154         $(RM) freader.c
155 fallo.o: $(P2INCS) $M/allo.c
156         $(LN) $M/allo.c fallo.c
157         $(CC) -c $(FOPTS) fallo.c
158         $(RM) fallo.c
159 fmatch.o: $(P2INCS) $M/match.c
160         $(LN) $M/match.c fmatch.c
161         $(CC) -c $(FOPTS) fmatch.c
162         $(RM) fmatch.c
163 ftable.o: $(P2INCS) table.c
164         $(LN) table.c ftable.c
165         $(CC) -c -R $(FOPTS) ftable.c
166         $(RM) ftable.c
167 forder.o: $(P2INCS) order.c
168         $(LN) order.c forder.c
169         $(CC) -c $(FOPTS) forder.c
170         $(RM) forder.c
171 flocal2.o: $(P2INCS) local2.c
172         $(LN) local2.c flocal2.c
173         $(CC) -c $(FOPTS) flocal2.c
174         $(RM) flocal2.c
175 fcomm2.o: $(P2INCS) $M/common.c
176         $(LN) $M/common.c fcomm2.c
177         $(CC) -c $(FOPTS) -DPASS2COMMON fcomm2.c
178         $(RM) fcomm2.c
179
180 install: all
181         install -s ${TESTDIR}/ccom ${DESTDIR}/lib/ccom
182         install -s ${TESTDIR}/sccom ${DESTDIR}/lib/sccom
183         install -s ${TESTDIR}/f1 ${DESTDIR}/lib/f1
184
185 GREP=   egrep
186
187 ##pcclocal.h: localdefs.h /usr/include/pcc.h
188 #pcclocal.h: localdefs.h $M/pcc.h
189 #       $(RM) pcclocal.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 
192 #
193 ##pcctokens: localdefs.h /usr/include/pcc.h
194 #pcctokens: localdefs.h $M/pcc.h
195 #       $(RM) pcctokens
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
198
199 DUMMIES=        $(SFILES) $(FFILES)
200
201 shrink:
202         $(RM) *.o ccom sccom f1 $(DUMMIES)
203 clean:
204 #       $(RM) *.o ccom sccom f1 cgram.c rodata.c pcctokens pcclocal.h gram.in $(DUMMIES)
205         $(RM) *.o ccom
206 sfix:
207         $(RM) $(SFILES)
208 sclean:
209         $(RM) $(SOBJS) $(SFILES)
210 ffix:
211         $(RM) $(FFILES)
212 fclean:
213         $(RM) $(FOBJS) $(FFILES)
214
215 lintall:
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