CH592_Makefile_Template/Makefile
Richard Goulter 1294d9f0c0 add Makefile
2023-12-21 22:46:50 +07:00

165 lines
3.6 KiB
Makefile

## Makefile
# Prefix for older riscv gcc is risv-none-embed
# Prefix for newer riscv gcc is risv-none-elf
# TOOLCHAIN_PREFIX := riscv-none-embed
TOOLCHAIN_PREFIX := riscv-none-elf
APP_C_SRCS += \
./app/hidkbd.c \
./app/hidkbd_main.c
PROFILE_C_SRCS := \
./profile/battservice.c \
./profile/devinfoservice.c \
./profile/hiddev.c \
./profile/hidkbdservice.c \
./profile/scanparamservice.c
SDK_BLE_HAL_C_SRCS := \
./sdk/BLE/HAL/MCU.c \
./sdk/BLE/HAL/RTC.c \
./sdk/BLE/HAL/SLEEP.c
SDK_STDPERIPHDRIVER_C_SRCS += \
./sdk/StdPeriphDriver/CH59x_adc.c \
./sdk/StdPeriphDriver/CH59x_clk.c \
./sdk/StdPeriphDriver/CH59x_flash.c \
./sdk/StdPeriphDriver/CH59x_gpio.c \
./sdk/StdPeriphDriver/CH59x_i2c.c \
./sdk/StdPeriphDriver/CH59x_lcd.c \
./sdk/StdPeriphDriver/CH59x_pwr.c \
./sdk/StdPeriphDriver/CH59x_sys.c \
./sdk/StdPeriphDriver/CH59x_uart1.c
SDK_RVMSIS_C_SRCS += \
./sdk/RVMSIS/core_riscv.c
SDK_BLE_LIB_S_UPPER_SRCS += \
./sdk/BLE/LIB/ble_task_scheduler.S
SDK_STARTUP_S_UPPER_SRCS += \
./sdk/Startup/startup_CH592.S
C_SRCS := \
$(APP_C_SRCS) \
$(PROFILE_C_SRCS) \
$(SDK_BLE_HAL_C_SRCS) \
$(SDK_STDPERIPHDRIVER_C_SRCS) \
$(SDK_RVMSIS_C_SRCS)
S_UPPER_SRCS := \
$(SDK_BLE_LIB_S_UPPER_SRCS) \
$(SDK_STARTUP_S_UPPER_SRCS)
OBJS := \
$(foreach src,$(C_SRCS),$(subst ./,obj/,$(patsubst %.c,%.o,$(src)))) \
$(foreach src,$(S_UPPER_SRCS),$(subst ./,obj/,$(patsubst %.S,%.o,$(src))))
MAKEFILE_DEPS := \
$(foreach obj,$(OBJS),$(patsubst %.o,%.d,$(obj)))
STDPERIPHDRIVER_LIBS := -L"./sdk/StdPeriphDriver" -lISP592
BLE_LIB_LIBS := -L"./sdk/BLE/LIB" -lCH59xBLE
LIBS := $(STDPERIPHDRIVER_LIBS) $(BLE_LIB_LIBS)
SECONDARY_FLASH := hid_keyboard.hex
SECONDARY_LIST := hid_keyboard.lst
SECONDARY_SIZE := hid_keyboard.siz
# ARCH is rv32imac on older gcc, rv32imac_zicsr on newer gcc
# ARCH := rv32imac
ARCH := rv32imac_zicsr
CFLAGS_COMMON := \
-march=$(ARCH) \
-mabi=ilp32 \
-mcmodel=medany \
-msmall-data-limit=8 \
-mno-save-restore \
-Os \
-fmessage-length=0 \
-fsigned-char \
-ffunction-sections \
-fdata-sections \
-g
.PHONY: all
all: hid_keyboard.elf secondary-outputs
.PHONY: clean
clean:
-rm $(OBJS)
-rm $(MAKEFILE_DEPS)
-rm $(SECONDARY_FLASH)
-rm $(SECONDARY_LIST)
-rm hid_keyboard.elf
-rm hid_keyboard.map
.PHONY: secondary-outputs
secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE)
hid_keyboard.elf: $(OBJS)
${TOOLCHAIN_PREFIX}-gcc \
$(CFLAGS_COMMON) \
-T "sdk/Ld/Link.ld" \
-nostartfiles \
-Xlinker \
--gc-sections \
-Xlinker \
--print-memory-usage \
-Wl,-Map,"hid_keyboard.map" \
-Lobj \
--specs=nano.specs \
--specs=nosys.specs \
-o "hid_keyboard.elf" \
$(OBJS) \
$(LIBS)
%.hex: %.elf
@ ${TOOLCHAIN_PREFIX}-objcopy -O ihex "$<" "$@"
%.lst: %.elf
@ ${TOOLCHAIN_PREFIX}-objdump \
--source \
--all-headers \
--demangle \
--line-numbers \
--wide "$<" > "$@"
%.siz: %.elf
@ ${TOOLCHAIN_PREFIX}-size --format=berkeley "$<"
obj/%.o: ./%.c
@ mkdir --parents $(dir $@)
@ ${TOOLCHAIN_PREFIX}-gcc \
$(CFLAGS_COMMON) \
-DDEBUG=1 \
-I"profile/include" \
-I"app/include" \
-I"sdk/StdPeriphDriver/inc" \
-I"sdk/RVMSIS" \
-I"sdk/BLE/LIB" \
-I"sdk/BLE/HAL/include" \
-std=gnu99 \
-MMD \
-MP \
-MF"$(@:%.o=%.d)" \
-MT"$(@)" \
-c \
-o "$@" "$<"
obj/%.o: ./%.S
@ mkdir --parents $(dir $@)
@ ${TOOLCHAIN_PREFIX}-gcc \
$(CFLAGS_COMMON) \
-x assembler \
-MMD \
-MP \
-MF"$(@:%.o=%.d)" \
-MT"$(@)" \
-c \
-o "$@" "$<"