Files
glisp/Makefile
2026-01-22 21:08:02 -08:00

53 lines
1.2 KiB
Makefile

DEBUG=1
LLVM_SAN=0
ifeq ($(DEBUG),1)
DEBUG_CFLAGS=-g
else
DEBUG_CFLAGS=-D_NDEBUG
endif
ifeq ($(LLVM_SAN),1)
LLVM_SAN_FLAGS=-fsanitize=address,undefined
else
LLVM_SAN_FLAGS=
endif
CC=gcc
CFLAGS=$(DEBUG_CFLAGS) $(LLVM_SAN_FLAGS) -std=c11 -Wall -Wpedantic $\
-D_POSIX_C_SOURCE=199309L
LD=gcc
LDFLAGS=$(LLVM_SAN_FLAGS)
SRCS:=$(wildcard src/*.c) $(wildcard src/byterun/*.c)
OBJS:=$(SRCS:src/%.c=bin/%.o)
DEPS:=$(SRCS:src/%.c=bin/deps/%.d)
SRCS += bin/init_globals.c
OBJS += bin/init_globals.o
DEPS += bin/deps/init_globals.o
HEADERS=$(wildcard src/*.h)
SRCS_WITH_HEADERS=$(filter $(HEADERS:src/%.h=src/%.c),$(SRCS))
glisp: $(OBJS)
$(LD) $(LDFLAGS) -o $@ $^
bin/init_globals.c: $(filter-out bin/init_globals.c,$(SRCS_WITH_HEADERS)) src/gen-init-globals.awk
awk -f src/gen-init-globals.awk $(filter-out src/gen-init-globals.awk,$^) >$@
bin/%.o: src/%.c
@mkdir -p $(dir $(<:src/%.c=bin/deps/%.d) $(<:src/%.c=bin/%))
$(CC) $(CFLAGS) -c -MMD -MF $(<:src/%.c=bin/deps/%.d) -I src/ -o $@ $<
bin/init_globals.o: bin/init_globals.c
@mkdir -p bin/deps
$(CC) $(CFLAGS) -Isrc/ -c -MMD -MF bin/deps/init_globals.d -o $@ $<
clean:
rm -rf glisp bin/
.PHONY: clean
-include $(DEPS)