TARGET = ifeq ($(TARGET),) TARGET = $(shell uname -s) endif ### Platforms ifeq ($(TARGET),Linux) UNIX = 1 endif ifeq ($(TARGET),NetBSD) UNIX = 1 endif ### Stuff ifeq ($(UNIX),1) CC = gcc CFLAGS = -c LDFLAGS = LIBS = -lm EXE = endif ### Common flags CFLAGS += -Iexternal/duktape -Iexternal/stb ### Rules OBJS = src/main.o OBJS += external/duktape/duktape.o external/stb/stb_ds.o .PHONY: all clean mk maint .SUFFIXES: .c .o all: pmake$(EXE) include mk/compiler.mk mk/compiler.mk: find src/compiler -name "*.js" | while read js; do \ name="compiler_`echo $$js | rev | cut -d/ -f1 | rev | cut -d. -f1`" ; \ c="`echo $$js | sed 's/\.js$$/.c/'`" ; \ o="`echo $$js | sed 's/\.js$$/.o/'`" ; \ echo "OBJS += $$o" ; \ echo "$$c: $$js" ; \ echo " xxd -n$$name -i $$js > $$c" ; \ echo "" ; \ done > $@ mk: mk/compiler.mk maint: rm -f mk/*.mk $(MAKE) mk rm -f src/config.h $(MAKE) src/config.h src/config.h: echo "#ifndef __CONFIG_H__" > $@ echo "#define __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`) \\" ; \ done >> $@ echo "" >> $@ echo "#endif" >> $@ pmake$(EXE): $(OBJS) $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) .c.o: $(CC) $(CFLAGS) -o $@ $< clean: find . -name "*.o" >/dev/null && rm -f $(shell find . -name "*.o") rm -f src/compiler/*.c