1# 2# Makefile 1.22 90/02/20 3# 4# Makefile for PCC 5# 6# Some symbols are specific to certain compilers: 7# ONEPASS compile pass 1 and pass 2 together 8# SPRECC do single precision in single not double 9# FORT get f77-style pass 2 10# 11O = -O 12CFLAGS = $(O) -I. -I$(M) 13 14COPTS = -DONEPASS $(CFLAGS) 15SCOPTS = -DONEPASS -DSPRECC $(CFLAGS) 16FOPTS = -DFORT $(CFLAGS) 17LDFLAGS = 18 19RM= rm -f 20LN= ln -s 21 22SFILES= strees.c slocal.c slocal2.c sallo.c sorder.c stable.c 23SOBJS= strees.o slocal.o slocal2.o sallo.o sorder.o stable.o 24FFILES= freader.c fallo.c fmatch.c ftable.c forder.c flocal2.c fcomm2.c 25FOBJS= freader.o fallo.o fmatch.o ftable.o forder.o flocal2.o fcomm2.o 26 27P1INCS= $M/pass1.h macdefs.h $M/manifest.h pcclocal.h $M/config.h $M/ndu.h \ 28 /usr/include/stdio.h 29P1ONEP= $(P1INCS) $M/onepass.h 30P2INCS= $M/pass2.h macdefs.h mac2defs.h $M/manifest.h pcclocal.h $M/config.h \ 31 $M/ndu.h /usr/include/stdio.h 32P2ONEP= $(P2INCS) $M/onepass.h 33OBJS= code.o rel.o stab.o comm1.o match.o optim.o pftn.o \ 34 reader.o scan.o xdefs.o cgram.o rodata.o 35DOBJS= allo.o local.o local2.o order.o trees.o table.o 36M=../../mip 37TESTDIR = . 38 39all: ccom sccom f1 40 41# 42# 'ccom' is a one-pass C compiler. 43# 44ccom: ${OBJS} ${DOBJS} 45 $(CC) $(LDFLAGS) ${OBJS} ${DOBJS} -o $(TESTDIR)/ccom 46trees.o: $(P1ONEP) $M/trees.c 47 $(CC) -c $(COPTS) $M/trees.c 48optim.o: $(P1ONEP) $M/optim.c 49 $(CC) -c $(COPTS) $M/optim.c 50pftn.o: $(P1ONEP) $M/pftn.c 51 $(CC) -c $(COPTS) $M/pftn.c 52code.o: $(P1ONEP) code.c 53 $(CC) -c $(COPTS) code.c 54local.o: $(P1ONEP) local.c 55 $(CC) -c $(COPTS) local.c 56scan.o: $(P1ONEP) $M/scan.c 57 $(CC) -c $(COPTS) $M/scan.c 58xdefs.o: $(P1ONEP) $M/xdefs.c 59 $(CC) -c $(COPTS) $M/xdefs.c 60cgram.o: $(P1ONEP) cgram.c 61 $(CC) -c $(COPTS) cgram.c 62rodata.o: rodata.c 63 $(CC) -c $(COPTS) -R rodata.c 64rodata.c cgram.c: $M/cgram.y pcctokens 65 cat pcctokens $M/cgram.y > gram.in 66 $(YACC) gram.in 67 $(RM) rodata.c 68 sh ./:yyfix yylhs yylen yydefred yydgoto yysindex yyrindex \ 69 yygindex yytable yycheck 70 mv y.tab.c cgram.c 71comm1.o: $(P1ONEP) $M/common.c 72 $(LN) $M/common.c comm1.c 73 $(CC) -c $(COPTS) -DPASS1COMMON comm1.c 74 $(RM) comm1.c 75stab.o: $(P1ONEP) stab.c \ 76 /usr/include/stab.h /usr/include/a.out.h /usr/include/sys/types.h 77 $(CC) -c $(COPTS) stab.c 78table.o: $(P2ONEP) table.c 79 $(CC) -c $(COPTS) -R table.c 80reader.o: $(P2ONEP) $M/reader.c 81 $(CC) -c $(COPTS) $M/reader.c 82local2.o: $(P2ONEP) local2.c 83 $(CC) -c $(COPTS) local2.c 84order.o: $(P2ONEP) order.c 85 $(CC) -c $(COPTS) order.c 86match.o: $(P2ONEP) $M/match.c 87 $(CC) -c $(COPTS) $M/match.c 88allo.o: $(P2ONEP) $M/allo.c 89 $(CC) -c $(COPTS) $M/allo.c 90 91# 92# 'sccom' is a C compiler that does single precision computations in 93# single precision rather than double precision. 94# 95sccom: ${OBJS} ${SOBJS} 96 $(CC) $(LDFLAGS) ${OBJS} ${SOBJS} -o $(TESTDIR)/sccom 97strees.o: $(P1ONEP) $M/trees.c 98 $(LN) $M/trees.c strees.c 99 $(CC) -c $(SCOPTS) strees.c 100 $(RM) strees.c 101slocal.o: $(P1ONEP) local.c 102 $(LN) local.c slocal.c 103 $(CC) -c $(SCOPTS) slocal.c 104 $(RM) slocal.c 105slocal2.o: $(P2ONEP) local2.c 106 $(LN) local2.c slocal2.c 107 $(CC) -c $(SCOPTS) slocal2.c 108 $(RM) slocal2.c 109sallo.o: $(P2ONEP) $M/allo.c 110 $(LN) $M/allo.c sallo.c 111 $(CC) -c $(SCOPTS) sallo.c 112 $(RM) sallo.c 113sorder.o: $(P2ONEP) order.c 114 $(LN) order.c sorder.c 115 $(CC) -c $(SCOPTS) sorder.c 116 $(RM) sorder.c 117stable.o: $(P2ONEP) table.c 118 $(LN) table.c stable.c 119 $(CC) -c $(SCOPTS) -R stable.c 120 $(RM) stable.c 121 122# 123# 'f1' is the f77 and pc code generator. 124# 125f1: fort.o freader.o fallo.o fmatch.o ftable.o forder.o flocal2.o \ 126 fcomm2.o 127 $(CC) $(LDFLAGS) fort.o freader.o fallo.o fmatch.o ftable.o \ 128 forder.o flocal2.o fcomm2.o -o $(TESTDIR)/f1 129fort.o: $(P2INCS) fort.h $M/fort.c 130 $(CC) -c $(FOPTS) $M/fort.c 131freader.o: $(P2INCS) $M/reader.c 132 $(LN) $M/reader.c freader.c 133 $(CC) -c $(FOPTS) freader.c 134 $(RM) freader.c 135fallo.o: $(P2INCS) $M/allo.c 136 $(LN) $M/allo.c fallo.c 137 $(CC) -c $(FOPTS) fallo.c 138 $(RM) fallo.c 139fmatch.o: $(P2INCS) $M/match.c 140 $(LN) $M/match.c fmatch.c 141 $(CC) -c $(FOPTS) fmatch.c 142 $(RM) fmatch.c 143ftable.o: $(P2INCS) table.c 144 $(LN) table.c ftable.c 145 $(CC) -c -R $(FOPTS) ftable.c 146 $(RM) ftable.c 147forder.o: $(P2INCS) order.c 148 $(LN) order.c forder.c 149 $(CC) -c $(FOPTS) forder.c 150 $(RM) forder.c 151flocal2.o: $(P2INCS) local2.c 152 $(LN) local2.c flocal2.c 153 $(CC) -c $(FOPTS) flocal2.c 154 $(RM) flocal2.c 155fcomm2.o: $(P2INCS) $M/common.c 156 $(LN) $M/common.c fcomm2.c 157 $(CC) -c $(FOPTS) -DPASS2COMMON fcomm2.c 158 $(RM) fcomm2.c 159 160install: all 161 install -s -o bin -g bin -m 755 ${TESTDIR}/ccom ${DESTDIR}/usr/libexec 162 install -s -o bin -g bin -m 755 ${TESTDIR}/sccom ${DESTDIR}/usr/libexec 163 install -s -o bin -g bin -m 755 ${TESTDIR}/f1 ${DESTDIR}/usr/libexec 164 165GREP= egrep 166 167pcclocal.h: ../localdefs.h /usr/include/pcc.h 168 $(RM) pcclocal.h 169 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 170 171pcctokens: ../localdefs.h /usr/include/pcc.h 172 $(RM) pcctokens 173 cat /usr/include/pcc.h ../localdefs.h | $(GREP) '^#[ ]*define[ ][ ]*PCC_' | sed -e 's/^#[ ]*define[ ][ ]*PCC_/%term /' > pcctokens 174 175DUMMIES= $(SFILES) $(FFILES) 176 177shrink: 178 $(RM) *.o ccom sccom f1 $(DUMMIES) 179clean: 180 $(RM) *.o ccom sccom f1 cgram.c rodata.c pcctokens pcclocal.h gram.in $(DUMMIES) 181cleandir: clean 182 rm -f ${MAN} tags .depend 183sfix: 184 $(RM) $(SFILES) 185sclean: 186 $(RM) $(SOBJS) $(SFILES) 187ffix: 188 $(RM) $(FFILES) 189fclean: 190 $(RM) $(FOBJS) $(FFILES) 191 192# Should use -a, but the situation is too confusing to fix at the moment... 193lintall: 194 lint -hx $(COPTS) -DPASS1COMMON cgram.c $M/xdefs.c $M/scan.c \ 195 $M/pftn.c $M/trees.c $M/optim.c code.c local.c stab.c \ 196 $M/reader.c local2.c order.c $M/match.c $M/allo.c \ 197 $M/common.c table.c rodata.c rel.c 198 199depend: 200lint: 201tags: 202