| TARGET = lfs.a |
| ifneq ($(wildcard test.c main.c),) |
| override TARGET = lfs |
| endif |
| |
| CC ?= gcc |
| AR ?= ar |
| SIZE ?= size |
| NM ?= nm |
| |
| SRC += $(wildcard *.c bd/*.c) |
| OBJ := $(SRC:.c=.o) |
| DEP := $(SRC:.c=.d) |
| ASM := $(SRC:.c=.s) |
| |
| ifdef DEBUG |
| override CFLAGS += -O0 -g3 |
| else |
| override CFLAGS += -Os |
| endif |
| ifdef WORD |
| override CFLAGS += -m$(WORD) |
| endif |
| ifdef TRACE |
| override CFLAGS += -DLFS_YES_TRACE |
| endif |
| override CFLAGS += -I. |
| override CFLAGS += -std=c99 -Wall -pedantic |
| override CFLAGS += -Wextra -Wshadow -Wjump-misses-init -Wundef |
| |
| ifdef VERBOSE |
| override TFLAGS += -v |
| override SFLAGS += -v |
| endif |
| |
| |
| all: $(TARGET) |
| |
| asm: $(ASM) |
| |
| size: $(OBJ) |
| $(SIZE) -t $^ |
| |
| code_size: |
| ./scripts/code_size.py $(SFLAGS) |
| |
| test: |
| ./scripts/test.py $(TFLAGS) |
| .SECONDEXPANSION: |
| test%: tests/test$$(firstword $$(subst \#, ,%)).toml |
| ./scripts/test.py $@ $(TFLAGS) |
| |
| -include $(DEP) |
| |
| lfs: $(OBJ) |
| $(CC) $(CFLAGS) $^ $(LFLAGS) -o $@ |
| |
| %.a: $(OBJ) |
| $(AR) rcs $@ $^ |
| |
| %.o: %.c |
| $(CC) -c -MMD $(CFLAGS) $< -o $@ |
| |
| %.s: %.c |
| $(CC) -S $(CFLAGS) $< -o $@ |
| |
| clean: |
| rm -f $(TARGET) |
| rm -f $(OBJ) |
| rm -f $(DEP) |
| rm -f $(ASM) |
| rm -f tests/*.toml.* |
| rm -f sizes/* |