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*
*.o
/src/compiler/*.c
/src/action/*.c
/src/js/*.c

View file

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

View file

@ -6,6 +6,10 @@ OBJS += src/js/cmdline.o
src/js/cmdline.c: src/js/cmdline.js
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
src/compiler/watcom.c: src/compiler/watcom.js
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(gcc) \
#define ACTIONS \
X(gmake) \
#define JS \
COMPILERS \
ACTIONS
#endif

View file

@ -9,5 +9,11 @@ for(var i = 1; i < ARGV.length; i++){
console.log("");
console.log("Usage: " + ARGV[0] + " [options] action [arguments]");
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;
#define X(name) LOAD(compiler_ ## name)
COMPILERS;
JS;
#undef X
/* js.c */