ioef/code/tools/lcc/makefile

306 lines
12 KiB
Makefile

# $Id: makefile 145 2001-10-17 21:53:10Z timo $
HOSTFILE=etc/linux.c
TEMPDIR=/tmp
A=.a
O=.o
PLATFORM=$(shell uname|sed -e s/_.*//|tr A-Z a-z)
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