TEMPDIR="\"/tmp\"" #Change this to suit your installation LCCDIR=/home/tawarien/bin/ BUILDDIR=./build B=$(BUILDDIR)/ T=$(TSTDIR)/A=.a E= CC=cc CFLAGS= -O2 -g -Wimplicit-function-declaration -DTEMPDIR=$(TEMPDIR) -DLCCDIR="\""$(LCCDIR)"\"" L=$(LCCDIR)/ LDFLAGS=-g LD=$(CC) AR=ar ruv RANLIB=ranlib DIFF=diff RM=rm -f TSTDIR=$(BUILDDIR)/tst T=$(TSTDIR)/ HOSTFILE=etc/linux.c what: -@echo make all scc lburg cpp lcc bprint liblcc triple clean clobber cpp all:: scc lburg cpp lcc bprint liblcc cpp cpp: $Lcpp$E scc: $Lscc$E lburg: $Blburg$E lcc: $Llcc-ufo$E $Llcc-utsa$E $Llcc-mcore$E bprint: $Bbprint$E liblcc: $Bliblcc$A RCCOBJS=$Balloc.o \ $Bbind.o \ $Bdag.o \ $Bdagcheck.o \ $Bdecl.o \ $Benode.o \ $Berror.o \ $Bexpr.o \ $Bevent.o \ $Binit.o \ $Binits.o \ $Binput.o \ $Blex.o \ $Blist.o \ $Bmain.o \ $Boutput.o \ $Bprof.o \ $Bprofio.o \ $Bsimp.o \ $Bstmt.o \ $Bstring.o \ $Bsym.o \ $Btrace.o \ $Btree.o \ $Btypes.o \ $Bnull.o \ $Bsymbolic.o \ $Bemit.o \ $Bblocks.o \ $Bcollections.o \ $Boptimise.o \ $Bstack_gen.o \ $Bx_stack.o \ $Bcleanup.o \ $Bverify.o \ $Bflow.o \ $Bgraph.o \ $Bpairwise.o \ $Bbailey.o \ $Bglobal.o \ $Bchains.o \ $Bnodes.o \ $Bdead.o \ $Blabel.o \ $Boptimist.o \ $Butsa.o \ $Bmcore.o \ $Babstract.o \ $Bufo.o \ $Bsvg.o $Lscc$E:: $Bmain.o $Blibscc$A $(EXTRAOBJS) $(LD) $(LDFLAGS) -o $@ $Bmain.o $(EXTRAOBJS) $Blibscc$A $(EXTRALIBS) $Blibscc$A: $(RCCOBJS) $(AR) $@ $(RCCOBJS); $(RANLIB) $@ || true $(RCCOBJS): src/common/c.h src/common/ops.h src/common/token.h $Balloc.o: src/front/alloc.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/front/alloc.c $Bbind.o: src/back/bind.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/back/bind.c $Bdag.o: src/front/dag.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/front/dag.c $Bdecl.o: src/front/decl.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/front/decl.c $Benode.o: src/front/enode.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/front/enode.c $Berror.o: src/front/error.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/front/error.c $Bevent.o: src/front/event.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/front/event.c $Bexpr.o: src/front/expr.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/front/expr.c $Binit.o: src/front/init.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/front/init.c $Binits.o: src/front/inits.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/front/inits.c $Binput.o: src/front/input.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/front/input.c $Blex.o: src/front/lex.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/front/lex.c $Blist.o: src/front/list.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/front/list.c $Bmain.o: src/front/main.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/front/main.c $Bnull.o: src/front/null.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/front/null.c $Boutput.o: src/front/output.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/front/output.c $Bprof.o: src/front/prof.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/front/prof.c $Bprofio.o: src/front/profio.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/front/profio.c $Bsimp.o: src/front/simp.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/front/simp.c $Bstmt.o: src/front/stmt.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/front/stmt.c $Bstring.o: src/front/string.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/front/string.c $Bsym.o: src/front/sym.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/front/sym.c $Bsymbolic.o: src/front/symbolic.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/front/symbolic.c $Btrace.o: src/front/trace.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/front/trace.c $Btree.o: src/front/tree.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/front/tree.c $Btypes.o: src/front/types.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ src/front/types.c $Bflow.o: src/back/flow.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/back -o $@ src/back/flow.c $Bgraph.o: src/back/graph.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/back -o $@ src/back/graph.c $Bemit.o: src/back/emit.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/back -o $@ src/back/emit.c $Bsvg.o: src/back/svg.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/back -o $@ src/back/svg.c $Boptimise.o: src/back/optimise.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/back -o $@ src/back/optimise.c $Bblocks.o: src/back/blocks.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/back -o $@ src/back/blocks.c $Bcollections.o: src/back/collections.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/back -o $@ src/back/collections.c $Bstack_gen.o: src/back/stack_gen.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/back -o $@ src/back/stack_gen.c $Bx_stack.o: src/back/x_stack.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/back -Isrc/optimise -o $@ src/back/x_stack.c $Bcleanup.o: src/optimise/cleanup.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/back -o $@ src/optimise/cleanup.c $Bdead.o: src/optimise/dead.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/back -o $@ src/optimise/dead.c $Bverify.o: src/optimise/verify.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/back -o $@ src/optimise/verify.c $Bintra2.o: src/optimise/intra2.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/back -o $@ src/optimise/intra2.c $Blabel.o: src/optimise/label.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/back -o $@ src/optimise/label.c $Bintra3.o: src/optimise/intra3.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/back -o $@ src/optimise/intra3.c $Bpairwise.o: src/optimise/pairwise.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/back -o $@ src/optimise/pairwise.c $Bchains.o: src/optimise/chains.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/back -o $@ src/optimise/chains.c $Bnodes.o: src/optimise/nodes.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/back -o $@ src/optimise/nodes.c $Bbailey.o: src/optimise/bailey.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/back -o $@ src/optimise/bailey.c $Bglobal.o: src/optimise/global.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/back -o $@ src/optimise/global.c $Boptimist.o: src/optimise/optimist.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/back -o $@ src/optimise/optimist.c $Bdagcheck.o: $Bdagcheck.c; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ $Bdagcheck.c $Bufo.o: $Bufo.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/back -o $@ $Bufo.c $Babstract.o: $Babstract.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/back -o $@ $Babstract.c $Butsa.o: $Butsa.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/back -o $@ $Butsa.c $Bmcore.o: $Bmcore.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/back -o $@ $Bmcore.c $Bdagcheck.c: $Blburg$E src/front/dagcheck.md; $Blburg src/front/dagcheck.md $@ $Bufo.c: $Blburg$E src/back/ufo.md; $Blburg src/back/ufo.md $@ $Babstract.c: $Blburg$E src/back/abstract.md; $Blburg src/back/abstract.md $@ $Butsa.c: $Blburg$E src/back/utsa_word_address.md; $Blburg src/back/utsa_word_address.md $@ $Bmcore.c: $Blburg$E src/back/mcore.md; $Blburg src/back/mcore.md $@ $Bbprint$E: $Bbprint.o; $(LD) $(LDFLAGS) -o $@ $Bbprint.o $Bops$E: $Bops.o; $(LD) $(LDFLAGS) -o $@ $Bops.o $Bbprint.o: etc/bprint.c src/front/profio.c; $(CC) $(CFLAGS) -c -Isrc/common/ -Isrc/front/ -o $@ etc/bprint.c $Bops.o: etc/ops.c src/front/ops.h; $(CC) $(CFLAGS) -c -Isrc/common/ -o $@ etc/ops.c $Llcc-ufo$E: $Blcc.o $Bhost-ufo.o; $(LD) $(LDFLAGS) -o $@ $Blcc.o $Bhost-ufo.o $Llcc-utsa$E: $Blcc.o $Bhost-utsa.o; $(LD) $(LDFLAGS) -o $@ $Blcc.o $Bhost-utsa.o $Llcc-mcore$E: $Blcc.o $Bhost-mcore.o; $(LD) $(LDFLAGS) -o $@ $Blcc.o $Bhost-mcore.o $Blcc.o: etc/lcc.c; $(CC) $(CFLAGS) -c -o $@ etc/lcc.c $Bhost-ufo.o: $(HOSTFILE); $(CC) $(CFLAGS) -DTARGET=ufo -c -o $@ $(HOSTFILE) $Bhost-utsa.o: $(HOSTFILE); $(CC) $(CFLAGS) -DTARGET=utsa -c -o $@ $(HOSTFILE) $Bhost-mcore.o: $(HOSTFILE); $(CC) $(CFLAGS) -DTARGET=mcore -c -o $@ $(HOSTFILE) LIBOBJS=$Bassert.o $Bbbexit.o $Byynull.o $Bliblcc$A: $(LIBOBJS); $(AR) $@ $Bassert.o $Bbbexit.o $Byynull.o; $(RANLIB) $@ || true $Bassert.o: lib/assert.c; $(CC) $(CFLAGS) -c -o $@ lib/assert.c $Byynull.o: lib/yynull.c; $(CC) $(CFLAGS) -c -o $@ lib/yynull.c $Bbbexit.o: lib/bbexit.c; $(CC) $(CFLAGS) -c -o $@ lib/bbexit.c $Blburg$E: $Blburg.o $Bgram.o; $(LD) $(LDFLAGS) -o $@ $Blburg.o $Bgram.o $Blburg.o $Bgram.o: lburg/lburg.h $Blburg.o: lburg/lburg.c; $(CC) $(CFLAGS) -c -Ilburg -o $@ lburg/lburg.c $Bgram.o: lburg/gram.c; $(CC) $(CFLAGS) -c -Ilburg -o $@ lburg/gram.c CPPOBJS=$Bcpp.o $Blexer.o $Bnlist.o $Btokens.o $Bmacro.o $Beval.o \ $Binclude.o $Bhideset.o $Bgetopt.o $Bunix.o $Lcpp$E: $(CPPOBJS) $(LD) $(LDFLAGS) -o $@ $(CPPOBJS) $(CPPOBJS): cpp/cpp.h $Bcpp.o: cpp/cpp.c; $(CC) $(CFLAGS) -c -Icpp -o $@ cpp/cpp.c $Blexer.o: cpp/lex.c; $(CC) $(CFLAGS) -c -Icpp -o $@ cpp/lex.c $Bnlist.o: cpp/nlist.c; $(CC) $(CFLAGS) -c -Icpp -o $@ cpp/nlist.c $Btokens.o: cpp/tokens.c; $(CC) $(CFLAGS) -c -Icpp -o $@ cpp/tokens.c $Bmacro.o: cpp/macro.c; $(CC) $(CFLAGS) -c -Icpp -o $@ cpp/macro.c $Beval.o: cpp/eval.c; $(CC) $(CFLAGS) -c -Icpp -o $@ cpp/eval.c $Binclude.o: cpp/include.c; $(CC) $(CFLAGS) -c -Icpp -o $@ cpp/include.c $Bhideset.o: cpp/hideset.c; $(CC) $(CFLAGS) -c -Icpp -o $@ cpp/hideset.c $Bgetopt.o: cpp/getopt.c; $(CC) $(CFLAGS) -c -Icpp -o $@ cpp/getopt.c $Bunix.o: cpp/unix.c; $(CC) $(CFLAGS) -c -Icpp -o $@ cpp/unix.c test: $T8q.s \ $Tarray.s \ $Tcf.s \ $Tcq.s \ $Tcvt.s \ $Tfields.s \ $Tfront.s \ $Tincr.s \ $Tinit.s \ $Tlimits.s \ $Tparanoia.s \ $Tsort.s \ $Tspill.s \ $Tstdarg.s \ $Tstruct.s \ $Tswitch.s \ $Twf1.s \ $Tyacc.s $T8q.s: tst/8q.c tst/8q.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/front/run.sh $@ $Tarray.s: tst/array.c tst/array.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/front/run.sh $@ $Tcf.s: tst/cf.c tst/cf.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/front/run.sh $@ $Tcq.s: tst/cq.c tst/cq.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/front/run.sh $@ $Tcvt.s: tst/cvt.c tst/cvt.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/front/run.sh $@ $Tfields.s: tst/fields.c tst/fields.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/front/run.sh $@ $Tfront.s: tst/front.c tst/front.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/front/run.sh $@ $Tincr.s: tst/incr.c tst/incr.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/front/run.sh $@ $Tinit.s: tst/init.c tst/init.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/front/run.sh $@ $Tlimits.s: tst/limits.c tst/limits.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/front/run.sh $@ $Tparanoia.s: tst/paranoia.c tst/paranoia.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/front/run.sh $@ $Tsort.s: tst/sort.c tst/sort.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/front/run.sh $@ $Tspill.s: tst/spill.c tst/spill.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/front/run.sh $@ $Tstdarg.s: tst/stdarg.c tst/stdarg.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/front/run.sh $@ $Tstruct.s: tst/struct.c tst/struct.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/front/run.sh $@ $Tswitch.s: tst/switch.c tst/switch.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/front/run.sh $@ $Twf1.s: tst/wf1.c tst/wf1.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/front/run.sh $@ $Tyacc.s: tst/yacc.c tst/yacc.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/front/run.sh $@ testclean: $(RM) $T8q$E $T8q.s $T8q.2 $T8q.1 $(RM) $Tarray$E $Tarray.s $Tarray.2 $Tarray.1 $(RM) $Tcf$E $Tcf.s $Tcf.2 $Tcf.1 $(RM) $Tcq$E $Tcq.s $Tcq.2 $Tcq.1 $(RM) $Tcvt$E $Tcvt.s $Tcvt.2 $Tcvt.1 $(RM) $Tfields$E $Tfields.s $Tfields.2 $Tfields.1 $(RM) $Tfront$E $Tfront.s $Tfront.2 $Tfront.1 $(RM) $Tincr$E $Tincr.s $Tincr.2 $Tincr.1 $(RM) $Tinit$E $Tinit.s $Tinit.2 $Tinit.1 $(RM) $Tlimits$E $Tlimits.s $Tlimits.2 $Tlimits.1 $(RM) $Tparanoia$E $Tparanoia.s $Tparanoia.2 $Tparanoia.1 $(RM) $Tsort$E $Tsort.s $Tsort.2 $Tsort.1 $(RM) $Tspill$E $Tspill.s $Tspill.2 $Tspill.1 $(RM) $Tstdarg$E $Tstdarg.s $Tstdarg.2 $Tstdarg.1 $(RM) $Tstruct$E $Tstruct.s $Tstruct.2 $Tstruct.1 $(RM) $Tswitch$E $Tswitch.s $Tswitch.2 $Tswitch.1 $(RM) $Twf1$E $Twf1.s $Twf1.2 $Twf1.1 $(RM) $Tyacc$E $Tyacc.s $Tyacc.2 $Tyacc.1 clean:: testclean $(RM) $B*.o $(RM) $Bdagcheck.c $Balpha.c $Bmips.c $Bx86.c $Bsparc.c $Bx86linux.c $Bstack.c $(RM) $Bscc1$E $Bscc1$E $B1scc$E $B2scc$E $(RM) $B*.ilk clobber:: clean $(RM) $Bscc$E $Blburg$E $Bcpp$E $Blcc$E $Bcp$E $Bbprint$E $B*$A $(RM) $B*.pdb $B*.pch RCCSRCS=src/front/alloc.c \ src/front/bind.c \ src/front/dag.c \ src/front/decl.c \ src/front/enode.c \ src/front/error.c \ src/front/expr.c \ src/front/event.c \ src/front/init.c \ src/front/inits.c \ src/front/input.c \ src/front/lex.c \ src/front/list.c \ src/front/main.c \ src/front/output.c \ src/front/prof.c \ src/front/profio.c \ src/front/simp.c \ src/front/stmt.c \ src/front/string.c \ src/front/sym.c \ src/front/trace.c \ src/front/tree.c \ src/front/types.c \ src/front/null.c \ src/front/symbolic.c \ src/front/bytecode.c \ src/front/svg.c \ src/front/optimise.c \ src/front/gen.c \ src/front/stab.c \ $Bdagcheck.c \ $Butsa.c \ $Bmcore.c \ $Bufo.c \ $Babstract.c LCC=/usr/marks/bin/lcc-ufo -Isrc/common/ -Iufo/include -I/src/back -I/src/optimise triple: $B2scc$E strip $B1scc$E $B2scc$E dd if=$B1scc$E of=$Bscc1$E bs=512 skip=1 dd if=$B2scc$E of=$Bscc2$E bs=512 skip=1 if cmp $Bscc1$E $Bscc2$E; then \ mv $B2scc$E $Bscc$E; \ $(RM) $B1scc$E $Bscc[12]$E; fi $B1scc$E: $(LCC) -o $@ $(RCCSRCS) $B2scc$E: $B1scc$E $(LCC) -o $@ $(RCCSRCS)