From 3d5e72e20b3651895693eaf21eb415287546d212 Mon Sep 17 00:00:00 2001 From: David Given Date: Sun, 22 Mar 2015 12:09:46 +0100 Subject: [PATCH 1/5] Newer versions of GNU Make have a new function which collides with a variable we're using; change the name of the variable. --- first/core.mk | 2 +- lang/basic/src/build.mk | 14 +++++++------- lang/cem/cemcom.ansi/build.mk | 20 ++++++++++---------- lang/cem/cpp.ansi/build.mk | 12 ++++++------ lang/m2/comp/build.mk | 20 ++++++++++---------- lang/m2/libm2/build.mk | 2 +- lang/pc/comp/build.mk | 20 ++++++++++---------- mach/proto/as/build.mk | 2 +- mach/proto/ncg/build.mk | 4 ++-- util/amisc/build.mk | 2 +- util/arch/build.mk | 8 ++++---- util/ego/build.mk | 10 +++++----- util/led/build.mk | 4 ++-- util/misc/build.mk | 28 ++++++++++++++-------------- util/ncgg/build.mk | 2 +- util/opt/build.mk | 21 ++++++++++++--------- util/topgen/build.mk | 10 +++++----- 17 files changed, 92 insertions(+), 89 deletions(-) diff --git a/first/core.mk b/first/core.mk index d2e32fc68..261a2c30e 100644 --- a/first/core.mk +++ b/first/core.mk @@ -51,7 +51,7 @@ endef # --- Add a raw to the queue -define file +define rawfile $(eval q += $1) endef diff --git a/lang/basic/src/build.mk b/lang/basic/src/build.mk index 00d429107..95019babd 100644 --- a/lang/basic/src/build.mk +++ b/lang/basic/src/build.mk @@ -29,13 +29,13 @@ $g: $D/maketokentab $(OBJDIR)/$D/Lpars.h $(eval $q: $(OBJDIR)/$D/Lpars.h) $(eval $q: $(INCDIR)/print.h) -$(call file, $(LIBEM_MES)) -$(call file, $(LIBEMK)) -$(call file, $(LIBEM_DATA)) -$(call file, $(LIBALLOC)) -$(call file, $(LIBPRINT)) -$(call file, $(LIBSTRING)) -$(call file, $(LIBSYSTEM)) +$(call rawfile, $(LIBEM_MES)) +$(call rawfile, $(LIBEMK)) +$(call rawfile, $(LIBEM_DATA)) +$(call rawfile, $(LIBALLOC)) +$(call rawfile, $(LIBPRINT)) +$(call rawfile, $(LIBSTRING)) +$(call rawfile, $(LIBSYSTEM)) $(call cprogram, $(BINDIR)/em_bem) $(call installto, $(PLATDEP)/em_bem) diff --git a/lang/cem/cemcom.ansi/build.mk b/lang/cem/cemcom.ansi/build.mk index 0e6b45267..1f2b483ec 100644 --- a/lang/cem/cemcom.ansi/build.mk +++ b/lang/cem/cemcom.ansi/build.mk @@ -134,16 +134,16 @@ $(call build-cemcom-ansi-next, \ $(eval $q: $(OBJDIR)/$D/Lpars.h) -$(call file, $(LIBEM_MES)) -$(call file, $(LIBEMK)) -$(call file, $(LIBEM_DATA)) -$(call file, $(LIBINPUT)) -$(call file, $(LIBASSERT)) -$(call file, $(LIBALLOC)) -$(call file, $(LIBFLT_ARITH)) -$(call file, $(LIBPRINT)) -$(call file, $(LIBSYSTEM)) -$(call file, $(LIBSTRING)) +$(call rawfile, $(LIBEM_MES)) +$(call rawfile, $(LIBEMK)) +$(call rawfile, $(LIBEM_DATA)) +$(call rawfile, $(LIBINPUT)) +$(call rawfile, $(LIBASSERT)) +$(call rawfile, $(LIBALLOC)) +$(call rawfile, $(LIBFLT_ARITH)) +$(call rawfile, $(LIBPRINT)) +$(call rawfile, $(LIBSYSTEM)) +$(call rawfile, $(LIBSTRING)) $(call cprogram, $(BINDIR)/cemcom.ansi) $(call installto, $(PLATDEP)/em_cemcom.ansi) $(eval CEMCOMANSI := $o) diff --git a/lang/cem/cpp.ansi/build.mk b/lang/cem/cpp.ansi/build.mk index e102c523b..be03bc958 100644 --- a/lang/cem/cpp.ansi/build.mk +++ b/lang/cem/cpp.ansi/build.mk @@ -71,12 +71,12 @@ define build-cpp-ansi-impl $(call llgen, $(OBJDIR)/$D, $(OBJDIR)/$D/tokenfile.g $D/expression.g) - $(call file, $(LIBINPUT)) - $(call file, $(LIBASSERT)) - $(call file, $(LIBALLOC)) - $(call file, $(LIBPRINT)) - $(call file, $(LIBSYSTEM)) - $(call file, $(LIBSTRING)) + $(call rawfile, $(LIBINPUT)) + $(call rawfile, $(LIBASSERT)) + $(call rawfile, $(LIBALLOC)) + $(call rawfile, $(LIBPRINT)) + $(call rawfile, $(LIBSYSTEM)) + $(call rawfile, $(LIBSTRING)) $(call tabgen, $D/char.tab) diff --git a/lang/m2/comp/build.mk b/lang/m2/comp/build.mk index a3be0ee7a..18ca8b7dd 100644 --- a/lang/m2/comp/build.mk +++ b/lang/m2/comp/build.mk @@ -108,16 +108,16 @@ $(eval $q: $(INCDIR)/em_codeEK.h) $(eval $q: $(INCDIR)/print.h) $(eval $q: $(INCDIR)/system.h) -$(call file, $(LIBEM_MES)) -$(call file, $(LIBEMK)) -$(call file, $(LIBEM_DATA)) -$(call file, $(LIBINPUT)) -$(call file, $(LIBASSERT)) -$(call file, $(LIBALLOC)) -$(call file, $(LIBFLT_ARITH)) -$(call file, $(LIBPRINT)) -$(call file, $(LIBSYSTEM)) -$(call file, $(LIBSTRING)) +$(call rawfile, $(LIBEM_MES)) +$(call rawfile, $(LIBEMK)) +$(call rawfile, $(LIBEM_DATA)) +$(call rawfile, $(LIBINPUT)) +$(call rawfile, $(LIBASSERT)) +$(call rawfile, $(LIBALLOC)) +$(call rawfile, $(LIBFLT_ARITH)) +$(call rawfile, $(LIBPRINT)) +$(call rawfile, $(LIBSYSTEM)) +$(call rawfile, $(LIBSTRING)) $(call cprogram, $(BINDIR)/em_m2) $(call installto, $(PLATDEP)/em_m2) diff --git a/lang/m2/libm2/build.mk b/lang/m2/libm2/build.mk index 7dadeb347..1ebc89cc3 100644 --- a/lang/m2/libm2/build.mk +++ b/lang/m2/libm2/build.mk @@ -95,7 +95,7 @@ $(eval g := \ $(foreach f, $g, \ $(call reset) \ - $(call file, lang/m2/libm2/$f) \ + $(call rawfile, lang/m2/libm2/$f) \ $(call installto, $(PLATIND)/include/modula2/$f)) endef diff --git a/lang/pc/comp/build.mk b/lang/pc/comp/build.mk index 2939c4524..c3b4dd918 100644 --- a/lang/pc/comp/build.mk +++ b/lang/pc/comp/build.mk @@ -111,16 +111,16 @@ $(eval $q: $(INCDIR)/em_codeEK.h) $(eval $q: $(INCDIR)/print.h) $(eval $q: $(INCDIR)/system.h) -$(call file, $(LIBEM_MES)) -$(call file, $(LIBEMK)) -$(call file, $(LIBEM_DATA)) -$(call file, $(LIBINPUT)) -$(call file, $(LIBASSERT)) -$(call file, $(LIBALLOC)) -$(call file, $(LIBFLT_ARITH)) -$(call file, $(LIBPRINT)) -$(call file, $(LIBSYSTEM)) -$(call file, $(LIBSTRING)) +$(call rawfile, $(LIBEM_MES)) +$(call rawfile, $(LIBEMK)) +$(call rawfile, $(LIBEM_DATA)) +$(call rawfile, $(LIBINPUT)) +$(call rawfile, $(LIBASSERT)) +$(call rawfile, $(LIBALLOC)) +$(call rawfile, $(LIBFLT_ARITH)) +$(call rawfile, $(LIBPRINT)) +$(call rawfile, $(LIBSYSTEM)) +$(call rawfile, $(LIBSTRING)) $(call cprogram, $(BINDIR)/em_pc) $(call installto, $(PLATDEP)/em_pc) diff --git a/mach/proto/as/build.mk b/mach/proto/as/build.mk index 64eaab1e9..fce5ec204 100644 --- a/mach/proto/as/build.mk +++ b/mach/proto/as/build.mk @@ -36,7 +36,7 @@ $(OBJDIR)/$D/preprocessed-comm2.y: mach/proto/as/comm2.y $(CPPANSI) \ -Ih \ mach/proto/as/comm2.y > $$@ - $(call file, $(LIBOBJECT)) + $(call rawfile, $(LIBOBJECT)) $(call cprogram, $(BINDIR)/$(PLATFORM)/as) $(call installto, $(PLATDEP)/$(PLATFORM)/as) endef diff --git a/mach/proto/ncg/build.mk b/mach/proto/ncg/build.mk index 1bbda2b49..0056452c1 100644 --- a/mach/proto/ncg/build.mk +++ b/mach/proto/ncg/build.mk @@ -36,8 +36,8 @@ $(call cfile, $(OBJDIR)/$D/tables.c) $(eval $q: $(INCDIR)/flt_arith.h) -$(call file, $(LIBEM_DATA)) -$(call file, $(LIBFLT_ARITH)) +$(call rawfile, $(LIBEM_DATA)) +$(call rawfile, $(LIBFLT_ARITH)) $(call cprogram, $(BINDIR)/$(PLATFORM)/ncg) $(call installto, $(PLATDEP)/$(PLATFORM)/ncg) diff --git a/util/amisc/build.mk b/util/amisc/build.mk index 03f44b5e9..286b8f305 100644 --- a/util/amisc/build.mk +++ b/util/amisc/build.mk @@ -2,7 +2,7 @@ define build-simple-tool-impl $(call reset) $(call cfile, util/amisc/$1.c) - $(call file, $(LIBOBJECT)) + $(call rawfile, $(LIBOBJECT)) $(call cprogram, $(BINDIR)/$1) $(eval INSTALLABLES += $o) $(call installto, $(INSDIR)/bin/$1) diff --git a/util/arch/build.mk b/util/arch/build.mk index 4d283f881..11851f5c9 100644 --- a/util/arch/build.mk +++ b/util/arch/build.mk @@ -6,10 +6,10 @@ define build-aal-impl $(call cfile, $D/archiver.c) - $(call file, $(LIBOBJECT)) - $(call file, $(LIBPRINT)) - $(call file, $(LIBSTRING)) - $(call file, $(LIBSYSTEM)) + $(call rawfile, $(LIBOBJECT)) + $(call rawfile, $(LIBPRINT)) + $(call rawfile, $(LIBSTRING)) + $(call rawfile, $(LIBSYSTEM)) $(call cprogram, $(BINDIR)/aal) $(call installto, $(INSDIR)/bin/aal) diff --git a/util/ego/build.mk b/util/ego/build.mk index ee1e7f865..2fba61ff3 100644 --- a/util/ego/build.mk +++ b/util/ego/build.mk @@ -6,8 +6,8 @@ $(call reset) $(eval cflags += -DVERBOSE -DNOTCOMPACT) $(eval cflags += -I$D/share -I$(OBJDIR)/$D) $(foreach f, $2, $(call cfile, $f)) -$(call file, $(LIBDIR)/libegocore.a) -$(call file, $(LIBEM_DATA)) +$(call rawfile, $(LIBDIR)/libegocore.a) +$(call rawfile, $(LIBEM_DATA)) $(call cprogram, $(BINDIR)/ego/$(strip $1)) $(call installto, $(PLATDEP)/ego/$(strip $1)) $(eval EGO_MODULES += $q) @@ -166,9 +166,9 @@ $(call cfile, $D/em_ego/em_ego.c) $(eval $q: $(INCDIR)/print.h $(INCDIR)/system.h) $(eval $q: $(INCDIR)/em_path.h) -$(call file, $(LIBPRINT)) -$(call file, $(LIBSTRING)) -$(call file, $(LIBSYSTEM)) +$(call rawfile, $(LIBPRINT)) +$(call rawfile, $(LIBSTRING)) +$(call rawfile, $(LIBSYSTEM)) $(call cprogram, $(BINDIR)/em_ego) $(call installto, $(PLATDEP)/em_ego) diff --git a/util/led/build.mk b/util/led/build.mk index d96dd35c6..419948a13 100644 --- a/util/led/build.mk +++ b/util/led/build.mk @@ -16,8 +16,8 @@ define build-led-impl $(call cfile, $D/sym.c) $(call cfile, $D/write.c) - $(call file, $(LIBSTRING)) - $(call file, $(LIBOBJECT)) + $(call rawfile, $(LIBSTRING)) + $(call rawfile, $(LIBOBJECT)) $(call cprogram, $(BINDIR)/em_led) $(call installto, $(PLATDEP)/em_led) diff --git a/util/misc/build.mk b/util/misc/build.mk index dfa8ac7c1..95b6fb2d9 100644 --- a/util/misc/build.mk +++ b/util/misc/build.mk @@ -14,13 +14,13 @@ define build-misc-impl $(eval objdir := encode) $(call cfile, $D/convert.c) $(eval $q: $(INCDIR)/em_comp.h $(INCDIR)/em_codeEK.h) - $(call file, $(LIBREAD_EMEV)) - $(call file, $(LIBEMK)) - $(call file, $(LIBEM_DATA)) - $(call file, $(LIBALLOC)) - $(call file, $(LIBPRINT)) - $(call file, $(LIBSTRING)) - $(call file, $(LIBSYSTEM)) + $(call rawfile, $(LIBREAD_EMEV)) + $(call rawfile, $(LIBEMK)) + $(call rawfile, $(LIBEM_DATA)) + $(call rawfile, $(LIBALLOC)) + $(call rawfile, $(LIBPRINT)) + $(call rawfile, $(LIBSTRING)) + $(call rawfile, $(LIBSYSTEM)) $(call cprogram, $(BINDIR)/em_encode) $(call installto, $(PLATDEP)/em_encode) $(eval EM_ENCODE := $o) @@ -30,13 +30,13 @@ define build-misc-impl $(eval objdir := decode) $(call cfile, $D/convert.c) $(eval $q: $(INCDIR)/em_comp.h $(INCDIR)/em_codeEK.h) - $(call file, $(LIBREAD_EMKV)) - $(call file, $(LIBEME)) - $(call file, $(LIBEM_DATA)) - $(call file, $(LIBALLOC)) - $(call file, $(LIBPRINT)) - $(call file, $(LIBSTRING)) - $(call file, $(LIBSYSTEM)) + $(call rawfile, $(LIBREAD_EMKV)) + $(call rawfile, $(LIBEME)) + $(call rawfile, $(LIBEM_DATA)) + $(call rawfile, $(LIBALLOC)) + $(call rawfile, $(LIBPRINT)) + $(call rawfile, $(LIBSTRING)) + $(call rawfile, $(LIBSYSTEM)) $(call cprogram, $(BINDIR)/em_decode) $(call installto, $(PLATDEP)/em_decode) $(eval EM_DECODE := $o) diff --git a/util/ncgg/build.mk b/util/ncgg/build.mk index c3a7f31fa..b0ee29d21 100644 --- a/util/ncgg/build.mk +++ b/util/ncgg/build.mk @@ -34,7 +34,7 @@ $(call cfile, $(OBJDIR)/$D/enterkeyw.c) $(eval $q: $(INCDIR)/em_spec.h) -$(call file, $(LIBEM_DATA)) +$(call rawfile, $(LIBEM_DATA)) $(call cprogram, $(BINDIR)/ncgg) $(eval NCGG := $o) diff --git a/util/opt/build.mk b/util/opt/build.mk index 39eafe355..75cb92553 100644 --- a/util/opt/build.mk +++ b/util/opt/build.mk @@ -10,12 +10,15 @@ $(call yacc, $(OBJDIR)/$D, $D/mktab.y) $(call flex, $(OBJDIR)/$D, $D/scan.l) $(call dependson, $(OBJDIR)/$D/y.tab.h) -$(call file, $(LIBEM_DATA)) -$(call file, -lfl) +$(call rawfile, $(LIBEM_DATA)) +$(call rawfile, -lfl) $(call cprogram, $(OBJDIR)/$D/mktab) endef +.PHONY: -lfl +-lfl: + define build-opt-impl $(call reset) @@ -53,12 +56,12 @@ $g: $(OBJDIR)/$D/mktab $D/patterns $(BINDIR)/cpp.ansi $(hide) $(BINDIR)/cpp.ansi < $D/patterns | $(OBJDIR)/$D/mktab > $$@ $(call cfile, $g) -$(call file, $(LIBEM_DATA)) -$(call file, $(LIBASSERT)) -$(call file, $(LIBPRINT)) -$(call file, $(LIBALLOC)) -$(call file, $(LIBSYSTEM)) -$(call file, $(LIBSTRING)) +$(call rawfile, $(LIBEM_DATA)) +$(call rawfile, $(LIBASSERT)) +$(call rawfile, $(LIBPRINT)) +$(call rawfile, $(LIBALLOC)) +$(call rawfile, $(LIBSYSTEM)) +$(call rawfile, $(LIBSTRING)) $(eval $q: $(INCDIR)/em_spec.h) @@ -79,4 +82,4 @@ endef $(eval $(build-opt-mktab-impl)) $(eval $(call build-opt-impl, em_opt,)) $(eval $(call build-opt-impl, em_opt2, -DGLOBAL_OPT)) -$(eval $(build-opt-manpage-impl)) \ No newline at end of file +$(eval $(build-opt-manpage-impl)) diff --git a/util/topgen/build.mk b/util/topgen/build.mk index 4ef15c278..9bf48a4d3 100644 --- a/util/topgen/build.mk +++ b/util/topgen/build.mk @@ -15,11 +15,11 @@ define build-topgen-impl $(call llgen, $(OBJDIR)/$D, $D/topgen.g) - $(call file, $(LIBASSERT)) - $(call file, $(LIBPRINT)) - $(call file, $(LIBALLOC)) - $(call file, $(LIBSYSTEM)) - $(call file, $(LIBSTRING)) + $(call rawfile, $(LIBASSERT)) + $(call rawfile, $(LIBPRINT)) + $(call rawfile, $(LIBALLOC)) + $(call rawfile, $(LIBSYSTEM)) + $(call rawfile, $(LIBSTRING)) $(call cprogram, $(BINDIR)/topgen) TOPGEN := $o From c5018d70880641643090602b7d9118e7b40bf3cc Mon Sep 17 00:00:00 2001 From: David Given Date: Mon, 23 Mar 2015 00:07:59 +0100 Subject: [PATCH 2/5] 64-bit-ify (adhoc varargs are evil). --- mach/proto/as/comm0.h | 1 + mach/proto/as/comm1.h | 4 +++ mach/proto/as/comm7.c | 63 ++++++++++++++++++++++++++----------------- 3 files changed, 43 insertions(+), 25 deletions(-) diff --git a/mach/proto/as/comm0.h b/mach/proto/as/comm0.h index 11f1231a9..4996350ac 100644 --- a/mach/proto/as/comm0.h +++ b/mach/proto/as/comm0.h @@ -265,3 +265,4 @@ typedef struct sect_t sect_t; #endif extern FILE *fopen(); /* some systems don't have this in stdio.h */ + diff --git a/mach/proto/as/comm1.h b/mach/proto/as/comm1.h index 7e4620471..6a40a2e90 100644 --- a/mach/proto/as/comm1.h +++ b/mach/proto/as/comm1.h @@ -116,6 +116,10 @@ extern valu_t load(); extern FILE *ffcreat(); extern FILE *fftemp(); +extern void fatal(const char* s, ...); +extern void serror(const char* s, ...); +extern void warning(const char* s, ...); + /* ========== Machine dependent C declarations ========== */ #include "mach1.c" diff --git a/mach/proto/as/comm7.c b/mach/proto/as/comm7.c index d0a147bdb..3c7871fbe 100644 --- a/mach/proto/as/comm7.c +++ b/mach/proto/as/comm7.c @@ -11,6 +11,7 @@ #include "comm0.h" #include "comm1.h" #include "y.tab.h" +#include valu_t load(ip) @@ -27,7 +28,7 @@ register item_t *ip; if ((ip->i_type & S_TYP) == S_UND || (ip->i_type & S_COM)) { if (pass == PASS_3) { if (relonami != 0) - serror("relocation error"); + serror("relocation error (relonami=%d, type=%08x)", relonami, ip->i_type); relonami = ip->i_valu+1; } return(0); @@ -380,13 +381,28 @@ wr_fatal() fatal("write error"); } -/* VARARGS1 */ -fatal(s, a1, a2, a3, a4) -char *s; +void diag(const char* tail, const char* s, va_list ap) { + fflush(stdout); + if (modulename) + fprintf(stderr, "\"%s\", line %ld: ", modulename, lineno); + else + fprintf(stderr, "%s: ", progname); + vfprintf(stderr, s, ap); + fprintf(stderr, "%s", tail); +} + +/* VARARGS1 */ +void fatal(const char* s, ...) +{ + va_list ap; + va_start(ap, s); + nerrors++; - diag(" (fatal)\n", s, a1, a2, a3, a4); + diag(" (fatal)\n", s, ap); stop(); + + va_end(ap); } #if DEBUG == 2 @@ -400,37 +416,34 @@ char *file; #if DEBUG == 1 assert1() { - diag(" (fatal)\n", "assertion failed"); + fatal("assertion failed"); abort(); } #endif -/* VARARGS1 */ -serror(s, a1, a2, a3, a4) -char *s; +void serror(const char* s, ...) { + va_list ap; + va_start(ap, s); + nerrors++; - diag("\n", s, a1, a2, a3, a4); + diag("\n", s, ap); + stop(); + + va_end(ap); } /* VARARGS1 */ -warning(s, a1, a2, a3, a4) -char *s; +void warning(const char* s, ...) { - diag(" (warning)\n", s, a1, a2, a3, a4); -} + va_list ap; + va_start(ap, s); -/* VARARGS1 */ -diag(tail, s, a1, a2, a3, a4) -char *tail, *s; -{ - fflush(stdout); - if (modulename) - fprintf(stderr, "\"%s\", line %ld: ", modulename, lineno); - else - fprintf(stderr, "%s: ", progname); - fprintf(stderr, s, a1, a2, a3, a4); - fprintf(stderr, tail); + nerrors++; + diag(" (warning)\n", s, ap); + stop(); + + va_end(ap); } nofit() From 9f23fbbe6a8f32dba3fa6aa7acf776b081d14af9 Mon Sep 17 00:00:00 2001 From: David Given Date: Mon, 23 Mar 2015 00:08:51 +0100 Subject: [PATCH 3/5] Allow machines to use cg if they wish. --HG-- rename : mach/proto/ncg/build.mk => mach/proto/cg/build.mk rename : util/ncgg/build.mk => util/cgg/build.mk --- mach/proto/cg/build.mk | 46 ++++++++++++++++++++++++++++++++++++++++++ plat/build.mk | 4 ++-- util/cgg/build.mk | 25 +++++++++++++++++++++++ util/cgg/main.c | 5 +++++ 4 files changed, 78 insertions(+), 2 deletions(-) create mode 100644 mach/proto/cg/build.mk create mode 100644 util/cgg/build.mk diff --git a/mach/proto/cg/build.mk b/mach/proto/cg/build.mk new file mode 100644 index 000000000..2327009e0 --- /dev/null +++ b/mach/proto/cg/build.mk @@ -0,0 +1,46 @@ +define build-cg-impl + +$(call reset) + +$(eval cflags += -Imach/$(ARCH)/cg -I$(OBJDIR)/$D -Imach/proto/cg) +$(eval objdir := $(ARCH)) + +$(call cfile, mach/proto/cg/codegen.c) +$(call cfile, mach/proto/cg/compute.c) +$(call cfile, mach/proto/cg/equiv.c) +$(call cfile, mach/proto/cg/fillem.c) +$(call cfile, mach/proto/cg/gencode.c) +$(call cfile, mach/proto/cg/glosym.c) +$(call cfile, mach/proto/cg/main.c) +$(call cfile, mach/proto/cg/move.c) +$(call cfile, mach/proto/cg/nextem.c) +$(call cfile, mach/proto/cg/reg.c) +$(call cfile, mach/proto/cg/regvar.c) +$(call cfile, mach/proto/cg/salloc.c) +$(call cfile, mach/proto/cg/state.c) +$(call cfile, mach/proto/cg/subr.c) +$(call cfile, mach/proto/cg/var.c) + +$(eval $q: $(OBJDIR)/$D/tables.h) +$(eval CLEANABLES += $(OBJDIR)/$D/tables.h $(OBJDIR)/$D/tables.c) +$(OBJDIR)/$D/tables.c: $(OBJDIR)/$D/tables.h +$(OBJDIR)/$D/tables.h: $(CGG) $(CPPANSI) mach/$(ARCH)/cg/table + @echo CGG $$@ + @mkdir -p $$(dir $$@) + $(hide) cd $$(dir $$@) && \ + $(abspath $(CPPANSI)) -I$(abspath mach/$(ARCH)/cg) $(abspath mach/$(ARCH)/cg/table) | $(abspath $(CGG)) + +$(call cfile, $(OBJDIR)/$D/tables.c) + +$(eval $q: $(INCDIR)/flt_arith.h) + +$(call rawfile, $(LIBEM_DATA)) +$(call rawfile, $(LIBFLT_ARITH)) + +$(call cprogram, $(BINDIR)/$(PLATFORM)/cg) +$(call installto, $(PLATDEP)/$(PLATFORM)/cg) + +endef + +build-cg = $(eval $(build-cg-impl)) + diff --git a/plat/build.mk b/plat/build.mk index aff84c04c..623658b07 100644 --- a/plat/build.mk +++ b/plat/build.mk @@ -17,7 +17,7 @@ define build-platform-impl $(PLATIND)/descr/$(PLATFORM) \ $(PLATFORM_HEADERS_$(PLATFORM)) \ $(PLATDEP)/$(PLATFORM)/as \ - $(PLATDEP)/$(PLATFORM)/ncg \ + $(if $(arch-cg-$(ARCH)), $(PLATDEP)/$(PLATFORM)/cg, $(PLATDEP)/$(PLATFORM)/ncg) \ $(ARCHITECTURE_$(ARCH))) # libsys @@ -48,7 +48,7 @@ define build-platform-impl # The tools themselves $(call build-as) - $(call build-ncg) + $(if $(arch-cg-$(ARCH)), $(call build-cg), $(call build-ncg)) # Build top only if the architecture asks for it. diff --git a/util/cgg/build.mk b/util/cgg/build.mk new file mode 100644 index 000000000..4fc8532b2 --- /dev/null +++ b/util/cgg/build.mk @@ -0,0 +1,25 @@ +D := util/cgg + +define build-cgg-impl + +$(call reset) +$(eval cflags += -I$D) + +$(call yacc, $(OBJDIR)/$D, $D/bootgram.y) + +$(call flex, $(OBJDIR)/$D, $D/bootlex.l) +$(call dependson, $(OBJDIR)/$D/y.tab.h) + +$(call cfile, $D/main.c) + +$(eval $q: $(INCDIR)/em_spec.h) + +$(call rawfile, $(LIBEM_DATA)) +$(call rawfile, $(LIBASSERT)) +$(call rawfile, $(LIBSYSTEM)) +$(call cprogram, $(BINDIR)/cgg) +$(eval CGG := $o) + +endef + +$(eval $(build-cgg-impl)) diff --git a/util/cgg/main.c b/util/cgg/main.c index fba8e31b5..86375b776 100644 --- a/util/cgg/main.c +++ b/util/cgg/main.c @@ -1009,3 +1009,8 @@ max(a,b) { return(a); return(b); } + +int yywrap(void) { + return 1; +} + From 98ea849d031b68508970a13ebd17823d5532819e Mon Sep 17 00:00:00 2001 From: David Given Date: Mon, 23 Mar 2015 00:09:27 +0100 Subject: [PATCH 4/5] Improve flex correctness. --- util/opt/build.mk | 1 - util/opt/mktab.y | 4 ++++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/util/opt/build.mk b/util/opt/build.mk index 75cb92553..a4e62ced7 100644 --- a/util/opt/build.mk +++ b/util/opt/build.mk @@ -11,7 +11,6 @@ $(call flex, $(OBJDIR)/$D, $D/scan.l) $(call dependson, $(OBJDIR)/$D/y.tab.h) $(call rawfile, $(LIBEM_DATA)) -$(call rawfile, -lfl) $(call cprogram, $(OBJDIR)/$D/mktab) endef diff --git a/util/opt/mktab.y b/util/opt/mktab.y index 08beaeccc..e2a6c0b1a 100644 --- a/util/opt/mktab.y +++ b/util/opt/mktab.y @@ -294,6 +294,10 @@ main() { return nerrors; } +int yywrap(void) { + return 1; +} + yyerror(s) char *s; { fprintf(stderr,"line %d: %s\n",lino,s); From b146d2641c494ddf97d24aebcc888e7e45cd528d Mon Sep 17 00:00:00 2001 From: David Given Date: Mon, 23 Mar 2015 00:09:41 +0100 Subject: [PATCH 5/5] Fix a slightly mysterious dependency issue. --- util/data/build.mk | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/util/data/build.mk b/util/data/build.mk index 424712956..b6b5c7cea 100644 --- a/util/data/build.mk +++ b/util/data/build.mk @@ -3,12 +3,13 @@ D := util/data define util-data-impl $(eval g := \ + $(OBJDIR)/$D/em_flag.c \ + $(OBJDIR)/$D/em_pseu.c \ + $(OBJDIR)/$D/em_mnem.c \ $(INCDIR)/em_spec.h \ $(INCDIR)/em_pseu.h \ $(INCDIR)/em_mnem.h \ - $(OBJDIR)/$D/em_flag.c \ - $(OBJDIR)/$D/em_pseu.c \ - $(OBJDIR)/$D/em_mnem.c) +) $(eval CLEANABLES += $g) $(wordlist 2, $(words $g), $g): $(firstword $g)