############################################################################## BUILD = build BIN = free_dap_rp2040 ############################################################################## .PHONY: all directory clean size release CC = arm-none-eabi-gcc OBJCOPY = arm-none-eabi-objcopy SIZE = arm-none-eabi-size BIN2UF2 = bin2uf2 ifeq ($(OS), Windows_NT) MKDIR = gmkdir else MKDIR = mkdir endif CFLAGS += -W -Wall --std=gnu11 -Os CFLAGS += -ffreestanding CFLAGS += -fno-diagnostics-show-caret CFLAGS += -fdata-sections -ffunction-sections CFLAGS += -funsigned-char -funsigned-bitfields CFLAGS += -mcpu=cortex-m0plus -mthumb CFLAGS += -MD -MP -MT $(BUILD)/$(*F).o -MF $(BUILD)/$(@F).d LDFLAGS += -mcpu=cortex-m0plus -mthumb LDFLAGS += -nostartfiles LDFLAGS += -Wl,--gc-sections LDFLAGS += -Wl,--script=../linker/rp2040.ld INCLUDES += \ -I../include \ -I../usb \ -I../../.. \ -I.. SRCS += \ ../main.c \ ../uart.c \ ../usb/usb_rp2040.c \ ../usb/usb_std.c \ ../usb/usb_cdc.c \ ../usb/usb_hid.c \ ../usb/usb_winusb.c \ ../usb_descriptors.c \ ../startup_rp2040.c \ ../../../dap.c \ DEFINES += \ CFLAGS += $(INCLUDES) $(DEFINES) OBJS = $(addprefix $(BUILD)/, $(notdir %/$(subst .c,.o, $(SRCS)))) all: directory $(BUILD)/$(BIN).elf $(BUILD)/$(BIN).hex $(BUILD)/$(BIN).bin $(BUILD)/$(BIN).uf2 release size $(BUILD)/$(BIN).elf: $(OBJS) @echo LD $@ @$(CC) $(LDFLAGS) $(OBJS) $(LIBS) -o $@ $(BUILD)/$(BIN).hex: $(BUILD)/$(BIN).elf @echo OBJCOPY $@ @$(OBJCOPY) -O ihex $^ $@ $(BUILD)/$(BIN).bin: $(BUILD)/$(BIN).elf @echo OBJCOPY $@ @$(OBJCOPY) -O binary $^ $@ $(BUILD)/$(BIN).uf2: $(BUILD)/$(BIN).bin @echo BIN2UF2 $@ @$(BIN2UF2) -i $^ -o $@ %.o: @echo CC $@ @$(CC) $(CFLAGS) $(filter %/$(subst .o,.c,$(notdir $@)), $(SRCS)) -c -o $@ release: $(BUILD)/$(BIN).uf2 @echo release @cp $(BUILD)/$(BIN).uf2 ../../../bin/ directory: @$(MKDIR) -p $(BUILD) size: $(BUILD)/$(BIN).elf @echo size: @$(SIZE) -t $^ clean: @echo clean @-rm -rf $(BUILD) -include $(wildcard $(BUILD)/*.d)