Makefile 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. ##############################################################################
  2. BUILD = build
  3. BIN = free_dap_rp2040
  4. ##############################################################################
  5. .PHONY: all directory clean size release
  6. CC = arm-none-eabi-gcc
  7. OBJCOPY = arm-none-eabi-objcopy
  8. SIZE = arm-none-eabi-size
  9. BIN2UF2 = bin2uf2
  10. ifeq ($(OS), Windows_NT)
  11. MKDIR = gmkdir
  12. else
  13. MKDIR = mkdir
  14. endif
  15. CFLAGS += -W -Wall --std=gnu11 -Os
  16. CFLAGS += -ffreestanding
  17. CFLAGS += -fno-diagnostics-show-caret
  18. CFLAGS += -fdata-sections -ffunction-sections
  19. CFLAGS += -funsigned-char -funsigned-bitfields
  20. CFLAGS += -mcpu=cortex-m0plus -mthumb
  21. CFLAGS += -MD -MP -MT $(BUILD)/$(*F).o -MF $(BUILD)/$(@F).d
  22. LDFLAGS += -mcpu=cortex-m0plus -mthumb
  23. LDFLAGS += -nostartfiles
  24. LDFLAGS += -Wl,--gc-sections
  25. LDFLAGS += -Wl,--script=../linker/rp2040.ld
  26. INCLUDES += \
  27. -I../include \
  28. -I../usb \
  29. -I../../.. \
  30. -I..
  31. SRCS += \
  32. ../main.c \
  33. ../uart.c \
  34. ../usb/usb_rp2040.c \
  35. ../usb/usb_std.c \
  36. ../usb/usb_cdc.c \
  37. ../usb/usb_hid.c \
  38. ../usb/usb_winusb.c \
  39. ../usb_descriptors.c \
  40. ../startup_rp2040.c \
  41. ../../../dap.c \
  42. DEFINES += \
  43. CFLAGS += $(INCLUDES) $(DEFINES)
  44. OBJS = $(addprefix $(BUILD)/, $(notdir %/$(subst .c,.o, $(SRCS))))
  45. all: directory $(BUILD)/$(BIN).elf $(BUILD)/$(BIN).hex $(BUILD)/$(BIN).bin $(BUILD)/$(BIN).uf2 release size
  46. $(BUILD)/$(BIN).elf: $(OBJS)
  47. @echo LD $@
  48. @$(CC) $(LDFLAGS) $(OBJS) $(LIBS) -o $@
  49. $(BUILD)/$(BIN).hex: $(BUILD)/$(BIN).elf
  50. @echo OBJCOPY $@
  51. @$(OBJCOPY) -O ihex $^ $@
  52. $(BUILD)/$(BIN).bin: $(BUILD)/$(BIN).elf
  53. @echo OBJCOPY $@
  54. @$(OBJCOPY) -O binary $^ $@
  55. $(BUILD)/$(BIN).uf2: $(BUILD)/$(BIN).bin
  56. @echo BIN2UF2 $@
  57. @$(BIN2UF2) -i $^ -o $@
  58. %.o:
  59. @echo CC $@
  60. @$(CC) $(CFLAGS) $(filter %/$(subst .o,.c,$(notdir $@)), $(SRCS)) -c -o $@
  61. release: $(BUILD)/$(BIN).uf2
  62. @echo release
  63. @cp $(BUILD)/$(BIN).uf2 ../../../bin/
  64. directory:
  65. @$(MKDIR) -p $(BUILD)
  66. size: $(BUILD)/$(BIN).elf
  67. @echo size:
  68. @$(SIZE) -t $^
  69. clean:
  70. @echo clean
  71. @-rm -rf $(BUILD)
  72. -include $(wildcard $(BUILD)/*.d)