43 lines
902 B
Makefile
43 lines
902 B
Makefile
O=build
|
|
VM_OBJS=$(O)/vm/main.o \
|
|
$(O)/vm/vmstate.o \
|
|
$(O)/vm/vmstring.o \
|
|
$(O)/vm/vmval.o \
|
|
$(O)/core/vector.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
|
|
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 $@ $<
|