diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..dd9fd3e0c --- /dev/null +++ b/.travis.yml @@ -0,0 +1,6 @@ +before_install: + - sudo apt-get install ed +language: c +script: + - make PREFIX=/tmp/acki -j4 + diff --git a/first/core.mk b/first/core.mk index b50549da3..0ee653a1c 100644 --- a/first/core.mk +++ b/first/core.mk @@ -52,7 +52,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/cem/libcc.ansi/headers/malloc.h b/lang/cem/libcc.ansi/headers/malloc.h index 73cef551e..64a6de16c 100644 --- a/lang/cem/libcc.ansi/headers/malloc.h +++ b/lang/cem/libcc.ansi/headers/malloc.h @@ -6,9 +6,61 @@ */ /* $Id$ */ -#ifndef _MALLOC_H -#define _MALLOC_H +#ifndef _STDLIB_H +#define _STDLIB_H -#include +#include + +#define EXIT_FAILURE 1 +#define EXIT_SUCCESS 0 +#define RAND_MAX 32767 +#define MB_CUR_MAX sizeof(wchar_t) + +typedef struct { int quot, rem; } div_t; +typedef struct { long quot, rem; } ldiv_t; + +extern double atof(const char *_nptr); +extern int atoi(const char *_nptr); +extern long atol(const char *_nptr); +extern double strtod(const char *_nptr, char **_endptr); +extern long strtol(const char *_nptr, char **_endptr, int _base); +extern unsigned long strtoul(const char *_nptr, char **_endptr, int _base); +extern int rand(void); +extern void srand(unsigned int _seed); +extern void* calloc(size_t _nmemb, size_t _size); +extern void free(void *_ptr); +extern void* malloc(size_t _size); +extern void* realloc(void *_ptr, size_t _size); +extern void abort(void); +extern int atexit(void (*_func)(void)); +extern void exit(int _status); +extern void _Exit(int _status); +extern char* getenv(const char *_name); +extern int setenv(const char *_name, const char *_value, int _overwrite); +extern int unsetenv(const char *_name); +extern int putenv(char *_string); +extern int system(const char *_string); +extern void* bsearch(const void *_key, const void *_base, + size_t _nmemb, size_t _size, + int (*_compar)(const void *, const void *)); +extern void qsort(void *_base, size_t _nmemb, size_t _size, + int (*_compar)(const void *, const void *)); +extern int abs(int _j); +extern div_t div(int _numer, int _denom); +extern long labs(long _j); +extern ldiv_t ldiv(long _numer, long _denom); +extern int mblen(const char *_s, size_t _n); +extern int mbtowc(wchar_t *_pwc, const char *_s, size_t _n); +extern int wctomb(char *_s, wchar_t _wchar); +extern size_t mbstowcs(wchar_t *_pwcs, const char *_s, size_t _n); +extern size_t wcstombs(char *_s, const wchar_t *_pwcs, size_t _n); + +/* Extensions (not part of the standard) */ + +#define atof(n) strtod(n, (char **)NULL) +#define atoi(n) ((int)strtol(n, (char **)NULL, 10)) +#define atol(n) strtol(n, (char **)NULL, 10) +#define atoll(n) strtoll(n, (char **)NULL, 10) +#define mblen(s, n) mbtowc((wchar_t *)0, s, n) #endif 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 a67277ac2..726cd676e 100644 --- a/mach/proto/as/build.mk +++ b/mach/proto/as/build.mk @@ -38,7 +38,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) 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() 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/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/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/plat/cpm/boot.s b/plat/cpm/boot.s index b36d1ce02..960dc400d 100644 --- a/plat/cpm/boot.s +++ b/plat/cpm/boot.s @@ -15,12 +15,21 @@ MAX_ARGV = 8 .sect .bss STACKSIZE = 2*1024 .comm stack, STACKSIZE -.comm oldstack, 2 .sect .text begtext: - ! The absolute first thing we have to do is to clear the bss. (argify - ! requires it.) + ! Check if bss would overlap BDOS. We must not overwrite + ! BDOS and crash CP/M. We cheat by comparing only high bytes + ! of each address. + + lxi b, __end + lda 0x0007 + mov c, a ! c = high byte of BDOS address + mov a, b ! a = high byte of _end + cmp c + jnc __exit ! emergency exit if a >= c + + ! We have to clear the bss. (argify requires it.) lxi h, begbss lxi b, endbss @@ -36,8 +45,8 @@ begtext: jnz 1b ! Set up the stack (now it's been cleared, since it's in the BSS). - - lxi sp, oldstack + STACKSIZE + + lxi sp, stack + STACKSIZE ! C-ify the command line at 0x0080. @@ -54,43 +63,38 @@ begtext: ! Now argify it. lxi b, 0x0081 ! bc = command line pointer - lxi d, argv ! de = argv pointer - - ldax b ! peek for any leading whitespace - ora a - cpi ' ' - jz 3f - -1: xchg ! write out the next argument - mov m, c - inx h - mov m, b - inx h - xchg + lxi h, argv ! hl = argv pointer - lda argc ! exit if this was the last argument +loop_of_argify: + ldax b ! a = next character + ora a ! check for end of string + jz end_of_argify + cpi ' ' ! scan for non-space + jz 2f + + mov m, c ! put next argument in argv + inx h + mov m, b + inx h + + lda argc ! increment argc inr a sta argc - cpi MAX_ARGV - jz end_of_argify - -2: inx b ! scan for whitespace - ldax b - ora a - jz end_of_argify - cpi ' ' - jnz 2b - - xra a ! replace the space with a \0 - stax b - -3: inx b ! scan for non-whitespace - ldax b - ora a - jz end_of_argify - cpi ' ' - jz 3b - jmp 1b + cpi MAX_ARGV ! exit loop if argv is full + jz end_of_argify + +1: inx b ! scan for space + ldax b + ora a + jz end_of_argify + cpi ' ' + jnz 1b + + xra a ! replace the space with a '\0' + stax b + +2: inx b + jmp loop_of_argify end_of_argify: ! Add the fake parameter for the program name. @@ -110,8 +114,8 @@ end_of_argify: mvi h, 0 push h call __m_a_i_n - jmp EXIT - + ! FALLTHROUGH + ! Emergency exit routine. .define EXIT, __exit 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/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; +} + 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) 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/grind/run.c b/util/grind/run.c index 0b793ba13..ce19af8e3 100644 --- a/util/grind/run.c +++ b/util/grind/run.c @@ -114,9 +114,7 @@ start_child(p) char *in_redirect = 0; /* standard input redirected */ char *out_redirect = 0; /* standard output redirected */ - signal_child(SIGKILL); /* like families in China, this debugger is only - allowed one child - */ + signal_child(SIGKILL); if (p != run_command) { freenode(run_command); 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..9c3eef3da 100644 --- a/util/ncgg/build.mk +++ b/util/ncgg/build.mk @@ -26,7 +26,7 @@ $(call cfile, $D/var.c) $(call cfile, $D/hall.c) $(eval CLEANABLES += $(OBJDIR)/$D/enterkeyw.c) -$(OBJDIR)/$D/enterkeyw.c: $D/cvtkeywords $D/keywords +$(OBJDIR)/$D/enterkeyw.c: $D/cvtkeywords $D/keywords $(OBJDIR)/$D/y.tab.h @echo KEYWORDS $$@ @mkdir -p $$(dir $$@) $(hide) cd $$(dir $$@) && sh $(abspath $D/cvtkeywords) $(abspath $D/keywords) @@ -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..a4e62ced7 100644 --- a/util/opt/build.mk +++ b/util/opt/build.mk @@ -10,12 +10,14 @@ $(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 cprogram, $(OBJDIR)/$D/mktab) endef +.PHONY: -lfl +-lfl: + define build-opt-impl $(call reset) @@ -53,12 +55,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 +81,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/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); 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