hw/bsp/family.json: what each board's default configure compiles (#3927)
family.json: catalog what each board's default configure compiles
hw/bsp/family.json records per cmake board its MCU, the defines
tusb_mcu.h tests, the family's MCUs, MAX3421_HOST, the drivers under
src/portable/ and the example roles it built; null for the two Make-only
pic32mz boards. family_support.cmake emits the facts, tools/build.py
joins them with the compile database after a default configure,
tools/family_json.py checks, fixes (pre-commit) and refreshes (release
sweep) the catalog.
The build skill's check_build.py selects one board per changed driver
from the rows instead of scraping family.cmake and tusb_mcu.h, which
guessed wrong for two-IP families and MAX3421; a candidate must satisfy
the driver's guard both ways (no negated option on, no required option
off) and a port counts as covered only when its translation unit keeps
lines after preprocessing.
nrf, stm32l4 and stm32u5 family files now compile only the USB driver
the MCU_VARIANT has, the way tusb_mcu.h selects it.
Evidence: 237 rows across 82 families, Espressif under ESP-IDF 5.5.3
byte-identical to ci.lan; catalog, skill, ci_select tests and pre-commit
pass; builds on nrf52840dk, nrf54h20dk, stm32l412nucleo, stm32l476disco,
stm32u545nucleo, stm32u575nucleo. hil-tinyusb passed on 82bf35e1e; the
two later commits touch no firmware
20 files changed