BOARD_OBJS=$(BPATH)/startup.o $(BPATH)/system.o boards/cortex_m3/core_cm3.o
OBJECTS=main.o $(BOARD_OBJS) $(USB_OBJS)
+depend=$(shell sh -c 'b=$$(echo $1|sed -e"s/\\.o$$//g");([ -f $$b.d ] \
+ && sed -e":a;N;$$!ba;s/\\\\\\n//g" $$b.d|grep "^$$(basename $1):"\
+ | cut -d: -f2)||echo $$b.c')
-all: crc
+all: crc.h crc
$(PROJECT).elf: $(OBJECTS)
$(PLATFORM)-ld -Map $(PROJECT).map $(LDFLAGS) $(OBJECTS) -o $@
%.bin: %.elf
$(PLATFORM)-objcopy -O binary $< $*.bin
-%.o: %.c
+.SECONDEXPANSION:
+%.o: $$(call depend,$$@)
$(PLATFORM)-gcc -MM $< -MF $(patsubst %.o,%.d,$@) -MP
$(PLATFORM)-gcc $(CFLAGS) -c $< -o $@
.PHONY: clean gdb crc
clean:
- rm -f $(PROJECT).elf $(OBJECTS) $(OBJECTS:.o=.d) $(PROJECT).map
+ rm -f $(PROJECT).elf $(OBJECTS) $(OBJECTS:.o=.d) $(PROJECT).map crc.h
gdb:
$(PLATFORM)-gdb $(PROJECT).elf
crc: $(PROJECT).bin
- ../tools/lpcrc/lpcrc.sh $(PROJECT).bin $(BPATH)/startup.c
+ ../tools/lpcrc/lpcrc.sh $(PROJECT).bin crc.h
+
+crc.h: crc.tmpl.h
+ cp crc.tmpl.h crc.h