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