|
| 1 | +# name of executable |
| 2 | +ELF=$(BUILD)/TapTempo.elf |
| 3 | +BIN=$(BUILD)/TapTempo.bin |
| 4 | + |
| 5 | +# Tool path |
| 6 | +TOOLROOT=~/devel/OwlWare/Tools/gcc-arm-none-eabi-4_8-2014q2/bin |
| 7 | +STLINK=~/devel/stlink/ |
| 8 | + |
| 9 | +# Tools |
| 10 | +CC=$(TOOLROOT)/arm-none-eabi-gcc |
| 11 | +CXX=$(TOOLROOT)/arm-none-eabi-g++ |
| 12 | +LD=$(TOOLROOT)/arm-none-eabi-gcc |
| 13 | +AR=$(TOOLROOT)/arm-none-eabi-ar |
| 14 | +AS=$(TOOLROOT)/arm-none-eabi-as |
| 15 | +GDB=$(TOOLROOT)/arm-none-eabi-gdb |
| 16 | +OBJCOPY=$(TOOLROOT)/arm-none-eabi-objcopy |
| 17 | +OBJDUMP=$(TOOLROOT)/arm-none-eabi-objdump |
| 18 | +STFLASH=$(STLINK)/st-flash |
| 19 | +STUTIL=$(STLINK)/st-util |
| 20 | +DFUUTIL=dfu-util |
| 21 | + |
| 22 | +# Set up search path |
| 23 | +vpath %.cpp $(TEMPLATEROOT)/Source |
| 24 | +vpath %.c $(TEMPLATEROOT)/Source |
| 25 | +vpath %.s $(TEMPLATEROOT)/Source |
| 26 | +vpath %.c $(TEMPLATEROOT)/Libraries/syscalls |
| 27 | +vpath %.c $(CORE) |
| 28 | +vpath %.c $(PERIPH_FILE)/src |
| 29 | +vpath %.c $(PERIPH_FILE)/inc |
| 30 | +vpath %.c $(DEVICE) |
| 31 | +vpath %.c $(SYSTEM_FILE) |
| 32 | +vpath %.s $(STARTUP_FILE) |
| 33 | + |
| 34 | +all: bin |
| 35 | + |
| 36 | +# Build executable |
| 37 | +$(ELF) : $(OBJS) $(LDSCRIPT) |
| 38 | + $(LD) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS) |
| 39 | + |
| 40 | +# compile and generate dependency info |
| 41 | +$(BUILD)/%.o: %.c |
| 42 | + $(CC) -c $(CFLAGS) $< -o $@ |
| 43 | + $(CC) -MM -MT"$@" $(CFLAGS) $< > $(@:.o=.d) |
| 44 | + |
| 45 | +$(BUILD)/%.o: %.cpp |
| 46 | + $(CXX) -c $(CXXFLAGS) $< -o $@ |
| 47 | + $(CXX) -MM -MT"$@" $(CXXFLAGS) $< > $(@:.o=.d) |
| 48 | + |
| 49 | +$(BUILD)/%.o: %.s |
| 50 | + $(CC) -c $(CFLAGS) $< -o $@ |
| 51 | + |
| 52 | +$(BUILD)/%.s: %.c |
| 53 | + $(CC) -S $(CFLAGS) $< -o $@ |
| 54 | + |
| 55 | +$(BUILD)/%.s: %.cpp |
| 56 | + $(CXX) -S $(CXXFLAGS) $< -o $@ |
| 57 | + |
| 58 | +$(BUILD)/%.bin: $(BUILD)/%.elf |
| 59 | + $(OBJCOPY) -O binary $< $@ |
| 60 | + @echo Successfully built OWL firmware $@ |
| 61 | + |
| 62 | +clean: |
| 63 | + rm -f $(OBJS) $(OBJS:.o=.d) $(ELF) $(CLEANOTHER) $(BIN) gdbscript |
| 64 | + |
| 65 | +debug: $(ELF) |
| 66 | + echo "target extended localhost:4242" > gdbscript |
| 67 | + echo "load $(ELF)" >> gdbscript |
| 68 | + $(GDB) -x gdbscript $(ELF) |
| 69 | +# bash -c "$(GDB) -x <(echo target extended localhost:4242) $(ELF)" |
| 70 | + |
| 71 | +flash: $(BIN) |
| 72 | + $(STFLASH) write $(BIN) 0x8000000 |
| 73 | + |
| 74 | +stlink: |
| 75 | + echo "target extended localhost:4242" > gdbscript |
| 76 | + $(GDB) -x gdbscript $(ELF) |
| 77 | + |
| 78 | +etags: |
| 79 | + find $(PERIPH_FILE) -type f -iname "*.[ch]" | xargs etags --append |
| 80 | + find $(DEVICE) -type f -iname "*.[ch]" | xargs etags --append |
| 81 | + find $(CORE) -type f -iname "*.[ch]" | xargs etags --append |
| 82 | + find $(DISCOVERY_FILE) -type f -iname "*.[ch]" | xargs etags --append |
| 83 | + find . -type f -iname "*.[ch]" | xargs etags --append |
| 84 | + |
| 85 | +bin: $(BIN) |
| 86 | + |
| 87 | +as: $(ELF) |
| 88 | + $(OBJDUMP) -S $(ELF) > $(ELF:.elf=.s) |
| 89 | + |
| 90 | +dfu: $(BIN) |
| 91 | + $(DFUUTIL) -d 0483:df11 -c 1 -i 0 -a 0 -s 0x8000000:leave -D $(BIN) |
| 92 | + @echo Uploaded $(BIN) to OWL |
| 93 | + |
| 94 | +# pull in dependencies |
| 95 | +-include $(OBJS:.o=.d) |
0 commit comments