Files
thesis-lisp/Makefile
T
2021-04-07 22:24:33 +03:00

57 lines
1.2 KiB
Makefile

O=build
VM_OBJS=$(O)/vm/main.o \
$(O)/vm/vmstate.o \
$(O)/vm/vmstack.o \
$(O)/vm/vmstring.o \
$(O)/vm/vmval.o \
$(O)/vm/load.o \
$(O)/vm/unit.o \
$(O)/vm/stack.o \
$(O)/vm/error.o \
$(O)/core/vector.o \
$(O)/core/hash.o
COMPILER_OBJS=$(O)/compiler/main.o \
$(O)/compiler/compile.o \
$(O)/compiler/node.o \
$(O)/compiler/parse.o \
$(O)/compiler/unit.o \
$(O)/core/vector.o \
$(O)/core/hash.o
CFLAGS=-Icore/include \
-Werror \
-Wall \
-Wextra \
-ggdb \
-O0
HDRS=$(shell find . -type f -name "*.h")
DIRS=$(shell find compiler core vm -type d -printf "$(O)/%p ")
all: $(DIRS) $(O)/l2vm $(O)/l2c
clean:
rm -rf $(O)
$(DIRS):
mkdir -p $@
$(O)/l2vm: $(VM_OBJS)
$(CC) $(LDFLAGS) -o $@ $(VM_OBJS)
$(O)/l2c: $(COMPILER_OBJS)
$(CC) $(LDFLAGS) -o $@ $(COMPILER_OBJS)
$(O)/vm/%.o: vm/%.c $(HDRS)
$(CC) -Ivm/include -c $(CFLAGS) -o $@ $<
$(O)/compiler/%.o: compiler/%.c $(HDRS)
$(CC) -Icompiler/include -c $(CFLAGS) -o $@ $<
$(O)/%.o: %.c $(HDRS)
$(CC) -c $(CFLAGS) -o $@ $<
test: $(DIRS) $(O)/mod1.vmx $(O)/mod2.vmx $(O)/l2vm
cd $(O) && $(L2VM_PREFIX) ./l2vm mod1.vmx
$(O)/%.vmx: %.vml $(O)/l2c
$(O)/l2c $< $@