Files
Nils O. Selåsdal 6185de0694 Cleanups
2026-05-14 14:45:29 +02:00

53 lines
1.2 KiB
Makefile

CC = gcc
LD = $(CC)
CFLAGS = -std=gnu17 -Wall -Wextra -Wno-unused-parameter -ggdb
CPPFLAGS += -Iinclude
LDFLAGS +=
ifndef DEBUG
CFLAGS += -O2
CPPFLAGS += -DNDEBUG
else
CPPFLAGS += -DDEBUG -fsanitize=address,undefined
LDFLAGS += -fsanitize=address,undefined
endif
BUILDDIR = build
SOURCES = $(wildcard src/*.c)
TEST_SOURCES = $(wildcard test/*.c)
OBJECTS = $(addprefix $(BUILDDIR)/,$(SOURCES:.c=.o))
DEPS = $(addprefix $(BUILDDIR)/,$(SOURCES:.c=.d)) $(addprefix $(BUILDDIR)/,$(TEST_SOURCES:.c=.d))
LIB = liblilalloc.a
TEST_BINS = $(patsubst test/%.c,$(BUILDDIR)/test/%,$(TEST_SOURCES))
.PHONY: all
all: $(BUILDDIR)/$(LIB)
$(BUILDDIR)/%.o: %.c Makefile
mkdir -p $(@D)
$(CC) $(CPPFLAGS) $(CFLAGS) -MMD -MP -c -o $@ $<
$(BUILDDIR)/$(LIB): $(OBJECTS)
ar crs $@ $^
$(BUILDDIR)/test/%: test/%.c $(BUILDDIR)/$(LIB)
mkdir -p $(@D)
$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -MMD -MP -o $@ $< $(BUILDDIR)/$(LIB)
.PHONY: test
test: $(TEST_BINS)
@set -e; \
for test_bin in $(TEST_BINS); do \
echo "Running $$test_bin:" ; \
./$$test_bin; \
echo ; \
done
.PHONY: clean
clean:
rm -rf $(BUILDDIR)
ifeq (,$(findstring clean, $(MAKECMDGOALS)))
-include $(DEPS)
endif