CC = gcc # -O3 # MCFLAG = -DUSE_CODE_KEYWORD CFLAGS = -g -Wall -Wno-nullability-completeness -I. $(MCFLAG) # -O # CFLAGS = -g -Wall -I. -pg -fprofile-arcs -ftest-coverage # LDFLAGS = -pg # for Linux Zaurus CFLAGS = -fsigned-char -pipe -g -I. -I/home/zaurus/develop/include -DUSE_CODE_KEYWORD CFLAGS1 = -g -pipe -I. -fsigned-char -DUSE_CODE_KEYWORD BASE=0 STAGE=1 MFLAGS=$(MFALGS) BASE=$(BASE) STAGE=$(STAGE) ARCH=arm MC=mc-$(ARCH) MLIB = -lm PRINTF= # printf.c CONVERTER=conv/c.o conv/null.o conv/c2cbc.o conv/cbc2c.o COMPLIB = mc-parse.o mc-codegen.o mc-switch.o mc-macro.o mc-tree.o mc-inline.o # CODE=mc-code-ia32.c CODE=mc-code-$(ARCH).c # TARGET=test/simp all: mc mc: mc-include.c mc-$(ARCH) cp mc-$(ARCH) mc TAGS: ctags mc-code-powerpc.c mc-code.h mc-codegen.c mc-codegen.h \ mc-macro.c \ mc-parse.c mc-tree.c mc-switch.c mc-switch.h \ mc.h conv/c.c conv/c.h \ mc-inline.h mc-inline.c \ conv/conv.h conv/convdef.h conv/null.c mc-powerpc : mc-code-powerpc.o $(COMPLIB) $(CONVERTER) $(CC) $(LDFLAGS) -g mc-code-powerpc.o $(COMPLIB) $(CONVERTER) -o $@ mc-ia32 : mc-code-ia32.o $(COMPLIB) $(CONVERTER) $(CC) $(LDFLAGS) -g mc-code-ia32.o $(COMPLIB) $(CONVERTER) -o $@ mc-mips : mc-code-mips.o $(COMPLIB) $(CONVERTER) $(CC) $(LDFLAGS) -g mc-code-mips.o $(COMPLIB) $(CONVERTER) -o $@ mc-arm : mc-code-arm.o $(COMPLIB) $(CONVERTER) $(CC) $(LDFLAGS) -g mc-code-arm.o $(COMPLIB) $(CONVERTER) -o $@ conv/conv.h: conv_func.tbl tools/conv_func.pl perl tools/conv_func.pl conv/convdef.h: conv_func.tbl tools/conv_func.pl perl tools/conv_func.pl conv/null.c: conv_func.tbl tools/conv_func.pl perl tools/conv_func.pl mc-include.c: perl tools/find-gcc-include-path -l $(CC) > mc-include.c mc.h-new: perl tools/mc-h-renum.pl mc.h > mc.h.1 mv mc.h.1 mc.h check-all: check-all-c check-all-code check-all-c: make check TARGET=test/basic make check-inline TARGET=test/basic make check TARGET=test/call make check TARGET=test/fact0 make check TARGET=test/float make check TARGET=test/ifdef make check TARGET=test/int make check TARGET=test/macro make check TARGET=test/regargs make check TARGET=test/short make check TARGET=test/simp make check TARGET=test/simp0 make check TARGET=test/simp1 make check TARGET=test/static make check TARGET=test/tmp make check TARGET=test/tmp10 make check TARGET=test/tmp11 make check TARGET=test/tmp12 make check TARGET=test/tmp5 make check TARGET=test/tmp7 make check TARGET=test/tmp8 make check TARGET=test/tmp9 make check TARGET=test/enum make check TARGET=test/obsf make check TARGET=test/obsf2 make check TARGET=test/long make check TARGET=test/tstdarg make check TARGET=test/switch make check TARGET=test/strinit make check TARGET=test/code-gen-all make check-inline TARGET=test/code-gen-all make check TARGET=test/bitfield make check TARGET=test/bitfield1 make check-inline TARGET=test/bitfield1 make check TARGET=test/cext make check TARGET=test/const make check TARGET=test/void_code make check TARGET=test/putenemy make check TARGET=test/inline make check TARGET=test/offset make check TARGET=test/ps2 make check TARGET=test/multi # make check TARGET=test/scope STDFLAG="-std=gnu99" # make check-inline TARGET=test/scope STDFLAG="-std=gnu99" #MK =-make MK= check-all-code: make check-code$(MK) TARGET=test/arg make check-code$(MK) TARGET=test/conv make check-code$(MK) TARGET=test/conv1 make check-code$(MK) TARGET=test/fact-a make check-code$(MK) TARGET=test/fact make check-code$(MK) TARGET=test/goto make check-code$(MK) TARGET=test/test1 make check-code$(MK) TARGET=test/test2 make check-code$(MK) TARGET=test/tmpa make check-code$(MK) TARGET=test/tmp1 make check-code$(MK) TARGET=test/tmp2 make check-code$(MK) TARGET=test/tmp4 make check-code$(MK) TARGET=test/tmp6 make check-code$(MK) TARGET=test/tmpb make check-code$(MK) TARGET=test/scope make check-code$(MK) TARGET=test/throw make check-code$(MK) TARGET=test/too-long-argument check-nkf: ( cd nkf203; $(CC) -g -o nkf1 nkf.c utf8tbl.c ) ( cd nkf203; ../mc-$(ARCH) -s nkf.c utf8tbl.c ) ( cd nkf203; $(CC) -g -o nkf nkf.s utf8tbl.s ) ( cd nkf203; perl test.pl ) # -./$(MC) -Itest/ $(TARGET).c ifeq ($(GCC),clang) NOWARN = -Wno-literal-conversion -Wno-implicit-function-declaration -Wno-implicit-int \ -Wno-incompatible-pointer-types -Wno-int-conversion -Wno-return-type -Wno-bitfield-constant-conversion -Wno-tautological-compare -Wno-shift-overflow \ -Wno-unused-value -Wno-nullability-completeness endif check: mc $(MC) $(TARGET).c -$(CC) $(CFLAGS1) $(STDFLAG) $(TARGET).c -o b.out $(MLIB) -./b.out > $(TARGET).gcc.out -./$(MC) -s $(TARGET).c -$(CC) $(TARGET).s $(MLIB) -./a.out > $(TARGET).$(MC).out -diff $(TARGET).gcc.out $(TARGET).$(MC).out check-inline: mc $(MC) $(TARGET).c -$(CC) $(CFLAGS1) $(STDFLAG) $(TARGET).c -o b.out $(MLIB) -./b.out > $(TARGET).gcc.out -./$(MC) -s -DINLINE=inline $(TARGET).c -$(CC) $(TARGET).s $(MLIB) -./a.out > $(TARGET).$(MC).out -diff $(TARGET).gcc.out $(TARGET).$(MC).out check-code: mc $(MC) -./$(MC) -s $(TARGET).c -$(CC) $(TARGET).s $(MLIB) -./a.out > $(TARGET).$(MC).out -diff $(TARGET).code-out $(TARGET).$(MC).out check-code-make: mc $(MC) -./$(MC) -s $(TARGET).c -$(CC) $(TARGET).s $(MLIB) -./a.out > $(TARGET).code-out test/code-gen-all.c: test/code-gen.pl test/code-gen.c perl test/code-gen.pl < test/code-gen.c > test/code-gen-all.c incpri: perl tools/incpri.pl test/*.c tags: tags-$(ARCH) tags-$(ARCH): ctags mc.h mc-code.h mc-code-$(ARCH).c mc-codegen.c mc-codegen.h \ mc-parse.c mc-tree.c \ conv/c.c conv/c.h \ conv/conv.h conv/convdef.h tar : make clean tar cBf - . | gzip > ../comp.tgz depend : mc-include.c makedepend mc-code-ia32.c mc-code.h mc-codegen.c mc-codegen.h \ mc-parse.c mc-tree.c mc-switch.c mc-switch.h mc.h \ mc-inline.c mc-macro.c mc-macro.h mc-parse.h \ conv/c.c conv/c.h conv/c2cbc.c conv/c2cbc.h conv/cbc2c.c \ conv/cbc2c.h conv/conv.h conv/convdef.h conv/null.c conv/null.h \ mc-code-arm.c \ mc-code-powerpc.c \ mc-code-mips.c clean : -rm -f mc mc-ia32 mc-powerpc mc-mips mc-arm *.bak *.s *.o *.cc mc mc1 mc2 a.out *~ core* */*.o *.bak test/*.s test/*.cc test/*.o test/*.bak test/*~ conv/*.s conv/*.cc conv/*.o conv/*.bak conv/*~ *.out */*.out *.i */*.i mc-include.h mc1 : b00.s b01.s mc-codegen.o mc-tree.o mc-switch.o mc-macro.o mc-inline.o $(CONVERTER) $(CC) -g -o $@ $(PRINTF) b00.s b01.s mc-codegen.o mc-tree.o mc-switch.o mc-macro.o mc-inline.o $(CONVERTER) mc2 : b00.s b01.s b02.s b03.s mc-macro.o mc-inline.o $(CONVERTER) $(CC) -g -o $@ $(PRINTF) b00.s b01.s b02.s b03.s b04.s mc-macro.o mc-inline.o $(CONVERTER) b00.s : mc-parse.c $(MC) ./$(MC) -s -ob00.s mc-parse.c b01.s : $(CODE) $(MC) ./$(MC) -s -ob01.s $(CODE) b02.s : mc-codegen.c $(MC) ./$(MC) -s -ob02.s mc-codegen.c b03.s : mc-tree.c $(MC) ./$(MC) -s -ob03.s mc-tree.c b04.s : mc-switch.c $(MC) ./$(MC) -s -ob04.s mc-switch.c b10.s : mc-parse.c mc1 ./mc1 -s -ob10.s mc-parse.c b11.s : $(CODE) $(PRINTF) mc1 ./mc1 -s -ob11.s $(CODE) b12.s : mc-codegen.c mc1 ./mc1 -s -ob12.s mc-codegen.c b13.s : mc-tree.c mc1 ./mc1 -s -ob13.s mc-tree.c b14.s : mc-switch.c mc1 ./mc1 -s -ob14.s mc-switch.c b20.s : mc-parse.c mc2 ./mc2 -s -ob20.s mc-parse.c b21.s : $(CODE) $(PRINTF) mc2 ./mc2 -s -ob21.s $(CODE) b22.s : mc-codegen.c mc2 ./mc2 -s -ob22.s mc-codegen.c b23.s : mc-tree.c mc2 ./mc2 -s -ob23.s mc-tree.c b24.s : mc-switch.c mc1 ./mc2 -s -ob24.s mc-switch.c diff : b00.s b01.s b02.s b03.s b04.s b10.s b11.s b12.s b13.s b14.s -diff b00.s b10.s -diff b01.s b11.s -diff b02.s b12.s -diff b03.s b13.s -diff b04.s b14.s diff2 : b00.s b01.s b02.s b03.s b04.s b20.s b21.s b22.s b23.s b24.s -diff b00.s b20.s -diff b01.s b21.s -diff b02.s b22.s -diff b03.s b23.s -diff b04.s b24.s # DO NOT DELETE