# $Id: makefile 145 2001-10-17 21:53:10Z timo $ PLATFORM=$(shell uname|sed -e s/_.*//|tr A-Z a-z) HOSTFILE=etc/linux.c TEMPDIR=/tmp A=.a O=.o ifeq ($(PLATFORM),mingw32) E=.exe else E= endif CC=gcc LCC_CFLAGS=-O2 -Wall -fno-strict-aliasing LDFLAGS= LD=gcc AR=ar ruv RANLIB=ranlib DIFF=diff RM=rm -f RMDIR=rmdir BUILDDIR=build TSTDIR=$(BUILDDIR)/$(TARGET)/tst BD=$(BUILDDIR)/ T=$(TSTDIR)/ # $Id: makefile 145 2001-10-17 21:53:10Z timo $ what: -@echo make all q3rcc lburg q3cpp q3lcc bprint liblcc triple clean clobber makedirs: @if [ ! -d $(B) ];then mkdir $(B);fi @if [ ! -d $(T) ];then mkdir $(T);fi all:: q3rcc lburg q3cpp q3lcc bprint liblcc q3rcc: makedirs $(BD)q3rcc$(E) lburg: makedirs $(BD)lburg$(E) q3cpp: makedirs $(BD)q3cpp$(E) q3lcc: makedirs $(BD)q3lcc$(E) bprint: makedirs $(BD)bprint$(E) liblcc: makedirs $(BD)liblcc$(A) RCCOBJS=$(BD)alloc$(O) \ $(BD)bind$(O) \ $(BD)dag$(O) \ $(BD)dagcheck$(O) \ $(BD)decl$(O) \ $(BD)enode$(O) \ $(BD)error$(O) \ $(BD)expr$(O) \ $(BD)event$(O) \ $(BD)init$(O) \ $(BD)inits$(O) \ $(BD)input$(O) \ $(BD)lex$(O) \ $(BD)list$(O) \ $(BD)main$(O) \ $(BD)output$(O) \ $(BD)prof$(O) \ $(BD)profio$(O) \ $(BD)simp$(O) \ $(BD)stmt$(O) \ $(BD)string$(O) \ $(BD)sym$(O) \ $(BD)trace$(O) \ $(BD)tree$(O) \ $(BD)types$(O) \ $(BD)null$(O) \ $(BD)symbolic$(O) \ $(BD)gen$(O) \ $(BD)bytecode$(O) $(BD)q3rcc$(E):: $(BD)main$(O) $(BD)librcc$(A) $(EXTRAOBJS) $(LD) $(LDFLAGS) -o $@ $(BD)main$(O) $(EXTRAOBJS) $(BD)librcc$(A) $(EXTRALIBS) $(BD)librcc$(A): $(RCCOBJS) $(AR) $@ $(RCCOBJS); $(RANLIB) $@ || true $(RCCOBJS): src/c.h src/token.h src/config.h $(BD)alloc$(O): src/alloc.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/alloc.c $(BD)bind$(O): src/bind.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/bind.c $(BD)dag$(O): src/dag.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/dag.c $(BD)decl$(O): src/decl.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/decl.c $(BD)enode$(O): src/enode.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/enode.c $(BD)error$(O): src/error.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/error.c $(BD)event$(O): src/event.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/event.c $(BD)expr$(O): src/expr.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/expr.c $(BD)gen$(O): src/gen.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/gen.c $(BD)init$(O): src/init.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/init.c $(BD)inits$(O): src/inits.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/inits.c $(BD)input$(O): src/input.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/input.c $(BD)lex$(O): src/lex.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/lex.c $(BD)list$(O): src/list.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/list.c $(BD)main$(O): src/main.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/main.c $(BD)null$(O): src/null.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/null.c $(BD)output$(O): src/output.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/output.c $(BD)prof$(O): src/prof.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/prof.c $(BD)profio$(O): src/profio.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/profio.c $(BD)simp$(O): src/simp.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/simp.c $(BD)stmt$(O): src/stmt.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/stmt.c $(BD)string$(O): src/string.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/string.c $(BD)sym$(O): src/sym.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/sym.c $(BD)symbolic$(O): src/symbolic.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/symbolic.c $(BD)bytecode$(O): src/bytecode.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/bytecode.c $(BD)trace$(O): src/trace.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/trace.c $(BD)tree$(O): src/tree.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/tree.c $(BD)types$(O): src/types.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/types.c $(BD)stab$(O): src/stab.c src/stab.h; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ src/stab.c $(BD)dagcheck$(O): $(BD)dagcheck.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ $(BD)dagcheck.c $(BD)alpha$(O): $(BD)alpha.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ $(BD)alpha.c $(BD)mips$(O): $(BD)mips.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ $(BD)mips.c $(BD)sparc$(O): $(BD)sparc.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ $(BD)sparc.c $(BD)x86$(O): $(BD)x86.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ $(BD)x86.c $(BD)x86linux$(O): $(BD)x86linux.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ $(BD)x86linux.c $(BD)dagcheck.c: $(BD)lburg$(E) src/dagcheck.md; $(BD)lburg src/dagcheck.md $@ $(BD)alpha.c: $(BD)lburg$(E) src/alpha.md; $(BD)lburg src/alpha.md $@ $(BD)mips.c: $(BD)lburg$(E) src/mips.md; $(BD)lburg src/mips.md $@ $(BD)sparc.c: $(BD)lburg$(E) src/sparc.md; $(BD)lburg src/sparc.md $@ $(BD)x86.c: $(BD)lburg$(E) src/x86.md; $(BD)lburg src/x86.md $@ $(BD)x86linux.c: $(BD)lburg$(E) src/x86linux.md; $(BD)lburg src/x86linux.md $@ $(BD)q3rcc.h: src/rcc.asdl; $(ASDL_HOME)/bin/asdlGen --c -d $(BD) src/rcc.asdl $(BD)q3rcc$(O): $(BD)rcc.h; $(CC) $(LCC_CFLAGS) -c -Isrc -I$(BD) -I$(ASDL_HOME)/include/asdlGen -o $@ $(BD)rcc.c $(BD)asdl$(O): src/asdl.c $(BD)rcc.h src/c.h; $(CC) $(LCC_CFLAGS) -c -Isrc -I$(BD) -I$(ASDL_HOME)/include/asdlGen -o $@ src/asdl.c $(BD)pass2$(O): src/pass2.c $(BD)rcc.h src/c.h; $(CC) $(LCC_CFLAGS) -c -Isrc -I$(BD) -I$(ASDL_HOME)/include/asdlGen -o $@ src/pass2.c $(BD)2html$(O): src/2html.c $(BD)rcc.h src/c.h; $(CC) $(LCC_CFLAGS) -c -Isrc -I$(BD) -I$(ASDL_HOME)/include/asdlGen -o $@ src/2html.c $(BD)pass2$(E): $(BD)pass2$(O) $(EXTRAOBJS) $(BD)librcc$(A); $(LD) $(LDFLAGS) -o $@ $(BD)pass2$(O) $(EXTRAOBJS) $(BD)librcc$(A) $(EXTRALIBS) $(BD)2html$(E): $(BD)2html$(O) $(BD)q3rcc$(O); $(LD) $(LDFLAGS) -o $@ $(BD)2html$(O) $(BD)q3rcc$(O) $(EXTRALIBS) $(BD)bprint$(E): $(BD)bprint$(O); $(LD) $(LDFLAGS) -o $@ $(BD)bprint$(O) $(BD)bprint$(O): etc/bprint.c; $(CC) $(LCC_CFLAGS) -c -Isrc -o $@ etc/bprint.c $(BD)q3lcc$(E): $(BD)q3lcc$(O) $(BD)host$(O); $(LD) $(LDFLAGS) -o $@ $(BD)q3lcc$(O) $(BD)host$(O) SYSTEM=$(shell cc -print-search-dirs | head -n 1 | cut -b 10-) $(BD)q3lcc$(O): etc/lcc.c; $(CC) $(LCC_CFLAGS) -c -DTEMPDIR=\"$(TEMPDIR)\" -o $@ etc/lcc.c $(BD)host$(O): $(HOSTFILE); $(CC) $(LCC_CFLAGS) -c -DSYSTEM=\"$(SYSTEM)\" -o $@ $(HOSTFILE) LIBOBJS=$(BD)assert$(O) $(BD)bbexit$(O) $(BD)yynull$(O) $(BD)liblcc$(A): $(LIBOBJS); $(AR) $@ $(BD)assert$(O) $(BD)bbexit$(O) $(BD)yynull$(O); $(RANLIB) $@ || true $(BD)assert$(O): lib/assert.c; $(CC) $(LCC_CFLAGS) -c -o $@ lib/assert.c $(BD)yynull$(O): lib/yynull.c; $(CC) $(LCC_CFLAGS) -c -o $@ lib/yynull.c $(BD)bbexit$(O): lib/bbexit.c; $(CC) $(LCC_CFLAGS) -c -o $@ lib/bbexit.c $(BD)lburg$(E): $(BD)lburg$(O) $(BD)gram$(O); $(LD) $(LDFLAGS) -o $@ $(BD)lburg$(O) $(BD)gram$(O) $(BD)lburg$(O) $(BD)gram$(O): lburg/lburg.h $(BD)lburg$(O): lburg/lburg.c; $(CC) $(LCC_CFLAGS) -c -Ilburg -o $@ lburg/lburg.c $(BD)gram$(O): lburg/gram.c; $(CC) $(LCC_CFLAGS) -c -Ilburg -o $@ lburg/gram.c CPPOBJS=$(BD)q3cpp$(O) $(BD)lexer$(O) $(BD)nlist$(O) $(BD)tokens$(O) $(BD)macro$(O) $(BD)eval$(O) \ $(BD)include$(O) $(BD)hideset$(O) $(BD)getopt$(O) $(BD)unix$(O) $(BD)q3cpp$(E): $(CPPOBJS) $(LD) $(LDFLAGS) -o $@ $(CPPOBJS) $(CPPOBJS): cpp/cpp.h $(BD)q3cpp$(O): cpp/cpp.c; $(CC) $(LCC_CFLAGS) -c -Icpp -o $@ cpp/cpp.c $(BD)lexer$(O): cpp/lex.c; $(CC) $(LCC_CFLAGS) -c -Icpp -o $@ cpp/lex.c $(BD)nlist$(O): cpp/nlist.c; $(CC) $(LCC_CFLAGS) -c -Icpp -o $@ cpp/nlist.c $(BD)tokens$(O): cpp/tokens.c; $(CC) $(LCC_CFLAGS) -c -Icpp -o $@ cpp/tokens.c $(BD)macro$(O): cpp/macro.c; $(CC) $(LCC_CFLAGS) -c -Icpp -o $@ cpp/macro.c $(BD)eval$(O): cpp/eval.c; $(CC) $(LCC_CFLAGS) -c -Icpp -o $@ cpp/eval.c $(BD)include$(O): cpp/include.c; $(CC) $(LCC_CFLAGS) -c -Icpp -o $@ cpp/include.c $(BD)hideset$(O): cpp/hideset.c; $(CC) $(LCC_CFLAGS) -c -Icpp -o $@ cpp/hideset.c $(BD)getopt$(O): cpp/getopt.c; $(CC) $(LCC_CFLAGS) -c -Icpp -o $@ cpp/getopt.c $(BD)unix$(O): cpp/unix.c; $(CC) $(LCC_CFLAGS) -c -Icpp -o $@ cpp/unix.c test: $(T)8q.s \ $(T)array.s \ $(T)cf.s \ $(T)cq.s \ $(T)cvt.s \ $(T)fields.s \ $(T)front.s \ $(T)incr.s \ $(T)init.s \ $(T)limits.s \ $(T)paranoia.s \ $(T)sort.s \ $(T)spill.s \ $(T)stdarg.s \ $(T)struct.s \ $(T)switch.s \ $(T)wf1.s \ $(T)yacc.s $(T)8q.s: tst/8q.c tst/8q.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/run.sh $@ $(T)array.s: tst/array.c tst/array.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/run.sh $@ $(T)cf.s: tst/cf.c tst/cf.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/run.sh $@ $(T)cq.s: tst/cq.c tst/cq.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/run.sh $@ $(T)cvt.s: tst/cvt.c tst/cvt.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/run.sh $@ $(T)fields.s: tst/fields.c tst/fields.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/run.sh $@ $(T)front.s: tst/front.c tst/front.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/run.sh $@ $(T)incr.s: tst/incr.c tst/incr.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/run.sh $@ $(T)init.s: tst/init.c tst/init.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/run.sh $@ $(T)limits.s: tst/limits.c tst/limits.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/run.sh $@ $(T)paranoia.s: tst/paranoia.c tst/paranoia.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/run.sh $@ $(T)sort.s: tst/sort.c tst/sort.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/run.sh $@ $(T)spill.s: tst/spill.c tst/spill.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/run.sh $@ $(T)stdarg.s: tst/stdarg.c tst/stdarg.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/run.sh $@ $(T)struct.s: tst/struct.c tst/struct.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/run.sh $@ $(T)switch.s: tst/switch.c tst/switch.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/run.sh $@ $(T)wf1.s: tst/wf1.c tst/wf1.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/run.sh $@ $(T)yacc.s: tst/yacc.c tst/yacc.0 all; @env BUILDDIR=$(BUILDDIR) TSTDIR=$(TSTDIR) src/run.sh $@ testclean: $(RM) $(T)8q$(E) $(T)8q.s $(T)8q.2 $(T)8q.1 $(RM) $(T)array$(E) $(T)array.s $(T)array.2 $(T)array.1 $(RM) $(T)cf$(E) $(T)cf.s $(T)cf.2 $(T)cf.1 $(RM) $(T)cq$(E) $(T)cq.s $(T)cq.2 $(T)cq.1 $(RM) $(T)cvt$(E) $(T)cvt.s $(T)cvt.2 $(T)cvt.1 $(RM) $(T)fields$(E) $(T)fields.s $(T)fields.2 $(T)fields.1 $(RM) $(T)front$(E) $(T)front.s $(T)front.2 $(T)front.1 $(RM) $(T)incr$(E) $(T)incr.s $(T)incr.2 $(T)incr.1 $(RM) $(T)init$(E) $(T)init.s $(T)init.2 $(T)init.1 $(RM) $(T)limits$(E) $(T)limits.s $(T)limits.2 $(T)limits.1 $(RM) $(T)paranoia$(E) $(T)paranoia.s $(T)paranoia.2 $(T)paranoia.1 $(RM) $(T)sort$(E) $(T)sort.s $(T)sort.2 $(T)sort.1 $(RM) $(T)spill$(E) $(T)spill.s $(T)spill.2 $(T)spill.1 $(RM) $(T)stdarg$(E) $(T)stdarg.s $(T)stdarg.2 $(T)stdarg.1 $(RM) $(T)struct$(E) $(T)struct.s $(T)struct.2 $(T)struct.1 $(RM) $(T)switch$(E) $(T)switch.s $(T)switch.2 $(T)switch.1 $(RM) $(T)wf1$(E) $(T)wf1.s $(T)wf1.2 $(T)wf1.1 $(RM) $(T)yacc$(E) $(T)yacc.s $(T)yacc.2 $(T)yacc.1 install:: all install -s -m 0755 $(BD)q3lcc$(E) ../ install -s -m 0755 $(BD)q3cpp$(E) ../ install -s -m 0755 $(BD)q3rcc$(E) ../ uninstall:: -$(RM) ../q3lcc$(E) -$(RM) ../q3cpp$(E) -$(RM) ../q3rcc$(E) clean:: testclean $(RM) $(BD)*$(O) $(RM) $(BD)dagcheck.c $(BD)alpha.c $(BD)mips.c $(BD)x86.c $(BD)sparc.c $(BD)x86linux.c $(BD)gram.c $(RM) $(BD)rcc.c $(BD)rcc.h $(RM) $(BD)rcc1$(E) $(BD)rcc1$(E) $(BD)1rcc$(E) $(BD)2rcc$(E) $(RM) $(BD)*.ilk clobber:: clean $(RM) $(BD)q3rcc$(E) $(BD)2html$(E) $(BD)pass2$(E) $(BD)lburg$(E) $(BD)q3cpp$(E) $(BD)q3lcc$(E) $(BD)bprint$(E) $(BD)*$(A) $(RM) $(BD)*.pdb $(BD)*.pch RCCSRCS=src/alloc.c \ src/bind.c \ src/dag.c \ src/decl.c \ src/enode.c \ src/error.c \ src/expr.c \ src/event.c \ src/init.c \ src/inits.c \ src/input.c \ src/lex.c \ src/list.c \ src/main.c \ src/output.c \ src/prof.c \ src/profio.c \ src/simp.c \ src/stmt.c \ src/string.c \ src/sym.c \ src/trace.c \ src/tree.c \ src/types.c \ src/null.c \ src/symbolic.c \ src/bytecode.c \ src/gen.c \ src/stab.c \ $(BD)dagcheck.c \ $(BD)alpha.c \ $(BD)mips.c \ $(BD)sparc.c \ $(BD)x86linux.c \ $(BD)x86.c C=$(BD)q3lcc -A -d0.6 -Wo-lccdir=$(BUILDDIR) -Isrc -I$(BUILDDIR) triple: $(BD)q3rcc$(E) $(BD)q3lcc$(E) $(BD)q3cpp$(E) $C -o $(BD)1rcc$(E) -B$(BD) $(RCCSRCS) $C -o $(BD)2rcc$(E) -B$(BD)1 $(RCCSRCS) strip $(BD)1rcc$(E) $(BD)2rcc$(E) dd if=$(BD)1rcc$(E) of=$(BD)rcc1$(E) bs=512 skip=1 dd if=$(BD)2rcc$(E) of=$(BD)rcc2$(E) bs=512 skip=1 if cmp $(BD)rcc1$(E) $(BD)rcc2$(E); then \ mv $(BD)2rcc$(E) $(BD)q3rcc$(E); \ $(RM) $(BD)1rcc$(E) $(BD)q3rcc[12]$(E); fi