SHELL = /bin/sh .SUFFIXES: CC = avr-gcc RM = rm -vf STRIP = avr-strip CPPFLAGS ?= -DNDEBUG CFLAGS ?= -Os LDFLAGS ?= -nostdlib -nostartfiles -flto CPPFLAGS += -Iinclude CFLAGS += -std=gnu99 -MMD -MP CFLAGS += -Wall -Wextra -Wpedantic -Wno-pointer-arith SRC := $(wildcard src/*.c src/*/*.c src/*/*/*.c src/*/*/*/*.c src/*/*/*/*/*.c src/*/*/*/*/*/*.c src/*/*/*/*/*/*/*.c src/*/*/*/*/*/*/*/*.c) SRC += $(wildcard src/*.S src/*/*.S src/*/*/*.S src/*/*/*/*.S src/*/*/*/*/*.S src/*/*/*/*/*/*.S src/*/*/*/*/*/*/*.S src/*/*/*/*/*/*/*/*.S) OBJ := $(SRC:%=obj/%.o) all: bin/a.out clean:; @-$(RM) -r bin/ obj/ bin/a.out: $(OBJ) $(info [LD] $@) @mkdir -p $(@D) @$(CC) -o $@ $^ $(LDFLAGS) $(LDLIBS) bin/a.hex: bin/a.out $(info [STRIP] $@) @$(STRIP) -o $@ $< obj/%.o: % $(info [CC] $@) @mkdir -p $(@D) @$(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $< -include $(OBJ:%.o=%.d)