From 0ce3f6bcfe8241e51dd6936d24e6a88c907c535d Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Thu, 19 Jan 2023 00:27:00 +0000 Subject: [PATCH] De-duplicate platform detection (#19603) --- builddefs/build_keyboard.mk | 24 ++++++------------------ builddefs/converters.mk | 1 + data/mappings/info_rules.hjson | 2 ++ lib/python/qmk/info.py | 3 +++ platforms/arm_atsam/bootloader.mk | 2 ++ platforms/avr/bootloader.mk | 2 ++ platforms/chibios/bootloader.mk | 2 ++ platforms/chibios/platform.mk | 3 +++ 8 files changed, 21 insertions(+), 18 deletions(-) diff --git a/builddefs/build_keyboard.mk b/builddefs/build_keyboard.mk index ec0336f7c3f..6d355c9b850 100644 --- a/builddefs/build_keyboard.mk +++ b/builddefs/build_keyboard.mk @@ -184,6 +184,12 @@ include $(BUILDDEFS_PATH)/converters.mk include $(BUILDDEFS_PATH)/mcu_selection.mk +# PLATFORM_KEY should be detected in info.json via key 'processor' (or rules.mk 'MCU') +ifeq ($(PLATFORM_KEY),) + $(call CATASTROPHIC_ERROR,Platform not defined) +endif +PLATFORM=$(shell echo $(PLATFORM_KEY) | tr '[:lower:]' '[:upper:]') + # Find all the C source files to be compiled in subfolders. KEYBOARD_SRC := @@ -257,24 +263,6 @@ ifneq ("$(wildcard $(KEYBOARD_PATH_5)/$(KEYBOARD_FOLDER_5).h)","") FOUND_KEYBOARD_H = $(KEYBOARD_FOLDER_5).h endif -# Determine and set parameters based on the keyboard's processor family. -# We can assume a ChibiOS target When MCU_FAMILY is defined since it's -# not used for LUFA -ifdef MCU_FAMILY - PLATFORM=CHIBIOS - PLATFORM_KEY=chibios - FIRMWARE_FORMAT?=bin - OPT_DEFS += -DMCU_$(MCU_FAMILY) -else ifdef ARM_ATSAM - PLATFORM=ARM_ATSAM - PLATFORM_KEY=arm_atsam - FIRMWARE_FORMAT=bin -else - PLATFORM=AVR - PLATFORM_KEY=avr - FIRMWARE_FORMAT?=hex -endif - # Find all of the config.h files and add them to our CONFIG_H define. CONFIG_H := ifneq ("$(wildcard $(KEYBOARD_PATH_5)/config.h)","") diff --git a/builddefs/converters.mk b/builddefs/converters.mk index 581276c2e05..3ba0e501167 100644 --- a/builddefs/converters.mk +++ b/builddefs/converters.mk @@ -19,6 +19,7 @@ ifneq ($(CONVERT_TO),) -include $(CONVERTER)/pre_converter.mk + PLATFORM_KEY = $(shell echo $(CONVERTER) | rev | cut -d "/" -f4 | rev) TARGET := $(TARGET)_$(CONVERT_TO) # Configure any defaults diff --git a/data/mappings/info_rules.hjson b/data/mappings/info_rules.hjson index b020d0c8138..c409da04c6b 100644 --- a/data/mappings/info_rules.hjson +++ b/data/mappings/info_rules.hjson @@ -38,6 +38,8 @@ "PS2_MOUSE_ENABLE": {"info_key": "ps2.mouse_enabled", "value_type": "bool"}, "PS2_DRIVER": {"info_key": "ps2.driver"}, + "PLATFORM_KEY": {"info_key": "platform_key", "to_json": false}, + // Items we want flagged in lint "CTPC": {"info_key": "_deprecated.ctpc", "deprecated": true, "replace_with": "CONVERT_TO=proton_c"}, "CONVERT_TO_PROTON_C": {"info_key": "_deprecated.ctpc", "deprecated": true, "replace_with": "CONVERT_TO=proton_c"}, diff --git a/lib/python/qmk/info.py b/lib/python/qmk/info.py index af3b0f30916..789d05850c9 100644 --- a/lib/python/qmk/info.py +++ b/lib/python/qmk/info.py @@ -751,6 +751,7 @@ def arm_processor_rules(info_data, rules): """ info_data['processor_type'] = 'arm' info_data['protocol'] = 'ChibiOS' + info_data['platform_key'] = 'chibios' if 'STM32' in info_data['processor']: info_data['platform'] = 'STM32' @@ -758,6 +759,7 @@ def arm_processor_rules(info_data, rules): info_data['platform'] = rules['MCU_SERIES'] elif 'ARM_ATSAM' in rules: info_data['platform'] = 'ARM_ATSAM' + info_data['platform_key'] = 'arm_atsam' return info_data @@ -767,6 +769,7 @@ def avr_processor_rules(info_data, rules): """ info_data['processor_type'] = 'avr' info_data['platform'] = rules['ARCH'] if 'ARCH' in rules else 'unknown' + info_data['platform_key'] = 'avr' info_data['protocol'] = 'V-USB' if info_data['processor'] in VUSB_PROCESSORS else 'LUFA' # FIXME(fauxpark/anyone): Eventually we should detect the protocol by looking at PROTOCOL inherited from mcu_selection.mk: diff --git a/platforms/arm_atsam/bootloader.mk b/platforms/arm_atsam/bootloader.mk index 1ec42edeb68..7e503bdca9d 100644 --- a/platforms/arm_atsam/bootloader.mk +++ b/platforms/arm_atsam/bootloader.mk @@ -27,6 +27,8 @@ # the respective file under `platforms//bootloaders/custom.c` to see # which functions may be overridden. +FIRMWARE_FORMAT?=bin + ifeq ($(strip $(BOOTLOADER)), custom) OPT_DEFS += -DBOOTLOADER_CUSTOM BOOTLOADER_TYPE = custom diff --git a/platforms/avr/bootloader.mk b/platforms/avr/bootloader.mk index 63fe635d96a..36e3fd83db6 100644 --- a/platforms/avr/bootloader.mk +++ b/platforms/avr/bootloader.mk @@ -37,6 +37,8 @@ # BOOTLOADER_SIZE can still be defined manually, but it's recommended # you add any possible configuration to this list +FIRMWARE_FORMAT?=hex + ifeq ($(strip $(BOOTLOADER)), custom) OPT_DEFS += -DBOOTLOADER_CUSTOM BOOTLOADER_TYPE = custom diff --git a/platforms/chibios/bootloader.mk b/platforms/chibios/bootloader.mk index 85f18660622..48124123440 100644 --- a/platforms/chibios/bootloader.mk +++ b/platforms/chibios/bootloader.mk @@ -36,6 +36,8 @@ # the respective file under `platforms//bootloaders/custom.c` to see # which functions may be overridden. +FIRMWARE_FORMAT?=bin + ifeq ($(strip $(BOOTLOADER)), custom) OPT_DEFS += -DBOOTLOADER_CUSTOM BOOTLOADER_TYPE = custom diff --git a/platforms/chibios/platform.mk b/platforms/chibios/platform.mk index b2a8ec89e13..fd4c6bd2e57 100644 --- a/platforms/chibios/platform.mk +++ b/platforms/chibios/platform.mk @@ -442,6 +442,9 @@ LDFLAGS += $(SHARED_LDFLAGS) $(SHARED_LDSYMBOLS) $(TOOLCHAIN_LDFLAGS) $(TOOLCHA # Tell QMK that we are hosting it on ChibiOS. OPT_DEFS += -DPROTOCOL_CHIBIOS +# And what flavor of MCU +OPT_DEFS += -DMCU_$(MCU_FAMILY) + # ChibiOS supports synchronization primitives like a Mutex OPT_DEFS += -DPLATFORM_SUPPORTS_SYNCHRONIZATION