This commit is contained in:
Nishi 2026-05-08 05:25:34 +09:00
commit ece62938a9
Signed by: nishi
GPG key ID: 27EF69B208EB9343
7 changed files with 36 additions and 7 deletions

1
.gitignore vendored
View file

@ -1,4 +1,5 @@
/pmake* /pmake*
*.o *.o
/src/compiler/*.c /src/compiler/*.c
/src/action/*.c
/src/js/*.c /src/js/*.c

View file

@ -30,16 +30,18 @@ CFLAGS += -Iexternal/duktape -Iexternal/stb
OBJS = src/main.o src/js.o OBJS = src/main.o src/js.o
OBJS += external/duktape/duktape.o external/stb/stb_ds.o OBJS += external/duktape/duktape.o external/stb/stb_ds.o
NAME = rev | cut -d/ -f1 | rev | cut -d. -f1
.PHONY: all clean mk maint .PHONY: all clean mk maint
.SUFFIXES: .c .o .SUFFIXES: .c .o
all: pmake$(EXE) all: pmake$(EXE)
include mk/compiler.mk include mk/js.mk
mk/compiler.mk: mk/js.mk:
find src/js src/compiler -name "*.js" | while read js; do \ find src/js src/action src/compiler -name "*.js" | while read js; do \
name="`echo $$js | cut -d/ -f2`_`echo $$js | rev | cut -d/ -f1 | rev | cut -d. -f1`" ; \ name="`echo $$js | cut -d/ -f2`_`echo $$js | $(NAME)`" ; \
c="`echo $$js | sed 's/\.js$$/.c/'`" ; \ c="`echo $$js | sed 's/\.js$$/.c/'`" ; \
o="`echo $$js | sed 's/\.js$$/.o/'`" ; \ o="`echo $$js | sed 's/\.js$$/.o/'`" ; \
echo "OBJS += $$o" ; \ echo "OBJS += $$o" ; \
@ -48,7 +50,7 @@ mk/compiler.mk:
echo "" ; \ echo "" ; \
done > $@ done > $@
mk: mk/compiler.mk mk: mk/js.mk
maint: maint:
rm -f mk/*.mk rm -f mk/*.mk
@ -62,9 +64,18 @@ src/config.h:
echo "" >> $@ echo "" >> $@
echo "#define COMPILERS \\" >> $@ echo "#define COMPILERS \\" >> $@
find src/compiler -name "*.js" | while read js; do \ find src/compiler -name "*.js" | while read js; do \
echo " X(`echo $$js | rev | cut -d/ -f1 | rev | cut -d. -f1`) \\" ; \ echo " X(`echo $$js | $(NAME)`) \\" ; \
done >> $@ done >> $@
echo "" >> $@ echo "" >> $@
echo "#define ACTIONS \\" >> $@
find src/action -name "*.js" | while read js; do \
echo " X(`echo $$js | $(NAME)`) \\" ; \
done >> $@
echo "" >> $@
echo "#define JS \\" >> $@
echo " COMPILERS \\" >> $@
echo " ACTIONS" >> $@
echo "" >> $@
echo "#endif" >> $@ echo "#endif" >> $@
pmake$(EXE): $(OBJS) pmake$(EXE): $(OBJS)

View file

@ -6,6 +6,10 @@ OBJS += src/js/cmdline.o
src/js/cmdline.c: src/js/cmdline.js src/js/cmdline.c: src/js/cmdline.js
xxd -njs_cmdline -i src/js/cmdline.js > src/js/cmdline.c xxd -njs_cmdline -i src/js/cmdline.js > src/js/cmdline.c
OBJS += src/action/gmake.o
src/action/gmake.c: src/action/gmake.js
xxd -naction_gmake -i src/action/gmake.js > src/action/gmake.c
OBJS += src/compiler/watcom.o OBJS += src/compiler/watcom.o
src/compiler/watcom.c: src/compiler/watcom.js src/compiler/watcom.c: src/compiler/watcom.js
xxd -ncompiler_watcom -i src/compiler/watcom.js > src/compiler/watcom.c xxd -ncompiler_watcom -i src/compiler/watcom.js > src/compiler/watcom.c

0
src/action/gmake.js Normal file
View file

7
src/config.h generated
View file

@ -5,4 +5,11 @@
X(watcom) \ X(watcom) \
X(gcc) \ X(gcc) \
#define ACTIONS \
X(gmake) \
#define JS \
COMPILERS \
ACTIONS
#endif #endif

View file

@ -9,5 +9,11 @@ for(var i = 1; i < ARGV.length; i++){
console.log(""); console.log("");
console.log("Usage: " + ARGV[0] + " [options] action [arguments]"); console.log("Usage: " + ARGV[0] + " [options] action [arguments]");
process.exit(0); process.exit(0);
}else if(ARGV[i].startsWith("--")){
console.log("Error: invalid option '" + ARGV[i].substr(2) + "'");
process.exit(1);
}else{
console.log("Error: no such action '" + ARGV[i] + "'");
process.exit(1);
} }
} }

View file

@ -15,7 +15,7 @@
extern unsigned int name ## _len; extern unsigned int name ## _len;
#define X(name) LOAD(compiler_ ## name) #define X(name) LOAD(compiler_ ## name)
COMPILERS; JS;
#undef X #undef X
/* js.c */ /* js.c */