CC?=gcc CFLAGS:=-std=c99 -O0 -g -Wall -DDEBUG INC_DIRS=$(addprefix -iquote,include) BUILDIR:=build OBJDIR:=$(BUILDIR)/obj PARCINI_SRCS:=$(wildcard src/*.c) PARCINI_OBJS:=$(PARCINI_SRCS:%.c=$(OBJDIR)/%.o) ifdef ASAN CFLAGS+= -fsanitize=address -fno-omit-frame-pointer endif test: test: $(BUILDIR) tests/parcini tests/%: $(OBJDIR)/src/tests/%.o $(PARCINI_OBJS) mkdir -p $(BUILDIR)/$(@D) $(CC) $(CFLAGS) $(LDFLAGS) -o $(BUILDIR)/$@ $^ $(BUILDIR)/$@ example: CFLAGS := -std=c99 -O2 -Wall example: $(OBJDIR)/example/example.o $(PARCINI_OBJS) mkdir -p $(@D) $(CC) $(LDFLAGS) -o $(BUILDIR)/example/$@ $^ $(OBJDIR)/%.o: %.c mkdir -p $(@D) $(CC) -c $(CFLAGS) $(INC_DIRS) -o $@ $< clean: rm -r $(BUILDIR) .PHONY: clean test .PRECIOUS: $(OBJDIR)/tests/%.o $(OBJDIR)/%.o