diff options
Diffstat (limited to 'include.mk')
-rw-r--r-- | include.mk | 24 |
1 files changed, 20 insertions, 4 deletions
@@ -105,6 +105,7 @@ endif CC = avr-gcc OBJCOPY = avr-objcopy +LIB_DIR = ../lib DFU = dfu-programmer teensy = teensy_loader_cli @@ -123,6 +124,7 @@ CFLAGS += -fpack-struct CFLAGS += -fshort-enums CFLAGS += -Wall CFLAGS += -Wstrict-prototypes +CFLAGS += -I$(LIB_DIR) CFLAGS += -DF_CPU=$(F_CPU)UL CFLAGS += -D__BOARD_$(BOARD_TYPE)__ @@ -132,6 +134,10 @@ LDFLAGS += SRC := $(OBJ:%.o=%.c) +OBJ_LIB := $(LIBS:%=lib-%.o) +SRC_LIB := $(LIBS:%=$(LIB_DIR)/%.c) +DEP_LIB := $(LIBS:%=lib-%.d) + .PHONY: clean program erase flash reset run ELFFILE := $(NAME).elf @@ -139,21 +145,31 @@ HEXFILE := $(NAME).hex all: $(HEXFILE) +lib-%.d: $(LIB_DIR)/%.c + @set -e; rm -f $@; \ + $(CC) -MM $(CFLAGS) $< > $@.$$$$; \ + sed 's,\($*\)\.o[ :]*,lib-\1.o $@ : ,g' < $@.$$$$ > $@; \ + rm -f $@.$$$$; echo '(re)building $@' + %.d: %.c @set -e; rm -f $@; \ $(CC) -MM $(CFLAGS) $< > $@.$$$$; \ sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ rm -f $@.$$$$; echo '(re)building $@' -ifneq ($(MAKECMDGOALS),distclean) +ifneq ($(MAKECMDGOALS),clean) -include $(SRC:%.c=%.d) +-include $(DEP_LIB) endif +lib-%.o: $(LIB_DIR)/%.c + $(CC) $(CFLAGS) -o $@ -c $< + %.o: %.c - $(CC) $(CFLAGS) -c $< + $(CC) $(CFLAGS) -o $@ -c $< -$(ELFFILE): $(OBJ) - $(CC) $(OBJ) -o $@ $(LDFLAGS) +$(ELFFILE): $(OBJ) $(OBJ_LIB) + $(CC) $(OBJ) $(OBJ_LIB) -o $@ $(LDFLAGS) $(HEXFILE): $(ELFFILE) $(OBJCOPY) -O ihex -R .eeprom -R .fuse -R .lock -R .signature $< $@ |