xref: /original-bsd/old/pcc/ccom.vax/Makefile (revision 30d60fbe)
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#
17CONFIG=	-DASSTRINGS -DSTABDOT -DLCOMM "-DFIXSTRUCT=outstruct"
18O = -O
19CFLAGS = $(O) -I. -I$(M) $(CONFIG)
20
21COPTS = -DONEPASS $(CFLAGS)
22SCOPTS = -DONEPASS -DSPRECC $(CFLAGS)
23FOPTS = -DFORT $(CFLAGS)
24LDFLAGS =
25
26RM=	/bin/rm -f
27LN=	/bin/ln -s
28
29SFILES=	strees.c slocal.c slocal2.c sallo.c sorder.c stable.c
30SOBJS=	strees.o slocal.o slocal2.o sallo.o sorder.o stable.o
31FFILES=	freader.c fallo.c fmatch.c ftable.c forder.c flocal2.c fcomm2.c
32FOBJS=	freader.o fallo.o fmatch.o ftable.o forder.o flocal2.o fcomm2.o
33
34P1INCS=	$M/pass1.h macdefs.h $M/manifest.h pcclocal.h $M/config.h $M/ndu.h \
35	/usr/include/stdio.h
36P1ONEP=	$(P1INCS) $M/onepass.h
37P2INCS=	$M/pass2.h macdefs.h mac2defs.h $M/manifest.h pcclocal.h $M/config.h \
38	$M/ndu.h /usr/include/stdio.h
39P2ONEP=	$(P2INCS) $M/onepass.h
40
41M=../mip
42TESTDIR = .
43
44all: ccom sccom f1
45
46#
47# 'ccom' is a one-pass C compiler.
48#
49ccom: rodata.o cgram.o xdefs.o scan.o pftn.o trees.o optim.o code.o local.o \
50	reader.o local2.o order.o match.o allo.o comm1.o table.o stab.o
51	$(CC) $(LDFLAGS) rodata.o cgram.o xdefs.o scan.o pftn.o trees.o \
52		optim.o code.o local.o reader.o local2.o order.o match.o \
53		allo.o comm1.o table.o stab.o -o $(TESTDIR)/ccom
54trees.o: $(P1ONEP) $M/trees.c
55	$(CC) -c $(COPTS) $M/trees.c
56optim.o: $(P1ONEP) $M/optim.c
57	$(CC) -c $(COPTS) $M/optim.c
58pftn.o: $(P1ONEP) $M/pftn.c
59	$(CC) -c $(COPTS) $M/pftn.c
60code.o: $(P1ONEP) code.c
61	$(CC) -c $(COPTS) code.c
62local.o: $(P1ONEP) local.c
63	$(CC) -c $(COPTS) local.c
64scan.o: $(P1ONEP) $M/scan.c
65	$(CC) -c $(COPTS) $M/scan.c
66xdefs.o: $(P1ONEP) $M/xdefs.c
67	$(CC) -c $(COPTS) $M/xdefs.c
68cgram.o: $(P1ONEP) cgram.c
69	$(CC) -c $(COPTS) cgram.c
70rodata.o: rodata.c
71	$(CC) -c $(COPTS) -R rodata.c
72rodata.c cgram.c: $M/cgram.y pcctokens
73	cat pcctokens $M/cgram.y > gram.in
74	$(YACC) gram.in
75	$(RM) rodata.c
76	sh ./:yyfix yyexca yyact yypact yypgo yyr1 yyr2 yychk yydef
77	mv y.tab.c cgram.c
78comm1.o: $(P1ONEP) $M/common.c
79	$(LN) $M/common.c comm1.c
80	$(CC) -c $(COPTS) -DPASS1COMMON comm1.c
81	$(RM) comm1.c
82stab.o: $(P1ONEP) stab.c \
83	/usr/include/stab.h /usr/include/a.out.h /usr/include/sys/types.h
84	$(CC) -c $(COPTS) stab.c
85table.o: $(P2ONEP) table.c
86	$(CC) -c $(COPTS) -R table.c
87reader.o: $(P2ONEP) $M/reader.c
88	$(CC) -c $(COPTS) $M/reader.c
89local2.o: $(P2ONEP) local2.c
90	$(CC) -c $(COPTS) local2.c
91order.o: $(P2ONEP) order.c
92	$(CC) -c $(COPTS) order.c
93match.o: $(P2ONEP) $M/match.c
94	$(CC) -c $(COPTS) $M/match.c
95allo.o: $(P2ONEP) $M/allo.c
96	$(CC) -c $(COPTS) $M/allo.c
97
98#
99# 'sccom' is a C compiler that does single precision computations in
100#	single precision rather than double precision.
101#
102sccom: rodata.o cgram.o xdefs.o scan.o pftn.o strees.o optim.o code.o slocal.o \
103	reader.o slocal2.o sorder.o match.o sallo.o comm1.o stable.o stab.o
104	$(CC) $(LDFLAGS) rodata.o cgram.o xdefs.o scan.o pftn.o strees.o \
105		optim.o code.o slocal.o reader.o slocal2.o sorder.o match.o \
106		sallo.o comm1.o stable.o stab.o -o $(TESTDIR)/sccom
107strees.o: $(P1ONEP) $M/trees.c
108	$(LN) $M/trees.c strees.c
109	$(CC) -c $(SCOPTS) strees.c
110	$(RM) strees.c
111slocal.o: $(P1ONEP) local.c
112	$(LN) local.c slocal.c
113	$(CC) -c $(SCOPTS) slocal.c
114	$(RM) slocal.c
115slocal2.o: $(P2ONEP) local2.c
116	$(LN) local2.c slocal2.c
117	$(CC) -c $(SCOPTS) slocal2.c
118	$(RM) slocal2.c
119sallo.o: $(P2ONEP) $M/allo.c
120	$(LN) $M/allo.c sallo.c
121	$(CC) -c $(SCOPTS) sallo.c
122	$(RM) sallo.c
123sorder.o: $(P2ONEP) order.c
124	$(LN) order.c sorder.c
125	$(CC) -c $(SCOPTS) sorder.c
126	$(RM) sorder.c
127stable.o: $(P2ONEP) table.c
128	$(LN) table.c stable.c
129	$(CC) -c $(SCOPTS) -R stable.c
130	$(RM) stable.c
131
132#
133# 'f1' is the f77 and pc code generator.
134#
135f1: fort.o freader.o fallo.o fmatch.o ftable.o forder.o flocal2.o \
136	fcomm2.o
137	$(CC) $(LDFLAGS) fort.o freader.o fallo.o fmatch.o ftable.o \
138		forder.o flocal2.o fcomm2.o -o $(TESTDIR)/f1
139fort.o: $(P2INCS) fort.h $M/fort.c
140	$(CC) -c $(FOPTS) $M/fort.c
141freader.o: $(P2INCS) $M/reader.c
142	$(LN) $M/reader.c freader.c
143	$(CC) -c $(FOPTS) freader.c
144	$(RM) freader.c
145fallo.o: $(P2INCS) $M/allo.c
146	$(LN) $M/allo.c fallo.c
147	$(CC) -c $(FOPTS) fallo.c
148	$(RM) fallo.c
149fmatch.o: $(P2INCS) $M/match.c
150	$(LN) $M/match.c fmatch.c
151	$(CC) -c $(FOPTS) fmatch.c
152	$(RM) fmatch.c
153ftable.o: $(P2INCS) table.c
154	$(LN) table.c ftable.c
155	$(CC) -c -R $(FOPTS) ftable.c
156	$(RM) ftable.c
157forder.o: $(P2INCS) order.c
158	$(LN) order.c forder.c
159	$(CC) -c $(FOPTS) forder.c
160	$(RM) forder.c
161flocal2.o: $(P2INCS) local2.c
162	$(LN) local2.c flocal2.c
163	$(CC) -c $(FOPTS) flocal2.c
164	$(RM) flocal2.c
165fcomm2.o: $(P2INCS) $M/common.c
166	$(LN) $M/common.c fcomm2.c
167	$(CC) -c $(FOPTS) -DPASS2COMMON fcomm2.c
168	$(RM) fcomm2.c
169
170install: all
171	install -s ${TESTDIR}/ccom ${DESTDIR}/lib/ccom
172	install -s ${TESTDIR}/sccom ${DESTDIR}/lib/sccom
173	install -s ${TESTDIR}/f1 ${DESTDIR}/lib/f1
174
175GREP=	egrep
176
177pcclocal.h: localdefs.h /usr/include/pcc.h
178	$(RM) pcclocal.h
179	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
180
181pcctokens: localdefs.h /usr/include/pcc.h
182	$(RM) pcctokens
183	cat /usr/include/pcc.h localdefs.h | $(GREP) '^#[ 	]*define[ 	][ 	]*PCC_' | sed -e 's/^#[ 	]*define[ 	][ 	]*PCC_/%term	/' > pcctokens
184
185DUMMIES=	$(SFILES) $(FFILES)
186
187shrink:
188	$(RM) *.o ccom sccom f1 $(DUMMIES)
189clean:
190	$(RM) *.o ccom sccom f1 cgram.c rodata.c pcctokens pcclocal.h gram.in $(DUMMIES)
191sfix:
192	$(RM) $(SFILES)
193sclean:
194	$(RM) $(SOBJS) $(SFILES)
195ffix:
196	$(RM) $(FFILES)
197fclean:
198	$(RM) $(FOBJS) $(FFILES)
199
200lintall:
201	lint -hax -I. -I$M  cgram.c $M/xdefs.c $M/scan.c $M/pftn.c \
202		$M/trees.c $M/optim.c code.c local.c stab.c $M/reader.c \
203		local2.c order.c $M/match.c $M/allo.c $M/comm1.c table.c
204