CC = gcc
LD = ld
CFLAGS = -Wall
LDFLAGS='-lreadline'
BIN ?= mylisp

SRCS = refcount.c queue.c token.c types.c parser.c env.c proc.c eval.c prim.c gc.c repl.c $(BIN).c
OBJS = $(SRCS:.c=.o)
DEPS = $(SRCS:.c=.d)

all: $(BIN)
$(BIN): $(OBJS)
	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^

-include $(DEPS)
%.o: %.c
	$(CC) $(CFLAGS) -MMD -c $< -o $@

.PHONY: clean clean-deps clean-all run
clean:
	-rm -f $(BIN) *.o
clean-deps:
	-rm -f *.d
clean-all: clean clean-deps
run: $(BIN)
	./$(BIN)
