SRCS := \ CH5xx_ble_firmware_library/StdPeriphDriver/CH58x_adc.c \ CH5xx_ble_firmware_library/StdPeriphDriver/CH58x_clk.c \ CH5xx_ble_firmware_library/StdPeriphDriver/CH58x_flash.c \ CH5xx_ble_firmware_library/StdPeriphDriver/CH58x_gpio.c \ CH5xx_ble_firmware_library/StdPeriphDriver/CH58x_pwr.c \ CH5xx_ble_firmware_library/StdPeriphDriver/CH58x_sys.c \ CH5xx_ble_firmware_library/StdPeriphDriver/CH58x_timer0.c \ CH5xx_ble_firmware_library/StdPeriphDriver/CH58x_timer3.c \ CH5xx_ble_firmware_library/RVMSIS/core_riscv.c \ CH5xx_ble_firmware_library/Startup/startup_CH583.S \ $(wildcard src/*.c) \ $(wildcard src/*/*.c) BUILDDIR = build/$(PLATFORM) ifeq ($(PLATFORM),badgemagic) CFLAGS += -DPLATFORM_BADGEMAGIC else ifeq ($(PLATFORM),ls32-usbc) CFLAGS += -DPLATFORM_LS32_USBC else ifeq ($(PLATFORM),ls32-microusb) CFLAGS += -DPLATFORM_LS32_MICROUSB else _ERROR=Unknown PLATFORM $(PLATFORM) ifeq ($(PLATFORM),) _ERROR=Select a PLATFORM endif $(error "$(_ERROR) (valid platforms: badgemagic, ls32-usbc, ls32-microusb)") endif OUTPUTS = $(patsubst %.S,$(BUILDDIR)/%.o,$(patsubst %.c,$(BUILDDIR)/%.o, $(SRCS))) PREFIX ?= riscv-none-embed- CC = "$(PREFIX)gcc" OBJCOPY = "$(PREFIX)objcopy" CFLAGS += -march=rv32imac -mabi=ilp32 -msmall-data-limit=8 CFLAGS += -Os CFLAGS += \ -ICH5xx_ble_firmware_library/StdPeriphDriver/inc \ -ICH5xx_ble_firmware_library/RVMSIS \ -ICH5xx_ble_firmware_library/Core \ -ICH5xx_ble_firmware_library/BLE CFLAGS += -MMD -MP -Wall -fdata-sections -ffunction-sections -Werror=implicit-function-declaration LDFLAGS = -march=rv32imac -mabi=ilp32 -msmall-data-limit=8 \ -lc -lm -lnosys \ ./CH5xx_ble_firmware_library/StdPeriphDriver/libISP583.a \ ./CH5xx_ble_firmware_library/BLE/LIBCH58xBLE.a \ -T CH5xx_ble_firmware_library/Ld/Link.ld -nostartfiles -Xlinker --gc-sections all: build/$(PLATFORM).bin $(BUILDDIR)/%.o: %.c @mkdir -p $(dir $@) @echo "CC $@" @$(CC) -c $(CFLAGS) $< -o $@ $(BUILDDIR)/%.o: %.S @mkdir -p $(dir $@) @echo "AS $@" @$(CC) -c $(CFLAGS) $< -o $@ $(BUILDDIR)/badgewitch.elf: $(OUTPUTS) @mkdir -pv $(dir $@) @echo "LD $@" @$(CC) $(OUTPUTS) $(LDFLAGS) -o $@ build/%.bin: build/%/badgewitch.elf @echo "ELF -> BIN $<" @$(OBJCOPY) -O binary -S $< $@ flash: build/$(PLATFORM).bin wchisp flash build/$(PLATFORM).bin clean: rm -rf build -include $(OUTPUTS:%.o=%.d)