forked from pyrite-dev/pmake
78 lines
1.4 KiB
Makefile
78 lines
1.4 KiB
Makefile
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
|