Files
bagdewitch/Makefile
2026-02-06 18:13:46 +00:00

83 lines
2.3 KiB
Makefile

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)