~ruther/qmk_firmware

eaa9106ec74591593e638ac015a5c90d17b30612 — Zach White 4 years ago 54a8262
Add support for specifying BOARD in info.json (#11492)

* add support for specifying BOARD in info.json

* move BOARD from rules.mk to info.json for clueboard

* fix keyboards that do not require board

* remove out of compliance values
M data/schemas/keyboard.jsonschema => data/schemas/keyboard.jsonschema +5 -0
@@ 27,6 27,11 @@
            "type": "string",
            "enum": ["MK20DX128", "MK20DX256", "MKL26Z64", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F411", "at90usb1286", "at90usb646", "atmega16u2", "atmega328p", "atmega32a", "atmega32u2", "atmega32u4", "attiny85", "cortex-m4", "unknown"]
        },
        "board": {
            "type": "string",
            "minLength": 2,
            "pattern": "^[a-zA-Z_][0-9a-zA-Z_]*$"
        },
        "bootloader": {
            "type": "string",
            "enum": ["atmel-dfu", "bootloadHID", "caterina", "halfkay", "kiibohd", "lufa-dfu", "lufa-ms", "micronucleus", "qmk-dfu", "stm32-dfu", "stm32duino", "unknown", "USBasp"]

M keyboards/clueboard/60/info.json => keyboards/clueboard/60/info.json +1 -0
@@ 6,6 6,7 @@
  "width": 15,
  "debounce": 6,
  "processor": "STM32F303",
  "board": "QMK_PROTON_C",
  "diode_direction": "COL2ROW",
  "features": {
    "audio": true,

M keyboards/clueboard/60/rules.mk => keyboards/clueboard/60/rules.mk +0 -2
@@ 1,4 1,2 @@
BOARD = QMK_PROTON_C

# project specific files
SRC =	led.c

M keyboards/clueboard/66/rev4/info.json => keyboards/clueboard/66/rev4/info.json +1 -0
@@ 6,6 6,7 @@
  "width": 16.5,
  "debounce": 5,
  "processor": "STM32F303",
  "board": "QMK_PROTON_C",
  "diode_direction": "COL2ROW",
  "features": {
    "audio": true,

M keyboards/clueboard/66/rev4/rules.mk => keyboards/clueboard/66/rev4/rules.mk +0 -1
@@ 1,2 1,1 @@
BOARD = QMK_PROTON_C
# This file intentionally left blank

M keyboards/clueboard/66_hotswap/gen1/info.json => keyboards/clueboard/66_hotswap/gen1/info.json +1 -0
@@ 6,6 6,7 @@
  "width": 16.5,
  "debounce": 5,
  "processor": "STM32F303",
  "board": "QMK_PROTON_C",
  "diode_direction": "COL2ROW",
  "features": {
    "audio": true,

M keyboards/clueboard/66_hotswap/gen1/rules.mk => keyboards/clueboard/66_hotswap/gen1/rules.mk +0 -1
@@ 1,4 1,3 @@
BOARD = QMK_PROTON_C
LED_MATRIX_DRIVER = IS31FL3731

# project specific files

M keyboards/clueboard/california/info.json => keyboards/clueboard/california/info.json +1 -0
@@ 3,6 3,7 @@
    "url": "",
    "maintainer": "skullydazed",
    "processor": "STM32F303",
    "board": "QMK_PROTON_C",
    "matrix_pins": {
        "direct": [
            ["A10", "A9"],

M keyboards/clueboard/california/rules.mk => keyboards/clueboard/california/rules.mk +0 -1
@@ 1,2 1,1 @@
BOARD = QMK_PROTON_C
# This file intentionally left blank

M keyboards/cmm_studio/saka68/info.json => keyboards/cmm_studio/saka68/info.json +0 -2
@@ 1,6 1,4 @@
{
    "keyboard_name": "",
    "url": "",
    "maintainer": "qmk",
    "width": 17.25,
    "height": 5,

M lib/python/qmk/cli/generate/rules_mk.py => lib/python/qmk/cli/generate/rules_mk.py +3 -1
@@ 7,6 7,7 @@ from qmk.info import info_json
from qmk.path import is_keyboard, normpath

info_to_rules = {
    'board': 'BOARD',
    'bootloader': 'BOOTLOADER',
    'processor': 'MCU',
}


@@ 37,7 38,8 @@ def generate_rules_mk(cli):

    # Bring in settings
    for info_key, rule_key in info_to_rules.items():
        rules_mk_lines.append(f'{rule_key} ?= {kb_info_json[info_key]}')
        if info_key in kb_info_json:
            rules_mk_lines.append(f'{rule_key} ?= {kb_info_json[info_key]}')

    # Find features that should be enabled
    if 'features' in kb_info_json:

M lib/python/qmk/info.py => lib/python/qmk/info.py +7 -1
@@ 462,7 462,7 @@ def _extract_rules_mk(info_data):
    """Pull some keyboard information from existing rules.mk files
    """
    rules = rules_mk(info_data['keyboard_folder'])
    mcu = rules.get('MCU')
    mcu = rules.get('MCU', info_data.get('processor'))

    if mcu in CHIBIOS_PROCESSORS:
        arm_processor_rules(info_data, rules)


@@ 594,6 594,12 @@ def arm_processor_rules(info_data, rules):
    elif 'ARM_ATSAM' in rules:
        info_data['platform'] = 'ARM_ATSAM'

    if 'BOARD' in rules:
        if 'board' in info_data:
            _log_warning(info_data, 'Board is specified in both info.json and rules.mk, the rules.mk value wins.')

        info_data['board'] = rules['BOARD']

    return info_data