forked from mirrors/qmk_firmware
e50867d52d
* Add support for RISC-V builds and GD32VF103 MCU * Add toolchain selection in chibios.mk based on the mcu selected in mcu_selection.mk * Reorder and added comments to chibios.mk to have a streamlined makefile * Add GD32VF103 mcu to possible targets for QMK. * Add STM32 compatibility for GD32VF103 MCU, this is hacky but more efficent then rewriting every driver. * Add GigaDevice DFU bootloader as flash target, please note that dfu-util of at least version 0.10 is needed. * Add analog driver compatibility * Add apa102 bitbang driver compatibility * Add ws2812 bitbang driver compatibility * Add eeprom in flash emulation compatibility * Allow faster re-builds with ccache * Add SiPeed Longan Nano to platform files * Add SiPeed Longan Nano Onekeys * Make quine compatible with other bootloaders * Support builds with picolibc * Add risc-v toolchain to arch and debian/ubuntu scripts
89 lines
2.5 KiB
Makefile
89 lines
2.5 KiB
Makefile
# Hey Emacs, this is a -*- makefile -*-
|
|
##############################################################################
|
|
# Architecture or project specific options
|
|
#
|
|
|
|
DFU_ARGS ?=
|
|
ifneq ("$(SERIAL)","")
|
|
DFU_ARGS += -S $(SERIAL)
|
|
endif
|
|
|
|
DFU_UTIL ?= dfu-util
|
|
|
|
define EXEC_DFU_UTIL
|
|
if ! $(DFU_UTIL) -l | grep -q "Found DFU"; then \
|
|
printf "$(MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY)" ;\
|
|
sleep $(BOOTLOADER_RETRY_TIME) ;\
|
|
while ! $(DFU_UTIL) -l | grep -q "Found DFU"; do \
|
|
printf "." ;\
|
|
sleep $(BOOTLOADER_RETRY_TIME) ;\
|
|
done ;\
|
|
printf "\n" ;\
|
|
fi
|
|
$(DFU_UTIL) $(DFU_ARGS) -D $(BUILD_DIR)/$(TARGET).bin
|
|
endef
|
|
|
|
dfu-util: $(BUILD_DIR)/$(TARGET).bin cpfirmware sizeafter
|
|
$(call EXEC_DFU_UTIL)
|
|
|
|
# TODO: Remove once ARM has a way to configure EECONFIG_HANDEDNESS
|
|
# within the emulated eeprom via dfu-util or another tool
|
|
ifneq (,$(filter $(MAKECMDGOALS),dfu-util-split-left))
|
|
OPT_DEFS += -DINIT_EE_HANDS_LEFT
|
|
endif
|
|
|
|
ifneq (,$(filter $(MAKECMDGOALS),dfu-util-split-right))
|
|
OPT_DEFS += -DINIT_EE_HANDS_RIGHT
|
|
endif
|
|
|
|
dfu-util-split-left: dfu-util
|
|
|
|
dfu-util-split-right: dfu-util
|
|
|
|
ST_LINK_CLI ?= st-link_cli
|
|
ST_LINK_ARGS ?=
|
|
|
|
st-link-cli: $(BUILD_DIR)/$(TARGET).hex sizeafter
|
|
$(ST_LINK_CLI) $(ST_LINK_ARGS) -q -c SWD -p $(BUILD_DIR)/$(TARGET).hex -Rst
|
|
|
|
ST_FLASH ?= st-flash
|
|
ST_FLASH_ARGS ?=
|
|
|
|
st-flash: $(BUILD_DIR)/$(TARGET).hex sizeafter
|
|
$(ST_FLASH) $(ST_FLASH_ARGS) --reset --format ihex write $(BUILD_DIR)/$(TARGET).hex
|
|
|
|
# Autodetect teensy loader
|
|
ifndef TEENSY_LOADER_CLI
|
|
ifneq (, $(shell which teensy-loader-cli 2>/dev/null))
|
|
TEENSY_LOADER_CLI ?= teensy-loader-cli
|
|
else
|
|
TEENSY_LOADER_CLI ?= teensy_loader_cli
|
|
endif
|
|
endif
|
|
|
|
TEENSY_LOADER_CLI_MCU ?= $(MCU_LDSCRIPT)
|
|
|
|
define EXEC_TEENSY
|
|
$(TEENSY_LOADER_CLI) -mmcu=$(TEENSY_LOADER_CLI_MCU) -w -v $(BUILD_DIR)/$(TARGET).hex
|
|
endef
|
|
|
|
teensy: $(BUILD_DIR)/$(TARGET).hex cpfirmware sizeafter
|
|
$(call EXEC_TEENSY)
|
|
|
|
|
|
flash: $(BUILD_DIR)/$(TARGET).bin cpfirmware sizeafter
|
|
ifneq ($(strip $(PROGRAM_CMD)),)
|
|
$(UNSYNC_OUTPUT_CMD) && $(PROGRAM_CMD)
|
|
else ifeq ($(strip $(BOOTLOADER)),kiibohd)
|
|
$(UNSYNC_OUTPUT_CMD) && $(call EXEC_DFU_UTIL)
|
|
else ifeq ($(strip $(MCU_FAMILY)),KINETIS)
|
|
$(UNSYNC_OUTPUT_CMD) && $(call EXEC_TEENSY)
|
|
else ifeq ($(strip $(MCU_FAMILY)),MIMXRT1062)
|
|
$(UNSYNC_OUTPUT_CMD) && $(call EXEC_TEENSY)
|
|
else ifeq ($(strip $(MCU_FAMILY)),STM32)
|
|
$(UNSYNC_OUTPUT_CMD) && $(call EXEC_DFU_UTIL)
|
|
else ifeq ($(strip $(MCU_FAMILY)),GD32V)
|
|
$(UNSYNC_OUTPUT_CMD) && $(call EXEC_DFU_UTIL)
|
|
else
|
|
$(PRINT_OK); $(SILENT) || printf "$(MSG_FLASH_BOOTLOADER)"
|
|
endif
|