DEBUG=1 ifeq ($(DEBUG),1) DEBUG_CFLAGS=-g else DEBUG_CFLAGS=-D_NDEBUG endif CC=gcc CFLAGS=$(DEBUG_CFLAGS) -std=c11 -Wall -Wpedantic -D_POSIX_C_SOURCE=199309L LD=gcc LDFLAGS= SRCS:=$(wildcard src/*.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 @mkdir -p bin/ awk -f src/gen-init-globals.awk $(filter-out src/gen-init-globals.awk,$^) >$@ bin/%.o: src/%.c @mkdir -p bin/deps $(CC) $(CFLAGS) -c -MMD -MF $(<:src/%.c=bin/deps/%.d) -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)