This repository has been archived on 2025-11-10. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
oats/Makefile
Aryadev Chavali 12de1e8db9 Refactor for cleanliness
Move files into separate folders for ease of reading, include source
directory so we can use angle bracket includes, adjust build system to
make directories for objects
2025-05-15 22:25:45 +01:00

61 lines
1.1 KiB
Makefile

CC=gcc
OUT=oats.out
INCLUDES=-I.
LIBS=
ARGS=
RELEASE=0
GFLAGS=-Wall -Wextra -Wswitch-enum -Werror -std=c11
DFLAGS=-ggdb -fsanitize=address -fsanitize=undefined
RFLAGS=-O3
DEPFLAGS=-MT $@ -MMD -MP -MF
ifeq ($(RELEASE), 1)
CFLAGS=$(GFLAGS) $(RFLAGS) -DDEBUG=0
else
CFLAGS=$(GFLAGS) $(DFLAGS)
endif
DIST=build
SRC:=lib/arena.c lib/vec.c lib/sv.c lisp/tag.c lisp/context.c lisp/lisp.c lisp/reader.c lisp/eval.c main.c
OBJ:=$(SRC:%.c=$(DIST)/%.o)
DEPDIR=$(DIST)/dependencies
DEPS:=$(SRC:%.c=$(DEPDIR)/%.d)
.PHONY: all
all: $(DIST)/$(OUT)
$(DIST)/%.o: %.c | $(DIST) $(DEPDIR)
$(CC) $(INCLUDES) $(CFLAGS) $(DEPFLAGS) $(DEPDIR)/$*.d -c $< -o $@ $(LIBS)
$(DIST)/$(OUT): $(OBJ) | $(DIST)
$(CC) $(INCLUDES) $(CFLAGS) $^ -o $@ $(LIBS)
.PHONY: run
run: $(DIST)/$(OUT)
./$^ $(ARGS)
.PHONY:
clean:
rm -rfv $(DIST)/*
$(DIST): | $(DIST)/lib $(DIST)/lisp
mkdir -p $(DIST)
$(DIST)/lib:
mkdir -p $(DIST)/lib
$(DIST)/lisp:
mkdir -p $(DIST)/lisp
$(DEPDIR):
mkdir -p $(DEPDIR)
mkdir -p $(DEPDIR)/lib
mkdir -p $(DEPDIR)/lisp
.PHONY:
watch:
find . -type 'f' -regex ".*.c\\|.*.h" | entr -cs "make run"
-include $(DEPS)