浏览代码

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
Zach White 4 年之前
父节点
当前提交
eaa9106ec7

+ 5 - 0
data/schemas/keyboard.jsonschema

@@ -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"]

+ 1 - 0
keyboards/clueboard/60/info.json

@@ -6,6 +6,7 @@
   "width": 15,
   "debounce": 6,
   "processor": "STM32F303",
+  "board": "QMK_PROTON_C",
   "diode_direction": "COL2ROW",
   "features": {
     "audio": true,

+ 0 - 2
keyboards/clueboard/60/rules.mk

@@ -1,4 +1,2 @@
-BOARD = QMK_PROTON_C
-
 # project specific files
 SRC =	led.c

+ 1 - 0
keyboards/clueboard/66/rev4/info.json

@@ -6,6 +6,7 @@
   "width": 16.5,
   "debounce": 5,
   "processor": "STM32F303",
+  "board": "QMK_PROTON_C",
   "diode_direction": "COL2ROW",
   "features": {
     "audio": true,

+ 0 - 1
keyboards/clueboard/66/rev4/rules.mk

@@ -1,2 +1 @@
-BOARD = QMK_PROTON_C
 # This file intentionally left blank

+ 1 - 0
keyboards/clueboard/66_hotswap/gen1/info.json

@@ -6,6 +6,7 @@
   "width": 16.5,
   "debounce": 5,
   "processor": "STM32F303",
+  "board": "QMK_PROTON_C",
   "diode_direction": "COL2ROW",
   "features": {
     "audio": true,

+ 0 - 1
keyboards/clueboard/66_hotswap/gen1/rules.mk

@@ -1,4 +1,3 @@
-BOARD = QMK_PROTON_C
 LED_MATRIX_DRIVER = IS31FL3731
 
 # project specific files

+ 1 - 0
keyboards/clueboard/california/info.json

@@ -3,6 +3,7 @@
     "url": "",
     "maintainer": "skullydazed",
     "processor": "STM32F303",
+    "board": "QMK_PROTON_C",
     "matrix_pins": {
         "direct": [
             ["A10", "A9"],

+ 0 - 1
keyboards/clueboard/california/rules.mk

@@ -1,2 +1 @@
-BOARD = QMK_PROTON_C
 # This file intentionally left blank

+ 0 - 2
keyboards/cmm_studio/saka68/info.json

@@ -1,6 +1,4 @@
 {
-    "keyboard_name": "",
-    "url": "",
     "maintainer": "qmk",
     "width": 17.25,
     "height": 5,

+ 3 - 1
lib/python/qmk/cli/generate/rules_mk.py

@@ -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:

+ 7 - 1
lib/python/qmk/info.py

@@ -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