[PATCH 3/3] build: Use enabled by for defaults

Sebastian Huber sebastian.huber at embedded-brains.de
Thu Jan 12 12:03:53 UTC 2023


Merge the "default" and "default-by-variant" attributes.  Use an
"enabled-by" expression to select the default value based on the enabled
set.  This makes it possible to select default values depending on other
options.  For example you could choose memory settings based on whether
RTEMS_SMP is enabled or disabled.

The change was tested by comparing the output of

  ./waf bspdefaults

before and after the change.
---
 spec/build/bsps/aarch64/a53/abi.yml           | 10 +--
 spec/build/bsps/aarch64/a53/optloadoff.yml    |  5 +-
 spec/build/bsps/aarch64/a53/optnocachelen.yml |  5 +-
 spec/build/bsps/aarch64/a53/optramlen.yml     |  5 +-
 spec/build/bsps/aarch64/a53/optramori.yml     |  5 +-
 spec/build/bsps/aarch64/a53/tsta53.yml        |  3 +-
 spec/build/bsps/aarch64/a72/abi.yml           | 10 +--
 spec/build/bsps/aarch64/a72/optloadoff.yml    |  5 +-
 spec/build/bsps/aarch64/a72/optnocachelen.yml |  5 +-
 spec/build/bsps/aarch64/a72/optramlen.yml     |  5 +-
 spec/build/bsps/aarch64/a72/optramori.yml     |  5 +-
 spec/build/bsps/aarch64/a72/tsta72.yml        |  3 +-
 spec/build/bsps/aarch64/optgtuseps.yml        |  5 +-
 spec/build/bsps/aarch64/optgtusevirt.yml      |  5 +-
 spec/build/bsps/aarch64/optmmupages.yml       |  5 +-
 spec/build/bsps/aarch64/raspberrypi/abi.yml   |  7 +-
 spec/build/bsps/aarch64/xilinx-versal/abi.yml |  5 +-
 .../bsps/aarch64/xilinx-versal/optclki2c0.yml |  5 +-
 .../bsps/aarch64/xilinx-versal/optclki2c1.yml |  5 +-
 .../bsps/aarch64/xilinx-versal/optclkuart.yml | 10 +--
 .../bsps/aarch64/xilinx-versal/optconirq.yml  |  5 +-
 .../aarch64/xilinx-versal/optconminor.yml     |  5 +-
 .../bsps/aarch64/xilinx-versal/optloadoff.yml | 10 +--
 .../aarch64/xilinx-versal/optnocachelen.yml   |  5 +-
 .../bsps/aarch64/xilinx-versal/optramlen.yml  |  5 +-
 .../bsps/aarch64/xilinx-versal/optramori.yml  | 10 +--
 .../bsps/aarch64/xilinx-versal/tstaiedge.yml  |  3 +-
 .../bsps/aarch64/xilinx-versal/tstqemu.yml    |  3 +-
 .../bsps/aarch64/xilinx-versal/tstvck190.yml  |  3 +-
 spec/build/bsps/aarch64/xilinx-zynqmp/abi.yml | 15 +++--
 .../bsps/aarch64/xilinx-zynqmp/optclki2c0.yml | 17 +----
 .../bsps/aarch64/xilinx-zynqmp/optclki2c1.yml | 17 +----
 .../bsps/aarch64/xilinx-zynqmp/optclkuart.yml | 12 +---
 .../bsps/aarch64/xilinx-zynqmp/optloadoff.yml |  9 +--
 .../aarch64/xilinx-zynqmp/optnocachelen.yml   |  5 +-
 .../bsps/aarch64/xilinx-zynqmp/optramlen.yml  |  5 +-
 .../bsps/aarch64/xilinx-zynqmp/optramori.yml  |  9 +--
 .../bsps/aarch64/xilinx-zynqmp/tstqemu.yml    |  3 +-
 .../bsps/aarch64/xilinx-zynqmp/tstzu3eg.yml   |  3 +-
 spec/build/bsps/arm/altera-cyclone-v/abi.yml  | 13 ++--
 .../arm/altera-cyclone-v/opta9periphclk.yml   |  5 +-
 .../arm/altera-cyclone-v/optcachedata.yml     |  5 +-
 .../arm/altera-cyclone-v/optcacheinst.yml     |  5 +-
 .../arm/altera-cyclone-v/optclkfastidle.yml   |  9 +--
 .../bsps/arm/altera-cyclone-v/optconcfg.yml   |  5 +-
 .../bsps/arm/altera-cyclone-v/optconuart1.yml |  5 +-
 .../bsps/arm/altera-cyclone-v/optfdten.yml    |  5 +-
 .../bsps/arm/altera-cyclone-v/opti2cspeed.yml |  5 +-
 .../bsps/arm/altera-cyclone-v/optnoi2c.yml    |  5 +-
 .../bsps/arm/altera-cyclone-v/optresetvec.yml |  5 +-
 .../bsps/arm/altera-cyclone-v/optuartbaud.yml |  5 +-
 .../bsps/arm/altera-cyclone-v/optuartirq.yml  |  5 +-
 spec/build/bsps/arm/atsam/abi.yml             | 11 ++--
 spec/build/bsps/arm/atsam/optchgclksram.yml   |  5 +-
 spec/build/bsps/arm/atsam/optchip.yml         |  5 +-
 spec/build/bsps/arm/atsam/optconbaud.yml      |  5 +-
 spec/build/bsps/arm/atsam/optconidx.yml       |  5 +-
 spec/build/bsps/arm/atsam/optconirq.yml       |  5 +-
 spec/build/bsps/arm/atsam/optcontype.yml      |  5 +-
 spec/build/bsps/arm/atsam/optmck.yml          |  5 +-
 spec/build/bsps/arm/atsam/optnocachesz.yml    |  5 +-
 spec/build/bsps/arm/atsam/optnullsz.yml       |  5 +-
 spec/build/bsps/arm/atsam/optoscmain.yml      |  5 +-
 spec/build/bsps/arm/atsam/optqspiflashsz.yml  |  5 +-
 spec/build/bsps/arm/atsam/optsdram.yml        |  5 +-
 spec/build/bsps/arm/atsam/opttcmsz.yml        |  5 +-
 spec/build/bsps/arm/atsam/optusextal.yml      |  5 +-
 spec/build/bsps/arm/atsam/tstatsamv.yml       |  3 +-
 spec/build/bsps/arm/beagle/abi.yml            |  5 +-
 spec/build/bsps/arm/beagle/optam335x.yml      |  9 +--
 spec/build/bsps/arm/beagle/optconbaud.yml     |  5 +-
 spec/build/bsps/arm/beagle/optconpoll.yml     |  5 +-
 spec/build/bsps/arm/beagle/optdebug.yml       |  9 +--
 spec/build/bsps/arm/beagle/optdm3730.yml      |  9 +--
 spec/build/bsps/arm/csb336/abi.yml            |  5 +-
 spec/build/bsps/arm/csb337/abi.yml            |  5 +-
 spec/build/bsps/arm/csb337/optcsb637.yml      | 11 ++--
 spec/build/bsps/arm/csb337/optenlcd.yml       |  8 +--
 spec/build/bsps/arm/csb337/optenumon.yml      |  5 +-
 spec/build/bsps/arm/csb337/optenumoncon.yml   |  5 +-
 spec/build/bsps/arm/csb337/optenusart0.yml    |  5 +-
 spec/build/bsps/arm/csb337/optenusart1.yml    |  5 +-
 spec/build/bsps/arm/csb337/optenusart2.yml    |  5 +-
 spec/build/bsps/arm/csb337/optenusart3.yml    |  5 +-
 spec/build/bsps/arm/edb7312/abi.yml           |  5 +-
 spec/build/bsps/arm/edb7312/optskyeye.yml     |  5 +-
 spec/build/bsps/arm/fvp/abi.yml               | 11 ++--
 spec/build/bsps/arm/fvp/optdevbegin.yml       | 10 +--
 spec/build/bsps/arm/fvp/optdevsize.yml        |  5 +-
 spec/build/bsps/arm/fvp/optdrambegin.yml      | 10 +--
 spec/build/bsps/arm/fvp/optdramsize.yml       | 10 +--
 spec/build/bsps/arm/fvp/optnullsize.yml       | 10 +--
 spec/build/bsps/arm/gumstix/abi.yml           |  5 +-
 spec/build/bsps/arm/gumstix/optskyeye.yml     |  5 +-
 spec/build/bsps/arm/imx/abi.yml               | 13 ++--
 spec/build/bsps/arm/imx/optcachedata.yml      |  9 +--
 spec/build/bsps/arm/imx/optcacheinst.yml      |  9 +--
 spec/build/bsps/arm/imx/optccmahb.yml         |  5 +-
 spec/build/bsps/arm/imx/optcmmecspi.yml       |  5 +-
 spec/build/bsps/arm/imx/optcmmipg.yml         |  5 +-
 spec/build/bsps/arm/imx/optcmmsdhci.yml       |  5 +-
 spec/build/bsps/arm/imx/optcmmuart.yml        |  5 +-
 spec/build/bsps/arm/imx/optconirq.yml         |  5 +-
 spec/build/bsps/arm/imx/optresetvec.yml       |  5 +-
 spec/build/bsps/arm/imxrt/abi.yml             | 11 ++--
 spec/build/bsps/arm/imxrt/optfsledmaemlm.yml  |  5 +-
 spec/build/bsps/arm/imxrt/optlinkcmds.yml     |  5 +-
 spec/build/bsps/arm/imxrt/optmemdtcmsz.yml    |  5 +-
 .../bsps/arm/imxrt/optmemextramnocachesz.yml  |  5 +-
 .../bsps/arm/imxrt/optmemextramorigin.yml     |  5 +-
 spec/build/bsps/arm/imxrt/optmemextramsz.yml  |  5 +-
 .../build/bsps/arm/imxrt/optmemflashcfgsz.yml |  5 +-
 .../build/bsps/arm/imxrt/optmemflashivtsz.yml |  5 +-
 .../bsps/arm/imxrt/optmemflashorigin.yml      |  5 +-
 spec/build/bsps/arm/imxrt/optmemflashsz.yml   |  5 +-
 spec/build/bsps/arm/imxrt/optmemitcmsz.yml    |  5 +-
 spec/build/bsps/arm/imxrt/optmemnullsz.yml    |  5 +-
 .../bsps/arm/imxrt/optmemocramnocachesz.yml   |  5 +-
 spec/build/bsps/arm/imxrt/optmemocramsz.yml   |  5 +-
 spec/build/bsps/arm/lm3s69xx/abi.yml          |  7 +-
 spec/build/bsps/arm/lm3s69xx/optenuart0.yml   |  5 +-
 spec/build/bsps/arm/lm3s69xx/optenuart1.yml   |  5 +-
 spec/build/bsps/arm/lm3s69xx/optenuart2.yml   |  5 +-
 spec/build/bsps/arm/lm3s69xx/optgpioahb.yml   | 11 ++--
 spec/build/bsps/arm/lm3s69xx/optgpionum.yml   | 19 +++---
 spec/build/bsps/arm/lm3s69xx/optlm3s3749.yml  | 10 +--
 spec/build/bsps/arm/lm3s69xx/optlm3s6965.yml  |  9 +--
 spec/build/bsps/arm/lm3s69xx/optlm4f120.yml   | 10 +--
 spec/build/bsps/arm/lm3s69xx/optssiblks.yml   | 19 +++---
 spec/build/bsps/arm/lm3s69xx/optssiclk.yml    |  5 +-
 spec/build/bsps/arm/lm3s69xx/optsysclk.yml    | 14 ++--
 spec/build/bsps/arm/lm3s69xx/optuartbaud.yml  |  5 +-
 spec/build/bsps/arm/lm3s69xx/optudma.yml      | 11 ++--
 spec/build/bsps/arm/lm3s69xx/optxtalcfg.yml   | 19 +++---
 spec/build/bsps/arm/lm3s69xx/tstlm3s3749.yml  |  3 +-
 spec/build/bsps/arm/lm3s69xx/tstlm3s6965.yml  |  3 +-
 spec/build/bsps/arm/lm3s69xx/tstlm4f120.yml   |  3 +-
 spec/build/bsps/arm/lpc176x/abi.yml           |  7 +-
 spec/build/bsps/arm/lpc176x/optcclk.yml       |  5 +-
 spec/build/bsps/arm/lpc176x/optconcfg.yml     |  5 +-
 spec/build/bsps/arm/lpc176x/optdmachn.yml     |  5 +-
 spec/build/bsps/arm/lpc176x/optlpc1768.yml    |  5 +-
 .../build/bsps/arm/lpc176x/optmintskstksz.yml |  5 +-
 spec/build/bsps/arm/lpc176x/optoscmain.yml    |  5 +-
 spec/build/bsps/arm/lpc176x/optoscrtc.yml     |  5 +-
 spec/build/bsps/arm/lpc176x/optpclkdiv.yml    |  5 +-
 spec/build/bsps/arm/lpc176x/optstopgpdma.yml  |  5 +-
 spec/build/bsps/arm/lpc176x/optstopusb.yml    |  5 +-
 spec/build/bsps/arm/lpc176x/optuart1cfg.yml   |  5 +-
 spec/build/bsps/arm/lpc176x/optuartbaud.yml   |  5 +-
 .../build/bsps/arm/lpc176x/tstlpc1768mbed.yml |  3 +-
 .../bsps/arm/lpc176x/tstlpc1768mbedahbram.yml |  3 +-
 .../arm/lpc176x/tstlpc1768mbedahbrameth.yml   |  3 +-
 spec/build/bsps/arm/lpc24xx/abi.yml           | 23 +++----
 spec/build/bsps/arm/lpc24xx/optcclk.yml       | 19 +++---
 spec/build/bsps/arm/lpc24xx/optconcfg.yml     |  5 +-
 spec/build/bsps/arm/lpc24xx/optdmachn.yml     | 11 ++--
 spec/build/bsps/arm/lpc24xx/optemcclkdiv.yml  | 11 ++--
 .../bsps/arm/lpc24xx/optemcis42s32800b.yml    | 11 ++--
 .../bsps/arm/lpc24xx/optemcis42s32800d7.yml   |  9 +--
 .../build/bsps/arm/lpc24xx/optemcm29w160e.yml |  9 +--
 .../bsps/arm/lpc24xx/optemcm29w320e70.yml     |  9 +--
 .../bsps/arm/lpc24xx/optemcmt48lc4m16a2.yml   |  9 +--
 .../bsps/arm/lpc24xx/optemcsst39vf3201.yml    |  5 +-
 spec/build/bsps/arm/lpc24xx/optemctest.yml    |  5 +-
 .../bsps/arm/lpc24xx/optemcw9825g2jb75i.yml   |  5 +-
 spec/build/bsps/arm/lpc24xx/optethdownpin.yml |  5 +-
 spec/build/bsps/arm/lpc24xx/optethrmii.yml    |  9 +--
 spec/build/bsps/arm/lpc24xx/optheapext.yml    |  9 +--
 spec/build/bsps/arm/lpc24xx/optoscmain.yml    |  9 +--
 spec/build/bsps/arm/lpc24xx/optoscrtc.yml     |  5 +-
 spec/build/bsps/arm/lpc24xx/optotgi2c.yml     | 11 ++--
 spec/build/bsps/arm/lpc24xx/optpclkdiv.yml    | 11 ++--
 spec/build/bsps/arm/lpc24xx/optresetvec.yml   | 10 +--
 spec/build/bsps/arm/lpc24xx/optstopeth.yml    |  9 +--
 spec/build/bsps/arm/lpc24xx/optstopgpdma.yml  |  5 +-
 spec/build/bsps/arm/lpc24xx/optstopusb.yml    |  9 +--
 spec/build/bsps/arm/lpc24xx/optuart1cfg.yml   | 11 +---
 spec/build/bsps/arm/lpc24xx/optuart2cfg.yml   | 20 +-----
 spec/build/bsps/arm/lpc24xx/optuart3cfg.yml   | 14 +---
 spec/build/bsps/arm/lpc24xx/optuartbaud.yml   |  5 +-
 .../bsps/arm/lpc24xx/tstlpc17xxearomint.yml   |  3 +-
 .../arm/lpc24xx/tstlpc17xxplx800romint.yml    |  3 +-
 spec/build/bsps/arm/lpc24xx/tstlpc23xx.yml    |  3 +-
 .../bsps/arm/lpc24xx/tstlpc40xxearomint.yml   |  3 +-
 spec/build/bsps/arm/lpc24xx/tstncsromint.yml  |  3 +-
 .../bsps/arm/lpc24xx/tstplx800romint.yml      |  3 +-
 spec/build/bsps/arm/lpc32xx/abi.yml           |  7 +-
 spec/build/bsps/arm/lpc32xx/optdismmu.yml     |  5 +-
 spec/build/bsps/arm/lpc32xx/optdisroprot.yml  |  5 +-
 spec/build/bsps/arm/lpc32xx/optdisrwdc.yml    |  5 +-
 spec/build/bsps/arm/lpc32xx/optdmachn.yml     |  5 +-
 spec/build/bsps/arm/lpc32xx/optenwdgrst.yml   |  5 +-
 spec/build/bsps/arm/lpc32xx/optethrmii.yml    |  5 +-
 spec/build/bsps/arm/lpc32xx/optoscmain.yml    |  5 +-
 spec/build/bsps/arm/lpc32xx/optoscrtc.yml     |  5 +-
 spec/build/bsps/arm/lpc32xx/optotgi2c.yml     |  9 +--
 spec/build/bsps/arm/lpc32xx/optotgvbus.yml    |  9 +--
 spec/build/bsps/arm/lpc32xx/optperiphclk.yml  |  5 +-
 spec/build/bsps/arm/lpc32xx/optresetvec.yml   |  5 +-
 spec/build/bsps/arm/lpc32xx/optscratchsz.yml  |  9 +--
 spec/build/bsps/arm/lpc32xx/optstopeth.yml    |  5 +-
 spec/build/bsps/arm/lpc32xx/optstopgpdma.yml  |  5 +-
 spec/build/bsps/arm/lpc32xx/optstopusb.yml    |  5 +-
 spec/build/bsps/arm/lpc32xx/optu3clk.yml      |  5 +-
 spec/build/bsps/arm/lpc32xx/optu4clk.yml      |  5 +-
 spec/build/bsps/arm/lpc32xx/optu5clk.yml      |  5 +-
 spec/build/bsps/arm/lpc32xx/optu6clk.yml      |  5 +-
 spec/build/bsps/arm/lpc32xx/optuart1baud.yml  |  5 +-
 spec/build/bsps/arm/lpc32xx/optuart2baud.yml  |  5 +-
 spec/build/bsps/arm/lpc32xx/optuart3baud.yml  |  5 +-
 spec/build/bsps/arm/lpc32xx/optuart4baud.yml  |  5 +-
 spec/build/bsps/arm/lpc32xx/optuart5baud.yml  |  5 +-
 spec/build/bsps/arm/lpc32xx/optuart6baud.yml  |  5 +-
 spec/build/bsps/arm/lpc32xx/optuart7baud.yml  |  5 +-
 spec/build/bsps/arm/lpc32xx/tstmzxstage1.yml  |  3 +-
 spec/build/bsps/arm/opta9periphclk.yml        | 15 ++---
 spec/build/bsps/arm/optgiccpuif.yml           |  5 +-
 spec/build/bsps/arm/optgicdist.yml            | 10 +--
 spec/build/bsps/arm/optgicredist.yml          | 10 +--
 spec/build/bsps/arm/optgicspicount.yml        |  5 +-
 spec/build/bsps/arm/optgtfreq.yml             |  8 +--
 spec/build/bsps/arm/optgtsysbase.yml          | 10 +--
 spec/build/bsps/arm/optgtsyscntcr.yml         | 10 +--
 spec/build/bsps/arm/optgtusevirt.yml          |  5 +-
 spec/build/bsps/arm/optmmusmallpages.yml      | 10 +--
 spec/build/bsps/arm/optmmusz.yml              |  5 +-
 spec/build/bsps/arm/raspberrypi/abi.yml       | 18 +++---
 .../bsps/arm/raspberrypi/opti2ciomode.yml     |  5 +-
 .../bsps/arm/raspberrypi/optnocachelen.yml    |  5 +-
 spec/build/bsps/arm/raspberrypi/optramlen.yml |  5 +-
 .../bsps/arm/raspberrypi/optresetvec.yml      |  5 +-
 spec/build/bsps/arm/raspberrypi/optrpi2.yml   | 10 +--
 .../bsps/arm/raspberrypi/optspiiomode.yml     |  5 +-
 spec/build/bsps/arm/realview-pbx-a9/abi.yml   | 13 ++--
 .../arm/realview-pbx-a9/opta9periphclk.yml    |  5 +-
 .../bsps/arm/realview-pbx-a9/optcachedata.yml |  9 +--
 .../bsps/arm/realview-pbx-a9/optcacheinst.yml |  9 +--
 .../arm/realview-pbx-a9/optclkbootcpu.yml     |  9 +--
 .../arm/realview-pbx-a9/optclkfastidle.yml    |  9 +--
 .../bsps/arm/realview-pbx-a9/optresetvec.yml  |  5 +-
 spec/build/bsps/arm/rtl22xx/abi.yml           | 12 ++--
 spec/build/bsps/arm/rtl22xx/optskyeye.yml     |  5 +-
 spec/build/bsps/arm/rtl22xx/tstrtl22xx.yml    |  3 +-
 spec/build/bsps/arm/rtl22xx/tstrtl22xxt.yml   |  3 +-
 spec/build/bsps/arm/smdk2410/abi.yml          |  5 +-
 .../build/bsps/arm/smdk2410/optcpus3c2410.yml | 10 +--
 spec/build/bsps/arm/smdk2410/optskyeye.yml    |  5 +-
 spec/build/bsps/arm/stm32f4/abi.yml           | 16 ++---
 spec/build/bsps/arm/stm32f4/opteni2c1.yml     | 10 +--
 spec/build/bsps/arm/stm32f4/opteni2c2.yml     |  5 +-
 spec/build/bsps/arm/stm32f4/optenuart4.yml    |  5 +-
 spec/build/bsps/arm/stm32f4/optenuart5.yml    |  5 +-
 spec/build/bsps/arm/stm32f4/optenusart1.yml   |  5 +-
 spec/build/bsps/arm/stm32f4/optenusart2.yml   |  5 +-
 spec/build/bsps/arm/stm32f4/optenusart3.yml   |  5 +-
 spec/build/bsps/arm/stm32f4/optenusart6.yml   |  5 +-
 spec/build/bsps/arm/stm32f4/optf10xxx.yml     | 10 +--
 spec/build/bsps/arm/stm32f4/optf4xxxx.yml     | 10 +--
 spec/build/bsps/arm/stm32f4/opthclk.yml       | 10 +--
 spec/build/bsps/arm/stm32f4/optoschse.yml     |  5 +-
 spec/build/bsps/arm/stm32f4/optpclk1.yml      | 10 +--
 spec/build/bsps/arm/stm32f4/optpclk2.yml      | 10 +--
 spec/build/bsps/arm/stm32f4/optsysclk.yml     | 10 +--
 spec/build/bsps/arm/stm32f4/optusartbaud.yml  |  5 +-
 .../build/bsps/arm/stm32f4/tststm32f105rc.yml |  3 +-
 spec/build/bsps/arm/stm32h7/abi.yml           | 19 +++---
 spec/build/bsps/arm/stm32h7/optbootcore.yml   | 13 ++--
 spec/build/bsps/arm/stm32h7/optenmpualign.yml |  5 +-
 spec/build/bsps/arm/stm32h7/optenuart4.yml    |  9 +--
 spec/build/bsps/arm/stm32h7/optenuart5.yml    |  9 +--
 spec/build/bsps/arm/stm32h7/optenuart7.yml    |  9 +--
 spec/build/bsps/arm/stm32h7/optenuart8.yml    |  9 +--
 spec/build/bsps/arm/stm32h7/optenuart9.yml    |  9 +--
 spec/build/bsps/arm/stm32h7/optenusart1.yml   |  5 +-
 spec/build/bsps/arm/stm32h7/optenusart10.yml  |  9 +--
 spec/build/bsps/arm/stm32h7/optenusart2.yml   |  9 +--
 spec/build/bsps/arm/stm32h7/optenusart3.yml   |  9 +--
 spec/build/bsps/arm/stm32h7/optenusart6.yml   |  9 +--
 .../bsps/arm/stm32h7/optethgpiobregs.yml      |  8 +--
 .../bsps/arm/stm32h7/optethgpiogregs.yml      | 10 +--
 spec/build/bsps/arm/stm32h7/opthse.yml        | 15 ++---
 spec/build/bsps/arm/stm32h7/optlinkcmds.yml   |  9 +--
 spec/build/bsps/arm/stm32h7/optmemdtcmsz.yml  |  5 +-
 .../bsps/arm/stm32h7/optmemflashlatency.yml   | 10 +--
 .../bsps/arm/stm32h7/optmemflashorigin.yml    |  9 +--
 spec/build/bsps/arm/stm32h7/optmemflashsz.yml |  9 +--
 spec/build/bsps/arm/stm32h7/optmemitcmsz.yml  |  5 +-
 spec/build/bsps/arm/stm32h7/optmemnandsz.yml  |  5 +-
 spec/build/bsps/arm/stm32h7/optmemnorsz.yml   |  5 +-
 spec/build/bsps/arm/stm32h7/optmemnullsz.yml  |  5 +-
 .../bsps/arm/stm32h7/optmemperipheralsz.yml   |  5 +-
 .../bsps/arm/stm32h7/optmemquadspisz.yml      |  5 +-
 .../build/bsps/arm/stm32h7/optmemsdram1sz.yml |  9 +--
 .../build/bsps/arm/stm32h7/optmemsdram2sz.yml |  9 +--
 spec/build/bsps/arm/stm32h7/optmemsram1sz.yml | 10 +--
 spec/build/bsps/arm/stm32h7/optmemsram2sz.yml | 10 +--
 spec/build/bsps/arm/stm32h7/optmemsram3sz.yml | 10 +--
 spec/build/bsps/arm/stm32h7/optmemsram4sz.yml | 10 +--
 .../bsps/arm/stm32h7/optmemsramaxisz.yml      | 10 +--
 .../bsps/arm/stm32h7/optmemsrambackupsz.yml   |  5 +-
 .../bsps/arm/stm32h7/optprintkinstance.yml    | 10 +--
 spec/build/bsps/arm/stm32h7/optpwrsupply.yml  |  9 +--
 .../arm/stm32h7/optusart1alternatefunc.yml    |  9 +--
 .../bsps/arm/stm32h7/optusart1gpiopins.yml    |  9 +--
 .../bsps/arm/stm32h7/optusart1gpioregs.yml    | 13 ++--
 .../bsps/arm/stm32h7/optusart3gpiopins.yml    |  5 +-
 .../bsps/arm/stm32h7/optusart3gpioregs.yml    |  5 +-
 spec/build/bsps/arm/stm32h7/optvariant.yml    | 18 +++---
 .../bsps/arm/stm32h7/tststm32h757i-eval.yml   |  3 +-
 spec/build/bsps/arm/tms570/abi.yml            | 13 ++--
 spec/build/bsps/arm/tms570/optcclk.yml        |  5 +-
 spec/build/bsps/arm/tms570/optconirq.yml      |  5 +-
 spec/build/bsps/arm/tms570/optlinkflags.yml   |  5 +-
 spec/build/bsps/arm/tms570/optlowinit.yml     |  5 +-
 spec/build/bsps/arm/tms570/optmintskstksz.yml |  5 +-
 spec/build/bsps/arm/tms570/optoscmain.yml     |  5 +-
 spec/build/bsps/arm/tms570/optoscrtc.yml      |  5 +-
 spec/build/bsps/arm/tms570/optreginit.yml     |  5 +-
 spec/build/bsps/arm/tms570/optscibaud.yml     |  5 +-
 .../build/bsps/arm/tms570/opttms570ls3137.yml |  5 +-
 .../bsps/arm/tms570/tstls3137hdkintram.yml    |  3 +-
 spec/build/bsps/arm/xen/abi.yml               | 11 ++--
 spec/build/bsps/arm/xen/optgentmunmask.yml    |  5 +-
 spec/build/bsps/arm/xen/optloadoff.yml        |  5 +-
 spec/build/bsps/arm/xen/optnocachelen.yml     |  5 +-
 spec/build/bsps/arm/xen/optramlen.yml         |  5 +-
 spec/build/bsps/arm/xen/optramori.yml         |  5 +-
 spec/build/bsps/arm/xen/optzimghdr.yml        |  5 +-
 spec/build/bsps/arm/xilinx-zynq/abi.yml       | 13 ++--
 .../bsps/arm/xilinx-zynq/opta9periphclk.yml   | 15 ++---
 .../bsps/arm/xilinx-zynq/optcachedata.yml     |  9 +--
 .../bsps/arm/xilinx-zynq/optcacheinst.yml     |  9 +--
 .../bsps/arm/xilinx-zynq/optclkcpu1x.yml      | 11 +---
 .../bsps/arm/xilinx-zynq/optclkfastidle.yml   |  9 +--
 .../build/bsps/arm/xilinx-zynq/optclkuart.yml | 11 +---
 spec/build/bsps/arm/xilinx-zynq/optconirq.yml |  5 +-
 .../build/bsps/arm/xilinx-zynq/optint0len.yml |  5 +-
 .../build/bsps/arm/xilinx-zynq/optint0ori.yml |  5 +-
 .../build/bsps/arm/xilinx-zynq/optint1len.yml |  5 +-
 .../build/bsps/arm/xilinx-zynq/optint1ori.yml |  5 +-
 .../bsps/arm/xilinx-zynq/optnocachelen.yml    |  5 +-
 spec/build/bsps/arm/xilinx-zynq/optramlen.yml | 19 ++----
 spec/build/bsps/arm/xilinx-zynq/optramori.yml | 10 +--
 .../bsps/arm/xilinx-zynq/optresetvec.yml      |  5 +-
 spec/build/bsps/arm/xilinx-zynqmp/abi.yml     | 13 ++--
 .../bsps/arm/xilinx-zynqmp/optcachedata.yml   |  9 +--
 .../bsps/arm/xilinx-zynqmp/optcacheinst.yml   |  9 +--
 .../bsps/arm/xilinx-zynqmp/optclkfastidle.yml |  9 +--
 .../bsps/arm/xilinx-zynqmp/optclkuart.yml     |  8 +--
 .../bsps/arm/xilinx-zynqmp/optconirq.yml      |  5 +-
 .../bsps/arm/xilinx-zynqmp/optint0len.yml     |  5 +-
 .../bsps/arm/xilinx-zynqmp/optint0ori.yml     |  5 +-
 .../bsps/arm/xilinx-zynqmp/optint1len.yml     |  5 +-
 .../bsps/arm/xilinx-zynqmp/optint1ori.yml     |  5 +-
 .../bsps/arm/xilinx-zynqmp/optnocachelen.yml  |  5 +-
 .../bsps/arm/xilinx-zynqmp/optramlen.yml      | 10 +--
 .../bsps/arm/xilinx-zynqmp/optramori.yml      |  5 +-
 .../bsps/arm/xilinx-zynqmp/optresetvec.yml    |  5 +-
 spec/build/bsps/bfin/TLL6527M/abi.yml         |  5 +-
 spec/build/bsps/bfin/TLL6527M/optconbaud.yml  |  5 +-
 spec/build/bsps/bfin/TLL6527M/optconirq.yml   |  5 +-
 spec/build/bsps/bfin/TLL6527M/optirqtbl.yml   |  5 +-
 spec/build/bsps/bfin/TLL6527M/optskyeye.yml   |  5 +-
 spec/build/bsps/bfin/TLL6527M/optuartdma.yml  |  5 +-
 spec/build/bsps/bfin/bf537Stamp/abi.yml       |  5 +-
 spec/build/bsps/bfin/bf537Stamp/optconirq.yml |  5 +-
 spec/build/bsps/bfin/bf537Stamp/optskyeye.yml |  5 +-
 spec/build/bsps/bfin/eZKit533/abi.yml         |  5 +-
 spec/build/bsps/bfin/eZKit533/optconirq.yml   |  5 +-
 spec/build/bsps/bfin/eZKit533/optskyeye.yml   |  5 +-
 .../build/bsps/dev/irq/optarmgic-icc-bpr0.yml |  9 +--
 .../build/bsps/dev/irq/optarmgic-icc-bpr1.yml |  5 +-
 .../build/bsps/dev/irq/optarmgic-icc-ctrl.yml |  5 +-
 .../bsps/dev/irq/optarmgic-icc-igrpen0.yml    |  9 +--
 .../bsps/dev/irq/optarmgic-icc-igrpen1.yml    |  5 +-
 spec/build/bsps/dev/irq/optarmgic-icc-pmr.yml |  5 +-
 spec/build/bsps/dev/irq/optarmgic-icc-sre.yml |  5 +-
 spec/build/bsps/i386/pc386/abi.yml            | 34 +++++-----
 spec/build/bsps/i386/pc386/optcirrus.yml      |  5 +-
 spec/build/bsps/i386/pc386/optclk8253.yml     |  5 +-
 spec/build/bsps/i386/pc386/optclktsc.yml      |  5 +-
 spec/build/bsps/i386/pc386/optconcom1.yml     |  5 +-
 spec/build/bsps/i386/pc386/optencom14.yml     |  5 +-
 spec/build/bsps/i386/pc386/optenide.yml       |  5 +-
 spec/build/bsps/i386/pc386/optenvga.yml       |  5 +-
 spec/build/bsps/i386/pc386/optgdbstub.yml     |  5 +-
 spec/build/bsps/i386/pc386/optgdtdesc.yml     |  5 +-
 spec/build/bsps/i386/pc386/optidepriifc.yml   |  5 +-
 spec/build/bsps/i386/pc386/optidesecifc.yml   |  5 +-
 spec/build/bsps/i386/pc386/optrelocaddr.yml   |  5 +-
 spec/build/bsps/i386/pc386/optvberm.yml       |  5 +-
 spec/build/bsps/i386/pc386/optvga.yml         |  5 +-
 spec/build/bsps/i386/pc386/optvideo80x50.yml  |  5 +-
 spec/build/bsps/i386/pc386/tst-xfail-val.yml  |  3 +-
 spec/build/bsps/lm32/lm32_evr/abi.yml         |  5 +-
 spec/build/bsps/lm32/lm32_evr/optsim.yml      | 10 +--
 spec/build/bsps/lm32/milkymist/abi.yml        | 11 ++--
 spec/build/bsps/lm32/milkymist/optsim.yml     |  5 +-
 spec/build/bsps/m68k/av5282/abi.yml           |  5 +-
 spec/build/bsps/m68k/csb360/abi.yml           |  5 +-
 spec/build/bsps/m68k/gen68340/abi.yml         |  5 +-
 spec/build/bsps/m68k/gen68360/abi.yml         | 15 ++---
 spec/build/bsps/m68k/gen68360/opt68360.yml    | 10 +--
 .../build/bsps/m68k/gen68360/opt68360x040.yml | 10 +--
 spec/build/bsps/m68k/gen68360/optpgh360.yml   | 10 +--
 spec/build/bsps/m68k/genmcf548x/abi.yml       |  7 +-
 spec/build/bsps/m68k/genmcf548x/optcpuclk.yml | 13 ++--
 spec/build/bsps/m68k/genmcf548x/optdbug.yml   | 10 +--
 .../build/bsps/m68k/genmcf548x/optlowinit.yml | 10 +--
 .../m68k/genmcf548x/optm5484fireengine.yml    | 10 +--
 spec/build/bsps/m68k/mcf5206elite/abi.yml     |  5 +-
 .../m68k/mcf5206elite/tstmcf5206elite.yml     |  3 +-
 spec/build/bsps/m68k/mcf52235/abi.yml         |  5 +-
 spec/build/bsps/m68k/mcf52235/tstmcf52235.yml |  3 +-
 spec/build/bsps/m68k/mcf5225x/abi.yml         |  5 +-
 spec/build/bsps/m68k/mcf5225x/tstmcf5225x.yml |  3 +-
 spec/build/bsps/m68k/mcf5235/abi.yml          |  5 +-
 spec/build/bsps/m68k/mcf5329/abi.yml          |  5 +-
 spec/build/bsps/m68k/mrm332/abi.yml           |  5 +-
 spec/build/bsps/m68k/mrm332/tstmrm332.yml     |  3 +-
 spec/build/bsps/m68k/mvme147/abi.yml          |  5 +-
 spec/build/bsps/m68k/mvme147s/abi.yml         |  5 +-
 spec/build/bsps/m68k/mvme162/abi.yml          |  7 +-
 spec/build/bsps/m68k/mvme162/tstmvme162.yml   |  3 +-
 spec/build/bsps/m68k/mvme162/tstmvme162lx.yml |  3 +-
 spec/build/bsps/m68k/mvme167/abi.yml          |  5 +-
 spec/build/bsps/m68k/mvme167/optconminor.yml  |  5 +-
 spec/build/bsps/m68k/mvme167/optintlvl.yml    |  5 +-
 spec/build/bsps/m68k/mvme167/optiomode.yml    |  5 +-
 spec/build/bsps/m68k/mvme167/optmvme167.yml   |  3 +-
 .../bsps/m68k/mvme167/optprintkminor.yml      |  5 +-
 spec/build/bsps/m68k/mvme167/optuseterm.yml   |  5 +-
 spec/build/bsps/m68k/uC5282/abi.yml           |  5 +-
 .../bsps/microblaze/microblaze_fpga/abi.yml   | 11 ++--
 .../microblaze_fpga/optconsoleinterrupts.yml  |  5 +-
 .../microblaze_fpga/optdcachebaseaddress.yml  |  5 +-
 .../microblaze_fpga/optdcachelinelen.yml      |  5 +-
 .../microblaze_fpga/optdcachesize.yml         |  5 +-
 .../microblaze_fpga/optdtbheaderpath.yml      |  5 +-
 .../microblaze_fpga/opticachebaseaddress.yml  |  5 +-
 .../microblaze_fpga/opticachelinelen.yml      |  5 +-
 .../microblaze_fpga/opticachesize.yml         |  5 +-
 .../microblaze_fpga/optintcbaseaddress.yml    |  5 +-
 .../microblaze/microblaze_fpga/optramlen.yml  |  9 +--
 .../microblaze_fpga/optspibaseaddress.yml     |  5 +-
 .../microblaze/microblaze_fpga/optspiirq.yml  |  5 +-
 .../microblaze_fpga/opttimerbaseaddress.yml   |  5 +-
 .../microblaze_fpga/opttimerfrequency.yml     |  5 +-
 .../optuartlitebaseaddress.yml                |  5 +-
 .../microblaze_fpga/tstkcu105_qemu.yml        |  3 +-
 spec/build/bsps/mips/csb350/abi.yml           |  9 +--
 spec/build/bsps/mips/hurricane/abi.yml        |  9 +--
 spec/build/bsps/mips/hurricane/optrm52xx.yml  |  5 +-
 spec/build/bsps/mips/hurricane/optusc320.yml  |  5 +-
 spec/build/bsps/mips/jmr3904/abi.yml          |  9 +--
 spec/build/bsps/mips/jmr3904/tstjmr3904.yml   |  3 +-
 spec/build/bsps/mips/malta/abi.yml            |  9 +--
 spec/build/bsps/mips/rbtx4925/abi.yml         |  9 +--
 spec/build/bsps/mips/rbtx4925/opttx49xx.yml   |  5 +-
 spec/build/bsps/mips/rbtx4938/abi.yml         |  9 +--
 spec/build/bsps/moxie/moxiesim/abi.yml        |  5 +-
 spec/build/bsps/nios2/nios2_iss/abi.yml       |  7 +-
 spec/build/bsps/optabi.yml                    |  3 +-
 spec/build/bsps/optasflags.yml                |  3 +-
 spec/build/bsps/optbsp.yml                    |  3 +-
 spec/build/bsps/optbspoptflags.yml            |  5 +-
 spec/build/bsps/optcachedata.yml              |  9 +--
 spec/build/bsps/optcacheinst.yml              |  9 +--
 spec/build/bsps/optcflags.yml                 |  3 +-
 spec/build/bsps/optclang.yml                  |  3 +-
 spec/build/bsps/optclkbootcpu.yml             |  9 +--
 spec/build/bsps/optclkfastidle.yml            |  9 +--
 spec/build/bsps/optconminor.yml               |  5 +-
 spec/build/bsps/optconsolebaud.yml            | 14 ++--
 spec/build/bsps/optconsoleirq.yml             |  5 +-
 spec/build/bsps/optcpukitoptflags.yml         |  5 +-
 spec/build/bsps/optdtb.yml                    | 10 +--
 spec/build/bsps/optdtbheaderpath.yml          | 10 +--
 spec/build/bsps/optfatalverb.yml              |  5 +-
 spec/build/bsps/optfdtcpyro.yml               |  5 +-
 spec/build/bsps/optfdtmxsz.yml                |  5 +-
 spec/build/bsps/optfdtro.yml                  |  5 +-
 spec/build/bsps/optfdtuboot.yml               |  5 +-
 spec/build/bsps/optgcc.yml                    |  3 +-
 spec/build/bsps/optincludes.yml               |  3 +-
 spec/build/bsps/optldflags.yml                |  5 +-
 spec/build/bsps/optldflagsbsp.yml             |  3 +-
 spec/build/bsps/optlinkflags.yml              |  5 +-
 spec/build/bsps/optmake.yml                   |  3 +-
 spec/build/bsps/optmakelegacy.yml             |  5 +-
 spec/build/bsps/opto0.yml                     | 11 ++--
 spec/build/bsps/opto1.yml                     | 11 ++--
 spec/build/bsps/opto2.yml                     | 11 ++--
 spec/build/bsps/optobjcopy.yml                |  3 +-
 spec/build/bsps/optog.yml                     | 11 ++--
 spec/build/bsps/optos.yml                     | 11 ++--
 spec/build/bsps/optprintexcpt.yml             |  5 +-
 spec/build/bsps/optreset.yml                  |  5 +-
 spec/build/bsps/optresetkey.yml               |  5 +-
 spec/build/bsps/optstarthyp.yml               |  5 +-
 spec/build/bsps/opttestoptflags.yml           |  5 +-
 spec/build/bsps/optxilsupportpath.yml         | 24 ++++---
 spec/build/bsps/or1k/generic_or1k/abi.yml     |  5 +-
 .../bsps/or1k/generic_or1k/optperiphclk.yml   |  5 +-
 .../bsps/or1k/generic_or1k/optresetvec.yml    |  5 +-
 spec/build/bsps/powerpc/beatnik/abi.yml       |  5 +-
 spec/build/bsps/powerpc/beatnik/optsbrk.yml   |  5 +-
 spec/build/bsps/powerpc/gen5200/abi.yml       | 11 ++--
 .../bsps/powerpc/gen5200/optbenchirq.yml      |  5 +-
 .../bsps/powerpc/gen5200/optenirqnest.yml     | 10 +--
 .../build/bsps/powerpc/gen5200/optgpiomsk.yml | 10 +--
 .../build/bsps/powerpc/gen5200/optgpioval.yml | 10 +--
 spec/build/bsps/powerpc/gen5200/opticecub.yml | 10 +--
 .../bsps/powerpc/gen5200/optpm520cr825.yml    | 10 +--
 .../bsps/powerpc/gen5200/optpm520ze30.yml     | 10 +--
 .../bsps/powerpc/gen5200/optprintkminor.yml   |  5 +-
 spec/build/bsps/powerpc/gen5200/optpscgps.yml |  5 +-
 .../bsps/powerpc/gen5200/optsinglechar.yml    |  5 +-
 .../build/bsps/powerpc/gen5200/optuartmsk.yml | 18 ++----
 .../bsps/powerpc/gen5200/optuartstermirq.yml  |  5 +-
 spec/build/bsps/powerpc/gen5200/optuboot.yml  | 11 ++--
 spec/build/bsps/powerpc/gen83xx/abi.yml       | 11 ++--
 spec/build/bsps/powerpc/gen83xx/optbruid.yml  | 10 +--
 .../bsps/powerpc/gen83xx/optchiptype.yml      | 17 ++---
 .../build/bsps/powerpc/gen83xx/opthsccm01.yml | 10 +--
 .../build/bsps/powerpc/gen83xx/optirqnest.yml | 11 ++--
 .../bsps/powerpc/gen83xx/optmpc8309som.yml    | 10 +--
 .../bsps/powerpc/gen83xx/optmpc8313erdb.yml   | 10 +--
 .../bsps/powerpc/gen83xx/optmpc8349eamds.yml  | 10 +--
 .../build/bsps/powerpc/gen83xx/optnandcs0.yml | 10 +--
 .../build/bsps/powerpc/gen83xx/optnet0phy.yml | 15 ++---
 spec/build/bsps/powerpc/gen83xx/optuart2.yml  |  5 +-
 .../build/bsps/powerpc/gen83xx/optuartirq.yml | 10 +--
 spec/build/bsps/powerpc/gen83xx/optuboot.yml  | 13 ++--
 spec/build/bsps/powerpc/gen83xx/optulpi.yml   | 10 +--
 .../bsps/powerpc/motorola_powerpc/abi.yml     | 25 ++++----
 .../powerpc/motorola_powerpc/optmpc603e.yml   | 11 ++--
 .../powerpc/motorola_powerpc/optmpc750.yml    | 10 +--
 .../powerpc/motorola_powerpc/optmpc8240.yml   | 10 +--
 .../powerpc/motorola_powerpc/optmvme2100.yml  | 10 +--
 .../bsps/powerpc/motorola_powerpc/optqemu.yml |  9 +--
 .../bsps/powerpc/motorola_powerpc/optsbrk.yml |  5 +-
 spec/build/bsps/powerpc/mpc55xxevb/abi.yml    | 13 ++--
 .../bsps/powerpc/mpc55xxevb/ofmpllptmfd.yml   | 20 +++---
 .../bsps/powerpc/mpc55xxevb/optbootflg.yml    |  5 +-
 .../powerpc/mpc55xxevb/optcachewritethru.yml  |  5 +-
 .../bsps/powerpc/mpc55xxevb/optchipfam.yml    |  5 +-
 .../bsps/powerpc/mpc55xxevb/optchiptype.yml   | 30 ++++-----
 .../bsps/powerpc/mpc55xxevb/optclkemios.yml   | 16 ++---
 .../bsps/powerpc/mpc55xxevb/optclkpit.yml     | 13 ++--
 .../bsps/powerpc/mpc55xxevb/optconbaud.yml    |  5 +-
 .../bsps/powerpc/mpc55xxevb/optconminor.yml   |  5 +-
 .../bsps/powerpc/mpc55xxevb/optearlystksz.yml |  5 +-
 .../bsps/powerpc/mpc55xxevb/opteepromname.yml | 10 +--
 .../bsps/powerpc/mpc55xxevb/opteeprompath.yml | 10 +--
 .../powerpc/mpc55xxevb/optemiosprescal.yml    | 15 ++---
 .../bsps/powerpc/mpc55xxevb/optenstartpro.yml |  5 +-
 .../bsps/powerpc/mpc55xxevb/optesciirq.yml    |  5 +-
 .../bsps/powerpc/mpc55xxevb/optexcbooke.yml   |  5 +-
 .../powerpc/mpc55xxevb/optexcfixdhdlr.yml     |  5 +-
 .../powerpc/mpc55xxevb/optfmpllesyncr1.yml    |  5 +-
 .../powerpc/mpc55xxevb/optfmpllprediv.yml     | 20 +++---
 .../bsps/powerpc/mpc55xxevb/optgwlcfm.yml     | 10 +--
 .../bsps/powerpc/mpc55xxevb/optirqtblsz.yml   | 16 ++---
 .../bsps/powerpc/mpc55xxevb/optlowinit.yml    |  9 +--
 .../bsps/powerpc/mpc55xxevb/optmpc5566evb.yml | 10 +--
 .../powerpc/mpc55xxevb/optmpc5674fevb.yml     | 10 +--
 .../bsps/powerpc/mpc55xxevb/optnullprot.yml   | 11 ++--
 .../powerpc/mpc55xxevb/optphycorempc5554.yml  | 10 +--
 .../bsps/powerpc/mpc55xxevb/optrefclk.yml     | 18 ++----
 .../bsps/powerpc/mpc55xxevb/optsmc91111.yml   | 10 +--
 .../powerpc/mpc55xxevb/optsmc9111enaddr.yml   | 10 +--
 .../powerpc/mpc55xxevb/optsmc9218ibige.yml    |  5 +-
 .../powerpc/mpc55xxevb/optsmc9218iled.yml     |  5 +-
 .../powerpc/mpc55xxevb/optsmc9218ipinirq.yml  |  8 +--
 .../powerpc/mpc55xxevb/optsmc9218ipinrst.yml  |  8 +--
 .../powerpc/mpc55xxevb/optsmc9218irxchn.yml   |  5 +-
 .../powerpc/mpc55xxevb/optsmc9218itxchn.yml   |  5 +-
 .../bsps/powerpc/mpc55xxevb/optsysclk.yml     | 20 +++---
 .../bsps/powerpc/mpc55xxevb/optsysclkdiv.yml  | 10 +--
 .../bsps/powerpc/mpc55xxevb/tstgwlcfm.yml     |  3 +-
 .../powerpc/mpc55xxevb/tstmpc5643levb.yml     |  3 +-
 spec/build/bsps/powerpc/mpc8260ads/abi.yml    | 13 ++--
 .../bsps/powerpc/mpc8260ads/optconminor.yml   |  5 +-
 .../powerpc/mpc8260ads/optdisphandstat.yml    |  5 +-
 .../powerpc/mpc8260ads/optprintkminor.yml     |  5 +-
 .../powerpc/mpc8260ads/optuartsiomode.yml     |  5 +-
 .../bsps/powerpc/mpc8260ads/optuartsterm.yml  |  5 +-
 spec/build/bsps/powerpc/mvme3100/abi.yml      |  7 +-
 spec/build/bsps/powerpc/mvme3100/optsbrk.yml  |  5 +-
 spec/build/bsps/powerpc/mvme5500/abi.yml      |  9 +--
 spec/build/bsps/powerpc/mvme5500/optsbrk.yml  |  5 +-
 spec/build/bsps/powerpc/psim/abi.yml          | 11 ++--
 .../bsps/powerpc/psim/optclkfastidle.yml      | 10 +--
 spec/build/bsps/powerpc/psim/optsbrk.yml      |  5 +-
 spec/build/bsps/powerpc/psim/optsprg.yml      |  5 +-
 spec/build/bsps/powerpc/psim/optvecbase.yml   |  5 +-
 spec/build/bsps/powerpc/qemuppc/abi.yml       |  7 +-
 spec/build/bsps/powerpc/qoriq/abi.yml         | 23 ++++---
 spec/build/bsps/powerpc/qoriq/optbucsr.yml    |  7 +-
 .../build/bsps/powerpc/qoriq/optbusclkdiv.yml |  9 +--
 .../bsps/powerpc/qoriq/optcachealign.yml      |  7 +-
 .../bsps/powerpc/qoriq/optcacheblktouch.yml   |  5 +-
 .../bsps/powerpc/qoriq/optcachedatal1sz.yml   |  5 +-
 .../bsps/powerpc/qoriq/optcachedatal2sz.yml   |  9 +--
 .../bsps/powerpc/qoriq/optcacheinstl1sz.yml   |  5 +-
 .../bsps/powerpc/qoriq/optcacheinstl2sz.yml   |  9 +--
 spec/build/bsps/powerpc/qoriq/optchipnum.yml  |  9 +--
 spec/build/bsps/powerpc/qoriq/optchipser.yml  |  9 +--
 spec/build/bsps/powerpc/qoriq/optclktmctr.yml | 10 +--
 spec/build/bsps/powerpc/qoriq/optclktmr.yml   | 10 +--
 spec/build/bsps/powerpc/qoriq/optcpucnt.yml   |  9 +--
 .../build/bsps/powerpc/qoriq/optetsec1phy.yml |  5 +-
 .../build/bsps/powerpc/qoriq/optetsec2phy.yml |  5 +-
 .../build/bsps/powerpc/qoriq/optetsec3phy.yml |  5 +-
 spec/build/bsps/powerpc/qoriq/optexcbooke.yml |  5 +-
 .../bsps/powerpc/qoriq/optexcfixdhdlr.yml     |  5 +-
 spec/build/bsps/powerpc/qoriq/opthid0.yml     |  7 +-
 spec/build/bsps/powerpc/qoriq/opthyp.yml      |  9 +--
 spec/build/bsps/powerpc/qoriq/opthypguest.yml |  5 +-
 .../build/bsps/powerpc/qoriq/opticombegin.yml |  5 +-
 spec/build/bsps/powerpc/qoriq/opticomsz.yml   |  5 +-
 spec/build/bsps/powerpc/qoriq/optmas7.yml     |  9 +--
 spec/build/bsps/powerpc/qoriq/optmsr.yml      | 15 ++---
 spec/build/bsps/powerpc/qoriq/optspefscr.yml  |  9 +--
 spec/build/bsps/powerpc/qoriq/optthrdcnt.yml  |  9 +--
 spec/build/bsps/powerpc/qoriq/opttlb1cnt.yml  |  9 +--
 spec/build/bsps/powerpc/qoriq/optuart0en.yml  | 10 +--
 spec/build/bsps/powerpc/qoriq/optuart1en.yml  | 10 +--
 .../bsps/powerpc/qoriq/optuartbrg0en.yml      |  5 +-
 .../bsps/powerpc/qoriq/optuartbrg1en.yml      | 11 ++--
 .../bsps/powerpc/qoriq/optuartbrgmas.yml      |  5 +-
 .../bsps/powerpc/qoriq/optuartbrgpri.yml      |  5 +-
 .../bsps/powerpc/qoriq/optuartbrgslv.yml      |  5 +-
 spec/build/bsps/powerpc/qoriq/optuartirq.yml  |  5 +-
 spec/build/bsps/powerpc/ss555/abi.yml         |  7 +-
 spec/build/bsps/powerpc/ss555/optconminor.yml |  5 +-
 .../bsps/powerpc/ss555/optprintkminor.yml     |  5 +-
 .../bsps/powerpc/ss555/optuartsiomode.yml     |  5 +-
 .../build/bsps/powerpc/ss555/optuartsterm.yml |  5 +-
 .../bsps/powerpc/ss555/optwdgtimeout.yml      |  5 +-
 spec/build/bsps/powerpc/t32mppc/abi.yml       | 11 ++--
 .../bsps/powerpc/t32mppc/optexcbooke.yml      |  5 +-
 .../bsps/powerpc/t32mppc/optexcfixdhdlr.yml   |  5 +-
 spec/build/bsps/powerpc/tqm8xx/abi.yml        | 15 +++--
 spec/build/bsps/powerpc/tqm8xx/optconchn.yml  |  5 +-
 spec/build/bsps/powerpc/tqm8xx/optconscc1.yml |  5 +-
 spec/build/bsps/powerpc/tqm8xx/optconscc2.yml |  5 +-
 spec/build/bsps/powerpc/tqm8xx/optconscc3.yml |  5 +-
 spec/build/bsps/powerpc/tqm8xx/optconscc4.yml |  5 +-
 spec/build/bsps/powerpc/tqm8xx/optconsmc1.yml | 15 ++---
 spec/build/bsps/powerpc/tqm8xx/optconsmc2.yml | 10 +--
 spec/build/bsps/powerpc/tqm8xx/optnetfec.yml  | 10 +--
 spec/build/bsps/powerpc/tqm8xx/optnetscc.yml  | 10 +--
 .../bsps/powerpc/tqm8xx/optprintkchn.yml      |  5 +-
 spec/build/bsps/powerpc/virtex/abi.yml        | 11 ++--
 spec/build/bsps/powerpc/virtex/optconirq.yml  |  5 +-
 .../bsps/powerpc/virtex/optfastramlen.yml     |  5 +-
 .../bsps/powerpc/virtex/optfastramorg.yml     |  5 +-
 spec/build/bsps/powerpc/virtex/optramlen.yml  |  5 +-
 spec/build/bsps/powerpc/virtex/optramorg.yml  |  5 +-
 .../build/bsps/powerpc/virtex/optresetlen.yml |  5 +-
 .../build/bsps/powerpc/virtex/optresetorg.yml |  5 +-
 spec/build/bsps/powerpc/virtex/optxparam.yml  |  5 +-
 spec/build/bsps/powerpc/virtex4/abi.yml       |  7 +-
 .../bsps/powerpc/virtex4/optppccachedata.yml  |  5 +-
 spec/build/bsps/powerpc/virtex4/optsprg.yml   |  5 +-
 .../build/bsps/powerpc/virtex4/optvecbase.yml |  5 +-
 spec/build/bsps/powerpc/virtex5/abi.yml       |  9 +--
 .../bsps/powerpc/virtex5/optppccachedata.yml  |  5 +-
 spec/build/bsps/powerpc/virtex5/optsprg.yml   |  5 +-
 .../build/bsps/powerpc/virtex5/optvecbase.yml |  5 +-
 spec/build/bsps/riscv/griscv/abi.yml          | 27 ++++----
 spec/build/bsps/riscv/noel/abi.yml            | 36 +++++------
 spec/build/bsps/riscv/noel/optapbuartmax.yml  |  5 +-
 spec/build/bsps/riscv/optextirqmax.yml        | 10 +--
 spec/build/bsps/riscv/optrambegin.yml         | 19 +++---
 spec/build/bsps/riscv/optramsize.yml          | 16 ++---
 spec/build/bsps/riscv/riscv/abi.yml           | 64 +++++++------------
 .../bsps/riscv/riscv/optfrdme310arty.yml      | 10 +--
 spec/build/bsps/riscv/riscv/opthtif.yml       |  5 +-
 spec/build/bsps/riscv/riscv/optmpfs.yml       | 10 +--
 spec/build/bsps/riscv/riscv/optns16550max.yml | 15 ++---
 spec/build/bsps/sh/gensh1/abi.yml             |  5 +-
 spec/build/bsps/sh/gensh1/optcpuclk.yml       |  5 +-
 spec/build/bsps/sh/gensh1/optlowinit.yml      |  5 +-
 spec/build/bsps/sh/gensh1/tstgensh1.yml       |  3 +-
 spec/build/bsps/sh/gensh2/abi.yml             |  5 +-
 spec/build/bsps/sh/gensh2/optcpuclk.yml       |  5 +-
 spec/build/bsps/sh/gensh2/optevb.yml          |  5 +-
 spec/build/bsps/sh/gensh2/optlowinit.yml      |  5 +-
 spec/build/bsps/sh/gensh2/tstgensh2.yml       |  3 +-
 spec/build/bsps/sh/gensh4/abi.yml             |  7 +-
 spec/build/bsps/sh/gensh4/optcpuclk.yml       |  5 +-
 spec/build/bsps/sh/gensh4/optcpydata.yml      |  5 +-
 spec/build/bsps/sh/gensh4/optlowinit.yml      |  5 +-
 spec/build/bsps/sh/shsim/abi.yml              | 22 +++----
 spec/build/bsps/sh/shsim/optcpuclk.yml        |  5 +-
 spec/build/bsps/sh/shsim/optlowinit.yml       |  5 +-
 spec/build/bsps/sh/shsim/tstsimsh1.yml        |  3 +-
 spec/build/bsps/sh/shsim/tstsimsh2.yml        |  3 +-
 spec/build/bsps/sh/shsim/tstsimsh2e.yml       |  3 +-
 spec/build/bsps/sh/shsim/tstsimsh4.yml        |  3 +-
 spec/build/bsps/sparc/erc32/abi.yml           |  5 +-
 spec/build/bsps/sparc/erc32/optconirq.yml     |  5 +-
 spec/build/bsps/sparc/erc32/optpwrdwnhlt.yml  |  5 +-
 spec/build/bsps/sparc/leon2/abi.yml           | 10 +--
 spec/build/bsps/sparc/leon2/optconirq.yml     |  5 +-
 spec/build/bsps/sparc/leon2/optpwrdwnhlt.yml  |  5 +-
 spec/build/bsps/sparc/leon3/abi.yml           | 20 +++---
 spec/build/bsps/sparc/leon3/abiclang.yml      | 25 ++++----
 spec/build/bsps/sparc/leon3/optconirq.yml     |  5 +-
 spec/build/bsps/sparc/leon3/optleon3smp.yml   |  5 +-
 spec/build/bsps/sparc/leon3/optpwrdwnhlt.yml  |  5 +-
 spec/build/bsps/sparc64/niagara/abi.yml       |  7 +-
 spec/build/bsps/sparc64/usiii/abi.yml         |  9 +--
 .../bsps/sparc64/usiii/optclkfastidle.yml     |  5 +-
 spec/build/bsps/tst-xfail-dl06.yml            |  3 +-
 spec/build/bsps/tst-xfail-intr.yml            |  3 +-
 spec/build/bsps/tst.yml                       |  3 +-
 spec/build/bsps/tstnoiconv.yml                |  3 +-
 spec/build/bsps/tstnointrcrit.yml             |  3 +-
 spec/build/bsps/tstnojffs2.yml                |  3 +-
 spec/build/bsps/tstnolibdl.yml                |  3 +-
 spec/build/bsps/tstnorfs.yml                  |  3 +-
 spec/build/bsps/tstreqtick.yml                |  3 +-
 spec/build/bsps/tstsmallmem.yml               |  3 +-
 spec/build/bsps/v850/gdbv850sim/abi.yml       | 30 ++++-----
 spec/build/bsps/x86_64/amd64/abi.yml          |  7 +-
 spec/build/cpukit/cfgattrgetaff.yml           |  3 +-
 spec/build/cpukit/cfgattrgetgrdsz.yml         |  3 +-
 spec/build/cpukit/cfgattrgetstack.yml         |  3 +-
 spec/build/cpukit/cfgattrsetaff.yml           |  3 +-
 spec/build/cpukit/cfgattrsetgrdsz.yml         |  3 +-
 spec/build/cpukit/cfgattrsetstack.yml         |  3 +-
 spec/build/cpukit/cfgcfghdr.yml               |  3 +-
 spec/build/cpukit/cfgcleanupctx.yml           |  3 +-
 spec/build/cpukit/cfggetaff.yml               |  3 +-
 spec/build/cpukit/cfggetattr.yml              |  3 +-
 spec/build/cpukit/cfginttypes.yml             |  3 +-
 spec/build/cpukit/cfgmemory.yml               |  3 +-
 spec/build/cpukit/cfgnewlib.yml               |  3 +-
 spec/build/cpukit/cfgpmtxceilcnst.yml         |  3 +-
 spec/build/cpukit/cfgprionode.yml             |  3 +-
 spec/build/cpukit/cfgpshdprmcnst.yml          |  3 +-
 spec/build/cpukit/cfgrcmd.yml                 |  3 +-
 spec/build/cpukit/cfgsetaff.yml               |  3 +-
 spec/build/cpukit/cfgstdatomic.yml            |  3 +-
 spec/build/cpukit/cfgstdint.yml               |  3 +-
 spec/build/cpukit/cfgstdlib.yml               |  3 +-
 spec/build/cpukit/cfgstring.yml               |  3 +-
 spec/build/cpukit/cfgstrings.yml              |  3 +-
 spec/build/cpukit/cfgsysstat.yml              |  3 +-
 spec/build/cpukit/cfgsystypes.yml             |  3 +-
 spec/build/cpukit/cfgszoff.yml                |  3 +-
 spec/build/cpukit/cfgszsize.yml               |  3 +-
 spec/build/cpukit/cfgsztime.yml               |  3 +-
 spec/build/cpukit/cfgunistd.yml               |  3 +-
 spec/build/cpukit/optada.yml                  |  5 +-
 spec/build/cpukit/optarchbits.yml             | 17 ++---
 spec/build/cpukit/optarflags.yml              |  5 +-
 spec/build/cpukit/optboothartid.yml           | 10 +--
 spec/build/cpukit/optbuildlabel.yml           |  5 +-
 spec/build/cpukit/optclang.yml                |  3 +-
 spec/build/cpukit/optcoverage.yml             |  5 +-
 spec/build/cpukit/optcoveragecflags.yml       |  9 +--
 spec/build/cpukit/optcoverageldflags.yml      | 19 +++---
 spec/build/cpukit/optdebug.yml                |  5 +-
 spec/build/cpukit/optdrvmgr.yml               |  5 +-
 spec/build/cpukit/optexceptionextensions.yml  |  5 +-
 spec/build/cpukit/optgcc.yml                  |  3 +-
 spec/build/cpukit/optincludes.yml             |  3 +-
 spec/build/cpukit/optinstall.yml              |  3 +-
 spec/build/cpukit/optlibdebugger.yml          |  3 +-
 spec/build/cpukit/optlibdl.yml                |  3 +-
 spec/build/cpukit/optmpci.yml                 |  5 +-
 spec/build/cpukit/optnewlib.yml               |  5 +-
 spec/build/cpukit/optnocoveragecflags.yml     |  5 +-
 spec/build/cpukit/optnocoverageldflags.yml    |  5 +-
 spec/build/cpukit/optparavirt.yml             |  5 +-
 spec/build/cpukit/optposix.yml                |  5 +-
 spec/build/cpukit/optprofiling.yml            |  5 +-
 spec/build/cpukit/optsmp.yml                  |  5 +-
 spec/build/cpukit/optszblkcnt.yml             |  3 +-
 spec/build/cpukit/optszblksize.yml            |  3 +-
 spec/build/cpukit/optszmode.yml               |  3 +-
 spec/build/cpukit/optszoff.yml                |  3 +-
 spec/build/cpukit/optsztime.yml               |  3 +-
 spec/build/cpukit/optvermaj.yml               |  3 +-
 spec/build/cpukit/optvermin.yml               |  3 +-
 spec/build/cpukit/optverrev.yml               |  3 +-
 spec/build/cpukit/optversion.yml              |  3 +-
 spec/build/cpukit/optwarn.yml                 |  5 +-
 spec/build/cpukit/optwarncc.yml               | 11 ++--
 spec/build/cpukit/optwarncxx.yml              |  5 +-
 spec/build/testsuites/ada/optgnat.yml         |  3 +-
 spec/build/testsuites/libtests/optrtemsld.yml |  3 +-
 .../testsuites/libtests/optrtemssyms.yml      |  3 +-
 spec/build/testsuites/optada.yml              |  5 +-
 spec/build/testsuites/optall.yml              |  5 +-
 spec/build/testsuites/optbenchmarks.yml       |  5 +-
 spec/build/testsuites/optbin2c.yml            |  3 +-
 spec/build/testsuites/optfs.yml               |  5 +-
 spec/build/testsuites/optgzip.yml             |  3 +-
 spec/build/testsuites/optlib.yml              |  5 +-
 spec/build/testsuites/optmp.yml               |  5 +-
 spec/build/testsuites/optpsx.yml              |  5 +-
 spec/build/testsuites/optpsxtm.yml            |  5 +-
 spec/build/testsuites/optrhs.yml              |  5 +-
 spec/build/testsuites/optsamples.yml          |  5 +-
 spec/build/testsuites/optsmp.yml              |  5 +-
 spec/build/testsuites/optsp.yml               |  5 +-
 spec/build/testsuites/opttm.yml               |  5 +-
 spec/build/testsuites/optunit.yml             |  5 +-
 spec/build/testsuites/optvalidation.yml       |  5 +-
 spec/build/testsuites/optverbosity.yml        |  5 +-
 spec/build/testsuites/optxz.yml               |  3 +-
 wscript                                       | 48 ++++++--------
 819 files changed, 3002 insertions(+), 2779 deletions(-)

diff --git a/spec/build/bsps/aarch64/a53/abi.yml b/spec/build/bsps/aarch64/a53/abi.yml
index 6401972f76..4374818fbd 100644
--- a/spec/build/bsps/aarch64/a53/abi.yml
+++ b/spec/build/bsps/aarch64/a53/abi.yml
@@ -7,13 +7,13 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 On-Line Applications Research (OAR)
 default:
-- -mcpu=cortex-a53
-default-by-variant:
-- value:
+- enabled-by: aarch64/a53_ilp32_qemu
+  value:
   - -mcpu=cortex-a53
   - -mabi=ilp32
-  variants:
-  - aarch64/a53_ilp32_qemu
+- enabled-by: true
+  value:
+  - -mcpu=cortex-a53
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/a53/optloadoff.yml b/spec/build/bsps/aarch64/a53/optloadoff.yml
index cce5dbc627..e6a7014607 100644
--- a/spec/build/bsps/aarch64/a53/optloadoff.yml
+++ b/spec/build/bsps/aarch64/a53/optloadoff.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 On-Line Applications Research (OAR)
-default: 32768
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 32768
 description: |
   offset of RAM region from memory area base
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/a53/optnocachelen.yml b/spec/build/bsps/aarch64/a53/optnocachelen.yml
index 0255838dd0..0ddd611a6a 100644
--- a/spec/build/bsps/aarch64/a53/optnocachelen.yml
+++ b/spec/build/bsps/aarch64/a53/optnocachelen.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 On-Line Applications Research (OAR)
-default: 1048576
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1048576
 description: |
   length of nocache RAM region
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/a53/optramlen.yml b/spec/build/bsps/aarch64/a53/optramlen.yml
index d41b5f0a50..889019b181 100644
--- a/spec/build/bsps/aarch64/a53/optramlen.yml
+++ b/spec/build/bsps/aarch64/a53/optramlen.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 On-Line Applications Research (OAR)
-default: 134217728
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 134217728
 description: |
   length of memory area available to the BSP
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/a53/optramori.yml b/spec/build/bsps/aarch64/a53/optramori.yml
index fdf50787fe..08349faf16 100644
--- a/spec/build/bsps/aarch64/a53/optramori.yml
+++ b/spec/build/bsps/aarch64/a53/optramori.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 On-Line Applications Research (OAR)
-default: 1073741824
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1073741824
 description: |
   base address of memory area available to the BSP
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/a53/tsta53.yml b/spec/build/bsps/aarch64/a53/tsta53.yml
index 850b823d82..7a7c4c8456 100644
--- a/spec/build/bsps/aarch64/a53/tsta53.yml
+++ b/spec/build/bsps/aarch64/a53/tsta53.yml
@@ -23,8 +23,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 On-Line Applications Research (OAR)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/aarch64/a72/abi.yml b/spec/build/bsps/aarch64/a72/abi.yml
index 9b9438648c..994a3bbbe1 100644
--- a/spec/build/bsps/aarch64/a72/abi.yml
+++ b/spec/build/bsps/aarch64/a72/abi.yml
@@ -7,13 +7,13 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 On-Line Applications Research (OAR)
 default:
-- -mcpu=cortex-a72
-default-by-variant:
-- value:
+- enabled-by: aarch64/a72_ilp32_qemu
+  value:
   - -mcpu=cortex-a72
   - -mabi=ilp32
-  variants:
-  - aarch64/a72_ilp32_qemu
+- enabled-by: true
+  value:
+  - -mcpu=cortex-a72
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/a72/optloadoff.yml b/spec/build/bsps/aarch64/a72/optloadoff.yml
index cbe390c2f6..5efeebe63e 100644
--- a/spec/build/bsps/aarch64/a72/optloadoff.yml
+++ b/spec/build/bsps/aarch64/a72/optloadoff.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 On-Line Applications Research (OAR)
-default: 32768
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 32768
 description: |
   offset of RAM region from memory area base
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/a72/optnocachelen.yml b/spec/build/bsps/aarch64/a72/optnocachelen.yml
index 47d55be601..0ac44b72ac 100644
--- a/spec/build/bsps/aarch64/a72/optnocachelen.yml
+++ b/spec/build/bsps/aarch64/a72/optnocachelen.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 On-Line Applications Research (OAR)
-default: 1048576
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1048576
 description: |
   length of nocache RAM region
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/a72/optramlen.yml b/spec/build/bsps/aarch64/a72/optramlen.yml
index f9aea1f281..c28a5e6124 100644
--- a/spec/build/bsps/aarch64/a72/optramlen.yml
+++ b/spec/build/bsps/aarch64/a72/optramlen.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 On-Line Applications Research (OAR)
-default: 134217728
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 134217728
 description: |
   length of memory area available to the BSP
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/a72/optramori.yml b/spec/build/bsps/aarch64/a72/optramori.yml
index be92685f83..cf891d803f 100644
--- a/spec/build/bsps/aarch64/a72/optramori.yml
+++ b/spec/build/bsps/aarch64/a72/optramori.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 On-Line Applications Research (OAR)
-default: 1073741824
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1073741824
 description: |
   base address of memory area available to the BSP
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/a72/tsta72.yml b/spec/build/bsps/aarch64/a72/tsta72.yml
index 850b823d82..7a7c4c8456 100644
--- a/spec/build/bsps/aarch64/a72/tsta72.yml
+++ b/spec/build/bsps/aarch64/a72/tsta72.yml
@@ -23,8 +23,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 On-Line Applications Research (OAR)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/aarch64/optgtuseps.yml b/spec/build/bsps/aarch64/optgtuseps.yml
index 3c85f08e17..9ce0cb7552 100644
--- a/spec/build/bsps/aarch64/optgtuseps.yml
+++ b/spec/build/bsps/aarch64/optgtuseps.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 Gedare Bloom <gedare at rtems.org>
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   If set to true, and AARCH64_GENERIC_TIMER_USE_VIRTUAL is false, then
   the clock driver uses the Physical Secure Timer of the AARCH64
diff --git a/spec/build/bsps/aarch64/optgtusevirt.yml b/spec/build/bsps/aarch64/optgtusevirt.yml
index 919eb86c32..b50e5b0490 100644
--- a/spec/build/bsps/aarch64/optgtusevirt.yml
+++ b/spec/build/bsps/aarch64/optgtusevirt.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 Gedare Bloom <gedare at rtems.org>
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   If set to true, then the clock driver uses the Virtual Timer of the AARCH64
   Generic Timer, otherwise it uses the Physical Non-Secure Timer (EL1).
diff --git a/spec/build/bsps/aarch64/optmmupages.yml b/spec/build/bsps/aarch64/optmmupages.yml
index 4a934ad360..33f6063eea 100644
--- a/spec/build/bsps/aarch64/optmmupages.yml
+++ b/spec/build/bsps/aarch64/optmmupages.yml
@@ -8,8 +8,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 On-Line Applications Research (OAR)
-default: 64
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 64
 description: |
   Defines the number of MMU translation table pages to provide.
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/raspberrypi/abi.yml b/spec/build/bsps/aarch64/raspberrypi/abi.yml
index 60ce528dc4..949074f6b6 100644
--- a/spec/build/bsps/aarch64/raspberrypi/abi.yml
+++ b/spec/build/bsps/aarch64/raspberrypi/abi.yml
@@ -7,9 +7,10 @@ build-type: option
 copyrights:
 - Copyright (C) 2022 Mohd Noor Aman
 default:
-- -mcpu=cortex-a72
-- -march=armv8-a
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=cortex-a72
+  - -march=armv8-a
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/xilinx-versal/abi.yml b/spec/build/bsps/aarch64/xilinx-versal/abi.yml
index b52df18fb3..9e7a59a7f4 100644
--- a/spec/build/bsps/aarch64/xilinx-versal/abi.yml
+++ b/spec/build/bsps/aarch64/xilinx-versal/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2021 Gedare Bloom
 default:
-- -mcpu=cortex-a72
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=cortex-a72
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/xilinx-versal/optclki2c0.yml b/spec/build/bsps/aarch64/xilinx-versal/optclki2c0.yml
index 3d567c961c..049bd0bd4a 100644
--- a/spec/build/bsps/aarch64/xilinx-versal/optclki2c0.yml
+++ b/spec/build/bsps/aarch64/xilinx-versal/optclki2c0.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 Chris Johns <chris at contemporary.software>
-default: 99999001
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 99999001
 description: |
   Versal i2c0 clock frequency in Hz. This is the frequency after the signal
   has been processed using the values passed to the I2C0_REF_CTRL register.
diff --git a/spec/build/bsps/aarch64/xilinx-versal/optclki2c1.yml b/spec/build/bsps/aarch64/xilinx-versal/optclki2c1.yml
index 4f67f3ee95..1fa3ebba93 100644
--- a/spec/build/bsps/aarch64/xilinx-versal/optclki2c1.yml
+++ b/spec/build/bsps/aarch64/xilinx-versal/optclki2c1.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 Chris Johns <chris at contemporary.software>
-default: 99999001
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 99999001
 description: |
   Versal i2c1 clock frequency in Hz. This is the frequency after the signal
   has been processed using the values passed to the I2C1_REF_CTRL register.
diff --git a/spec/build/bsps/aarch64/xilinx-versal/optclkuart.yml b/spec/build/bsps/aarch64/xilinx-versal/optclkuart.yml
index fb344019e2..2ea9ea636d 100644
--- a/spec/build/bsps/aarch64/xilinx-versal/optclkuart.yml
+++ b/spec/build/bsps/aarch64/xilinx-versal/optclkuart.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 Gedare Bloom <gedare at rtems.org>
-default: 100000000
-default-by-variant:
-- value: 24000000
-  variants:
-  - aarch64/xilinx_versal_qemu
+default:
+- enabled-by: aarch64/xilinx_versal_qemu
+  value: 24000000
+- enabled-by: true
+  value: 100000000
 description: |
   Versal UART clock frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/xilinx-versal/optconirq.yml b/spec/build/bsps/aarch64/xilinx-versal/optconirq.yml
index 24108512fc..00c5dbaebd 100644
--- a/spec/build/bsps/aarch64/xilinx-versal/optconirq.yml
+++ b/spec/build/bsps/aarch64/xilinx-versal/optconirq.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 Chris Johns (chris at contemporary.software)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   use interrupt driven mode for console devices (used by default)
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/xilinx-versal/optconminor.yml b/spec/build/bsps/aarch64/xilinx-versal/optconminor.yml
index bb21e8fae7..39778e604f 100644
--- a/spec/build/bsps/aarch64/xilinx-versal/optconminor.yml
+++ b/spec/build/bsps/aarch64/xilinx-versal/optconminor.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: |
   minor number of console device
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/xilinx-versal/optloadoff.yml b/spec/build/bsps/aarch64/xilinx-versal/optloadoff.yml
index 152c4e9dec..ea5f41c30d 100644
--- a/spec/build/bsps/aarch64/xilinx-versal/optloadoff.yml
+++ b/spec/build/bsps/aarch64/xilinx-versal/optloadoff.yml
@@ -7,11 +7,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 Gedare Bloom <gedare at rtems.org>
-default: 0
-default-by-variant:
-- value: 32768
-  variants:
-  - aarch64/xilinx_versal_qemu
+default:
+- enabled-by: aarch64/xilinx_versal_qemu
+  value: 32768
+- enabled-by: true
+  value: 0
 description: |
   offset of RAM region from memory area base
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/xilinx-versal/optnocachelen.yml b/spec/build/bsps/aarch64/xilinx-versal/optnocachelen.yml
index 3993eaa738..c83f6d719d 100644
--- a/spec/build/bsps/aarch64/xilinx-versal/optnocachelen.yml
+++ b/spec/build/bsps/aarch64/xilinx-versal/optnocachelen.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 Gedare Bloom <gedare at rtems.org>
-default: 1048576
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1048576
 description: |
   length of nocache RAM region
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/xilinx-versal/optramlen.yml b/spec/build/bsps/aarch64/xilinx-versal/optramlen.yml
index 2b00b53338..b65b7845e1 100644
--- a/spec/build/bsps/aarch64/xilinx-versal/optramlen.yml
+++ b/spec/build/bsps/aarch64/xilinx-versal/optramlen.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 Gedare Bloom <gedare at rtems.org>
-default: 268435456
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 268435456
 description: |
   length of memory area available to the BSP
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/xilinx-versal/optramori.yml b/spec/build/bsps/aarch64/xilinx-versal/optramori.yml
index 099c089e58..b5387359ca 100644
--- a/spec/build/bsps/aarch64/xilinx-versal/optramori.yml
+++ b/spec/build/bsps/aarch64/xilinx-versal/optramori.yml
@@ -7,11 +7,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 Gedare Bloom <gedare at rtems.org>
-default: 268435456
-default-by-variant:
-- value: 536870912
-  variants:
-  - aarch64/xilinx_versal_qemu
+default:
+- enabled-by: aarch64/xilinx_versal_qemu
+  value: 536870912
+- enabled-by: true
+  value: 268435456
 description: |
   base address of memory area available to the BSP
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/xilinx-versal/tstaiedge.yml b/spec/build/bsps/aarch64/xilinx-versal/tstaiedge.yml
index 565277ac69..ae71561cee 100644
--- a/spec/build/bsps/aarch64/xilinx-versal/tstaiedge.yml
+++ b/spec/build/bsps/aarch64/xilinx-versal/tstaiedge.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 Gedare Bloom <gedare at rtems.org>
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/aarch64/xilinx-versal/tstqemu.yml b/spec/build/bsps/aarch64/xilinx-versal/tstqemu.yml
index 565277ac69..ae71561cee 100644
--- a/spec/build/bsps/aarch64/xilinx-versal/tstqemu.yml
+++ b/spec/build/bsps/aarch64/xilinx-versal/tstqemu.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 Gedare Bloom <gedare at rtems.org>
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/aarch64/xilinx-versal/tstvck190.yml b/spec/build/bsps/aarch64/xilinx-versal/tstvck190.yml
index 565277ac69..ae71561cee 100644
--- a/spec/build/bsps/aarch64/xilinx-versal/tstvck190.yml
+++ b/spec/build/bsps/aarch64/xilinx-versal/tstvck190.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 Gedare Bloom <gedare at rtems.org>
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/aarch64/xilinx-zynqmp/abi.yml b/spec/build/bsps/aarch64/xilinx-zynqmp/abi.yml
index 59b5f922d4..8f514ca791 100644
--- a/spec/build/bsps/aarch64/xilinx-zynqmp/abi.yml
+++ b/spec/build/bsps/aarch64/xilinx-zynqmp/abi.yml
@@ -7,16 +7,17 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 On-Line Applications Research (OAR)
 default:
-- -mcpu=cortex-a53
-- -mno-outline-atomics
-default-by-variant:
-- value:
+- enabled-by:
+  - aarch64/xilinx_zynqmp_ilp32_qemu
+  - aarch64/xilinx_zynqmp_ilp32_zu3eg
+  value:
   - -mcpu=cortex-a53
   - -mno-outline-atomics
   - -mabi=ilp32
-  variants:
-  - aarch64/xilinx_zynqmp_ilp32_qemu
-  - aarch64/xilinx_zynqmp_ilp32_zu3eg
+- enabled-by: true
+  value:
+  - -mcpu=cortex-a53
+  - -mno-outline-atomics
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/xilinx-zynqmp/optclki2c0.yml b/spec/build/bsps/aarch64/xilinx-zynqmp/optclki2c0.yml
index 1005594abe..c3793e9aae 100644
--- a/spec/build/bsps/aarch64/xilinx-zynqmp/optclki2c0.yml
+++ b/spec/build/bsps/aarch64/xilinx-zynqmp/optclki2c0.yml
@@ -6,20 +6,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2021 On-Line Applications Research (OAR)
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 111111111
-default-by-variant:
-- value: 111111111
-  variants:
-  - aarch64/xilinx_zynqmp_ilp32_qemu
-- value: 111111111
-  variants:
-  - aarch64/xilinx_zynqmp_ilp32_zu3eg
-- value: 111111111
-  variants:
-  - aarch64/xilinx_zynqmp_lp64_qemu
-- value: 111111111
-  variants:
-  - aarch64/xilinx_zynqmp_lp64_zu3eg
+default:
+- enabled-by: true
+  value: 111111111
 description: |
   ZynqMP i2c0 clock frequency in Hz. This is the frequency after the signal
   has been processed using the values passed to the I2C0_REF_CTRL register.
diff --git a/spec/build/bsps/aarch64/xilinx-zynqmp/optclki2c1.yml b/spec/build/bsps/aarch64/xilinx-zynqmp/optclki2c1.yml
index f1b26578e0..12974d2694 100644
--- a/spec/build/bsps/aarch64/xilinx-zynqmp/optclki2c1.yml
+++ b/spec/build/bsps/aarch64/xilinx-zynqmp/optclki2c1.yml
@@ -6,20 +6,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2021 On-Line Applications Research (OAR)
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 111111111
-default-by-variant:
-- value: 111111111
-  variants:
-  - aarch64/xilinx_zynqmp_ilp32_qemu
-- value: 111111111
-  variants:
-  - aarch64/xilinx_zynqmp_ilp32_zu3eg
-- value: 111111111
-  variants:
-  - aarch64/xilinx_zynqmp_lp64_qemu
-- value: 111111111
-  variants:
-  - aarch64/xilinx_zynqmp_lp64_zu3eg
+default:
+- enabled-by: true
+  value: 111111111
 description: |
   ZynqMP i2c1 clock frequency in Hz. This is the frequency after the signal
   has been processed using the values passed to the I2C1_REF_CTRL register.
diff --git a/spec/build/bsps/aarch64/xilinx-zynqmp/optclkuart.yml b/spec/build/bsps/aarch64/xilinx-zynqmp/optclkuart.yml
index 24f232e711..5cec0d2188 100644
--- a/spec/build/bsps/aarch64/xilinx-zynqmp/optclkuart.yml
+++ b/spec/build/bsps/aarch64/xilinx-zynqmp/optclkuart.yml
@@ -5,15 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 On-Line Applications Research (OAR)
-default: 100000000
-default-by-variant:
-- value: 100000000
-  variants:
-  - aarch64/xilinx_zynqmp_ilp32_qemu
-  - aarch64/xilinx_zynqmp_ilp32_zu3eg
-  - aarch64/xilinx_zynqmp_lp64_cfc400x
-  - aarch64/xilinx_zynqmp_lp64_qemu
-  - aarch64/xilinx_zynqmp_lp64_zu3eg
+default:
+- enabled-by: true
+  value: 100000000
 description: |
   Zynq UART clock frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/xilinx-zynqmp/optloadoff.yml b/spec/build/bsps/aarch64/xilinx-zynqmp/optloadoff.yml
index 2f9d8b1ffc..7711971e14 100644
--- a/spec/build/bsps/aarch64/xilinx-zynqmp/optloadoff.yml
+++ b/spec/build/bsps/aarch64/xilinx-zynqmp/optloadoff.yml
@@ -7,13 +7,14 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 On-Line Applications Research (OAR)
-default: 32768
-default-by-variant:
-- value: 0
-  variants:
+default:
+- enabled-by:
   - aarch64/xilinx_zynqmp_ilp32_zu3eg
   - aarch64/xilinx_zynqmp_lp64_cfc400x
   - aarch64/xilinx_zynqmp_lp64_zu3eg
+  value: 0
+- enabled-by: true
+  value: 32768
 description: |
   offset of RAM region from memory area base
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/xilinx-zynqmp/optnocachelen.yml b/spec/build/bsps/aarch64/xilinx-zynqmp/optnocachelen.yml
index 01e48eeb67..406233c953 100644
--- a/spec/build/bsps/aarch64/xilinx-zynqmp/optnocachelen.yml
+++ b/spec/build/bsps/aarch64/xilinx-zynqmp/optnocachelen.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 On-Line Applications Research (OAR)
-default: 1048576
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1048576
 description: |
   length of nocache RAM region
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/xilinx-zynqmp/optramlen.yml b/spec/build/bsps/aarch64/xilinx-zynqmp/optramlen.yml
index c3347dfe08..9f9719428c 100644
--- a/spec/build/bsps/aarch64/xilinx-zynqmp/optramlen.yml
+++ b/spec/build/bsps/aarch64/xilinx-zynqmp/optramlen.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 On-Line Applications Research (OAR)
-default: 268435456
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 268435456
 description: |
   length of memory area available to the BSP
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/xilinx-zynqmp/optramori.yml b/spec/build/bsps/aarch64/xilinx-zynqmp/optramori.yml
index 449303fcdf..9a8e2b41c0 100644
--- a/spec/build/bsps/aarch64/xilinx-zynqmp/optramori.yml
+++ b/spec/build/bsps/aarch64/xilinx-zynqmp/optramori.yml
@@ -7,13 +7,14 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 On-Line Applications Research (OAR)
-default: 1073840128
-default-by-variant:
-- value: 268435456
-  variants:
+default:
+- enabled-by:
   - aarch64/xilinx_zynqmp_ilp32_zu3eg
   - aarch64/xilinx_zynqmp_lp64_cfc400x
   - aarch64/xilinx_zynqmp_lp64_zu3eg
+  value: 268435456
+- enabled-by: true
+  value: 1073840128
 description: |
   base address of memory area available to the BSP
 enabled-by: true
diff --git a/spec/build/bsps/aarch64/xilinx-zynqmp/tstqemu.yml b/spec/build/bsps/aarch64/xilinx-zynqmp/tstqemu.yml
index 850b823d82..7a7c4c8456 100644
--- a/spec/build/bsps/aarch64/xilinx-zynqmp/tstqemu.yml
+++ b/spec/build/bsps/aarch64/xilinx-zynqmp/tstqemu.yml
@@ -23,8 +23,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 On-Line Applications Research (OAR)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/aarch64/xilinx-zynqmp/tstzu3eg.yml b/spec/build/bsps/aarch64/xilinx-zynqmp/tstzu3eg.yml
index 5f3e9fb540..8e17288290 100644
--- a/spec/build/bsps/aarch64/xilinx-zynqmp/tstzu3eg.yml
+++ b/spec/build/bsps/aarch64/xilinx-zynqmp/tstzu3eg.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 On-Line Applications Research (OAR)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/arm/altera-cyclone-v/abi.yml b/spec/build/bsps/arm/altera-cyclone-v/abi.yml
index a3a710c97d..d3161d624d 100644
--- a/spec/build/bsps/arm/altera-cyclone-v/abi.yml
+++ b/spec/build/bsps/arm/altera-cyclone-v/abi.yml
@@ -7,12 +7,13 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -march=armv7-a
-- -mthumb
-- -mfpu=neon
-- -mfloat-abi=hard
-- -mtune=cortex-a9
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -march=armv7-a
+  - -mthumb
+  - -mfpu=neon
+  - -mfloat-abi=hard
+  - -mtune=cortex-a9
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/arm/altera-cyclone-v/opta9periphclk.yml b/spec/build/bsps/arm/altera-cyclone-v/opta9periphclk.yml
index e67ddc129b..717ab3987e 100644
--- a/spec/build/bsps/arm/altera-cyclone-v/opta9periphclk.yml
+++ b/spec/build/bsps/arm/altera-cyclone-v/opta9periphclk.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   define to set ARM Cortex-A9 MPCore PERIPHCLK clock frequency in Hz, otherwise alt_clk_freq_get() is used
 enabled-by: true
diff --git a/spec/build/bsps/arm/altera-cyclone-v/optcachedata.yml b/spec/build/bsps/arm/altera-cyclone-v/optcachedata.yml
index 77dac09116..9a0fcab10c 100644
--- a/spec/build/bsps/arm/altera-cyclone-v/optcachedata.yml
+++ b/spec/build/bsps/arm/altera-cyclone-v/optcachedata.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   enable data cache
 enabled-by: true
diff --git a/spec/build/bsps/arm/altera-cyclone-v/optcacheinst.yml b/spec/build/bsps/arm/altera-cyclone-v/optcacheinst.yml
index a59db43f31..d1528a778a 100644
--- a/spec/build/bsps/arm/altera-cyclone-v/optcacheinst.yml
+++ b/spec/build/bsps/arm/altera-cyclone-v/optcacheinst.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   enable instruction cache
 enabled-by: true
diff --git a/spec/build/bsps/arm/altera-cyclone-v/optclkfastidle.yml b/spec/build/bsps/arm/altera-cyclone-v/optclkfastidle.yml
index 61333a11f1..e303a8bf9f 100644
--- a/spec/build/bsps/arm/altera-cyclone-v/optclkfastidle.yml
+++ b/spec/build/bsps/arm/altera-cyclone-v/optclkfastidle.yml
@@ -5,13 +5,14 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - arm/lm3s6965_qemu
   - arm/realview_pbx_a9_qemu
   - arm/xilinx_zynq_a9_qemu
+  value: true
+- enabled-by: true
+  value: false
 description: |
   This sets a mode where the time runs as fast as possible when a clock ISR occurs while the IDLE thread is executing.  This can significantly reduce simulation times.
 enabled-by: true
diff --git a/spec/build/bsps/arm/altera-cyclone-v/optconcfg.yml b/spec/build/bsps/arm/altera-cyclone-v/optconcfg.yml
index 635697cc8a..7c0a838c59 100644
--- a/spec/build/bsps/arm/altera-cyclone-v/optconcfg.yml
+++ b/spec/build/bsps/arm/altera-cyclone-v/optconcfg.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   configuration for console (UART 0)
 enabled-by: true
diff --git a/spec/build/bsps/arm/altera-cyclone-v/optconuart1.yml b/spec/build/bsps/arm/altera-cyclone-v/optconuart1.yml
index f5c588a330..23a7228b33 100644
--- a/spec/build/bsps/arm/altera-cyclone-v/optconuart1.yml
+++ b/spec/build/bsps/arm/altera-cyclone-v/optconuart1.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   configuration for UART 1
 enabled-by: true
diff --git a/spec/build/bsps/arm/altera-cyclone-v/optfdten.yml b/spec/build/bsps/arm/altera-cyclone-v/optfdten.yml
index f2fc473967..acaa870ecd 100644
--- a/spec/build/bsps/arm/altera-cyclone-v/optfdten.yml
+++ b/spec/build/bsps/arm/altera-cyclone-v/optfdten.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   define if FDT is supported
 enabled-by: true
diff --git a/spec/build/bsps/arm/altera-cyclone-v/opti2cspeed.yml b/spec/build/bsps/arm/altera-cyclone-v/opti2cspeed.yml
index ee8097aa3b..55e4d45d30 100644
--- a/spec/build/bsps/arm/altera-cyclone-v/opti2cspeed.yml
+++ b/spec/build/bsps/arm/altera-cyclone-v/opti2cspeed.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 100000
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 100000
 description: |
   speed for I2C0 in HZ
 enabled-by: true
diff --git a/spec/build/bsps/arm/altera-cyclone-v/optnoi2c.yml b/spec/build/bsps/arm/altera-cyclone-v/optnoi2c.yml
index 2d36d5f930..c5aad3d6f0 100644
--- a/spec/build/bsps/arm/altera-cyclone-v/optnoi2c.yml
+++ b/spec/build/bsps/arm/altera-cyclone-v/optnoi2c.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   Number of configured I2C buses. Note that each bus has to be configured in an apropriate i2cdrv_config array.
 enabled-by: true
diff --git a/spec/build/bsps/arm/altera-cyclone-v/optresetvec.yml b/spec/build/bsps/arm/altera-cyclone-v/optresetvec.yml
index efd1ea2b2a..bac5c79627 100644
--- a/spec/build/bsps/arm/altera-cyclone-v/optresetvec.yml
+++ b/spec/build/bsps/arm/altera-cyclone-v/optresetvec.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   reset vector address for BSP start
 enabled-by: true
diff --git a/spec/build/bsps/arm/altera-cyclone-v/optuartbaud.yml b/spec/build/bsps/arm/altera-cyclone-v/optuartbaud.yml
index b5f577ffc3..e4a99ded5f 100644
--- a/spec/build/bsps/arm/altera-cyclone-v/optuartbaud.yml
+++ b/spec/build/bsps/arm/altera-cyclone-v/optuartbaud.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 115200
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 115200
 description: |
   baud for UARTs
 enabled-by: true
diff --git a/spec/build/bsps/arm/altera-cyclone-v/optuartirq.yml b/spec/build/bsps/arm/altera-cyclone-v/optuartirq.yml
index 152668b2d9..a9fa750357 100644
--- a/spec/build/bsps/arm/altera-cyclone-v/optuartirq.yml
+++ b/spec/build/bsps/arm/altera-cyclone-v/optuartirq.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   enable usage of interrupts for the UART modules
 enabled-by: true
diff --git a/spec/build/bsps/arm/atsam/abi.yml b/spec/build/bsps/arm/atsam/abi.yml
index 7a95742c36..afb6d04b14 100644
--- a/spec/build/bsps/arm/atsam/abi.yml
+++ b/spec/build/bsps/arm/atsam/abi.yml
@@ -7,11 +7,12 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mthumb
-- -mcpu=cortex-m7
-- -mfpu=fpv5-d16
-- -mfloat-abi=hard
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mthumb
+  - -mcpu=cortex-m7
+  - -mfpu=fpv5-d16
+  - -mfloat-abi=hard
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/arm/atsam/optchgclksram.yml b/spec/build/bsps/arm/atsam/optchgclksram.yml
index 58dca377d7..6d1c6e947e 100644
--- a/spec/build/bsps/arm/atsam/optchgclksram.yml
+++ b/spec/build/bsps/arm/atsam/optchgclksram.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Move the functions that set up the clock into the SRAM.  This allows to change the clock frequency even if the application is started from SDRAM.  Requires a TCM_SIZE > 0.
 enabled-by: true
diff --git a/spec/build/bsps/arm/atsam/optchip.yml b/spec/build/bsps/arm/atsam/optchip.yml
index 16998e6c2a..0568b6c41d 100644
--- a/spec/build/bsps/arm/atsam/optchip.yml
+++ b/spec/build/bsps/arm/atsam/optchip.yml
@@ -43,8 +43,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: samv71q21
-default-by-variant: []
+default:
+- enabled-by: true
+  value: samv71q21
 description: |
   Chip variant
 enabled-by: true
diff --git a/spec/build/bsps/arm/atsam/optconbaud.yml b/spec/build/bsps/arm/atsam/optconbaud.yml
index b0e34e7505..f80c5aa846 100644
--- a/spec/build/bsps/arm/atsam/optconbaud.yml
+++ b/spec/build/bsps/arm/atsam/optconbaud.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 115200
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 115200
 description: |
   initial baud for console devices (default 115200)
 enabled-by: true
diff --git a/spec/build/bsps/arm/atsam/optconidx.yml b/spec/build/bsps/arm/atsam/optconidx.yml
index d58d75e4aa..3318cd7e2a 100644
--- a/spec/build/bsps/arm/atsam/optconidx.yml
+++ b/spec/build/bsps/arm/atsam/optconidx.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1
 description: |
   device index for /dev/console (default 1, e.g. USART1)
 enabled-by: true
diff --git a/spec/build/bsps/arm/atsam/optconirq.yml b/spec/build/bsps/arm/atsam/optconirq.yml
index a410e05060..710649f8af 100644
--- a/spec/build/bsps/arm/atsam/optconirq.yml
+++ b/spec/build/bsps/arm/atsam/optconirq.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   use interrupt driven mode for console devices (used by default)
 enabled-by: true
diff --git a/spec/build/bsps/arm/atsam/optcontype.yml b/spec/build/bsps/arm/atsam/optcontype.yml
index 6846fed5f2..4f5f313df8 100644
--- a/spec/build/bsps/arm/atsam/optcontype.yml
+++ b/spec/build/bsps/arm/atsam/optcontype.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: |
   device type for /dev/console, use 0 for USART and 1 for UART (default USART)
 enabled-by: true
diff --git a/spec/build/bsps/arm/atsam/optmck.yml b/spec/build/bsps/arm/atsam/optmck.yml
index d216542285..2b40fbdfb5 100644
--- a/spec/build/bsps/arm/atsam/optmck.yml
+++ b/spec/build/bsps/arm/atsam/optmck.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 123000000
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 123000000
 description: |
   Frequency of the MCK in Hz. Set to 0 to force application defined speed.  See start/pmc-config.c for available clock configurations.
 enabled-by: true
diff --git a/spec/build/bsps/arm/atsam/optnocachesz.yml b/spec/build/bsps/arm/atsam/optnocachesz.yml
index 433633d3b0..ea4c6661af 100644
--- a/spec/build/bsps/arm/atsam/optnocachesz.yml
+++ b/spec/build/bsps/arm/atsam/optnocachesz.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 4096
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 4096
 description: |
   size of NOCACHE section in bytes
 enabled-by: true
diff --git a/spec/build/bsps/arm/atsam/optnullsz.yml b/spec/build/bsps/arm/atsam/optnullsz.yml
index cc61ecfd7e..07c92c800b 100644
--- a/spec/build/bsps/arm/atsam/optnullsz.yml
+++ b/spec/build/bsps/arm/atsam/optnullsz.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: |
   Size of the NULL pointer protection area in bytes.  This memory area reduces
   the size of the ITCM available to the application.
diff --git a/spec/build/bsps/arm/atsam/optoscmain.yml b/spec/build/bsps/arm/atsam/optoscmain.yml
index 4cafffea37..dd411a651f 100644
--- a/spec/build/bsps/arm/atsam/optoscmain.yml
+++ b/spec/build/bsps/arm/atsam/optoscmain.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 12000000
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 12000000
 description: |
   Main oscillator frequency in Hz (default 12MHz)
 enabled-by: true
diff --git a/spec/build/bsps/arm/atsam/optqspiflashsz.yml b/spec/build/bsps/arm/atsam/optqspiflashsz.yml
index a9a71b049f..d75c3c6c7c 100644
--- a/spec/build/bsps/arm/atsam/optqspiflashsz.yml
+++ b/spec/build/bsps/arm/atsam/optqspiflashsz.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 2097152
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 2097152
 description: |
   size of QSPI flash in bytes
 enabled-by: true
diff --git a/spec/build/bsps/arm/atsam/optsdram.yml b/spec/build/bsps/arm/atsam/optsdram.yml
index 0c3808ab2b..d597e0106c 100644
--- a/spec/build/bsps/arm/atsam/optsdram.yml
+++ b/spec/build/bsps/arm/atsam/optsdram.yml
@@ -26,8 +26,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: is42s16100e-7bli
-default-by-variant: []
+default:
+- enabled-by: true
+  value: is42s16100e-7bli
 description: |
   SDRAM variant. Known chips are "is42s16100e-7bli", "is42s16320f-7bl",
   "mt48lc16m16a2p-6a". You can also set this to "custom-<RAM_SIZE>" (for example
diff --git a/spec/build/bsps/arm/atsam/opttcmsz.yml b/spec/build/bsps/arm/atsam/opttcmsz.yml
index da3e575f55..94e19d3aa8 100644
--- a/spec/build/bsps/arm/atsam/opttcmsz.yml
+++ b/spec/build/bsps/arm/atsam/opttcmsz.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: |
   Size of tightly coupled memories (TCM) in bytes.  Note that the ITCM is
   reduced by the ATSAM_MEMORY_NULL_SIZE option.  DTCM is unaffected.
diff --git a/spec/build/bsps/arm/atsam/optusextal.yml b/spec/build/bsps/arm/atsam/optusextal.yml
index 6353956d15..3869b18743 100644
--- a/spec/build/bsps/arm/atsam/optusextal.yml
+++ b/spec/build/bsps/arm/atsam/optusextal.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   Use the external crystal as source for the slow clock instead of the internal RC oscillator. Note that on the ATSAM the NRST pin seems to depend on the slow clock as well as all watchdogs. If ATSAM_SLOWCLOCK_USE_XTAL is set to 1 without a external crystal connected, the controller might hang in the switching process without a working NRST pin.
 enabled-by: true
diff --git a/spec/build/bsps/arm/atsam/tstatsamv.yml b/spec/build/bsps/arm/atsam/tstatsamv.yml
index 50e1e767e3..300826ca24 100644
--- a/spec/build/bsps/arm/atsam/tstatsamv.yml
+++ b/spec/build/bsps/arm/atsam/tstatsamv.yml
@@ -24,8 +24,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/arm/beagle/abi.yml b/spec/build/bsps/arm/beagle/abi.yml
index 80b94605e7..55465d36a9 100644
--- a/spec/build/bsps/arm/beagle/abi.yml
+++ b/spec/build/bsps/arm/beagle/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=cortex-a8
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=cortex-a8
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/arm/beagle/optam335x.yml b/spec/build/bsps/arm/beagle/optam335x.yml
index 6641cef403..00c4c328d9 100644
--- a/spec/build/bsps/arm/beagle/optam335x.yml
+++ b/spec/build/bsps/arm/beagle/optam335x.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - arm/beagleboneblack
   - arm/beaglebonewhite
+  value: true
+- enabled-by: true
+  value: false
 description: |
   true if SOC is AM335X
 enabled-by: true
diff --git a/spec/build/bsps/arm/beagle/optconbaud.yml b/spec/build/bsps/arm/beagle/optconbaud.yml
index 9c3eaff15b..8441947ce8 100644
--- a/spec/build/bsps/arm/beagle/optconbaud.yml
+++ b/spec/build/bsps/arm/beagle/optconbaud.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 115200
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 115200
 description: |
   initial baud for console UART
 enabled-by: true
diff --git a/spec/build/bsps/arm/beagle/optconpoll.yml b/spec/build/bsps/arm/beagle/optconpoll.yml
index 1717792bb8..acb67e28f3 100644
--- a/spec/build/bsps/arm/beagle/optconpoll.yml
+++ b/spec/build/bsps/arm/beagle/optconpoll.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   polled console i/o (e.g. to run testsuite)
 enabled-by: true
diff --git a/spec/build/bsps/arm/beagle/optdebug.yml b/spec/build/bsps/arm/beagle/optdebug.yml
index 8a5dc7ee96..05ceae5818 100644
--- a/spec/build/bsps/arm/beagle/optdebug.yml
+++ b/spec/build/bsps/arm/beagle/optdebug.yml
@@ -5,12 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: false
-  variants:
-  - arm/beagleboneblack
-  - arm/beaglebonewhite
+default:
+- enabled-by: true
+  value: false
 description: |
   Enable BBB debug
 enabled-by: true
diff --git a/spec/build/bsps/arm/beagle/optdm3730.yml b/spec/build/bsps/arm/beagle/optdm3730.yml
index 4161ee29f1..6d7d495b67 100644
--- a/spec/build/bsps/arm/beagle/optdm3730.yml
+++ b/spec/build/bsps/arm/beagle/optdm3730.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - arm/beagleboardorig
   - arm/beagleboardxm
+  value: true
+- enabled-by: true
+  value: false
 description: |
   true if SOC is DM3730
 enabled-by: true
diff --git a/spec/build/bsps/arm/csb336/abi.yml b/spec/build/bsps/arm/csb336/abi.yml
index ccf0bc7ea2..c19f7eb9ff 100644
--- a/spec/build/bsps/arm/csb336/abi.yml
+++ b/spec/build/bsps/arm/csb336/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=arm920
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=arm920
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/arm/csb337/abi.yml b/spec/build/bsps/arm/csb337/abi.yml
index ccf0bc7ea2..c19f7eb9ff 100644
--- a/spec/build/bsps/arm/csb337/abi.yml
+++ b/spec/build/bsps/arm/csb337/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=arm920
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=arm920
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/arm/csb337/optcsb637.yml b/spec/build/bsps/arm/csb337/optcsb637.yml
index 5db48e1f0a..af6b0b5790 100644
--- a/spec/build/bsps/arm/csb337/optcsb637.yml
+++ b/spec/build/bsps/arm/csb337/optcsb637.yml
@@ -5,14 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - arm/kit637_v6
-- value: true
-  variants:
   - arm/csb637
+  value: true
+- enabled-by: true
+  value: false
 description: |
   If defined, this indicates that the BSP is being built for the csb637 variant.
 enabled-by: true
diff --git a/spec/build/bsps/arm/csb337/optenlcd.yml b/spec/build/bsps/arm/csb337/optenlcd.yml
index 40617f7c2f..dc1f3b3786 100644
--- a/spec/build/bsps/arm/csb337/optenlcd.yml
+++ b/spec/build/bsps/arm/csb337/optenlcd.yml
@@ -6,11 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: false
-  variants:
-  - arm/kit637_v6
+default:
+- enabled-by: true
+  value: false
 description: |
   If defined, enable use of the SED1356 controller and LCD.
 enabled-by: true
diff --git a/spec/build/bsps/arm/csb337/optenumon.yml b/spec/build/bsps/arm/csb337/optenumon.yml
index 8286e0fa4b..518fccc624 100644
--- a/spec/build/bsps/arm/csb337/optenumon.yml
+++ b/spec/build/bsps/arm/csb337/optenumon.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   If defined, enable use of the uMon console.
 enabled-by: true
diff --git a/spec/build/bsps/arm/csb337/optenumoncon.yml b/spec/build/bsps/arm/csb337/optenumoncon.yml
index e2ca577184..7c53ee9139 100644
--- a/spec/build/bsps/arm/csb337/optenumoncon.yml
+++ b/spec/build/bsps/arm/csb337/optenumoncon.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   If defined, enable use of the MicroMonitor console device.
 enabled-by: true
diff --git a/spec/build/bsps/arm/csb337/optenusart0.yml b/spec/build/bsps/arm/csb337/optenusart0.yml
index cd968f8dbc..410e04eb54 100644
--- a/spec/build/bsps/arm/csb337/optenusart0.yml
+++ b/spec/build/bsps/arm/csb337/optenusart0.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   If defined, enable use of the USART 0.
 enabled-by: true
diff --git a/spec/build/bsps/arm/csb337/optenusart1.yml b/spec/build/bsps/arm/csb337/optenusart1.yml
index 963d2a9742..398cce4a47 100644
--- a/spec/build/bsps/arm/csb337/optenusart1.yml
+++ b/spec/build/bsps/arm/csb337/optenusart1.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   If defined, enable use of the USART 1.
 enabled-by: true
diff --git a/spec/build/bsps/arm/csb337/optenusart2.yml b/spec/build/bsps/arm/csb337/optenusart2.yml
index d4ae1fe756..bece1ac63a 100644
--- a/spec/build/bsps/arm/csb337/optenusart2.yml
+++ b/spec/build/bsps/arm/csb337/optenusart2.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   If defined, enable use of the USART 2.
 enabled-by: true
diff --git a/spec/build/bsps/arm/csb337/optenusart3.yml b/spec/build/bsps/arm/csb337/optenusart3.yml
index 200824f3e3..f73381e338 100644
--- a/spec/build/bsps/arm/csb337/optenusart3.yml
+++ b/spec/build/bsps/arm/csb337/optenusart3.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   If defined, enable use of the USART 3.
 enabled-by: true
diff --git a/spec/build/bsps/arm/edb7312/abi.yml b/spec/build/bsps/arm/edb7312/abi.yml
index ab6ef203fa..2236f6e6f5 100644
--- a/spec/build/bsps/arm/edb7312/abi.yml
+++ b/spec/build/bsps/arm/edb7312/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=arm7tdmi
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=arm7tdmi
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/arm/edb7312/optskyeye.yml b/spec/build/bsps/arm/edb7312/optskyeye.yml
index be55a98c3a..0d805efefd 100644
--- a/spec/build/bsps/arm/edb7312/optskyeye.yml
+++ b/spec/build/bsps/arm/edb7312/optskyeye.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   If defined, enable options which optimize executingon the Skyeye simulator.  Speed up the clock ticks while the idle task is running so time spent in the idle task is minimized.  This significantly reduces the wall time required to execute the RTEMS test suites.
 enabled-by: true
diff --git a/spec/build/bsps/arm/fvp/abi.yml b/spec/build/bsps/arm/fvp/abi.yml
index 8cfbb744be..e6c8dee87f 100644
--- a/spec/build/bsps/arm/fvp/abi.yml
+++ b/spec/build/bsps/arm/fvp/abi.yml
@@ -7,11 +7,12 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=cortex-r52
-- -mthumb
-- -mfloat-abi=hard
-- -mfpu=auto
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=cortex-r52
+  - -mthumb
+  - -mfloat-abi=hard
+  - -mfpu=auto
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/arm/fvp/optdevbegin.yml b/spec/build/bsps/arm/fvp/optdevbegin.yml
index d7522d0fd7..1e3366dfdb 100644
--- a/spec/build/bsps/arm/fvp/optdevbegin.yml
+++ b/spec/build/bsps/arm/fvp/optdevbegin.yml
@@ -8,11 +8,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 436207616
-default-by-variant:
-- value: 2583691264
-  variants:
-  - arm/fvp_cortex_r52
+default:
+- enabled-by: arm/fvp_cortex_r52
+  value: 2583691264
+- enabled-by: true
+  value: 436207616
 description: |
   Defines the begin address of the device area.
 enabled-by: true
diff --git a/spec/build/bsps/arm/fvp/optdevsize.yml b/spec/build/bsps/arm/fvp/optdevsize.yml
index ca6468510c..11337c936a 100644
--- a/spec/build/bsps/arm/fvp/optdevsize.yml
+++ b/spec/build/bsps/arm/fvp/optdevsize.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 354418688
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 354418688
 description: |
   Defines the size in bytes of the device area.
 enabled-by: true
diff --git a/spec/build/bsps/arm/fvp/optdrambegin.yml b/spec/build/bsps/arm/fvp/optdrambegin.yml
index 7a44b2086f..114d4042af 100644
--- a/spec/build/bsps/arm/fvp/optdrambegin.yml
+++ b/spec/build/bsps/arm/fvp/optdrambegin.yml
@@ -7,11 +7,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 2147483648
-default-by-variant:
-- value: 1024
-  variants:
-  - arm/fvp_cortex_r52
+default:
+- enabled-by: arm/fvp_cortex_r52
+  value: 1024
+- enabled-by: true
+  value: 2147483648
 description: |
   Defines the begin address of the DRAM.  The begin address must take the size
   of the NULL pointer protection area into account (ARM_FVP_MEMORY_NULL_SIZE).
diff --git a/spec/build/bsps/arm/fvp/optdramsize.yml b/spec/build/bsps/arm/fvp/optdramsize.yml
index 9ae2a8afe8..d69e42210d 100644
--- a/spec/build/bsps/arm/fvp/optdramsize.yml
+++ b/spec/build/bsps/arm/fvp/optdramsize.yml
@@ -7,11 +7,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 33554432
-default-by-variant:
-- value: 33553408
-  variants:
-  - arm/fvp_cortex_r52
+default:
+- enabled-by: arm/fvp_cortex_r52
+  value: 33553408
+- enabled-by: true
+  value: 33554432
 description: |
   Defines the size in bytes of the DRAM.  Increasing the size may increase the
   startup time of the FVP.  The size must take the size of the NULL pointer
diff --git a/spec/build/bsps/arm/fvp/optnullsize.yml b/spec/build/bsps/arm/fvp/optnullsize.yml
index 3d6b60b7eb..d8bbd22b2d 100644
--- a/spec/build/bsps/arm/fvp/optnullsize.yml
+++ b/spec/build/bsps/arm/fvp/optnullsize.yml
@@ -7,11 +7,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1048576
-default-by-variant:
-- value: 1024
-  variants:
-  - arm/fvp_cortex_r52
+default:
+- enabled-by: arm/fvp_cortex_r52
+  value: 1024
+- enabled-by: true
+  value: 1048576
 description: |
   Defines the size in bytes of the NULL pointer protection area.
 enabled-by: true
diff --git a/spec/build/bsps/arm/gumstix/abi.yml b/spec/build/bsps/arm/gumstix/abi.yml
index 41a3903894..1b574760f5 100644
--- a/spec/build/bsps/arm/gumstix/abi.yml
+++ b/spec/build/bsps/arm/gumstix/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=xscale
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=xscale
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/arm/gumstix/optskyeye.yml b/spec/build/bsps/arm/gumstix/optskyeye.yml
index be55a98c3a..0d805efefd 100644
--- a/spec/build/bsps/arm/gumstix/optskyeye.yml
+++ b/spec/build/bsps/arm/gumstix/optskyeye.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   If defined, enable options which optimize executingon the Skyeye simulator.  Speed up the clock ticks while the idle task is running so time spent in the idle task is minimized.  This significantly reduces the wall time required to execute the RTEMS test suites.
 enabled-by: true
diff --git a/spec/build/bsps/arm/imx/abi.yml b/spec/build/bsps/arm/imx/abi.yml
index 169a5e6584..c666949cd0 100644
--- a/spec/build/bsps/arm/imx/abi.yml
+++ b/spec/build/bsps/arm/imx/abi.yml
@@ -7,12 +7,13 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -march=armv7-a
-- -mthumb
-- -mfpu=neon
-- -mfloat-abi=hard
-- -mtune=cortex-a7
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -march=armv7-a
+  - -mthumb
+  - -mfpu=neon
+  - -mfloat-abi=hard
+  - -mtune=cortex-a7
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/arm/imx/optcachedata.yml b/spec/build/bsps/arm/imx/optcachedata.yml
index 23b1410385..c86800df35 100644
--- a/spec/build/bsps/arm/imx/optcachedata.yml
+++ b/spec/build/bsps/arm/imx/optcachedata.yml
@@ -5,13 +5,14 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
+default:
+- enabled-by:
   - arm/lm3s6965_qemu
   - arm/realview_pbx_a9_qemu
   - arm/xilinx_zynq_a9_qemu
+  value: false
+- enabled-by: true
+  value: true
 description: |
   enable data cache
 enabled-by: true
diff --git a/spec/build/bsps/arm/imx/optcacheinst.yml b/spec/build/bsps/arm/imx/optcacheinst.yml
index f172cc4b58..90e0e1301a 100644
--- a/spec/build/bsps/arm/imx/optcacheinst.yml
+++ b/spec/build/bsps/arm/imx/optcacheinst.yml
@@ -5,13 +5,14 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
+default:
+- enabled-by:
   - arm/lm3s6965_qemu
   - arm/realview_pbx_a9_qemu
   - arm/xilinx_zynq_a9_qemu
+  value: false
+- enabled-by: true
+  value: true
 description: |
   enable instruction cache
 enabled-by: true
diff --git a/spec/build/bsps/arm/imx/optccmahb.yml b/spec/build/bsps/arm/imx/optccmahb.yml
index a515a44204..9137c269c0 100644
--- a/spec/build/bsps/arm/imx/optccmahb.yml
+++ b/spec/build/bsps/arm/imx/optccmahb.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 135000000
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 135000000
 description: |
   AHB clock frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/imx/optcmmecspi.yml b/spec/build/bsps/arm/imx/optcmmecspi.yml
index 1f32305aef..1802608b3a 100644
--- a/spec/build/bsps/arm/imx/optcmmecspi.yml
+++ b/spec/build/bsps/arm/imx/optcmmecspi.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 67500000
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 67500000
 description: |
   ECSPI clock frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/imx/optcmmipg.yml b/spec/build/bsps/arm/imx/optcmmipg.yml
index 8c62921ef6..98fd8abf0e 100644
--- a/spec/build/bsps/arm/imx/optcmmipg.yml
+++ b/spec/build/bsps/arm/imx/optcmmipg.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 67500000
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 67500000
 description: |
   IPG clock frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/imx/optcmmsdhci.yml b/spec/build/bsps/arm/imx/optcmmsdhci.yml
index fa06f8111a..120b0997ed 100644
--- a/spec/build/bsps/arm/imx/optcmmsdhci.yml
+++ b/spec/build/bsps/arm/imx/optcmmsdhci.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 196363000
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 196363000
 description: |
   SDHCI clock frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/imx/optcmmuart.yml b/spec/build/bsps/arm/imx/optcmmuart.yml
index ab69c87323..467d4dc091 100644
--- a/spec/build/bsps/arm/imx/optcmmuart.yml
+++ b/spec/build/bsps/arm/imx/optcmmuart.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 24000000
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 24000000
 description: |
   UART clock frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/imx/optconirq.yml b/spec/build/bsps/arm/imx/optconirq.yml
index d94a5d20d9..ac5183c17c 100644
--- a/spec/build/bsps/arm/imx/optconirq.yml
+++ b/spec/build/bsps/arm/imx/optconirq.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1
 description: |
   use interrupt driven mode for console devices (used by default)
 enabled-by: true
diff --git a/spec/build/bsps/arm/imx/optresetvec.yml b/spec/build/bsps/arm/imx/optresetvec.yml
index efd1ea2b2a..bac5c79627 100644
--- a/spec/build/bsps/arm/imx/optresetvec.yml
+++ b/spec/build/bsps/arm/imx/optresetvec.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   reset vector address for BSP start
 enabled-by: true
diff --git a/spec/build/bsps/arm/imxrt/abi.yml b/spec/build/bsps/arm/imxrt/abi.yml
index 7a95742c36..afb6d04b14 100644
--- a/spec/build/bsps/arm/imxrt/abi.yml
+++ b/spec/build/bsps/arm/imxrt/abi.yml
@@ -7,11 +7,12 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mthumb
-- -mcpu=cortex-m7
-- -mfpu=fpv5-d16
-- -mfloat-abi=hard
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mthumb
+  - -mcpu=cortex-m7
+  - -mfpu=fpv5-d16
+  - -mfloat-abi=hard
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/arm/imxrt/optfsledmaemlm.yml b/spec/build/bsps/arm/imxrt/optfsledmaemlm.yml
index 80c840373d..19d3ec60fc 100644
--- a/spec/build/bsps/arm/imxrt/optfsledmaemlm.yml
+++ b/spec/build/bsps/arm/imxrt/optfsledmaemlm.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   Enable the minor loop mapping of the Freescale EDMA.
 enabled-by: true
diff --git a/spec/build/bsps/arm/imxrt/optlinkcmds.yml b/spec/build/bsps/arm/imxrt/optlinkcmds.yml
index cb398b4a89..8499f6bfee 100644
--- a/spec/build/bsps/arm/imxrt/optlinkcmds.yml
+++ b/spec/build/bsps/arm/imxrt/optlinkcmds.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: linkcmds.flexspi
-default-by-variant: []
+default:
+- enabled-by: true
+  value: linkcmds.flexspi
 description: |
   The default linker command file.  Must be linkcmds.sdram, linkcmds.ocram or
   linkcmds.flexspi.
diff --git a/spec/build/bsps/arm/imxrt/optmemdtcmsz.yml b/spec/build/bsps/arm/imxrt/optmemdtcmsz.yml
index f6e8fda098..2db2b5ec1f 100644
--- a/spec/build/bsps/arm/imxrt/optmemdtcmsz.yml
+++ b/spec/build/bsps/arm/imxrt/optmemdtcmsz.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
-default: 131072
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 131072
 description: |
   Size of the DTCM in bytes. Note that these sizes depend on fuses or software
   settings done by a bootloader (together with ITCM and OCRAM).
diff --git a/spec/build/bsps/arm/imxrt/optmemextramnocachesz.yml b/spec/build/bsps/arm/imxrt/optmemextramnocachesz.yml
index 0887d3fba6..5d84d69a60 100644
--- a/spec/build/bsps/arm/imxrt/optmemextramnocachesz.yml
+++ b/spec/build/bsps/arm/imxrt/optmemextramnocachesz.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1048576
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1048576
 description: |
   Size of the nocache area at the end of the external RAM in bytes.  Must not be
   bigger than IMXRT_MEMORY_EXTRAM_SIZE.
diff --git a/spec/build/bsps/arm/imxrt/optmemextramorigin.yml b/spec/build/bsps/arm/imxrt/optmemextramorigin.yml
index 772c367363..32ac8e9ae3 100644
--- a/spec/build/bsps/arm/imxrt/optmemextramorigin.yml
+++ b/spec/build/bsps/arm/imxrt/optmemextramorigin.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 2147483648
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 2147483648
 description: |
   Base address of the external RAM.  An external ram can be for example be a
   SDRAM connected to SEMC or a HyperRAM connected to FlexSPI.
diff --git a/spec/build/bsps/arm/imxrt/optmemextramsz.yml b/spec/build/bsps/arm/imxrt/optmemextramsz.yml
index f47191d995..e06674ee82 100644
--- a/spec/build/bsps/arm/imxrt/optmemextramsz.yml
+++ b/spec/build/bsps/arm/imxrt/optmemextramsz.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 33554432
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 33554432
 description: |
   Size of the external RAM in bytes.  An external ram can be for example be a
   SDRAM connected to SEMC or a HyperRAM connected to FlexSPI.  The size has to
diff --git a/spec/build/bsps/arm/imxrt/optmemflashcfgsz.yml b/spec/build/bsps/arm/imxrt/optmemflashcfgsz.yml
index 9c0ca54293..c7e9c754a6 100644
--- a/spec/build/bsps/arm/imxrt/optmemflashcfgsz.yml
+++ b/spec/build/bsps/arm/imxrt/optmemflashcfgsz.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 4096
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 4096
 description: |
   Size of the flash configuration area at the start of the FlexSPI / SEMC flash
   in bytes. Either 4 KByte for FlexSPI NOR / SEMC NOR or 1 Kbyte for most other.
diff --git a/spec/build/bsps/arm/imxrt/optmemflashivtsz.yml b/spec/build/bsps/arm/imxrt/optmemflashivtsz.yml
index 9428d19d23..aeb61a9dc4 100644
--- a/spec/build/bsps/arm/imxrt/optmemflashivtsz.yml
+++ b/spec/build/bsps/arm/imxrt/optmemflashivtsz.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 4096
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 4096
 description: |
   Size of the image vector table, boot data structure, device configuration data
   and similar program image header information. Take a look at the i.MX RT1050
diff --git a/spec/build/bsps/arm/imxrt/optmemflashorigin.yml b/spec/build/bsps/arm/imxrt/optmemflashorigin.yml
index d94b7439c2..9911e0d989 100644
--- a/spec/build/bsps/arm/imxrt/optmemflashorigin.yml
+++ b/spec/build/bsps/arm/imxrt/optmemflashorigin.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1610612736
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1610612736
 description: |
   Origin of the external flash memory.  That can be for example a flash
   connected to FlexSPI or to SEMC.  The default value is for a HyperFlash
diff --git a/spec/build/bsps/arm/imxrt/optmemflashsz.yml b/spec/build/bsps/arm/imxrt/optmemflashsz.yml
index 24cef93f64..f7d6ba8c90 100644
--- a/spec/build/bsps/arm/imxrt/optmemflashsz.yml
+++ b/spec/build/bsps/arm/imxrt/optmemflashsz.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 67108864
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 67108864
 description: |
   Size of the external flash area in bytes.  Has to be big enough to hold the
   i.MXRT initial vector table (IVT) and configuration information.  The sizes of
diff --git a/spec/build/bsps/arm/imxrt/optmemitcmsz.yml b/spec/build/bsps/arm/imxrt/optmemitcmsz.yml
index c5c386c21a..f7726e1da5 100644
--- a/spec/build/bsps/arm/imxrt/optmemitcmsz.yml
+++ b/spec/build/bsps/arm/imxrt/optmemitcmsz.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
-default: 130816
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 130816
 description: |
   Size of the ITCM in bytes.  Note that these sizes depend on fuses or software
   settings done by a bootloader (together with DTCM and OCRAM).  The ITCM size
diff --git a/spec/build/bsps/arm/imxrt/optmemnullsz.yml b/spec/build/bsps/arm/imxrt/optmemnullsz.yml
index 41044c95b4..8315eb338b 100644
--- a/spec/build/bsps/arm/imxrt/optmemnullsz.yml
+++ b/spec/build/bsps/arm/imxrt/optmemnullsz.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 256
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 256
 description: |
   Size of the NULL pointer protection area in bytes.  This memory area reduces
   the size of the ITCM available to the application.  If you adapt this, you
diff --git a/spec/build/bsps/arm/imxrt/optmemocramnocachesz.yml b/spec/build/bsps/arm/imxrt/optmemocramnocachesz.yml
index 8e91ad87ef..5db921d428 100644
--- a/spec/build/bsps/arm/imxrt/optmemocramnocachesz.yml
+++ b/spec/build/bsps/arm/imxrt/optmemocramnocachesz.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: |
   Size of the nocache area at the end of the OCRAM in bytes.  Must not be bigger
   than IMXRT_MEMORY_OCRAM_SIZE.
diff --git a/spec/build/bsps/arm/imxrt/optmemocramsz.yml b/spec/build/bsps/arm/imxrt/optmemocramsz.yml
index 53415d816e..f6779794d0 100644
--- a/spec/build/bsps/arm/imxrt/optmemocramsz.yml
+++ b/spec/build/bsps/arm/imxrt/optmemocramsz.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
-default: 262144
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 262144
 description: |
   Size of the OCRAM in bytes.  Note that these sizes depend on fuses or software
   settings done by a bootloader (together with ITCM and DTCM).  The size has to
diff --git a/spec/build/bsps/arm/lm3s69xx/abi.yml b/spec/build/bsps/arm/lm3s69xx/abi.yml
index 77d5db8cf7..37f0e6056c 100644
--- a/spec/build/bsps/arm/lm3s69xx/abi.yml
+++ b/spec/build/bsps/arm/lm3s69xx/abi.yml
@@ -7,9 +7,10 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mthumb
-- -mcpu=cortex-m3
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mthumb
+  - -mcpu=cortex-m3
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/arm/lm3s69xx/optenuart0.yml b/spec/build/bsps/arm/lm3s69xx/optenuart0.yml
index fa3254dbf5..c376176aef 100644
--- a/spec/build/bsps/arm/lm3s69xx/optenuart0.yml
+++ b/spec/build/bsps/arm/lm3s69xx/optenuart0.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   enable UART 0
 enabled-by: true
diff --git a/spec/build/bsps/arm/lm3s69xx/optenuart1.yml b/spec/build/bsps/arm/lm3s69xx/optenuart1.yml
index 42c6133cf5..e992cbcc87 100644
--- a/spec/build/bsps/arm/lm3s69xx/optenuart1.yml
+++ b/spec/build/bsps/arm/lm3s69xx/optenuart1.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   enable UART 1
 enabled-by: true
diff --git a/spec/build/bsps/arm/lm3s69xx/optenuart2.yml b/spec/build/bsps/arm/lm3s69xx/optenuart2.yml
index 0de60cb7a7..7e312b4df7 100644
--- a/spec/build/bsps/arm/lm3s69xx/optenuart2.yml
+++ b/spec/build/bsps/arm/lm3s69xx/optenuart2.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   enable UART 2
 enabled-by: true
diff --git a/spec/build/bsps/arm/lm3s69xx/optgpioahb.yml b/spec/build/bsps/arm/lm3s69xx/optgpioahb.yml
index 77e1c9219e..a1a9003a86 100644
--- a/spec/build/bsps/arm/lm3s69xx/optgpioahb.yml
+++ b/spec/build/bsps/arm/lm3s69xx/optgpioahb.yml
@@ -5,14 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - arm/lm3s3749
-- value: true
-  variants:
   - arm/lm4f120
+  value: true
+- enabled-by: true
+  value: false
 description: |
   use AHB apperture to access GPIO registers
 enabled-by: true
diff --git a/spec/build/bsps/arm/lm3s69xx/optgpionum.yml b/spec/build/bsps/arm/lm3s69xx/optgpionum.yml
index bbccdd5a58..da509e1163 100644
--- a/spec/build/bsps/arm/lm3s69xx/optgpionum.yml
+++ b/spec/build/bsps/arm/lm3s69xx/optgpionum.yml
@@ -5,18 +5,17 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant:
-- value: 8
-  variants:
-  - arm/lm3s3749
-- value: 7
-  variants:
+default:
+- enabled-by: arm/lm3s3749
+  value: 8
+- enabled-by:
   - arm/lm3s6965
   - arm/lm3s6965_qemu
-- value: 6
-  variants:
-  - arm/lm4f120
+  value: 7
+- enabled-by: arm/lm4f120
+  value: 6
+- enabled-by: true
+  value: 0
 description: |
   number of GPIO blocks supported by MCU
 enabled-by: true
diff --git a/spec/build/bsps/arm/lm3s69xx/optlm3s3749.yml b/spec/build/bsps/arm/lm3s69xx/optlm3s3749.yml
index 9ca33cbe94..fd0a6ccba2 100644
--- a/spec/build/bsps/arm/lm3s69xx/optlm3s3749.yml
+++ b/spec/build/bsps/arm/lm3s69xx/optlm3s3749.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - arm/lm3s3749
+default:
+- enabled-by: arm/lm3s3749
+  value: true
+- enabled-by: true
+  value: false
 description: |
   board has LM3S3749 MCU
 enabled-by: true
diff --git a/spec/build/bsps/arm/lm3s69xx/optlm3s6965.yml b/spec/build/bsps/arm/lm3s69xx/optlm3s6965.yml
index 6c11733729..109997f5ee 100644
--- a/spec/build/bsps/arm/lm3s69xx/optlm3s6965.yml
+++ b/spec/build/bsps/arm/lm3s69xx/optlm3s6965.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - arm/lm3s6965
   - arm/lm3s6965_qemu
+  value: true
+- enabled-by: true
+  value: false
 description: |
   board has LM3S6965 MCU
 enabled-by: true
diff --git a/spec/build/bsps/arm/lm3s69xx/optlm4f120.yml b/spec/build/bsps/arm/lm3s69xx/optlm4f120.yml
index af60aee4d6..42ecbf25db 100644
--- a/spec/build/bsps/arm/lm3s69xx/optlm4f120.yml
+++ b/spec/build/bsps/arm/lm3s69xx/optlm4f120.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - arm/lm4f120
+default:
+- enabled-by: arm/lm4f120
+  value: true
+- enabled-by: true
+  value: false
 description: |
   board has LM4F120xxx MCU
 enabled-by: true
diff --git a/spec/build/bsps/arm/lm3s69xx/optssiblks.yml b/spec/build/bsps/arm/lm3s69xx/optssiblks.yml
index 3234606781..198e978a77 100644
--- a/spec/build/bsps/arm/lm3s69xx/optssiblks.yml
+++ b/spec/build/bsps/arm/lm3s69xx/optssiblks.yml
@@ -5,18 +5,17 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant:
-- value: 2
-  variants:
-  - arm/lm3s3749
-- value: 1
-  variants:
+default:
+- enabled-by: arm/lm3s3749
+  value: 2
+- enabled-by:
   - arm/lm3s6965
   - arm/lm3s6965_qemu
-- value: 4
-  variants:
-  - arm/lm4f120
+  value: 1
+- enabled-by: arm/lm4f120
+  value: 4
+- enabled-by: true
+  value: 0
 description: |
   number of SSI blocks supported by MCU
 enabled-by: true
diff --git a/spec/build/bsps/arm/lm3s69xx/optssiclk.yml b/spec/build/bsps/arm/lm3s69xx/optssiclk.yml
index b278880160..8c2b76e3bd 100644
--- a/spec/build/bsps/arm/lm3s69xx/optssiclk.yml
+++ b/spec/build/bsps/arm/lm3s69xx/optssiclk.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1000000
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1000000
 description: |
   SSI clock in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/lm3s69xx/optsysclk.yml b/spec/build/bsps/arm/lm3s69xx/optsysclk.yml
index 14fcbcd84d..9bde41291f 100644
--- a/spec/build/bsps/arm/lm3s69xx/optsysclk.yml
+++ b/spec/build/bsps/arm/lm3s69xx/optsysclk.yml
@@ -5,16 +5,16 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant:
-- value: 50000000
-  variants:
+default:
+- enabled-by:
   - arm/lm3s3749
   - arm/lm3s6965
   - arm/lm3s6965_qemu
-- value: 80000000
-  variants:
-  - arm/lm4f120
+  value: 50000000
+- enabled-by: arm/lm4f120
+  value: 80000000
+- enabled-by: true
+  value: 0
 description: |
   system clock in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/lm3s69xx/optuartbaud.yml b/spec/build/bsps/arm/lm3s69xx/optuartbaud.yml
index 9b1deff47c..fa80b62bb7 100644
--- a/spec/build/bsps/arm/lm3s69xx/optuartbaud.yml
+++ b/spec/build/bsps/arm/lm3s69xx/optuartbaud.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 115200
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 115200
 description: |
   baud for UARTs
 enabled-by: true
diff --git a/spec/build/bsps/arm/lm3s69xx/optudma.yml b/spec/build/bsps/arm/lm3s69xx/optudma.yml
index 9445b273ec..7c433389c9 100644
--- a/spec/build/bsps/arm/lm3s69xx/optudma.yml
+++ b/spec/build/bsps/arm/lm3s69xx/optudma.yml
@@ -5,14 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - arm/lm3s3749
-- value: true
-  variants:
   - arm/lm4f120
+  value: true
+- enabled-by: true
+  value: false
 description: |
   defined if MCU supports UDMA
 enabled-by: true
diff --git a/spec/build/bsps/arm/lm3s69xx/optxtalcfg.yml b/spec/build/bsps/arm/lm3s69xx/optxtalcfg.yml
index 8eebf87000..53076f12a5 100644
--- a/spec/build/bsps/arm/lm3s69xx/optxtalcfg.yml
+++ b/spec/build/bsps/arm/lm3s69xx/optxtalcfg.yml
@@ -5,18 +5,17 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant:
-- value: 14
-  variants:
+default:
+- enabled-by:
   - arm/lm3s6965
   - arm/lm3s6965_qemu
-- value: 16
-  variants:
-  - arm/lm3s3749
-- value: 21
-  variants:
-  - arm/lm4f120
+  value: 14
+- enabled-by: arm/lm3s3749
+  value: 16
+- enabled-by: arm/lm4f120
+  value: 21
+- enabled-by: true
+  value: 0
 description: |
   crystal configuration for RCC register
 enabled-by: true
diff --git a/spec/build/bsps/arm/lm3s69xx/tstlm3s3749.yml b/spec/build/bsps/arm/lm3s69xx/tstlm3s3749.yml
index 5b476b1a87..bc1f847a04 100644
--- a/spec/build/bsps/arm/lm3s69xx/tstlm3s3749.yml
+++ b/spec/build/bsps/arm/lm3s69xx/tstlm3s3749.yml
@@ -25,8 +25,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/arm/lm3s69xx/tstlm3s6965.yml b/spec/build/bsps/arm/lm3s69xx/tstlm3s6965.yml
index 331c0f36fe..acb0485374 100644
--- a/spec/build/bsps/arm/lm3s69xx/tstlm3s6965.yml
+++ b/spec/build/bsps/arm/lm3s69xx/tstlm3s6965.yml
@@ -10,8 +10,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/arm/lm3s69xx/tstlm4f120.yml b/spec/build/bsps/arm/lm3s69xx/tstlm4f120.yml
index 4e6ffd614f..b1073c5d12 100644
--- a/spec/build/bsps/arm/lm3s69xx/tstlm4f120.yml
+++ b/spec/build/bsps/arm/lm3s69xx/tstlm4f120.yml
@@ -25,8 +25,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/arm/lpc176x/abi.yml b/spec/build/bsps/arm/lpc176x/abi.yml
index 77d5db8cf7..37f0e6056c 100644
--- a/spec/build/bsps/arm/lpc176x/abi.yml
+++ b/spec/build/bsps/arm/lpc176x/abi.yml
@@ -7,9 +7,10 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mthumb
-- -mcpu=cortex-m3
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mthumb
+  - -mcpu=cortex-m3
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc176x/optcclk.yml b/spec/build/bsps/arm/lpc176x/optcclk.yml
index 5df9f0a5e2..d8c0288299 100644
--- a/spec/build/bsps/arm/lpc176x/optcclk.yml
+++ b/spec/build/bsps/arm/lpc176x/optcclk.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 96000000
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 96000000
 description: |
   CPU clock in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc176x/optconcfg.yml b/spec/build/bsps/arm/lpc176x/optconcfg.yml
index 98ff2a9325..5c9093e969 100644
--- a/spec/build/bsps/arm/lpc176x/optconcfg.yml
+++ b/spec/build/bsps/arm/lpc176x/optconcfg.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   configuration for console (UART 0)
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc176x/optdmachn.yml b/spec/build/bsps/arm/lpc176x/optdmachn.yml
index a7c288b3c7..817b0f7767 100644
--- a/spec/build/bsps/arm/lpc176x/optdmachn.yml
+++ b/spec/build/bsps/arm/lpc176x/optdmachn.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 2
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 2
 description: |
   DMA channel count
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc176x/optlpc1768.yml b/spec/build/bsps/arm/lpc176x/optlpc1768.yml
index 9d9673b002..a14d3c1434 100644
--- a/spec/build/bsps/arm/lpc176x/optlpc1768.yml
+++ b/spec/build/bsps/arm/lpc176x/optlpc1768.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   target used for identify LPC1768 board
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc176x/optmintskstksz.yml b/spec/build/bsps/arm/lpc176x/optmintskstksz.yml
index 57e77ae551..5c4f2ce0b7 100644
--- a/spec/build/bsps/arm/lpc176x/optmintskstksz.yml
+++ b/spec/build/bsps/arm/lpc176x/optmintskstksz.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1024
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1024
 description: |
   Suggested minimum task stack size in bytes
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc176x/optoscmain.yml b/spec/build/bsps/arm/lpc176x/optoscmain.yml
index eccce9a3ea..8bbe329836 100644
--- a/spec/build/bsps/arm/lpc176x/optoscmain.yml
+++ b/spec/build/bsps/arm/lpc176x/optoscmain.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 12000000
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 12000000
 description: |
   main oscillator frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc176x/optoscrtc.yml b/spec/build/bsps/arm/lpc176x/optoscrtc.yml
index a5eff014e9..2c0895f3b9 100644
--- a/spec/build/bsps/arm/lpc176x/optoscrtc.yml
+++ b/spec/build/bsps/arm/lpc176x/optoscrtc.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 32768
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 32768
 description: |
   RTC oscillator frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc176x/optpclkdiv.yml b/spec/build/bsps/arm/lpc176x/optpclkdiv.yml
index 4027f8ad17..95c157ee3a 100644
--- a/spec/build/bsps/arm/lpc176x/optpclkdiv.yml
+++ b/spec/build/bsps/arm/lpc176x/optpclkdiv.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1
 description: |
   clock divider for default PCLK (PCLK = CCLK / PCLKDIV)
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc176x/optstopgpdma.yml b/spec/build/bsps/arm/lpc176x/optstopgpdma.yml
index d407af65e7..cd599b292e 100644
--- a/spec/build/bsps/arm/lpc176x/optstopgpdma.yml
+++ b/spec/build/bsps/arm/lpc176x/optstopgpdma.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   stop general purpose DMA at start-up to avoid DMA interference
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc176x/optstopusb.yml b/spec/build/bsps/arm/lpc176x/optstopusb.yml
index 708a5bb41c..7a0f8421ac 100644
--- a/spec/build/bsps/arm/lpc176x/optstopusb.yml
+++ b/spec/build/bsps/arm/lpc176x/optstopusb.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   stop USB controller at start-up to avoid DMA interference
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc176x/optuart1cfg.yml b/spec/build/bsps/arm/lpc176x/optuart1cfg.yml
index ec9d9843d5..53553c92b6 100644
--- a/spec/build/bsps/arm/lpc176x/optuart1cfg.yml
+++ b/spec/build/bsps/arm/lpc176x/optuart1cfg.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   Use Uart 1
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc176x/optuartbaud.yml b/spec/build/bsps/arm/lpc176x/optuartbaud.yml
index c5e094beef..2fa27c270f 100644
--- a/spec/build/bsps/arm/lpc176x/optuartbaud.yml
+++ b/spec/build/bsps/arm/lpc176x/optuartbaud.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 9600
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 9600
 description: |
   baud for UARTs
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc176x/tstlpc1768mbed.yml b/spec/build/bsps/arm/lpc176x/tstlpc1768mbed.yml
index 95114741b2..3903027fe0 100644
--- a/spec/build/bsps/arm/lpc176x/tstlpc1768mbed.yml
+++ b/spec/build/bsps/arm/lpc176x/tstlpc1768mbed.yml
@@ -22,8 +22,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/arm/lpc176x/tstlpc1768mbedahbram.yml b/spec/build/bsps/arm/lpc176x/tstlpc1768mbedahbram.yml
index 3f25946c1f..27d74ffd2d 100644
--- a/spec/build/bsps/arm/lpc176x/tstlpc1768mbedahbram.yml
+++ b/spec/build/bsps/arm/lpc176x/tstlpc1768mbedahbram.yml
@@ -24,8 +24,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/arm/lpc176x/tstlpc1768mbedahbrameth.yml b/spec/build/bsps/arm/lpc176x/tstlpc1768mbedahbrameth.yml
index 1946daea39..89ec68f6f1 100644
--- a/spec/build/bsps/arm/lpc176x/tstlpc1768mbedahbrameth.yml
+++ b/spec/build/bsps/arm/lpc176x/tstlpc1768mbedahbrameth.yml
@@ -123,8 +123,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/arm/lpc24xx/abi.yml b/spec/build/bsps/arm/lpc24xx/abi.yml
index e032f2d9a6..c63b60e295 100644
--- a/spec/build/bsps/arm/lpc24xx/abi.yml
+++ b/spec/build/bsps/arm/lpc24xx/abi.yml
@@ -7,25 +7,26 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=arm7tdmi-s
-- -mthumb
-default-by-variant:
-- value:
-  - -mthumb
-  - -mcpu=cortex-m3
-  variants:
+- enabled-by:
   - arm/lpc17xx_ea_ram
   - arm/lpc17xx_ea_rom_int
   - arm/lpc17xx_plx800_ram
   - arm/lpc17xx_plx800_rom_int
-- value:
+  value:
+  - -mthumb
+  - -mcpu=cortex-m3
+- enabled-by:
+  - arm/lpc40xx_ea_ram
+  - arm/lpc40xx_ea_rom_int
+  value:
   - -mcpu=cortex-m4
   - -mthumb
   - -mfloat-abi=hard
   - -mfpu=auto
-  variants:
-  - arm/lpc40xx_ea_ram
-  - arm/lpc40xx_ea_rom_int
+- enabled-by: true
+  value:
+  - -mcpu=arm7tdmi-s
+  - -mthumb
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optcclk.yml b/spec/build/bsps/arm/lpc24xx/optcclk.yml
index e9700ce101..1a44ff0b35 100644
--- a/spec/build/bsps/arm/lpc24xx/optcclk.yml
+++ b/spec/build/bsps/arm/lpc24xx/optcclk.yml
@@ -5,24 +5,23 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 72000000
-default-by-variant:
-- value: 96000000
-  variants:
+default:
+- enabled-by:
   - arm/lpc17xx_ea_ram
   - arm/lpc17xx_ea_rom_int
-- value: 96000000
-  variants:
   - arm/lpc40xx_ea_ram
   - arm/lpc40xx_ea_rom_int
-- value: 58982400
-  variants:
+  value: 96000000
+- enabled-by:
   - arm/lpc2362
   - arm/lpc23xx_tli800
-- value: 51612800
-  variants:
+  value: 58982400
+- enabled-by:
   - arm/lpc24xx_plx800_ram
   - arm/lpc24xx_plx800_rom_int
+  value: 51612800
+- enabled-by: true
+  value: 72000000
 description: |
   CPU clock in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optconcfg.yml b/spec/build/bsps/arm/lpc24xx/optconcfg.yml
index 4e09164cdf..8a903b4380 100644
--- a/spec/build/bsps/arm/lpc24xx/optconcfg.yml
+++ b/spec/build/bsps/arm/lpc24xx/optconcfg.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   configuration for console (UART 0)
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optdmachn.yml b/spec/build/bsps/arm/lpc24xx/optdmachn.yml
index f1f57dca60..14638cbd36 100644
--- a/spec/build/bsps/arm/lpc24xx/optdmachn.yml
+++ b/spec/build/bsps/arm/lpc24xx/optdmachn.yml
@@ -5,10 +5,8 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 2
-default-by-variant:
-- value: 8
-  variants:
+default:
+- enabled-by:
   - arm/lpc1768_mbed
   - arm/lpc1768_mbed_ahb_ram
   - arm/lpc1768_mbed_ahb_ram_eth
@@ -16,10 +14,11 @@ default-by-variant:
   - arm/lpc17xx_ea_rom_int
   - arm/lpc17xx_plx800_ram
   - arm/lpc17xx_plx800_rom_int
-- value: 8
-  variants:
   - arm/lpc40xx_ea_ram
   - arm/lpc40xx_ea_rom_int
+  value: 8
+- enabled-by: true
+  value: 2
 description: |
   DMA channel count
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optemcclkdiv.yml b/spec/build/bsps/arm/lpc24xx/optemcclkdiv.yml
index 36ff19f07b..7afec15896 100644
--- a/spec/build/bsps/arm/lpc24xx/optemcclkdiv.yml
+++ b/spec/build/bsps/arm/lpc24xx/optemcclkdiv.yml
@@ -5,16 +5,15 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1
-default-by-variant:
-- value: 2
-  variants:
+default:
+- enabled-by:
   - arm/lpc17xx_ea_ram
   - arm/lpc17xx_ea_rom_int
-- value: 2
-  variants:
   - arm/lpc40xx_ea_ram
   - arm/lpc40xx_ea_rom_int
+  value: 2
+- enabled-by: true
+  value: 1
 description: |
   clock divider for EMCCLK (EMCCLK = CCLK / EMCCLKDIV)
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optemcis42s32800b.yml b/spec/build/bsps/arm/lpc24xx/optemcis42s32800b.yml
index c6162af143..3b0b3960f2 100644
--- a/spec/build/bsps/arm/lpc24xx/optemcis42s32800b.yml
+++ b/spec/build/bsps/arm/lpc24xx/optemcis42s32800b.yml
@@ -5,14 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - arm/lpc17xx_ea_rom_int
-- value: true
-  variants:
   - arm/lpc40xx_ea_rom_int
+  value: true
+- enabled-by: true
+  value: false
 description: |
   enable ISSI IS42S32800B configuration for EMC
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optemcis42s32800d7.yml b/spec/build/bsps/arm/lpc24xx/optemcis42s32800d7.yml
index 71d2b38f27..b4ebc7a3f6 100644
--- a/spec/build/bsps/arm/lpc24xx/optemcis42s32800d7.yml
+++ b/spec/build/bsps/arm/lpc24xx/optemcis42s32800d7.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - arm/lpc17xx_plx800_rom_int
   - arm/lpc24xx_plx800_rom_int
+  value: true
+- enabled-by: true
+  value: false
 description: |
   enable ISSI IS42S32800D7 configuration for EMC
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optemcm29w160e.yml b/spec/build/bsps/arm/lpc24xx/optemcm29w160e.yml
index 02f233165c..2f56d4fcc6 100644
--- a/spec/build/bsps/arm/lpc24xx/optemcm29w160e.yml
+++ b/spec/build/bsps/arm/lpc24xx/optemcm29w160e.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - arm/lpc24xx_ncs_rom_ext
   - arm/lpc24xx_ncs_rom_int
+  value: true
+- enabled-by: true
+  value: false
 description: |
   enable M29W160E configuration for EMC
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optemcm29w320e70.yml b/spec/build/bsps/arm/lpc24xx/optemcm29w320e70.yml
index 66aa8c5cad..8abab7cd1d 100644
--- a/spec/build/bsps/arm/lpc24xx/optemcm29w320e70.yml
+++ b/spec/build/bsps/arm/lpc24xx/optemcm29w320e70.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - arm/lpc17xx_plx800_rom_int
   - arm/lpc24xx_plx800_rom_int
+  value: true
+- enabled-by: true
+  value: false
 description: |
   enable M29W320E70 configuration for EMC
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optemcmt48lc4m16a2.yml b/spec/build/bsps/arm/lpc24xx/optemcmt48lc4m16a2.yml
index 02b92e0710..aefaa8de24 100644
--- a/spec/build/bsps/arm/lpc24xx/optemcmt48lc4m16a2.yml
+++ b/spec/build/bsps/arm/lpc24xx/optemcmt48lc4m16a2.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - arm/lpc24xx_ncs_rom_ext
   - arm/lpc24xx_ncs_rom_int
+  value: true
+- enabled-by: true
+  value: false
 description: |
   enable Micron MT48LC4M16A2 configuration for EMC
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optemcsst39vf3201.yml b/spec/build/bsps/arm/lpc24xx/optemcsst39vf3201.yml
index 851c28a275..fba7e67905 100644
--- a/spec/build/bsps/arm/lpc24xx/optemcsst39vf3201.yml
+++ b/spec/build/bsps/arm/lpc24xx/optemcsst39vf3201.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   enable SST39VF3201 configuration for EMC
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optemctest.yml b/spec/build/bsps/arm/lpc24xx/optemctest.yml
index 4153bd2664..96451dc88f 100644
--- a/spec/build/bsps/arm/lpc24xx/optemctest.yml
+++ b/spec/build/bsps/arm/lpc24xx/optemctest.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   enable tests for EMC
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optemcw9825g2jb75i.yml b/spec/build/bsps/arm/lpc24xx/optemcw9825g2jb75i.yml
index 2be3f76372..8f6b79f752 100644
--- a/spec/build/bsps/arm/lpc24xx/optemcw9825g2jb75i.yml
+++ b/spec/build/bsps/arm/lpc24xx/optemcw9825g2jb75i.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   enable Winbond W9825G2JB75I configuration for EMC
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optethdownpin.yml b/spec/build/bsps/arm/lpc24xx/optethdownpin.yml
index c3889b0eea..56a7c932d8 100644
--- a/spec/build/bsps/arm/lpc24xx/optethdownpin.yml
+++ b/spec/build/bsps/arm/lpc24xx/optethdownpin.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   optional Ethernet power-down pin, output is set to high to enable power
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optethrmii.yml b/spec/build/bsps/arm/lpc24xx/optethrmii.yml
index 6dc25d0d86..4d95bc10aa 100644
--- a/spec/build/bsps/arm/lpc24xx/optethrmii.yml
+++ b/spec/build/bsps/arm/lpc24xx/optethrmii.yml
@@ -5,14 +5,15 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - arm/lpc17xx_ea_ram
   - arm/lpc17xx_ea_rom_int
   - arm/lpc40xx_ea_ram
   - arm/lpc40xx_ea_rom_int
+  value: true
+- enabled-by: true
+  value: false
 description: |
   enable RMII for Ethernet
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optheapext.yml b/spec/build/bsps/arm/lpc24xx/optheapext.yml
index 90acde9447..03254e3003 100644
--- a/spec/build/bsps/arm/lpc24xx/optheapext.yml
+++ b/spec/build/bsps/arm/lpc24xx/optheapext.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - arm/lpc2362
   - arm/lpc23xx_tli800
+  value: true
+- enabled-by: true
+  value: false
 description: |
   enable heap extend by Ethernet and USB regions
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optoscmain.yml b/spec/build/bsps/arm/lpc24xx/optoscmain.yml
index 2a483213de..67faf6455c 100644
--- a/spec/build/bsps/arm/lpc24xx/optoscmain.yml
+++ b/spec/build/bsps/arm/lpc24xx/optoscmain.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 12000000
-default-by-variant:
-- value: 3686400
-  variants:
+default:
+- enabled-by:
   - arm/lpc2362
   - arm/lpc23xx_tli800
+  value: 3686400
+- enabled-by: true
+  value: 12000000
 description: |
   main oscillator frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optoscrtc.yml b/spec/build/bsps/arm/lpc24xx/optoscrtc.yml
index 0b66f8a553..dc67d0e776 100644
--- a/spec/build/bsps/arm/lpc24xx/optoscrtc.yml
+++ b/spec/build/bsps/arm/lpc24xx/optoscrtc.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 32768
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 32768
 description: |
   RTC oscillator frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optotgi2c.yml b/spec/build/bsps/arm/lpc24xx/optotgi2c.yml
index e92754d99f..73d3e7db54 100644
--- a/spec/build/bsps/arm/lpc24xx/optotgi2c.yml
+++ b/spec/build/bsps/arm/lpc24xx/optotgi2c.yml
@@ -5,16 +5,15 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant:
-- value: 94
-  variants:
+default:
+- enabled-by:
   - arm/lpc17xx_ea_ram
   - arm/lpc17xx_ea_rom_int
-- value: 94
-  variants:
   - arm/lpc40xx_ea_ram
   - arm/lpc40xx_ea_rom_int
+  value: 94
+- enabled-by: true
+  value: 0
 description: |
   USB OTG transceiver I2C address used by USB stack
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optpclkdiv.yml b/spec/build/bsps/arm/lpc24xx/optpclkdiv.yml
index bc4984bc3d..ac6664f415 100644
--- a/spec/build/bsps/arm/lpc24xx/optpclkdiv.yml
+++ b/spec/build/bsps/arm/lpc24xx/optpclkdiv.yml
@@ -5,16 +5,15 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1
-default-by-variant:
-- value: 2
-  variants:
+default:
+- enabled-by:
   - arm/lpc17xx_ea_ram
   - arm/lpc17xx_ea_rom_int
-- value: 2
-  variants:
   - arm/lpc40xx_ea_ram
   - arm/lpc40xx_ea_rom_int
+  value: 2
+- enabled-by: true
+  value: 1
 description: |
   clock divider for default PCLK (PCLK = CCLK / PCLKDIV)
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optresetvec.yml b/spec/build/bsps/arm/lpc24xx/optresetvec.yml
index a73530db7b..060797d4ab 100644
--- a/spec/build/bsps/arm/lpc24xx/optresetvec.yml
+++ b/spec/build/bsps/arm/lpc24xx/optresetvec.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant:
-- value: 2147483712
-  variants:
-  - arm/lpc24xx_ncs_rom_ext
+default:
+- enabled-by: arm/lpc24xx_ncs_rom_ext
+  value: 2147483712
+- enabled-by: true
+  value: 0
 description: |
   reset vector address for BSP start
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optstopeth.yml b/spec/build/bsps/arm/lpc24xx/optstopeth.yml
index 2baf76da8c..cb0ac373eb 100644
--- a/spec/build/bsps/arm/lpc24xx/optstopeth.yml
+++ b/spec/build/bsps/arm/lpc24xx/optstopeth.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
+default:
+- enabled-by:
   - arm/lpc2362
   - arm/lpc23xx_tli800
+  value: false
+- enabled-by: true
+  value: true
 description: |
   stop Ethernet controller at start-up to avoid DMA interference
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optstopgpdma.yml b/spec/build/bsps/arm/lpc24xx/optstopgpdma.yml
index 5705cc03ef..b7590138a9 100644
--- a/spec/build/bsps/arm/lpc24xx/optstopgpdma.yml
+++ b/spec/build/bsps/arm/lpc24xx/optstopgpdma.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   stop general purpose DMA at start-up to avoid DMA interference
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optstopusb.yml b/spec/build/bsps/arm/lpc24xx/optstopusb.yml
index b895ff7df3..a6d986948c 100644
--- a/spec/build/bsps/arm/lpc24xx/optstopusb.yml
+++ b/spec/build/bsps/arm/lpc24xx/optstopusb.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
+default:
+- enabled-by:
   - arm/lpc2362
   - arm/lpc23xx_tli800
+  value: false
+- enabled-by: true
+  value: true
 description: |
   stop USB controller at start-up to avoid DMA interference
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optuart1cfg.yml b/spec/build/bsps/arm/lpc24xx/optuart1cfg.yml
index 055f8bbbee..91d89c9c37 100644
--- a/spec/build/bsps/arm/lpc24xx/optuart1cfg.yml
+++ b/spec/build/bsps/arm/lpc24xx/optuart1cfg.yml
@@ -5,14 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: false
-  variants:
-  - arm/lpc17xx_plx800_ram
-  - arm/lpc17xx_plx800_rom_int
-  - arm/lpc24xx_plx800_ram
-  - arm/lpc24xx_plx800_rom_int
+default:
+- enabled-by: true
+  value: false
 description: |
   configuration for UART 1
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optuart2cfg.yml b/spec/build/bsps/arm/lpc24xx/optuart2cfg.yml
index 0f9bbad26b..abb5d0bedc 100644
--- a/spec/build/bsps/arm/lpc24xx/optuart2cfg.yml
+++ b/spec/build/bsps/arm/lpc24xx/optuart2cfg.yml
@@ -5,23 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: false
-  variants:
-  - arm/lpc2362
-  - arm/lpc23xx_tli800
-- value: false
-  variants:
-  - arm/lpc24xx_ncs_ram
-  - arm/lpc24xx_ncs_rom_ext
-  - arm/lpc24xx_ncs_rom_int
-- value: false
-  variants:
-  - arm/lpc17xx_plx800_ram
-  - arm/lpc17xx_plx800_rom_int
-  - arm/lpc24xx_plx800_ram
-  - arm/lpc24xx_plx800_rom_int
+default:
+- enabled-by: true
+  value: false
 description: |
   configuration for UART 2
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optuart3cfg.yml b/spec/build/bsps/arm/lpc24xx/optuart3cfg.yml
index 991be593f3..58363efbec 100644
--- a/spec/build/bsps/arm/lpc24xx/optuart3cfg.yml
+++ b/spec/build/bsps/arm/lpc24xx/optuart3cfg.yml
@@ -5,17 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: false
-  variants:
-  - arm/lpc2362
-  - arm/lpc23xx_tli800
-- value: false
-  variants:
-  - arm/lpc24xx_ncs_ram
-  - arm/lpc24xx_ncs_rom_ext
-  - arm/lpc24xx_ncs_rom_int
+default:
+- enabled-by: true
+  value: false
 description: |
   configuration for UART 3
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/optuartbaud.yml b/spec/build/bsps/arm/lpc24xx/optuartbaud.yml
index e772d71381..bec352e265 100644
--- a/spec/build/bsps/arm/lpc24xx/optuartbaud.yml
+++ b/spec/build/bsps/arm/lpc24xx/optuartbaud.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 115200
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 115200
 description: |
   baud for UARTs
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc24xx/tstlpc17xxearomint.yml b/spec/build/bsps/arm/lpc24xx/tstlpc17xxearomint.yml
index 7d60bda27a..f8efd7ab27 100644
--- a/spec/build/bsps/arm/lpc24xx/tstlpc17xxearomint.yml
+++ b/spec/build/bsps/arm/lpc24xx/tstlpc17xxearomint.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/arm/lpc24xx/tstlpc17xxplx800romint.yml b/spec/build/bsps/arm/lpc24xx/tstlpc17xxplx800romint.yml
index 7d60bda27a..f8efd7ab27 100644
--- a/spec/build/bsps/arm/lpc24xx/tstlpc17xxplx800romint.yml
+++ b/spec/build/bsps/arm/lpc24xx/tstlpc17xxplx800romint.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/arm/lpc24xx/tstlpc23xx.yml b/spec/build/bsps/arm/lpc24xx/tstlpc23xx.yml
index 1a3e375b03..19e030d424 100644
--- a/spec/build/bsps/arm/lpc24xx/tstlpc23xx.yml
+++ b/spec/build/bsps/arm/lpc24xx/tstlpc23xx.yml
@@ -55,8 +55,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/arm/lpc24xx/tstlpc40xxearomint.yml b/spec/build/bsps/arm/lpc24xx/tstlpc40xxearomint.yml
index 7d60bda27a..f8efd7ab27 100644
--- a/spec/build/bsps/arm/lpc24xx/tstlpc40xxearomint.yml
+++ b/spec/build/bsps/arm/lpc24xx/tstlpc40xxearomint.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/arm/lpc24xx/tstncsromint.yml b/spec/build/bsps/arm/lpc24xx/tstncsromint.yml
index 7d60bda27a..f8efd7ab27 100644
--- a/spec/build/bsps/arm/lpc24xx/tstncsromint.yml
+++ b/spec/build/bsps/arm/lpc24xx/tstncsromint.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/arm/lpc24xx/tstplx800romint.yml b/spec/build/bsps/arm/lpc24xx/tstplx800romint.yml
index 7d60bda27a..f8efd7ab27 100644
--- a/spec/build/bsps/arm/lpc24xx/tstplx800romint.yml
+++ b/spec/build/bsps/arm/lpc24xx/tstplx800romint.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/arm/lpc32xx/abi.yml b/spec/build/bsps/arm/lpc32xx/abi.yml
index ae245b4eb0..3fa82f50fe 100644
--- a/spec/build/bsps/arm/lpc32xx/abi.yml
+++ b/spec/build/bsps/arm/lpc32xx/abi.yml
@@ -7,9 +7,10 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=arm926ej-s
-- -mthumb
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=arm926ej-s
+  - -mthumb
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optdismmu.yml b/spec/build/bsps/arm/lpc32xx/optdismmu.yml
index b431f04841..f0acf5a4b3 100644
--- a/spec/build/bsps/arm/lpc32xx/optdismmu.yml
+++ b/spec/build/bsps/arm/lpc32xx/optdismmu.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   disable MMU
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optdisroprot.yml b/spec/build/bsps/arm/lpc32xx/optdisroprot.yml
index 5ce23607b8..4a2b675db7 100644
--- a/spec/build/bsps/arm/lpc32xx/optdisroprot.yml
+++ b/spec/build/bsps/arm/lpc32xx/optdisroprot.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   disable MMU protection of read-only sections
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optdisrwdc.yml b/spec/build/bsps/arm/lpc32xx/optdisrwdc.yml
index 55765c3e8e..f378ad048a 100644
--- a/spec/build/bsps/arm/lpc32xx/optdisrwdc.yml
+++ b/spec/build/bsps/arm/lpc32xx/optdisrwdc.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   disable cache for read-write data sections
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optdmachn.yml b/spec/build/bsps/arm/lpc32xx/optdmachn.yml
index 4c826a5f01..19f8acb182 100644
--- a/spec/build/bsps/arm/lpc32xx/optdmachn.yml
+++ b/spec/build/bsps/arm/lpc32xx/optdmachn.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 8
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 8
 description: |
   DMA channel count
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optenwdgrst.yml b/spec/build/bsps/arm/lpc32xx/optenwdgrst.yml
index d36a5c0398..c06a6b2fca 100644
--- a/spec/build/bsps/arm/lpc32xx/optenwdgrst.yml
+++ b/spec/build/bsps/arm/lpc32xx/optenwdgrst.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   bsp_reset() will use the watchdog to reset the chip
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optethrmii.yml b/spec/build/bsps/arm/lpc32xx/optethrmii.yml
index ccb4c95abc..ed51b9491e 100644
--- a/spec/build/bsps/arm/lpc32xx/optethrmii.yml
+++ b/spec/build/bsps/arm/lpc32xx/optethrmii.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   enable RMII for Ethernet
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optoscmain.yml b/spec/build/bsps/arm/lpc32xx/optoscmain.yml
index aadb9b6799..6f93400e98 100644
--- a/spec/build/bsps/arm/lpc32xx/optoscmain.yml
+++ b/spec/build/bsps/arm/lpc32xx/optoscmain.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 13000000
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 13000000
 description: |
   main oscillator frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optoscrtc.yml b/spec/build/bsps/arm/lpc32xx/optoscrtc.yml
index 09aab2d9c6..443f19e963 100644
--- a/spec/build/bsps/arm/lpc32xx/optoscrtc.yml
+++ b/spec/build/bsps/arm/lpc32xx/optoscrtc.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 32768
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 32768
 description: |
   RTC oscillator frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optotgi2c.yml b/spec/build/bsps/arm/lpc32xx/optotgi2c.yml
index 55119b35cf..b875dfbd2e 100644
--- a/spec/build/bsps/arm/lpc32xx/optotgi2c.yml
+++ b/spec/build/bsps/arm/lpc32xx/optotgi2c.yml
@@ -5,13 +5,14 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant:
-- value: 88
-  variants:
+default:
+- enabled-by:
   - arm/lpc32xx_mzx
   - arm/lpc32xx_mzx_stage_1
   - arm/lpc32xx_mzx_stage_2
+  value: 88
+- enabled-by: true
+  value: 0
 description: |
   USB OTG transceiver I2C address used by USB stack
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optotgvbus.yml b/spec/build/bsps/arm/lpc32xx/optotgvbus.yml
index e5d2563a7b..038e04472e 100644
--- a/spec/build/bsps/arm/lpc32xx/optotgvbus.yml
+++ b/spec/build/bsps/arm/lpc32xx/optotgvbus.yml
@@ -5,13 +5,14 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: USB_OTG_VBUS_POWER_WITH_CHARGE_PUMP
-  variants:
+default:
+- enabled-by:
   - arm/lpc32xx_mzx
   - arm/lpc32xx_mzx_stage_1
   - arm/lpc32xx_mzx_stage_2
+  value: USB_OTG_VBUS_POWER_WITH_CHARGE_PUMP
+- enabled-by: true
+  value: false
 description: |
   USB OTG transceiver VBUS policy
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optperiphclk.yml b/spec/build/bsps/arm/lpc32xx/optperiphclk.yml
index 70be8d51bf..dfd3e27953 100644
--- a/spec/build/bsps/arm/lpc32xx/optperiphclk.yml
+++ b/spec/build/bsps/arm/lpc32xx/optperiphclk.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 13000000
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 13000000
 description: |
   peripheral clock in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optresetvec.yml b/spec/build/bsps/arm/lpc32xx/optresetvec.yml
index efd1ea2b2a..bac5c79627 100644
--- a/spec/build/bsps/arm/lpc32xx/optresetvec.yml
+++ b/spec/build/bsps/arm/lpc32xx/optresetvec.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   reset vector address for BSP start
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optscratchsz.yml b/spec/build/bsps/arm/lpc32xx/optscratchsz.yml
index ad8473d57d..5299cfa992 100644
--- a/spec/build/bsps/arm/lpc32xx/optscratchsz.yml
+++ b/spec/build/bsps/arm/lpc32xx/optscratchsz.yml
@@ -5,13 +5,14 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant:
-- value: 4096
-  variants:
+default:
+- enabled-by:
   - arm/lpc32xx_mzx
   - arm/lpc32xx_mzx_stage_1
   - arm/lpc32xx_mzx_stage_2
+  value: 4096
+- enabled-by: true
+  value: 0
 description: |
   size of scratch area
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optstopeth.yml b/spec/build/bsps/arm/lpc32xx/optstopeth.yml
index 2d430a1862..036b3c14a3 100644
--- a/spec/build/bsps/arm/lpc32xx/optstopeth.yml
+++ b/spec/build/bsps/arm/lpc32xx/optstopeth.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   stop Ethernet controller at start-up to avoid DMA interference
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optstopgpdma.yml b/spec/build/bsps/arm/lpc32xx/optstopgpdma.yml
index 5096cc48a9..d5894ce274 100644
--- a/spec/build/bsps/arm/lpc32xx/optstopgpdma.yml
+++ b/spec/build/bsps/arm/lpc32xx/optstopgpdma.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   stop general purpose DMA at start-up to avoid DMA interference
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optstopusb.yml b/spec/build/bsps/arm/lpc32xx/optstopusb.yml
index e2bbc72f5f..8b6991a01d 100644
--- a/spec/build/bsps/arm/lpc32xx/optstopusb.yml
+++ b/spec/build/bsps/arm/lpc32xx/optstopusb.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   stop USB controller at start-up to avoid DMA interference
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optu3clk.yml b/spec/build/bsps/arm/lpc32xx/optu3clk.yml
index e8aa25671f..c66bbcac02 100644
--- a/spec/build/bsps/arm/lpc32xx/optu3clk.yml
+++ b/spec/build/bsps/arm/lpc32xx/optu3clk.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 4998
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 4998
 description: |
   clock configuration for UART 3
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optu4clk.yml b/spec/build/bsps/arm/lpc32xx/optu4clk.yml
index 19c36967e1..d289f5e5b7 100644
--- a/spec/build/bsps/arm/lpc32xx/optu4clk.yml
+++ b/spec/build/bsps/arm/lpc32xx/optu4clk.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 4998
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 4998
 description: |
   clock configuration for UART 4
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optu5clk.yml b/spec/build/bsps/arm/lpc32xx/optu5clk.yml
index 66a67dea95..05410c9868 100644
--- a/spec/build/bsps/arm/lpc32xx/optu5clk.yml
+++ b/spec/build/bsps/arm/lpc32xx/optu5clk.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 4998
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 4998
 description: |
   clock configuration for UART 5
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optu6clk.yml b/spec/build/bsps/arm/lpc32xx/optu6clk.yml
index 364e3143f9..4e4be91f4e 100644
--- a/spec/build/bsps/arm/lpc32xx/optu6clk.yml
+++ b/spec/build/bsps/arm/lpc32xx/optu6clk.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 4998
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 4998
 description: |
   clock configuration for UART 6
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optuart1baud.yml b/spec/build/bsps/arm/lpc32xx/optuart1baud.yml
index d0b7a546db..b1267567f1 100644
--- a/spec/build/bsps/arm/lpc32xx/optuart1baud.yml
+++ b/spec/build/bsps/arm/lpc32xx/optuart1baud.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   baud for UART 1
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optuart2baud.yml b/spec/build/bsps/arm/lpc32xx/optuart2baud.yml
index 5bdf8be11b..cd848156e8 100644
--- a/spec/build/bsps/arm/lpc32xx/optuart2baud.yml
+++ b/spec/build/bsps/arm/lpc32xx/optuart2baud.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   baud for UART 2
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optuart3baud.yml b/spec/build/bsps/arm/lpc32xx/optuart3baud.yml
index 95e63cf56e..48513c9370 100644
--- a/spec/build/bsps/arm/lpc32xx/optuart3baud.yml
+++ b/spec/build/bsps/arm/lpc32xx/optuart3baud.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 115200
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 115200
 description: |
   baud for UART 3
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optuart4baud.yml b/spec/build/bsps/arm/lpc32xx/optuart4baud.yml
index d210bd3c6b..66ac9b857a 100644
--- a/spec/build/bsps/arm/lpc32xx/optuart4baud.yml
+++ b/spec/build/bsps/arm/lpc32xx/optuart4baud.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 115200
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 115200
 description: |
   baud for UART 4
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optuart5baud.yml b/spec/build/bsps/arm/lpc32xx/optuart5baud.yml
index 0021d5c9ed..c09f50b481 100644
--- a/spec/build/bsps/arm/lpc32xx/optuart5baud.yml
+++ b/spec/build/bsps/arm/lpc32xx/optuart5baud.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 115200
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 115200
 description: |
   baud for UART 5
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optuart6baud.yml b/spec/build/bsps/arm/lpc32xx/optuart6baud.yml
index dc856fa33e..2d512f00a1 100644
--- a/spec/build/bsps/arm/lpc32xx/optuart6baud.yml
+++ b/spec/build/bsps/arm/lpc32xx/optuart6baud.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 115200
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 115200
 description: |
   baud for UART 6
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/optuart7baud.yml b/spec/build/bsps/arm/lpc32xx/optuart7baud.yml
index 867d534e57..90b72e4570 100644
--- a/spec/build/bsps/arm/lpc32xx/optuart7baud.yml
+++ b/spec/build/bsps/arm/lpc32xx/optuart7baud.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   baud for UART 7
 enabled-by: true
diff --git a/spec/build/bsps/arm/lpc32xx/tstmzxstage1.yml b/spec/build/bsps/arm/lpc32xx/tstmzxstage1.yml
index 9c10b3fc46..03127b78b8 100644
--- a/spec/build/bsps/arm/lpc32xx/tstmzxstage1.yml
+++ b/spec/build/bsps/arm/lpc32xx/tstmzxstage1.yml
@@ -13,8 +13,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/arm/opta9periphclk.yml b/spec/build/bsps/arm/opta9periphclk.yml
index 8d8c240606..2768086225 100644
--- a/spec/build/bsps/arm/opta9periphclk.yml
+++ b/spec/build/bsps/arm/opta9periphclk.yml
@@ -7,14 +7,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 100000000
-default-by-variant:
-- value: 333333333
-  variants:
-  - arm/xilinx_zynq_zc702
-- value: 666666667
-  variants:
-  - arm/xilinx_zynq_zedboard
+default:
+- enabled-by: arm/xilinx_zynq_zc702
+  value: 333333333
+- enabled-by: arm/xilinx_zynq_zedboard
+  value: 666666667
+- enabled-by: true
+  value: 100000000
 description: |
   ARM Cortex-A9 MPCore PERIPHCLK clock frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/optgiccpuif.yml b/spec/build/bsps/arm/optgiccpuif.yml
index 18e2e979d6..62b49298eb 100644
--- a/spec/build/bsps/arm/optgiccpuif.yml
+++ b/spec/build/bsps/arm/optgiccpuif.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 738197504
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 738197504
 description: |
   Defines the base address of the GIC CPU Interface.
 enabled-by: true
diff --git a/spec/build/bsps/arm/optgicdist.yml b/spec/build/bsps/arm/optgicdist.yml
index c0cc67107d..b1b6d5087c 100644
--- a/spec/build/bsps/arm/optgicdist.yml
+++ b/spec/build/bsps/arm/optgicdist.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 788529152
-default-by-variant:
-- value: 2936012800
-  variants:
-  - arm/fvp_cortex_r52
+default:
+- enabled-by: arm/fvp_cortex_r52
+  value: 2936012800
+- enabled-by: true
+  value: 788529152
 description: |
   Defines the base address of the GIC Distributor.
 enabled-by: true
diff --git a/spec/build/bsps/arm/optgicredist.yml b/spec/build/bsps/arm/optgicredist.yml
index c8a09f56bc..2e3e8823be 100644
--- a/spec/build/bsps/arm/optgicredist.yml
+++ b/spec/build/bsps/arm/optgicredist.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 789577728
-default-by-variant:
-- value: 2937061376
-  variants:
-  - arm/fvp_cortex_r52
+default:
+- enabled-by: arm/fvp_cortex_r52
+  value: 2937061376
+- enabled-by: true
+  value: 789577728
 description: |
   Defines the base address of the GIC Redistributor.
 enabled-by: true
diff --git a/spec/build/bsps/arm/optgicspicount.yml b/spec/build/bsps/arm/optgicspicount.yml
index cec05f36d7..ba4a9fc945 100644
--- a/spec/build/bsps/arm/optgicspicount.yml
+++ b/spec/build/bsps/arm/optgicspicount.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 64
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 64
 description: |
   Defines the count of Shared Peripheral Interrupts (SPIs) supported by the
   interrupt controller.
diff --git a/spec/build/bsps/arm/optgtfreq.yml b/spec/build/bsps/arm/optgtfreq.yml
index 192f4bf651..f2dfe204c8 100644
--- a/spec/build/bsps/arm/optgtfreq.yml
+++ b/spec/build/bsps/arm/optgtfreq.yml
@@ -5,11 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant:
-- value: 100000000
-  variants:
-  - arm/fvp_cortex_r52
+default:
+- enabled-by: arm/fvp_cortex_r52
+  value: 100000000
 description: |
   Defines the frequency in Hz of the ARM Generic Timer.
 enabled-by: true
diff --git a/spec/build/bsps/arm/optgtsysbase.yml b/spec/build/bsps/arm/optgtsysbase.yml
index 60be2b74b8..105e545011 100644
--- a/spec/build/bsps/arm/optgtsysbase.yml
+++ b/spec/build/bsps/arm/optgtsysbase.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 709033984
-default-by-variant:
-- value: 2856517632
-  variants:
-  - arm/fvp_cortex_r52
+default:
+- enabled-by: arm/fvp_cortex_r52
+  value: 2856517632
+- enabled-by: true
+  value: 709033984
 description: |
   Defines the base address of the memory-mapped system level ARM Generic Timer.
 enabled-by: true
diff --git a/spec/build/bsps/arm/optgtsyscntcr.yml b/spec/build/bsps/arm/optgtsyscntcr.yml
index b484927d21..db5f15f3d8 100644
--- a/spec/build/bsps/arm/optgtsyscntcr.yml
+++ b/spec/build/bsps/arm/optgtsyscntcr.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1
-default-by-variant:
-- value: 257
-  variants:
-  - arm/fvp_cortex_r52
+default:
+- enabled-by: arm/fvp_cortex_r52
+  value: 257
+- enabled-by: true
+  value: 1
 description: |
   Defines the initialization value of the CNTCR register of the memory-mapped
   system level ARM Generic Timer.
diff --git a/spec/build/bsps/arm/optgtusevirt.yml b/spec/build/bsps/arm/optgtusevirt.yml
index b443cc1d32..f680ed36d7 100644
--- a/spec/build/bsps/arm/optgtusevirt.yml
+++ b/spec/build/bsps/arm/optgtusevirt.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   If set to true, then the clock driver uses the Virtual Timer of the ARM
   Generic Timer, otherwise it uses the Physical Timer (EL1).
diff --git a/spec/build/bsps/arm/optmmusmallpages.yml b/spec/build/bsps/arm/optmmusmallpages.yml
index a4ceb0aa1e..2bc02ed5df 100644
--- a/spec/build/bsps/arm/optmmusmallpages.yml
+++ b/spec/build/bsps/arm/optmmusmallpages.yml
@@ -14,11 +14,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - arm/realview_pbx_a9_qemu
+default:
+- enabled-by: arm/realview_pbx_a9_qemu
+  value: true
+- enabled-by: true
+  value: false
 description: |
   If set to true, then the MMU is configured to use small pages (4KiB),
   otherwise it uses sections (1MiB).
diff --git a/spec/build/bsps/arm/optmmusz.yml b/spec/build/bsps/arm/optmmusz.yml
index 64c97be60a..4be57a5ae5 100644
--- a/spec/build/bsps/arm/optmmusz.yml
+++ b/spec/build/bsps/arm/optmmusz.yml
@@ -8,8 +8,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 16384
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 16384
 description: |
   Defines the size of the MMU translation table in bytes.  The translation
   table size depends on the configured MMU granularity, for example 4KiB pages
diff --git a/spec/build/bsps/arm/raspberrypi/abi.yml b/spec/build/bsps/arm/raspberrypi/abi.yml
index 66459a1e1b..9cbe152c32 100644
--- a/spec/build/bsps/arm/raspberrypi/abi.yml
+++ b/spec/build/bsps/arm/raspberrypi/abi.yml
@@ -7,16 +7,16 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -march=armv7-a
-- -mthumb
-- -mfpu=neon
-- -mfloat-abi=hard
-- -mtune=cortex-a7
-default-by-variant:
-- value:
+- enabled-by: arm/raspberrypi
+  value:
   - -mcpu=arm1176jzf-s
-  variants:
-  - arm/raspberrypi
+- enabled-by: true
+  value:
+  - -march=armv7-a
+  - -mthumb
+  - -mfpu=neon
+  - -mfloat-abi=hard
+  - -mtune=cortex-a7
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/arm/raspberrypi/opti2ciomode.yml b/spec/build/bsps/arm/raspberrypi/opti2ciomode.yml
index 82ba37dc4d..86e77d2cc6 100644
--- a/spec/build/bsps/arm/raspberrypi/opti2ciomode.yml
+++ b/spec/build/bsps/arm/raspberrypi/opti2ciomode.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   Define to 1 to use interrupt-driven I/O with the Raspberry Pi I2C bus. If defined to other value the access will be polled-driven.
 enabled-by: true
diff --git a/spec/build/bsps/arm/raspberrypi/optnocachelen.yml b/spec/build/bsps/arm/raspberrypi/optnocachelen.yml
index b9d9071b17..5d2eb781cd 100644
--- a/spec/build/bsps/arm/raspberrypi/optnocachelen.yml
+++ b/spec/build/bsps/arm/raspberrypi/optnocachelen.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 2097152
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 2097152
 description: |
   No-cache region length
 enabled-by: true
diff --git a/spec/build/bsps/arm/raspberrypi/optramlen.yml b/spec/build/bsps/arm/raspberrypi/optramlen.yml
index 040d514dad..51136d913b 100644
--- a/spec/build/bsps/arm/raspberrypi/optramlen.yml
+++ b/spec/build/bsps/arm/raspberrypi/optramlen.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 268435456
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 268435456
 description: |
   RAM region length
 enabled-by: true
diff --git a/spec/build/bsps/arm/raspberrypi/optresetvec.yml b/spec/build/bsps/arm/raspberrypi/optresetvec.yml
index efd1ea2b2a..bac5c79627 100644
--- a/spec/build/bsps/arm/raspberrypi/optresetvec.yml
+++ b/spec/build/bsps/arm/raspberrypi/optresetvec.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   reset vector address for BSP start
 enabled-by: true
diff --git a/spec/build/bsps/arm/raspberrypi/optrpi2.yml b/spec/build/bsps/arm/raspberrypi/optrpi2.yml
index 08e3a1e381..39e9b7b779 100644
--- a/spec/build/bsps/arm/raspberrypi/optrpi2.yml
+++ b/spec/build/bsps/arm/raspberrypi/optrpi2.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - arm/raspberrypi2
+default:
+- enabled-by: arm/raspberrypi2
+  value: true
+- enabled-by: true
+  value: false
 description: |
   Set if the BSP variant is Raspberry Pi 2.
 enabled-by: true
diff --git a/spec/build/bsps/arm/raspberrypi/optspiiomode.yml b/spec/build/bsps/arm/raspberrypi/optspiiomode.yml
index bb0b94a683..69c197be59 100644
--- a/spec/build/bsps/arm/raspberrypi/optspiiomode.yml
+++ b/spec/build/bsps/arm/raspberrypi/optspiiomode.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   Define to 1 to use interrupt-driven I/O with the Raspberry Pi SPI bus. If defined to other value the access will be polled-driven.
 enabled-by: true
diff --git a/spec/build/bsps/arm/realview-pbx-a9/abi.yml b/spec/build/bsps/arm/realview-pbx-a9/abi.yml
index a3a710c97d..d3161d624d 100644
--- a/spec/build/bsps/arm/realview-pbx-a9/abi.yml
+++ b/spec/build/bsps/arm/realview-pbx-a9/abi.yml
@@ -7,12 +7,13 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -march=armv7-a
-- -mthumb
-- -mfpu=neon
-- -mfloat-abi=hard
-- -mtune=cortex-a9
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -march=armv7-a
+  - -mthumb
+  - -mfpu=neon
+  - -mfloat-abi=hard
+  - -mtune=cortex-a9
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/arm/realview-pbx-a9/opta9periphclk.yml b/spec/build/bsps/arm/realview-pbx-a9/opta9periphclk.yml
index 3ab2b72830..acd0524ce0 100644
--- a/spec/build/bsps/arm/realview-pbx-a9/opta9periphclk.yml
+++ b/spec/build/bsps/arm/realview-pbx-a9/opta9periphclk.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 100000000
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 100000000
 description: |
   ARM Cortex-A9 MPCore PERIPHCLK clock frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/realview-pbx-a9/optcachedata.yml b/spec/build/bsps/arm/realview-pbx-a9/optcachedata.yml
index 23b1410385..c86800df35 100644
--- a/spec/build/bsps/arm/realview-pbx-a9/optcachedata.yml
+++ b/spec/build/bsps/arm/realview-pbx-a9/optcachedata.yml
@@ -5,13 +5,14 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
+default:
+- enabled-by:
   - arm/lm3s6965_qemu
   - arm/realview_pbx_a9_qemu
   - arm/xilinx_zynq_a9_qemu
+  value: false
+- enabled-by: true
+  value: true
 description: |
   enable data cache
 enabled-by: true
diff --git a/spec/build/bsps/arm/realview-pbx-a9/optcacheinst.yml b/spec/build/bsps/arm/realview-pbx-a9/optcacheinst.yml
index f172cc4b58..90e0e1301a 100644
--- a/spec/build/bsps/arm/realview-pbx-a9/optcacheinst.yml
+++ b/spec/build/bsps/arm/realview-pbx-a9/optcacheinst.yml
@@ -5,13 +5,14 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
+default:
+- enabled-by:
   - arm/lm3s6965_qemu
   - arm/realview_pbx_a9_qemu
   - arm/xilinx_zynq_a9_qemu
+  value: false
+- enabled-by: true
+  value: true
 description: |
   enable instruction cache
 enabled-by: true
diff --git a/spec/build/bsps/arm/realview-pbx-a9/optclkbootcpu.yml b/spec/build/bsps/arm/realview-pbx-a9/optclkbootcpu.yml
index 8cca180892..4abc209af2 100644
--- a/spec/build/bsps/arm/realview-pbx-a9/optclkbootcpu.yml
+++ b/spec/build/bsps/arm/realview-pbx-a9/optclkbootcpu.yml
@@ -5,13 +5,14 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - arm/lm3s6965_qemu
   - arm/realview_pbx_a9_qemu
   - arm/xilinx_zynq_a9_qemu
+  value: true
+- enabled-by: true
+  value: false
 description: |
   If defined, then do the clock tick processing on the boot processor on behalf of all other processors.
 enabled-by: true
diff --git a/spec/build/bsps/arm/realview-pbx-a9/optclkfastidle.yml b/spec/build/bsps/arm/realview-pbx-a9/optclkfastidle.yml
index 61333a11f1..e303a8bf9f 100644
--- a/spec/build/bsps/arm/realview-pbx-a9/optclkfastidle.yml
+++ b/spec/build/bsps/arm/realview-pbx-a9/optclkfastidle.yml
@@ -5,13 +5,14 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - arm/lm3s6965_qemu
   - arm/realview_pbx_a9_qemu
   - arm/xilinx_zynq_a9_qemu
+  value: true
+- enabled-by: true
+  value: false
 description: |
   This sets a mode where the time runs as fast as possible when a clock ISR occurs while the IDLE thread is executing.  This can significantly reduce simulation times.
 enabled-by: true
diff --git a/spec/build/bsps/arm/realview-pbx-a9/optresetvec.yml b/spec/build/bsps/arm/realview-pbx-a9/optresetvec.yml
index efd1ea2b2a..bac5c79627 100644
--- a/spec/build/bsps/arm/realview-pbx-a9/optresetvec.yml
+++ b/spec/build/bsps/arm/realview-pbx-a9/optresetvec.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   reset vector address for BSP start
 enabled-by: true
diff --git a/spec/build/bsps/arm/rtl22xx/abi.yml b/spec/build/bsps/arm/rtl22xx/abi.yml
index abb7f66b50..0d70e8b6c8 100644
--- a/spec/build/bsps/arm/rtl22xx/abi.yml
+++ b/spec/build/bsps/arm/rtl22xx/abi.yml
@@ -7,13 +7,13 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=arm7tdmi
-- -mthumb
-default-by-variant:
-- value:
+- enabled-by: arm/rtl22xx
+  value:
   - -mcpu=arm7tdmi
-  variants:
-  - arm/rtl22xx
+- enabled-by: true
+  value:
+  - -mcpu=arm7tdmi
+  - -mthumb
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/arm/rtl22xx/optskyeye.yml b/spec/build/bsps/arm/rtl22xx/optskyeye.yml
index be55a98c3a..0d805efefd 100644
--- a/spec/build/bsps/arm/rtl22xx/optskyeye.yml
+++ b/spec/build/bsps/arm/rtl22xx/optskyeye.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   If defined, enable options which optimize executingon the Skyeye simulator.  Speed up the clock ticks while the idle task is running so time spent in the idle task is minimized.  This significantly reduces the wall time required to execute the RTEMS test suites.
 enabled-by: true
diff --git a/spec/build/bsps/arm/rtl22xx/tstrtl22xx.yml b/spec/build/bsps/arm/rtl22xx/tstrtl22xx.yml
index 7e94438992..bb35a30d7f 100644
--- a/spec/build/bsps/arm/rtl22xx/tstrtl22xx.yml
+++ b/spec/build/bsps/arm/rtl22xx/tstrtl22xx.yml
@@ -14,8 +14,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/arm/rtl22xx/tstrtl22xxt.yml b/spec/build/bsps/arm/rtl22xx/tstrtl22xxt.yml
index 43c82c7063..3080533d5b 100644
--- a/spec/build/bsps/arm/rtl22xx/tstrtl22xxt.yml
+++ b/spec/build/bsps/arm/rtl22xx/tstrtl22xxt.yml
@@ -10,8 +10,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/arm/smdk2410/abi.yml b/spec/build/bsps/arm/smdk2410/abi.yml
index d964ca5d2f..3b66ec01ba 100644
--- a/spec/build/bsps/arm/smdk2410/abi.yml
+++ b/spec/build/bsps/arm/smdk2410/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=arm920t
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=arm920t
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/arm/smdk2410/optcpus3c2410.yml b/spec/build/bsps/arm/smdk2410/optcpus3c2410.yml
index ba24539e4a..187b7972a0 100644
--- a/spec/build/bsps/arm/smdk2410/optcpus3c2410.yml
+++ b/spec/build/bsps/arm/smdk2410/optcpus3c2410.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - arm/smdk2410
+default:
+- enabled-by: arm/smdk2410
+  value: true
+- enabled-by: true
+  value: false
 description: |
   If defined, enable optons for the S3C2410 CPU model.
 enabled-by: true
diff --git a/spec/build/bsps/arm/smdk2410/optskyeye.yml b/spec/build/bsps/arm/smdk2410/optskyeye.yml
index be55a98c3a..0d805efefd 100644
--- a/spec/build/bsps/arm/smdk2410/optskyeye.yml
+++ b/spec/build/bsps/arm/smdk2410/optskyeye.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   If defined, enable options which optimize executingon the Skyeye simulator.  Speed up the clock ticks while the idle task is running so time spent in the idle task is minimized.  This significantly reduces the wall time required to execute the RTEMS test suites.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32f4/abi.yml b/spec/build/bsps/arm/stm32f4/abi.yml
index 3098d8597b..3d8cf52ec9 100644
--- a/spec/build/bsps/arm/stm32f4/abi.yml
+++ b/spec/build/bsps/arm/stm32f4/abi.yml
@@ -7,16 +7,16 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=cortex-m4
-- -mthumb
-- -mfloat-abi=hard
-- -mfpu=auto
-default-by-variant:
-- value:
+- enabled-by: arm/stm32f105rc
+  value:
   - -mthumb
   - -mcpu=cortex-m3
-  variants:
-  - arm/stm32f105rc
+- enabled-by: true
+  value:
+  - -mcpu=cortex-m4
+  - -mthumb
+  - -mfloat-abi=hard
+  - -mfpu=auto
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32f4/opteni2c1.yml b/spec/build/bsps/arm/stm32f4/opteni2c1.yml
index ab8dd78926..dbb47cf63a 100644
--- a/spec/build/bsps/arm/stm32f4/opteni2c1.yml
+++ b/spec/build/bsps/arm/stm32f4/opteni2c1.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - arm/stm32f105rc
+default:
+- enabled-by: arm/stm32f105rc
+  value: true
+- enabled-by: true
+  value: false
 description: |
   enable I2C 1
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32f4/opteni2c2.yml b/spec/build/bsps/arm/stm32f4/opteni2c2.yml
index d4ef7328e1..4206c3e619 100644
--- a/spec/build/bsps/arm/stm32f4/opteni2c2.yml
+++ b/spec/build/bsps/arm/stm32f4/opteni2c2.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   enable I2C 2
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32f4/optenuart4.yml b/spec/build/bsps/arm/stm32f4/optenuart4.yml
index 5bf266707f..adff97c933 100644
--- a/spec/build/bsps/arm/stm32f4/optenuart4.yml
+++ b/spec/build/bsps/arm/stm32f4/optenuart4.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   enable UART 4
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32f4/optenuart5.yml b/spec/build/bsps/arm/stm32f4/optenuart5.yml
index 21f1e6f963..ed52ec5b2d 100644
--- a/spec/build/bsps/arm/stm32f4/optenuart5.yml
+++ b/spec/build/bsps/arm/stm32f4/optenuart5.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   enable UART 5
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32f4/optenusart1.yml b/spec/build/bsps/arm/stm32f4/optenusart1.yml
index 9fd8f99af2..cdb6a3b53c 100644
--- a/spec/build/bsps/arm/stm32f4/optenusart1.yml
+++ b/spec/build/bsps/arm/stm32f4/optenusart1.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   enable USART 1
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32f4/optenusart2.yml b/spec/build/bsps/arm/stm32f4/optenusart2.yml
index d9dd3a3d22..8bae93c1d8 100644
--- a/spec/build/bsps/arm/stm32f4/optenusart2.yml
+++ b/spec/build/bsps/arm/stm32f4/optenusart2.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   enable USART 2
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32f4/optenusart3.yml b/spec/build/bsps/arm/stm32f4/optenusart3.yml
index 3cc11ba79b..feb8c1f429 100644
--- a/spec/build/bsps/arm/stm32f4/optenusart3.yml
+++ b/spec/build/bsps/arm/stm32f4/optenusart3.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   enable USART 3
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32f4/optenusart6.yml b/spec/build/bsps/arm/stm32f4/optenusart6.yml
index 4e20fb4317..1755749163 100644
--- a/spec/build/bsps/arm/stm32f4/optenusart6.yml
+++ b/spec/build/bsps/arm/stm32f4/optenusart6.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   enable USART 6
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32f4/optf10xxx.yml b/spec/build/bsps/arm/stm32f4/optf10xxx.yml
index a1cc76ff37..2acf8248df 100644
--- a/spec/build/bsps/arm/stm32f4/optf10xxx.yml
+++ b/spec/build/bsps/arm/stm32f4/optf10xxx.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - arm/stm32f105rc
+default:
+- enabled-by: arm/stm32f105rc
+  value: true
+- enabled-by: true
+  value: false
 description: |
   Chip belongs to the STM32F10XXX family.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32f4/optf4xxxx.yml b/spec/build/bsps/arm/stm32f4/optf4xxxx.yml
index 891aacc3c3..a7d4aa9003 100644
--- a/spec/build/bsps/arm/stm32f4/optf4xxxx.yml
+++ b/spec/build/bsps/arm/stm32f4/optf4xxxx.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - arm/stm32f4
+default:
+- enabled-by: arm/stm32f4
+  value: true
+- enabled-by: true
+  value: false
 description: |
   Chip belongs to the STM32F4XXXX family.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32f4/opthclk.yml b/spec/build/bsps/arm/stm32f4/opthclk.yml
index b827fffe33..dc1f69b81e 100644
--- a/spec/build/bsps/arm/stm32f4/opthclk.yml
+++ b/spec/build/bsps/arm/stm32f4/opthclk.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 16000000
-default-by-variant:
-- value: 8000000
-  variants:
-  - arm/stm32f105rc
+default:
+- enabled-by: arm/stm32f105rc
+  value: 8000000
+- enabled-by: true
+  value: 16000000
 description: |
   HCLK frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32f4/optoschse.yml b/spec/build/bsps/arm/stm32f4/optoschse.yml
index 2b1dad620e..047b5d98a9 100644
--- a/spec/build/bsps/arm/stm32f4/optoschse.yml
+++ b/spec/build/bsps/arm/stm32f4/optoschse.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 8000000
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 8000000
 description: |
   HSE oscillator frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32f4/optpclk1.yml b/spec/build/bsps/arm/stm32f4/optpclk1.yml
index 79aafa89a9..493534ad1c 100644
--- a/spec/build/bsps/arm/stm32f4/optpclk1.yml
+++ b/spec/build/bsps/arm/stm32f4/optpclk1.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 16000000
-default-by-variant:
-- value: 8000000
-  variants:
-  - arm/stm32f105rc
+default:
+- enabled-by: arm/stm32f105rc
+  value: 8000000
+- enabled-by: true
+  value: 16000000
 description: |
   PCLK1 frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32f4/optpclk2.yml b/spec/build/bsps/arm/stm32f4/optpclk2.yml
index 43ce9f9c04..ab25ee194b 100644
--- a/spec/build/bsps/arm/stm32f4/optpclk2.yml
+++ b/spec/build/bsps/arm/stm32f4/optpclk2.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 16000000
-default-by-variant:
-- value: 8000000
-  variants:
-  - arm/stm32f105rc
+default:
+- enabled-by: arm/stm32f105rc
+  value: 8000000
+- enabled-by: true
+  value: 16000000
 description: |
   PCLK2 frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32f4/optsysclk.yml b/spec/build/bsps/arm/stm32f4/optsysclk.yml
index 9dd081d475..d70078e2f5 100644
--- a/spec/build/bsps/arm/stm32f4/optsysclk.yml
+++ b/spec/build/bsps/arm/stm32f4/optsysclk.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 16000000
-default-by-variant:
-- value: 8000000
-  variants:
-  - arm/stm32f105rc
+default:
+- enabled-by: arm/stm32f105rc
+  value: 8000000
+- enabled-by: true
+  value: 16000000
 description: |
   SYSCLK frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32f4/optusartbaud.yml b/spec/build/bsps/arm/stm32f4/optusartbaud.yml
index b102e37eb6..8d4462cacd 100644
--- a/spec/build/bsps/arm/stm32f4/optusartbaud.yml
+++ b/spec/build/bsps/arm/stm32f4/optusartbaud.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 115200
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 115200
 description: |
   baud for USARTs
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32f4/tststm32f105rc.yml b/spec/build/bsps/arm/stm32f4/tststm32f105rc.yml
index 331c0f36fe..acb0485374 100644
--- a/spec/build/bsps/arm/stm32f4/tststm32f105rc.yml
+++ b/spec/build/bsps/arm/stm32f4/tststm32f105rc.yml
@@ -10,8 +10,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/arm/stm32h7/abi.yml b/spec/build/bsps/arm/stm32h7/abi.yml
index 27da264d03..2289c595bf 100644
--- a/spec/build/bsps/arm/stm32h7/abi.yml
+++ b/spec/build/bsps/arm/stm32h7/abi.yml
@@ -7,19 +7,20 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mthumb
-- -mcpu=cortex-m7
-- -mfpu=fpv5-d16
-- -mfloat-abi=hard
-default-by-variant:
-- value:
+- enabled-by:
+  - arm/stm32h747i-disco-m4
+  - arm/stm32h757i-eval-m4
+  value:
   - -mthumb
   - -mcpu=cortex-m4
   - -mfpu=fpv4-sp-d16
   - -mfloat-abi=hard
-  variants:
-  - arm/stm32h747i-disco-m4
-  - arm/stm32h757i-eval-m4
+- enabled-by: true
+  value:
+  - -mthumb
+  - -mcpu=cortex-m7
+  - -mfpu=fpv5-d16
+  - -mfloat-abi=hard
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optbootcore.yml b/spec/build/bsps/arm/stm32h7/optbootcore.yml
index c248939bbe..1aa3cbd8e4 100644
--- a/spec/build/bsps/arm/stm32h7/optbootcore.yml
+++ b/spec/build/bsps/arm/stm32h7/optbootcore.yml
@@ -9,16 +9,17 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 Karel Gardas <karel at functional.vision>
-default: BOOT_CORE_DEFINE_NOT_NEEDED
-default-by-variant:
-- value: CORE_CM7
-  variants:
+default:
+- enabled-by:
   - arm/stm32h747i-disco
   - arm/stm32h757i-eval
-- value: CORE_CM4
-  variants:
+  value: CORE_CM7
+- enabled-by:
   - arm/stm32h747i-disco-m4
   - arm/stm32h757i-eval-m4
+  value: CORE_CM4
+- enabled-by: true
+  value: BOOT_CORE_DEFINE_NOT_NEEDED
 description: |
   Select the boot core. Possible values are CORE_CM7 and CORE_CM4
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optenmpualign.yml b/spec/build/bsps/arm/stm32h7/optenmpualign.yml
index 407a824b36..f7fe5447e4 100644
--- a/spec/build/bsps/arm/stm32h7/optenmpualign.yml
+++ b/spec/build/bsps/arm/stm32h7/optenmpualign.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   Enable the alignment of the size of the combined start and text sections and
   the rodata section to meet MPU region alignment requirements.  This increases
diff --git a/spec/build/bsps/arm/stm32h7/optenuart4.yml b/spec/build/bsps/arm/stm32h7/optenuart4.yml
index b95b2372f7..e3d8a43b2b 100644
--- a/spec/build/bsps/arm/stm32h7/optenuart4.yml
+++ b/spec/build/bsps/arm/stm32h7/optenuart4.yml
@@ -5,14 +5,15 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
+default:
+- enabled-by:
   - arm/stm32h747i-disco
   - arm/stm32h747i-disco-m4
   - arm/stm32h757i-eval
   - arm/stm32h757i-eval-m4
+  value: false
+- enabled-by: true
+  value: true
 description: |
   Enable UART4 device in console driver.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optenuart5.yml b/spec/build/bsps/arm/stm32h7/optenuart5.yml
index db70f25470..6f116c4f8f 100644
--- a/spec/build/bsps/arm/stm32h7/optenuart5.yml
+++ b/spec/build/bsps/arm/stm32h7/optenuart5.yml
@@ -5,15 +5,16 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
+default:
+- enabled-by:
   - arm/stm32h747i-disco
   - arm/stm32h747i-disco-m4
   - arm/stm32h757i-eval
   - arm/stm32h757i-eval-m4
   - arm/stm32h7b3i-dk
+  value: false
+- enabled-by: true
+  value: true
 description: |
   Enable UART5 device in console driver.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optenuart7.yml b/spec/build/bsps/arm/stm32h7/optenuart7.yml
index 6fdc57cec8..42a425ae1d 100644
--- a/spec/build/bsps/arm/stm32h7/optenuart7.yml
+++ b/spec/build/bsps/arm/stm32h7/optenuart7.yml
@@ -5,15 +5,16 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
+default:
+- enabled-by:
   - arm/stm32h747i-disco
   - arm/stm32h747i-disco-m4
   - arm/stm32h757i-eval
   - arm/stm32h757i-eval-m4
   - arm/stm32h7b3i-dk
+  value: false
+- enabled-by: true
+  value: true
 description: |
   Enable UART7 device in console driver.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optenuart8.yml b/spec/build/bsps/arm/stm32h7/optenuart8.yml
index 0dc550d701..b933a291dd 100644
--- a/spec/build/bsps/arm/stm32h7/optenuart8.yml
+++ b/spec/build/bsps/arm/stm32h7/optenuart8.yml
@@ -5,13 +5,14 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
+default:
+- enabled-by:
   - arm/stm32h757i-eval
   - arm/stm32h757i-eval-m4
   - arm/stm32h7b3i-dk
+  value: false
+- enabled-by: true
+  value: true
 description: |
   Enable UART8 device in console driver.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optenuart9.yml b/spec/build/bsps/arm/stm32h7/optenuart9.yml
index 9c364b7fec..78354328ae 100644
--- a/spec/build/bsps/arm/stm32h7/optenuart9.yml
+++ b/spec/build/bsps/arm/stm32h7/optenuart9.yml
@@ -5,15 +5,16 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
+default:
+- enabled-by:
   - arm/stm32h747i-disco
   - arm/stm32h747i-disco-m4
   - arm/stm32h757i-eval
   - arm/stm32h757i-eval-m4
   - arm/stm32h7b3i-dk
+  value: false
+- enabled-by: true
+  value: true
 description: |
   Enable UART9 device in console driver.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optenusart1.yml b/spec/build/bsps/arm/stm32h7/optenusart1.yml
index 2ed54158b3..6707415008 100644
--- a/spec/build/bsps/arm/stm32h7/optenusart1.yml
+++ b/spec/build/bsps/arm/stm32h7/optenusart1.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   Enable USART1 device in console driver.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optenusart10.yml b/spec/build/bsps/arm/stm32h7/optenusart10.yml
index a23ce86e7e..3822b0af78 100644
--- a/spec/build/bsps/arm/stm32h7/optenusart10.yml
+++ b/spec/build/bsps/arm/stm32h7/optenusart10.yml
@@ -5,15 +5,16 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
+default:
+- enabled-by:
   - arm/stm32h747i-disco
   - arm/stm32h747i-disco-m4
   - arm/stm32h757i-eval
   - arm/stm32h757i-eval-m4
   - arm/stm32h7b3i-dk
+  value: false
+- enabled-by: true
+  value: true
 description: |
   Enable USART10 device in console driver.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optenusart2.yml b/spec/build/bsps/arm/stm32h7/optenusart2.yml
index 482b31e794..1156853139 100644
--- a/spec/build/bsps/arm/stm32h7/optenusart2.yml
+++ b/spec/build/bsps/arm/stm32h7/optenusart2.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
+default:
+- enabled-by:
   - arm/stm32h757i-eval
   - arm/stm32h757i-eval-m4
+  value: false
+- enabled-by: true
+  value: true
 description: |
   Enable USART2 device in console driver.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optenusart3.yml b/spec/build/bsps/arm/stm32h7/optenusart3.yml
index 48f5ce7e9f..0b4adad549 100644
--- a/spec/build/bsps/arm/stm32h7/optenusart3.yml
+++ b/spec/build/bsps/arm/stm32h7/optenusart3.yml
@@ -5,15 +5,16 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
+default:
+- enabled-by:
   - arm/stm32h747i-disco
   - arm/stm32h747i-disco-m4
   - arm/stm32h757i-eval
   - arm/stm32h757i-eval-m4
   - arm/stm32h7b3i-dk
+  value: false
+- enabled-by: true
+  value: true
 description: |
   Enable USART3 device in console driver.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optenusart6.yml b/spec/build/bsps/arm/stm32h7/optenusart6.yml
index 1090bbce39..a1efb0dc80 100644
--- a/spec/build/bsps/arm/stm32h7/optenusart6.yml
+++ b/spec/build/bsps/arm/stm32h7/optenusart6.yml
@@ -5,15 +5,16 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
+default:
+- enabled-by:
   - arm/stm32h747i-disco
   - arm/stm32h747i-disco-m4
   - arm/stm32h757i-eval
   - arm/stm32h757i-eval-m4
   - arm/stm32h7b3i-dk
+  value: false
+- enabled-by: true
+  value: true
 description: |
   Enable USART6 device in console driver.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optethgpiobregs.yml b/spec/build/bsps/arm/stm32h7/optethgpiobregs.yml
index 168e235719..aae049fa2d 100644
--- a/spec/build/bsps/arm/stm32h7/optethgpiobregs.yml
+++ b/spec/build/bsps/arm/stm32h7/optethgpiobregs.yml
@@ -5,11 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant:
-- value: GPIO_PIN_13
-  variants:
-  - arm/nucleo-h743zi
+default:
+- enabled-by: arm/nucleo-h743zi
+  value: GPIO_PIN_13
 description: |
   GPIO B pins used for the ETH pin configuration.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optethgpiogregs.yml b/spec/build/bsps/arm/stm32h7/optethgpiogregs.yml
index 74a4286310..7c6ac690f1 100644
--- a/spec/build/bsps/arm/stm32h7/optethgpiogregs.yml
+++ b/spec/build/bsps/arm/stm32h7/optethgpiogregs.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
-default: ( GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 )
-default-by-variant:
-- value: ( GPIO_PIN_2 | GPIO_PIN_11 | GPIO_PIN_13 )
-  variants:
-  - arm/nucleo-h743zi
+default:
+- enabled-by: arm/nucleo-h743zi
+  value: ( GPIO_PIN_2 | GPIO_PIN_11 | GPIO_PIN_13 )
+- enabled-by: true
+  value: ( GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 )
 description: |
   GPIO G pins used for the ETH pin configuration.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/opthse.yml b/spec/build/bsps/arm/stm32h7/opthse.yml
index debccdc686..336575638a 100644
--- a/spec/build/bsps/arm/stm32h7/opthse.yml
+++ b/spec/build/bsps/arm/stm32h7/opthse.yml
@@ -6,14 +6,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
-default: 25000000
-default-by-variant:
-- value: 8000000
-  variants:
-  - arm/nucleo-h743zi
-- value: 24000000
-  variants:
-  - arm/stm32h7b3i-dk
+default:
+- enabled-by: arm/nucleo-h743zi
+  value: 8000000
+- enabled-by: arm/stm32h7b3i-dk
+  value: 24000000
+- enabled-by: true
+  value: 25000000
 description: |
   Frequency of the external high speed oscillator (HSE).
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optlinkcmds.yml b/spec/build/bsps/arm/stm32h7/optlinkcmds.yml
index ed10fe94d1..d558c519cb 100644
--- a/spec/build/bsps/arm/stm32h7/optlinkcmds.yml
+++ b/spec/build/bsps/arm/stm32h7/optlinkcmds.yml
@@ -5,16 +5,17 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: linkcmds.sdram
-default-by-variant:
-- value: linkcmds.flash
-  variants:
+default:
+- enabled-by:
   - arm/nucleo-h743zi
   - arm/stm32h747i-disco
   - arm/stm32h747i-disco-m4
   - arm/stm32h757i-eval
   - arm/stm32h757i-eval-m4
   - arm/stm32h7b3i-dk
+  value: linkcmds.flash
+- enabled-by: true
+  value: linkcmds.sdram
 description: |
   The default linker command file.  Must be either linkcmds.flash,
   linkcmds.sdram, linkcmds.sram, linkcmds.sram_sdram
diff --git a/spec/build/bsps/arm/stm32h7/optmemdtcmsz.yml b/spec/build/bsps/arm/stm32h7/optmemdtcmsz.yml
index 24275653e8..29c1caea99 100644
--- a/spec/build/bsps/arm/stm32h7/optmemdtcmsz.yml
+++ b/spec/build/bsps/arm/stm32h7/optmemdtcmsz.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 131072
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 131072
 description: |
   Size of the Data Tightly Coupled Memory (DTCM) in bytes.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optmemflashlatency.yml b/spec/build/bsps/arm/stm32h7/optmemflashlatency.yml
index 0f0c673ee8..facee637dc 100644
--- a/spec/build/bsps/arm/stm32h7/optmemflashlatency.yml
+++ b/spec/build/bsps/arm/stm32h7/optmemflashlatency.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 Karel Gardas <karel at functional.vision>
-default: FLASH_LATENCY_4
-default-by-variant:
-- value: FLASH_LATENCY_6
-  variants:
-  - arm/stm32h7b3i-dk
+default:
+- enabled-by: arm/stm32h7b3i-dk
+  value: FLASH_LATENCY_6
+- enabled-by: true
+  value: FLASH_LATENCY_4
 description: |
   Internal Flash latency
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optmemflashorigin.yml b/spec/build/bsps/arm/stm32h7/optmemflashorigin.yml
index f3e1cfcf0e..166da98f99 100644
--- a/spec/build/bsps/arm/stm32h7/optmemflashorigin.yml
+++ b/spec/build/bsps/arm/stm32h7/optmemflashorigin.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 134217728
-default-by-variant:
-- value: 135266304
-  variants:
+default:
+- enabled-by:
   - arm/stm32h747i-disco-m4
   - arm/stm32h757i-eval-m4
+  value: 135266304
+- enabled-by: true
+  value: 134217728
 description: |
   Origin address of the internal flash.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optmemflashsz.yml b/spec/build/bsps/arm/stm32h7/optmemflashsz.yml
index ca845b968e..f85b2313c8 100644
--- a/spec/build/bsps/arm/stm32h7/optmemflashsz.yml
+++ b/spec/build/bsps/arm/stm32h7/optmemflashsz.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 2097152
-default-by-variant:
-- value: 1048576
-  variants:
+default:
+- enabled-by:
   - arm/stm32h747i-disco-m4
   - arm/stm32h757i-eval-m4
+  value: 1048576
+- enabled-by: true
+  value: 2097152
 description: |
   Size of the internal flash in bytes.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optmemitcmsz.yml b/spec/build/bsps/arm/stm32h7/optmemitcmsz.yml
index f6f5dd5dba..bda676b821 100644
--- a/spec/build/bsps/arm/stm32h7/optmemitcmsz.yml
+++ b/spec/build/bsps/arm/stm32h7/optmemitcmsz.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 65280
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 65280
 description: |
   Size of the Instruction Tightly Coupled Memory (ITCM) in bytes.  The size
   must take the NULL pointer protection memory area into account
diff --git a/spec/build/bsps/arm/stm32h7/optmemnandsz.yml b/spec/build/bsps/arm/stm32h7/optmemnandsz.yml
index 9b67375713..b009cb31de 100644
--- a/spec/build/bsps/arm/stm32h7/optmemnandsz.yml
+++ b/spec/build/bsps/arm/stm32h7/optmemnandsz.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: |
   Size of the NAND flash in bytes.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optmemnorsz.yml b/spec/build/bsps/arm/stm32h7/optmemnorsz.yml
index 567efe1261..9e0b1b1c2c 100644
--- a/spec/build/bsps/arm/stm32h7/optmemnorsz.yml
+++ b/spec/build/bsps/arm/stm32h7/optmemnorsz.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: |
   Size of the NOR flash or PSRAM in bytes.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optmemnullsz.yml b/spec/build/bsps/arm/stm32h7/optmemnullsz.yml
index 68ce7e5f00..5c6b3ceccd 100644
--- a/spec/build/bsps/arm/stm32h7/optmemnullsz.yml
+++ b/spec/build/bsps/arm/stm32h7/optmemnullsz.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 256
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 256
 description: |
   Size of the NULL pointer protection area in bytes.  This memory area reduces
   the size of the ITCM available to the application (STM32H7_MEMORY_ITCM_SIZE).
diff --git a/spec/build/bsps/arm/stm32h7/optmemperipheralsz.yml b/spec/build/bsps/arm/stm32h7/optmemperipheralsz.yml
index 103f85890d..9e7a73faf2 100644
--- a/spec/build/bsps/arm/stm32h7/optmemperipheralsz.yml
+++ b/spec/build/bsps/arm/stm32h7/optmemperipheralsz.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 536870912
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 536870912
 description: |
   Size of the peripheral memory in bytes.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optmemquadspisz.yml b/spec/build/bsps/arm/stm32h7/optmemquadspisz.yml
index a2d5cdaeb3..ef43d141ab 100644
--- a/spec/build/bsps/arm/stm32h7/optmemquadspisz.yml
+++ b/spec/build/bsps/arm/stm32h7/optmemquadspisz.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: |
   Size of the QUADSPI memory in bytes.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optmemsdram1sz.yml b/spec/build/bsps/arm/stm32h7/optmemsdram1sz.yml
index c9ec44ec3f..59806b578f 100644
--- a/spec/build/bsps/arm/stm32h7/optmemsdram1sz.yml
+++ b/spec/build/bsps/arm/stm32h7/optmemsdram1sz.yml
@@ -5,16 +5,17 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 33554432
-default-by-variant:
-- value: 0
-  variants:
+default:
+- enabled-by:
   - arm/nucleo-h743zi
   - arm/stm32h747i-disco
   - arm/stm32h747i-disco-m4
   - arm/stm32h757i-eval
   - arm/stm32h757i-eval-m4
   - arm/stm32h7b3i-dk
+  value: 0
+- enabled-by: true
+  value: 33554432
 description: |
   Size of the SDRAM 1 in bytes.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optmemsdram2sz.yml b/spec/build/bsps/arm/stm32h7/optmemsdram2sz.yml
index 1b8d4a2b4c..fe6d8bf3a7 100644
--- a/spec/build/bsps/arm/stm32h7/optmemsdram2sz.yml
+++ b/spec/build/bsps/arm/stm32h7/optmemsdram2sz.yml
@@ -5,14 +5,15 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant:
-- value: 33554432
-  variants:
+default:
+- enabled-by:
   - arm/stm32h747i-disco
   - arm/stm32h747i-disco-m4
   - arm/stm32h757i-eval
   - arm/stm32h757i-eval-m4
+  value: 33554432
+- enabled-by: true
+  value: 0
 description: |
   Size of the SDRAM 2 in bytes.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optmemsram1sz.yml b/spec/build/bsps/arm/stm32h7/optmemsram1sz.yml
index 75882ea609..03dd052eaa 100644
--- a/spec/build/bsps/arm/stm32h7/optmemsram1sz.yml
+++ b/spec/build/bsps/arm/stm32h7/optmemsram1sz.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 131072
-default-by-variant:
-- value: 65536
-  variants:
-  - arm/stm32h7b3i-dk
+default:
+- enabled-by: arm/stm32h7b3i-dk
+  value: 65536
+- enabled-by: true
+  value: 131072
 description: |
   Size of the SRAM 1 (D2 domain) in bytes.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optmemsram2sz.yml b/spec/build/bsps/arm/stm32h7/optmemsram2sz.yml
index 2a16a072b4..50e808e4ed 100644
--- a/spec/build/bsps/arm/stm32h7/optmemsram2sz.yml
+++ b/spec/build/bsps/arm/stm32h7/optmemsram2sz.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 131072
-default-by-variant:
-- value: 65536
-  variants:
-  - arm/stm32h7b3i-dk
+default:
+- enabled-by: arm/stm32h7b3i-dk
+  value: 65536
+- enabled-by: true
+  value: 131072
 description: |
   Size of the SRAM 2 (D2 domain) in bytes.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optmemsram3sz.yml b/spec/build/bsps/arm/stm32h7/optmemsram3sz.yml
index f13797761d..ee168b7681 100644
--- a/spec/build/bsps/arm/stm32h7/optmemsram3sz.yml
+++ b/spec/build/bsps/arm/stm32h7/optmemsram3sz.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 32768
-default-by-variant:
-- value: 0
-  variants:
-  - arm/stm32h7b3i-dk
+default:
+- enabled-by: arm/stm32h7b3i-dk
+  value: 0
+- enabled-by: true
+  value: 32768
 description: |
   Size of the SRAM 3 (D2 domain) in bytes.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optmemsram4sz.yml b/spec/build/bsps/arm/stm32h7/optmemsram4sz.yml
index 9729df362f..eec77b6118 100644
--- a/spec/build/bsps/arm/stm32h7/optmemsram4sz.yml
+++ b/spec/build/bsps/arm/stm32h7/optmemsram4sz.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 65536
-default-by-variant:
-- value: 32768
-  variants:
-  - arm/stm32h7b3i-dk
+default:
+- enabled-by: arm/stm32h7b3i-dk
+  value: 32768
+- enabled-by: true
+  value: 65536
 description: |
   Size of the SRAM 4 (D3 domain) in bytes.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optmemsramaxisz.yml b/spec/build/bsps/arm/stm32h7/optmemsramaxisz.yml
index 939125b28f..70ef86a11e 100644
--- a/spec/build/bsps/arm/stm32h7/optmemsramaxisz.yml
+++ b/spec/build/bsps/arm/stm32h7/optmemsramaxisz.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 524288
-default-by-variant:
-- value: 655360
-  variants:
-  - arm/stm32h7b3i-dk
+default:
+- enabled-by: arm/stm32h7b3i-dk
+  value: 655360
+- enabled-by: true
+  value: 524288
 description: |
   Size of the AXI SRAM (D1 domain) in bytes.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optmemsrambackupsz.yml b/spec/build/bsps/arm/stm32h7/optmemsrambackupsz.yml
index 84e4d362ab..e920f45b33 100644
--- a/spec/build/bsps/arm/stm32h7/optmemsrambackupsz.yml
+++ b/spec/build/bsps/arm/stm32h7/optmemsrambackupsz.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 4096
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 4096
 description: |
   Size of backup SRAM in bytes.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optprintkinstance.yml b/spec/build/bsps/arm/stm32h7/optprintkinstance.yml
index 16c1b4238b..be5d14e05b 100644
--- a/spec/build/bsps/arm/stm32h7/optprintkinstance.yml
+++ b/spec/build/bsps/arm/stm32h7/optprintkinstance.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: stm32h7_usart1_instance
-default-by-variant:
-- value: stm32h7_usart3_instance
-  variants:
-  - arm/nucleo-h743zi
+default:
+- enabled-by: arm/nucleo-h743zi
+  value: stm32h7_usart3_instance
+- enabled-by: true
+  value: stm32h7_usart1_instance
 description: |
   UART/USART instance used for printk() and getchark().
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optpwrsupply.yml b/spec/build/bsps/arm/stm32h7/optpwrsupply.yml
index 6534cf6143..2fec330314 100644
--- a/spec/build/bsps/arm/stm32h7/optpwrsupply.yml
+++ b/spec/build/bsps/arm/stm32h7/optpwrsupply.yml
@@ -5,15 +5,16 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 Karel Gardas <karel at functional.vision>
-default: PWR_LDO_SUPPLY
-default-by-variant:
-- value: PWR_DIRECT_SMPS_SUPPLY
-  variants:
+default:
+- enabled-by:
   - arm/stm32h747i-disco
   - arm/stm32h747i-disco-m4
   - arm/stm32h757i-eval
   - arm/stm32h757i-eval-m4
   - arm/stm32h7b3i-dk
+  value: PWR_DIRECT_SMPS_SUPPLY
+- enabled-by: true
+  value: PWR_LDO_SUPPLY
 description: |
   Board power supply mechanism configuration. WARNING: wrong configuration here
   may result in your board being unaccessible using ST-Link interface! Please
diff --git a/spec/build/bsps/arm/stm32h7/optusart1alternatefunc.yml b/spec/build/bsps/arm/stm32h7/optusart1alternatefunc.yml
index e0f39814e8..b4b2b6b774 100644
--- a/spec/build/bsps/arm/stm32h7/optusart1alternatefunc.yml
+++ b/spec/build/bsps/arm/stm32h7/optusart1alternatefunc.yml
@@ -5,13 +5,14 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 Karel Gardas <karel at functional.vision>
-default: GPIO_AF4_USART1
-default-by-variant:
-- value: GPIO_AF7_USART1
-  variants:
+default:
+- enabled-by:
   - arm/stm32h747i-disco
   - arm/stm32h747i-disco-m4
   - arm/stm32h7b3i-dk
+  value: GPIO_AF7_USART1
+- enabled-by: true
+  value: GPIO_AF4_USART1
 description: |
   Alternate function mapping for the USART1 pin configuration.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optusart1gpiopins.yml b/spec/build/bsps/arm/stm32h7/optusart1gpiopins.yml
index cc81ce408b..219e9705f7 100644
--- a/spec/build/bsps/arm/stm32h7/optusart1gpiopins.yml
+++ b/spec/build/bsps/arm/stm32h7/optusart1gpiopins.yml
@@ -5,13 +5,14 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021-22 embedded brains GmbH (http://www.embedded-brains.de)
-default: ( GPIO_PIN_14 | GPIO_PIN_15 )
-default-by-variant:
-- value: ( GPIO_PIN_9 | GPIO_PIN_10 )
-  variants:
+default:
+- enabled-by:
   - arm/stm32h747i-disco
   - arm/stm32h747i-disco-m4
   - arm/stm32h7b3i-dk
+  value: ( GPIO_PIN_9 | GPIO_PIN_10 )
+- enabled-by: true
+  value: ( GPIO_PIN_14 | GPIO_PIN_15 )
 description: |
   GPIO pins used for the USART1 pin configuration.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optusart1gpioregs.yml b/spec/build/bsps/arm/stm32h7/optusart1gpioregs.yml
index 890579b9f8..f9de4981e6 100644
--- a/spec/build/bsps/arm/stm32h7/optusart1gpioregs.yml
+++ b/spec/build/bsps/arm/stm32h7/optusart1gpioregs.yml
@@ -5,17 +5,18 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
-default: GPIOD
-default-by-variant:
-- value: GPIOA
-  variants:
+default:
+- enabled-by:
   - arm/stm32h747i-disco
   - arm/stm32h747i-disco-m4
   - arm/stm32h7b3i-dk
-- value: GPIOB
-  variants:
+  value: GPIOA
+- enabled-by:
   - arm/stm32h757i-eval
   - arm/stm32h757i-eval-m4
+  value: GPIOB
+- enabled-by: true
+  value: GPIOD
 description: |
   GPIO registers used for the USART1 pin configuration.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optusart3gpiopins.yml b/spec/build/bsps/arm/stm32h7/optusart3gpiopins.yml
index f946bbd2a6..25339aefbb 100644
--- a/spec/build/bsps/arm/stm32h7/optusart3gpiopins.yml
+++ b/spec/build/bsps/arm/stm32h7/optusart3gpiopins.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
-default: ( GPIO_PIN_8 | GPIO_PIN_9 )
-default-by-variant: []
+default:
+- enabled-by: true
+  value: ( GPIO_PIN_8 | GPIO_PIN_9 )
 description: |
   GPIO pins used for the USART3 pin configuration.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optusart3gpioregs.yml b/spec/build/bsps/arm/stm32h7/optusart3gpioregs.yml
index 3485b4fdb8..f227c5cfdf 100644
--- a/spec/build/bsps/arm/stm32h7/optusart3gpioregs.yml
+++ b/spec/build/bsps/arm/stm32h7/optusart3gpioregs.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
-default: GPIOD
-default-by-variant: []
+default:
+- enabled-by: true
+  value: GPIOD
 description: |
   GPIO registers used for the USART3 pin configuration.
 enabled-by: true
diff --git a/spec/build/bsps/arm/stm32h7/optvariant.yml b/spec/build/bsps/arm/stm32h7/optvariant.yml
index c5c0ce65dc..e6324c644d 100644
--- a/spec/build/bsps/arm/stm32h7/optvariant.yml
+++ b/spec/build/bsps/arm/stm32h7/optvariant.yml
@@ -15,19 +15,19 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: STM32H743xx
-default-by-variant:
-- value: STM32H7B3xxQ
-  variants:
-  - arm/stm32h7b3i-dk
-- value: STM32H757xx
-  variants:
+default:
+- enabled-by: arm/stm32h7b3i-dk
+  value: STM32H7B3xxQ
+- enabled-by:
   - arm/stm32h757i-eval
   - arm/stm32h757i-eval-m4
-- value: STM32H747xx
-  variants:
+  value: STM32H757xx
+- enabled-by:
   - arm/stm32h747i-disco
   - arm/stm32h747i-disco-m4
+  value: STM32H747xx
+- enabled-by: true
+  value: STM32H743xx
 description: |
   Select the STM32H7 series chip variant out of STM32H742xx, STM32H743xx,
   STM32H745xx, STM32H747xx, STM32H750xx, STM32H753xx, STM32H755xx, STM32H757xx,
diff --git a/spec/build/bsps/arm/stm32h7/tststm32h757i-eval.yml b/spec/build/bsps/arm/stm32h7/tststm32h757i-eval.yml
index 06a33aa391..c3535088d3 100644
--- a/spec/build/bsps/arm/stm32h7/tststm32h757i-eval.yml
+++ b/spec/build/bsps/arm/stm32h7/tststm32h757i-eval.yml
@@ -7,8 +7,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/arm/tms570/abi.yml b/spec/build/bsps/arm/tms570/abi.yml
index 0177616e2a..e80655211d 100644
--- a/spec/build/bsps/arm/tms570/abi.yml
+++ b/spec/build/bsps/arm/tms570/abi.yml
@@ -7,12 +7,13 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -march=armv7-r
-- -mthumb
-- -mbig-endian
-- -mfpu=vfpv3-d16
-- -mfloat-abi=hard
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -march=armv7-r
+  - -mthumb
+  - -mbig-endian
+  - -mfpu=vfpv3-d16
+  - -mfloat-abi=hard
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/arm/tms570/optcclk.yml b/spec/build/bsps/arm/tms570/optcclk.yml
index 674ec1ac86..d5c2e0ded9 100644
--- a/spec/build/bsps/arm/tms570/optcclk.yml
+++ b/spec/build/bsps/arm/tms570/optcclk.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 96000000
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 96000000
 description: |
   CPU clock in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/tms570/optconirq.yml b/spec/build/bsps/arm/tms570/optconirq.yml
index 3e3dc5a836..52c01ab30f 100644
--- a/spec/build/bsps/arm/tms570/optconirq.yml
+++ b/spec/build/bsps/arm/tms570/optconirq.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1
 description: |
   The tms570 console driver can operate in either polled or interrupt mode.
 enabled-by: true
diff --git a/spec/build/bsps/arm/tms570/optlinkflags.yml b/spec/build/bsps/arm/tms570/optlinkflags.yml
index bf700031b7..5d4f83fdcd 100644
--- a/spec/build/bsps/arm/tms570/optlinkflags.yml
+++ b/spec/build/bsps/arm/tms570/optlinkflags.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mbe32
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mbe32
 description: |
   TMS570-specific flags passed to the linker.
 enabled-by: true
diff --git a/spec/build/bsps/arm/tms570/optlowinit.yml b/spec/build/bsps/arm/tms570/optlowinit.yml
index d889dd2573..d44febb791 100644
--- a/spec/build/bsps/arm/tms570/optlowinit.yml
+++ b/spec/build/bsps/arm/tms570/optlowinit.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Include BSP startup code for TMS570LS3137 which allows to start RTEMS application directly after reset
 enabled-by: true
diff --git a/spec/build/bsps/arm/tms570/optmintskstksz.yml b/spec/build/bsps/arm/tms570/optmintskstksz.yml
index 57e77ae551..5c4f2ce0b7 100644
--- a/spec/build/bsps/arm/tms570/optmintskstksz.yml
+++ b/spec/build/bsps/arm/tms570/optmintskstksz.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1024
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1024
 description: |
   Suggested minimum task stack size in bytes
 enabled-by: true
diff --git a/spec/build/bsps/arm/tms570/optoscmain.yml b/spec/build/bsps/arm/tms570/optoscmain.yml
index 8ebd6bb82d..f41fd3422c 100644
--- a/spec/build/bsps/arm/tms570/optoscmain.yml
+++ b/spec/build/bsps/arm/tms570/optoscmain.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 12000000
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 12000000
 description: |
   main oscillator frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/tms570/optoscrtc.yml b/spec/build/bsps/arm/tms570/optoscrtc.yml
index 8e14cbf9a8..b2f85e2c36 100644
--- a/spec/build/bsps/arm/tms570/optoscrtc.yml
+++ b/spec/build/bsps/arm/tms570/optoscrtc.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 32768
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 32768
 description: |
   RTC oscillator frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/tms570/optreginit.yml b/spec/build/bsps/arm/tms570/optreginit.yml
index 3f7e9f2bf2..d6cbd32196 100644
--- a/spec/build/bsps/arm/tms570/optreginit.yml
+++ b/spec/build/bsps/arm/tms570/optreginit.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   The TMS570 needs to have the registers of its CPU initialized to avoid CCMR4F errors
 enabled-by: true
diff --git a/spec/build/bsps/arm/tms570/optscibaud.yml b/spec/build/bsps/arm/tms570/optscibaud.yml
index e4eedd871b..d71df26b8c 100644
--- a/spec/build/bsps/arm/tms570/optscibaud.yml
+++ b/spec/build/bsps/arm/tms570/optscibaud.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 115200
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 115200
 description: |
   baud for UARTs
 enabled-by: true
diff --git a/spec/build/bsps/arm/tms570/opttms570ls3137.yml b/spec/build/bsps/arm/tms570/opttms570ls3137.yml
index 344f209ca1..fc33bdad5b 100644
--- a/spec/build/bsps/arm/tms570/opttms570ls3137.yml
+++ b/spec/build/bsps/arm/tms570/opttms570ls3137.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   target used for identify TMS570LS3137 board
 enabled-by: true
diff --git a/spec/build/bsps/arm/tms570/tstls3137hdkintram.yml b/spec/build/bsps/arm/tms570/tstls3137hdkintram.yml
index 3222cea9b2..0138538758 100644
--- a/spec/build/bsps/arm/tms570/tstls3137hdkintram.yml
+++ b/spec/build/bsps/arm/tms570/tstls3137hdkintram.yml
@@ -10,8 +10,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/arm/xen/abi.yml b/spec/build/bsps/arm/xen/abi.yml
index ed581d94f4..dbd1dfa9a6 100644
--- a/spec/build/bsps/arm/xen/abi.yml
+++ b/spec/build/bsps/arm/xen/abi.yml
@@ -7,11 +7,12 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -march=armv7-a
-- -mthumb
-- -mfpu=neon
-- -mfloat-abi=hard
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -march=armv7-a
+  - -mthumb
+  - -mfpu=neon
+  - -mfloat-abi=hard
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/arm/xen/optgentmunmask.yml b/spec/build/bsps/arm/xen/optgentmunmask.yml
index 1e7c523f15..ade26bd0b3 100644
--- a/spec/build/bsps/arm/xen/optgentmunmask.yml
+++ b/spec/build/bsps/arm/xen/optgentmunmask.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   unmask the timer in the tick handler, since Xen will mask the virtual timer before injecting the interrupt to the guest
 enabled-by: true
diff --git a/spec/build/bsps/arm/xen/optloadoff.yml b/spec/build/bsps/arm/xen/optloadoff.yml
index 4589807f88..269b6f3b79 100644
--- a/spec/build/bsps/arm/xen/optloadoff.yml
+++ b/spec/build/bsps/arm/xen/optloadoff.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 32768
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 32768
 description: |
   offset of RAM region from memory area base
 enabled-by: true
diff --git a/spec/build/bsps/arm/xen/optnocachelen.yml b/spec/build/bsps/arm/xen/optnocachelen.yml
index 389fbb596b..deda906578 100644
--- a/spec/build/bsps/arm/xen/optnocachelen.yml
+++ b/spec/build/bsps/arm/xen/optnocachelen.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1048576
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1048576
 description: |
   length of nocache RAM region
 enabled-by: true
diff --git a/spec/build/bsps/arm/xen/optramlen.yml b/spec/build/bsps/arm/xen/optramlen.yml
index 1d1b43615a..88d010434d 100644
--- a/spec/build/bsps/arm/xen/optramlen.yml
+++ b/spec/build/bsps/arm/xen/optramlen.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 8388608
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 8388608
 description: |
   length of memory area available to the BSP
 enabled-by: true
diff --git a/spec/build/bsps/arm/xen/optramori.yml b/spec/build/bsps/arm/xen/optramori.yml
index 95fbf64079..807fdddda8 100644
--- a/spec/build/bsps/arm/xen/optramori.yml
+++ b/spec/build/bsps/arm/xen/optramori.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1073741824
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1073741824
 description: |
   base address of memory area available to the BSP
 enabled-by: true
diff --git a/spec/build/bsps/arm/xen/optzimghdr.yml b/spec/build/bsps/arm/xen/optzimghdr.yml
index 56aa00c8b1..56eb40bde0 100644
--- a/spec/build/bsps/arm/xen/optzimghdr.yml
+++ b/spec/build/bsps/arm/xen/optzimghdr.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   include zImage boot header
 enabled-by: true
diff --git a/spec/build/bsps/arm/xilinx-zynq/abi.yml b/spec/build/bsps/arm/xilinx-zynq/abi.yml
index a3a710c97d..d3161d624d 100644
--- a/spec/build/bsps/arm/xilinx-zynq/abi.yml
+++ b/spec/build/bsps/arm/xilinx-zynq/abi.yml
@@ -7,12 +7,13 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -march=armv7-a
-- -mthumb
-- -mfpu=neon
-- -mfloat-abi=hard
-- -mtune=cortex-a9
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -march=armv7-a
+  - -mthumb
+  - -mfpu=neon
+  - -mfloat-abi=hard
+  - -mtune=cortex-a9
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/arm/xilinx-zynq/opta9periphclk.yml b/spec/build/bsps/arm/xilinx-zynq/opta9periphclk.yml
index 39cb972a74..d74103c349 100644
--- a/spec/build/bsps/arm/xilinx-zynq/opta9periphclk.yml
+++ b/spec/build/bsps/arm/xilinx-zynq/opta9periphclk.yml
@@ -5,14 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 100000000
-default-by-variant:
-- value: 333333333
-  variants:
-  - arm/xilinx_zynq_zc702
-- value: 666666667
-  variants:
-  - arm/xilinx_zynq_zedboard
+default:
+- enabled-by: arm/xilinx_zynq_zc702
+  value: 333333333
+- enabled-by: arm/xilinx_zynq_zedboard
+  value: 666666667
+- enabled-by: true
+  value: 100000000
 description: |
   ARM Cortex-A9 MPCore PERIPHCLK clock frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/xilinx-zynq/optcachedata.yml b/spec/build/bsps/arm/xilinx-zynq/optcachedata.yml
index 23b1410385..c86800df35 100644
--- a/spec/build/bsps/arm/xilinx-zynq/optcachedata.yml
+++ b/spec/build/bsps/arm/xilinx-zynq/optcachedata.yml
@@ -5,13 +5,14 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
+default:
+- enabled-by:
   - arm/lm3s6965_qemu
   - arm/realview_pbx_a9_qemu
   - arm/xilinx_zynq_a9_qemu
+  value: false
+- enabled-by: true
+  value: true
 description: |
   enable data cache
 enabled-by: true
diff --git a/spec/build/bsps/arm/xilinx-zynq/optcacheinst.yml b/spec/build/bsps/arm/xilinx-zynq/optcacheinst.yml
index f172cc4b58..90e0e1301a 100644
--- a/spec/build/bsps/arm/xilinx-zynq/optcacheinst.yml
+++ b/spec/build/bsps/arm/xilinx-zynq/optcacheinst.yml
@@ -5,13 +5,14 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
+default:
+- enabled-by:
   - arm/lm3s6965_qemu
   - arm/realview_pbx_a9_qemu
   - arm/xilinx_zynq_a9_qemu
+  value: false
+- enabled-by: true
+  value: true
 description: |
   enable instruction cache
 enabled-by: true
diff --git a/spec/build/bsps/arm/xilinx-zynq/optclkcpu1x.yml b/spec/build/bsps/arm/xilinx-zynq/optclkcpu1x.yml
index 57b7187cdf..5525a0a7b4 100644
--- a/spec/build/bsps/arm/xilinx-zynq/optclkcpu1x.yml
+++ b/spec/build/bsps/arm/xilinx-zynq/optclkcpu1x.yml
@@ -5,14 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 111111111
-default-by-variant:
-- value: 111111111
-  variants:
-  - arm/xilinx_zynq_zc702
-- value: 111111111
-  variants:
-  - arm/xilinx_zynq_zedboard
+default:
+- enabled-by: true
+  value: 111111111
 description: |
   Zynq cpu_1x clock frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/xilinx-zynq/optclkfastidle.yml b/spec/build/bsps/arm/xilinx-zynq/optclkfastidle.yml
index 61333a11f1..e303a8bf9f 100644
--- a/spec/build/bsps/arm/xilinx-zynq/optclkfastidle.yml
+++ b/spec/build/bsps/arm/xilinx-zynq/optclkfastidle.yml
@@ -5,13 +5,14 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - arm/lm3s6965_qemu
   - arm/realview_pbx_a9_qemu
   - arm/xilinx_zynq_a9_qemu
+  value: true
+- enabled-by: true
+  value: false
 description: |
   This sets a mode where the time runs as fast as possible when a clock ISR occurs while the IDLE thread is executing.  This can significantly reduce simulation times.
 enabled-by: true
diff --git a/spec/build/bsps/arm/xilinx-zynq/optclkuart.yml b/spec/build/bsps/arm/xilinx-zynq/optclkuart.yml
index 56a6056687..49a7216dd9 100644
--- a/spec/build/bsps/arm/xilinx-zynq/optclkuart.yml
+++ b/spec/build/bsps/arm/xilinx-zynq/optclkuart.yml
@@ -5,14 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 50000000
-default-by-variant:
-- value: 50000000
-  variants:
-  - arm/xilinx_zynq_zc702
-- value: 50000000
-  variants:
-  - arm/xilinx_zynq_zedboard
+default:
+- enabled-by: true
+  value: 50000000
 description: |
   Zynq UART clock frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/xilinx-zynq/optconirq.yml b/spec/build/bsps/arm/xilinx-zynq/optconirq.yml
index ecb91d81a3..ea13fa4561 100644
--- a/spec/build/bsps/arm/xilinx-zynq/optconirq.yml
+++ b/spec/build/bsps/arm/xilinx-zynq/optconirq.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   use interrupt driven mode for console devices (used by default)
 enabled-by: true
diff --git a/spec/build/bsps/arm/xilinx-zynq/optint0len.yml b/spec/build/bsps/arm/xilinx-zynq/optint0len.yml
index 90d77daeb7..359a678fd6 100644
--- a/spec/build/bsps/arm/xilinx-zynq/optint0len.yml
+++ b/spec/build/bsps/arm/xilinx-zynq/optint0len.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 196608
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 196608
 description: ''
 enabled-by: true
 format: '{:#010x}'
diff --git a/spec/build/bsps/arm/xilinx-zynq/optint0ori.yml b/spec/build/bsps/arm/xilinx-zynq/optint0ori.yml
index a8c4514fd9..2af22ca0e3 100644
--- a/spec/build/bsps/arm/xilinx-zynq/optint0ori.yml
+++ b/spec/build/bsps/arm/xilinx-zynq/optint0ori.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: ''
 enabled-by: true
 format: '{:#010x}'
diff --git a/spec/build/bsps/arm/xilinx-zynq/optint1len.yml b/spec/build/bsps/arm/xilinx-zynq/optint1len.yml
index 32a2c8f3d6..e186d3e5a3 100644
--- a/spec/build/bsps/arm/xilinx-zynq/optint1len.yml
+++ b/spec/build/bsps/arm/xilinx-zynq/optint1len.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 65024
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 65024
 description: ''
 enabled-by: true
 format: '{:#010x}'
diff --git a/spec/build/bsps/arm/xilinx-zynq/optint1ori.yml b/spec/build/bsps/arm/xilinx-zynq/optint1ori.yml
index f089c467c4..a823f75190 100644
--- a/spec/build/bsps/arm/xilinx-zynq/optint1ori.yml
+++ b/spec/build/bsps/arm/xilinx-zynq/optint1ori.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 4294901760
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 4294901760
 description: ''
 enabled-by: true
 format: '{:#010x}'
diff --git a/spec/build/bsps/arm/xilinx-zynq/optnocachelen.yml b/spec/build/bsps/arm/xilinx-zynq/optnocachelen.yml
index 7a553ab9a2..d7cfcb2a2e 100644
--- a/spec/build/bsps/arm/xilinx-zynq/optnocachelen.yml
+++ b/spec/build/bsps/arm/xilinx-zynq/optnocachelen.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1048576
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1048576
 description: |
   length of nocache RAM region
 enabled-by: true
diff --git a/spec/build/bsps/arm/xilinx-zynq/optramlen.yml b/spec/build/bsps/arm/xilinx-zynq/optramlen.yml
index e51d3ebf38..5a7df71eed 100644
--- a/spec/build/bsps/arm/xilinx-zynq/optramlen.yml
+++ b/spec/build/bsps/arm/xilinx-zynq/optramlen.yml
@@ -7,20 +7,15 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 268435456
-default-by-variant:
-- value: 268435456
-  variants:
-  - arm/xilinx_zynq_a9_qemu
-- value: 1073741824
-  variants:
+default:
+- enabled-by:
   - arm/xilinx_zynq_zc702
-- value: 1073741824
-  variants:
   - arm/xilinx_zynq_zc706
-- value: 536870912
-  variants:
-  - arm/xilinx_zynq_zedboard
+  value: 1073741824
+- enabled-by: arm/xilinx_zynq_zedboard
+  value: 536870912
+- enabled-by: true
+  value: 268435456
 description: |
   override a BSP's default RAM length
 enabled-by: true
diff --git a/spec/build/bsps/arm/xilinx-zynq/optramori.yml b/spec/build/bsps/arm/xilinx-zynq/optramori.yml
index 5723b73d53..b08c1b02be 100644
--- a/spec/build/bsps/arm/xilinx-zynq/optramori.yml
+++ b/spec/build/bsps/arm/xilinx-zynq/optramori.yml
@@ -8,11 +8,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1048576
-default-by-variant:
-- value: 4194304
-  variants:
-  - arm/xilinx_zynq_zc706
+default:
+- enabled-by: arm/xilinx_zynq_zc706
+  value: 4194304
+- enabled-by: true
+  value: 1048576
 description: ''
 enabled-by: true
 format: '{:#010x}'
diff --git a/spec/build/bsps/arm/xilinx-zynq/optresetvec.yml b/spec/build/bsps/arm/xilinx-zynq/optresetvec.yml
index efd1ea2b2a..bac5c79627 100644
--- a/spec/build/bsps/arm/xilinx-zynq/optresetvec.yml
+++ b/spec/build/bsps/arm/xilinx-zynq/optresetvec.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   reset vector address for BSP start
 enabled-by: true
diff --git a/spec/build/bsps/arm/xilinx-zynqmp/abi.yml b/spec/build/bsps/arm/xilinx-zynqmp/abi.yml
index 23c66bb5b8..b49ac81c6a 100644
--- a/spec/build/bsps/arm/xilinx-zynqmp/abi.yml
+++ b/spec/build/bsps/arm/xilinx-zynqmp/abi.yml
@@ -7,12 +7,13 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -march=armv7-a
-- -mthumb
-- -mfpu=neon
-- -mfloat-abi=hard
-- -mtune=cortex-a53
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -march=armv7-a
+  - -mthumb
+  - -mfpu=neon
+  - -mfloat-abi=hard
+  - -mtune=cortex-a53
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/arm/xilinx-zynqmp/optcachedata.yml b/spec/build/bsps/arm/xilinx-zynqmp/optcachedata.yml
index 23b1410385..c86800df35 100644
--- a/spec/build/bsps/arm/xilinx-zynqmp/optcachedata.yml
+++ b/spec/build/bsps/arm/xilinx-zynqmp/optcachedata.yml
@@ -5,13 +5,14 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
+default:
+- enabled-by:
   - arm/lm3s6965_qemu
   - arm/realview_pbx_a9_qemu
   - arm/xilinx_zynq_a9_qemu
+  value: false
+- enabled-by: true
+  value: true
 description: |
   enable data cache
 enabled-by: true
diff --git a/spec/build/bsps/arm/xilinx-zynqmp/optcacheinst.yml b/spec/build/bsps/arm/xilinx-zynqmp/optcacheinst.yml
index f172cc4b58..90e0e1301a 100644
--- a/spec/build/bsps/arm/xilinx-zynqmp/optcacheinst.yml
+++ b/spec/build/bsps/arm/xilinx-zynqmp/optcacheinst.yml
@@ -5,13 +5,14 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
+default:
+- enabled-by:
   - arm/lm3s6965_qemu
   - arm/realview_pbx_a9_qemu
   - arm/xilinx_zynq_a9_qemu
+  value: false
+- enabled-by: true
+  value: true
 description: |
   enable instruction cache
 enabled-by: true
diff --git a/spec/build/bsps/arm/xilinx-zynqmp/optclkfastidle.yml b/spec/build/bsps/arm/xilinx-zynqmp/optclkfastidle.yml
index 61333a11f1..e303a8bf9f 100644
--- a/spec/build/bsps/arm/xilinx-zynqmp/optclkfastidle.yml
+++ b/spec/build/bsps/arm/xilinx-zynqmp/optclkfastidle.yml
@@ -5,13 +5,14 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - arm/lm3s6965_qemu
   - arm/realview_pbx_a9_qemu
   - arm/xilinx_zynq_a9_qemu
+  value: true
+- enabled-by: true
+  value: false
 description: |
   This sets a mode where the time runs as fast as possible when a clock ISR occurs while the IDLE thread is executing.  This can significantly reduce simulation times.
 enabled-by: true
diff --git a/spec/build/bsps/arm/xilinx-zynqmp/optclkuart.yml b/spec/build/bsps/arm/xilinx-zynqmp/optclkuart.yml
index df6cd08847..77c8f30fff 100644
--- a/spec/build/bsps/arm/xilinx-zynqmp/optclkuart.yml
+++ b/spec/build/bsps/arm/xilinx-zynqmp/optclkuart.yml
@@ -5,11 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 100000000
-default-by-variant:
-- value: 100000000
-  variants:
-  - arm/xilinx_zynqmp_ultra96
+default:
+- enabled-by: true
+  value: 100000000
 description: |
   Zynq UART clock frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/arm/xilinx-zynqmp/optconirq.yml b/spec/build/bsps/arm/xilinx-zynqmp/optconirq.yml
index ecb91d81a3..ea13fa4561 100644
--- a/spec/build/bsps/arm/xilinx-zynqmp/optconirq.yml
+++ b/spec/build/bsps/arm/xilinx-zynqmp/optconirq.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   use interrupt driven mode for console devices (used by default)
 enabled-by: true
diff --git a/spec/build/bsps/arm/xilinx-zynqmp/optint0len.yml b/spec/build/bsps/arm/xilinx-zynqmp/optint0len.yml
index 55b3487553..772c9d9876 100644
--- a/spec/build/bsps/arm/xilinx-zynqmp/optint0len.yml
+++ b/spec/build/bsps/arm/xilinx-zynqmp/optint0len.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 196608
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 196608
 description: ''
 enabled-by: true
 format: '{:#010x}'
diff --git a/spec/build/bsps/arm/xilinx-zynqmp/optint0ori.yml b/spec/build/bsps/arm/xilinx-zynqmp/optint0ori.yml
index f6a8b5f7d4..a2860748b5 100644
--- a/spec/build/bsps/arm/xilinx-zynqmp/optint0ori.yml
+++ b/spec/build/bsps/arm/xilinx-zynqmp/optint0ori.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: ''
 enabled-by: true
 format: '{:#010x}'
diff --git a/spec/build/bsps/arm/xilinx-zynqmp/optint1len.yml b/spec/build/bsps/arm/xilinx-zynqmp/optint1len.yml
index bdaef49951..f1c72cc77a 100644
--- a/spec/build/bsps/arm/xilinx-zynqmp/optint1len.yml
+++ b/spec/build/bsps/arm/xilinx-zynqmp/optint1len.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 65024
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 65024
 description: ''
 enabled-by: true
 format: '{:#010x}'
diff --git a/spec/build/bsps/arm/xilinx-zynqmp/optint1ori.yml b/spec/build/bsps/arm/xilinx-zynqmp/optint1ori.yml
index 55caa6f4a2..0629cb143d 100644
--- a/spec/build/bsps/arm/xilinx-zynqmp/optint1ori.yml
+++ b/spec/build/bsps/arm/xilinx-zynqmp/optint1ori.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 4294901760
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 4294901760
 description: ''
 enabled-by: true
 format: '{:#010x}'
diff --git a/spec/build/bsps/arm/xilinx-zynqmp/optnocachelen.yml b/spec/build/bsps/arm/xilinx-zynqmp/optnocachelen.yml
index 4b9118d926..ac9671ec4f 100644
--- a/spec/build/bsps/arm/xilinx-zynqmp/optnocachelen.yml
+++ b/spec/build/bsps/arm/xilinx-zynqmp/optnocachelen.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1048576
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1048576
 description: |
   length of nocache RAM region
 enabled-by: true
diff --git a/spec/build/bsps/arm/xilinx-zynqmp/optramlen.yml b/spec/build/bsps/arm/xilinx-zynqmp/optramlen.yml
index 6efaf7b13b..adc0a38c6d 100644
--- a/spec/build/bsps/arm/xilinx-zynqmp/optramlen.yml
+++ b/spec/build/bsps/arm/xilinx-zynqmp/optramlen.yml
@@ -7,11 +7,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 268435456
-default-by-variant:
-- value: 2147483648
-  variants:
-  - arm/xilinx_zynqmp_ultra96
+default:
+- enabled-by: arm/xilinx_zynqmp_ultra96
+  value: 2147483648
+- enabled-by: true
+  value: 268435456
 description: |
   override a BSP's default RAM length
 enabled-by: true
diff --git a/spec/build/bsps/arm/xilinx-zynqmp/optramori.yml b/spec/build/bsps/arm/xilinx-zynqmp/optramori.yml
index 401b8ec3a3..6ac0702760 100644
--- a/spec/build/bsps/arm/xilinx-zynqmp/optramori.yml
+++ b/spec/build/bsps/arm/xilinx-zynqmp/optramori.yml
@@ -8,8 +8,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1048576
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1048576
 description: ''
 enabled-by: true
 format: '{:#010x}'
diff --git a/spec/build/bsps/arm/xilinx-zynqmp/optresetvec.yml b/spec/build/bsps/arm/xilinx-zynqmp/optresetvec.yml
index efd1ea2b2a..bac5c79627 100644
--- a/spec/build/bsps/arm/xilinx-zynqmp/optresetvec.yml
+++ b/spec/build/bsps/arm/xilinx-zynqmp/optresetvec.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   reset vector address for BSP start
 enabled-by: true
diff --git a/spec/build/bsps/bfin/TLL6527M/abi.yml b/spec/build/bsps/bfin/TLL6527M/abi.yml
index 861623f2a5..07270aa8ab 100644
--- a/spec/build/bsps/bfin/TLL6527M/abi.yml
+++ b/spec/build/bsps/bfin/TLL6527M/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=bf527
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=bf527
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/bfin/TLL6527M/optconbaud.yml b/spec/build/bsps/bfin/TLL6527M/optconbaud.yml
index c1823caa93..691a536827 100644
--- a/spec/build/bsps/bfin/TLL6527M/optconbaud.yml
+++ b/spec/build/bsps/bfin/TLL6527M/optconbaud.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 9600
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 9600
 description: |
   The baudrate of the console uart.
 enabled-by: true
diff --git a/spec/build/bsps/bfin/TLL6527M/optconirq.yml b/spec/build/bsps/bfin/TLL6527M/optconirq.yml
index 1557437cae..9e9c4a3e29 100644
--- a/spec/build/bsps/bfin/TLL6527M/optconirq.yml
+++ b/spec/build/bsps/bfin/TLL6527M/optconirq.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1
 description: |
   The console driver can operate in either polled or interrupt mode.
 enabled-by: true
diff --git a/spec/build/bsps/bfin/TLL6527M/optirqtbl.yml b/spec/build/bsps/bfin/TLL6527M/optirqtbl.yml
index 925753a83b..74911f0b68 100644
--- a/spec/build/bsps/bfin/TLL6527M/optirqtbl.yml
+++ b/spec/build/bsps/bfin/TLL6527M/optirqtbl.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   Select if INTERRUPT use table or link list
 enabled-by: true
diff --git a/spec/build/bsps/bfin/TLL6527M/optskyeye.yml b/spec/build/bsps/bfin/TLL6527M/optskyeye.yml
index f6b9655e57..6ec951a6de 100644
--- a/spec/build/bsps/bfin/TLL6527M/optskyeye.yml
+++ b/spec/build/bsps/bfin/TLL6527M/optskyeye.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   (BSP--Skyeye) If defined, disable features which are not supported on Skyeye.
 enabled-by: true
diff --git a/spec/build/bsps/bfin/TLL6527M/optuartdma.yml b/spec/build/bsps/bfin/TLL6527M/optuartdma.yml
index 915333096d..e648d6bcb2 100644
--- a/spec/build/bsps/bfin/TLL6527M/optuartdma.yml
+++ b/spec/build/bsps/bfin/TLL6527M/optuartdma.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   The uart driver can operate in dma mode with interrupts.  Set to 1 if DMA operation is required
 enabled-by: true
diff --git a/spec/build/bsps/bfin/bf537Stamp/abi.yml b/spec/build/bsps/bfin/bf537Stamp/abi.yml
index 530e7a5d14..d47c609e80 100644
--- a/spec/build/bsps/bfin/bf537Stamp/abi.yml
+++ b/spec/build/bsps/bfin/bf537Stamp/abi.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: []
-default-by-variant: []
+default:
+- enabled-by: true
+  value: []
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/bfin/bf537Stamp/optconirq.yml b/spec/build/bsps/bfin/bf537Stamp/optconirq.yml
index 683469c931..5f03ab0e47 100644
--- a/spec/build/bsps/bfin/bf537Stamp/optconirq.yml
+++ b/spec/build/bsps/bfin/bf537Stamp/optconirq.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: |
   The console driver can operate in either polled or interrupt mode.
 enabled-by: true
diff --git a/spec/build/bsps/bfin/bf537Stamp/optskyeye.yml b/spec/build/bsps/bfin/bf537Stamp/optskyeye.yml
index f6b9655e57..6ec951a6de 100644
--- a/spec/build/bsps/bfin/bf537Stamp/optskyeye.yml
+++ b/spec/build/bsps/bfin/bf537Stamp/optskyeye.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   (BSP--Skyeye) If defined, disable features which are not supported on Skyeye.
 enabled-by: true
diff --git a/spec/build/bsps/bfin/eZKit533/abi.yml b/spec/build/bsps/bfin/eZKit533/abi.yml
index 530e7a5d14..d47c609e80 100644
--- a/spec/build/bsps/bfin/eZKit533/abi.yml
+++ b/spec/build/bsps/bfin/eZKit533/abi.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: []
-default-by-variant: []
+default:
+- enabled-by: true
+  value: []
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/bfin/eZKit533/optconirq.yml b/spec/build/bsps/bfin/eZKit533/optconirq.yml
index 683469c931..5f03ab0e47 100644
--- a/spec/build/bsps/bfin/eZKit533/optconirq.yml
+++ b/spec/build/bsps/bfin/eZKit533/optconirq.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: |
   The console driver can operate in either polled or interrupt mode.
 enabled-by: true
diff --git a/spec/build/bsps/bfin/eZKit533/optskyeye.yml b/spec/build/bsps/bfin/eZKit533/optskyeye.yml
index f6b9655e57..6ec951a6de 100644
--- a/spec/build/bsps/bfin/eZKit533/optskyeye.yml
+++ b/spec/build/bsps/bfin/eZKit533/optskyeye.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   (BSP--Skyeye) If defined, disable features which are not supported on Skyeye.
 enabled-by: true
diff --git a/spec/build/bsps/dev/irq/optarmgic-icc-bpr0.yml b/spec/build/bsps/dev/irq/optarmgic-icc-bpr0.yml
index 758b4d7d10..36a337b831 100644
--- a/spec/build/bsps/dev/irq/optarmgic-icc-bpr0.yml
+++ b/spec/build/bsps/dev/irq/optarmgic-icc-bpr0.yml
@@ -5,10 +5,8 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
-default: 2
-default-by-variant:
-- value: null
-  variants:
+default:
+- enabled-by:
   - aarch64/a53_ilp32_qemu
   - aarch64/a53_lp64_qemu
   - aarch64/a72_ilp32_qemu
@@ -22,6 +20,9 @@ default-by-variant:
   - aarch64/xilinx_zynqmp_lp64_cfc400x
   - aarch64/xilinx_zynqmp_lp64_qemu
   - aarch64/xilinx_zynqmp_lp64_zu3eg
+  value: null
+- enabled-by: true
+  value: 2
 description: |
   Defines the initial value of the ICC_BPR0 register of the ARM GIC CPU
   Interface.  The value is optional.  If it is not defined, then the register
diff --git a/spec/build/bsps/dev/irq/optarmgic-icc-bpr1.yml b/spec/build/bsps/dev/irq/optarmgic-icc-bpr1.yml
index c9c99dfc63..cac8e3f3e3 100644
--- a/spec/build/bsps/dev/irq/optarmgic-icc-bpr1.yml
+++ b/spec/build/bsps/dev/irq/optarmgic-icc-bpr1.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
-default: 3
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 3
 description: |
   Defines the initial value of the ICC_BPR1 register of the ARM GIC CPU
   Interface.  The value is optional.  If it is not defined, then the register
diff --git a/spec/build/bsps/dev/irq/optarmgic-icc-ctrl.yml b/spec/build/bsps/dev/irq/optarmgic-icc-ctrl.yml
index 1f9ae33e0f..2a7e9cf002 100644
--- a/spec/build/bsps/dev/irq/optarmgic-icc-ctrl.yml
+++ b/spec/build/bsps/dev/irq/optarmgic-icc-ctrl.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: |
   Defines the initial value of the ICC_CTRL register of the ARM GIC CPU
   Interface.  The value is optional.  If it is not defined, then the register
diff --git a/spec/build/bsps/dev/irq/optarmgic-icc-igrpen0.yml b/spec/build/bsps/dev/irq/optarmgic-icc-igrpen0.yml
index 143468f834..118d6493dc 100644
--- a/spec/build/bsps/dev/irq/optarmgic-icc-igrpen0.yml
+++ b/spec/build/bsps/dev/irq/optarmgic-icc-igrpen0.yml
@@ -5,10 +5,8 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1
-default-by-variant:
-- value: null
-  variants:
+default:
+- enabled-by:
   - aarch64/a53_ilp32_qemu
   - aarch64/a53_lp64_qemu
   - aarch64/a72_ilp32_qemu
@@ -22,6 +20,9 @@ default-by-variant:
   - aarch64/xilinx_zynqmp_lp64_cfc400x
   - aarch64/xilinx_zynqmp_lp64_qemu
   - aarch64/xilinx_zynqmp_lp64_zu3eg
+  value: null
+- enabled-by: true
+  value: 1
 description: |
   Defines the initial value of the ICC_IGRPEN0 register of the ARM GIC CPU
   Interface.  The value is optional.  If it is not defined, then the register
diff --git a/spec/build/bsps/dev/irq/optarmgic-icc-igrpen1.yml b/spec/build/bsps/dev/irq/optarmgic-icc-igrpen1.yml
index 1c18db63b7..a51f90a8f5 100644
--- a/spec/build/bsps/dev/irq/optarmgic-icc-igrpen1.yml
+++ b/spec/build/bsps/dev/irq/optarmgic-icc-igrpen1.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1
 description: |
   Defines the initial value of the ICC_IGRPEN1 register of the ARM GIC CPU
   Interface.  The value is optional.  If it is not defined, then the register
diff --git a/spec/build/bsps/dev/irq/optarmgic-icc-pmr.yml b/spec/build/bsps/dev/irq/optarmgic-icc-pmr.yml
index d0fbda520a..b3c8a1d8c1 100644
--- a/spec/build/bsps/dev/irq/optarmgic-icc-pmr.yml
+++ b/spec/build/bsps/dev/irq/optarmgic-icc-pmr.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
-default: 255
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 255
 description: |
   Defines the initial value of the ICC_PMR register of the ARM GIC CPU
   Interface.  The value is optional.  If it is not defined, then the register
diff --git a/spec/build/bsps/dev/irq/optarmgic-icc-sre.yml b/spec/build/bsps/dev/irq/optarmgic-icc-sre.yml
index aca2f2720b..4e6bb3427f 100644
--- a/spec/build/bsps/dev/irq/optarmgic-icc-sre.yml
+++ b/spec/build/bsps/dev/irq/optarmgic-icc-sre.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
-default: 3
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 3
 description: |
   Defines the initial value of the ICC_SRE register of the ARM GIC CPU
   Interface.  The value is optional.  If it is not defined, then the register
diff --git a/spec/build/bsps/i386/pc386/abi.yml b/spec/build/bsps/i386/pc386/abi.yml
index 6a29742266..24901f049e 100644
--- a/spec/build/bsps/i386/pc386/abi.yml
+++ b/spec/build/bsps/i386/pc386/abi.yml
@@ -7,34 +7,30 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mtune=pentium4
-- -march=pentium4
-- -msse3
-default-by-variant:
-- value:
+- enabled-by: i386/pc686
+  value:
   - -mtune=pentiumpro
   - -march=pentium
-  variants:
-  - i386/pc686
-- value:
+- enabled-by: i386/pc586-sse
+  value:
   - -mtune=pentium
   - -march=pentium
   - -msse2
-  variants:
-  - i386/pc586-sse
-- value:
+- enabled-by: i386/pc586
+  value:
   - -mtune=pentium
   - -march=pentium
-  variants:
-  - i386/pc586
-- value:
+- enabled-by: i386/pc486
+  value:
   - -mtune=i486
-  variants:
-  - i386/pc486
-- value:
+- enabled-by: i386/pc386
+  value:
   - -mtune=i386
-  variants:
-  - i386/pc386
+- enabled-by: true
+  value:
+  - -mtune=pentium4
+  - -march=pentium4
+  - -msse3
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/i386/pc386/optcirrus.yml b/spec/build/bsps/i386/pc386/optcirrus.yml
index c974001647..868334c1e9 100644
--- a/spec/build/bsps/i386/pc386/optcirrus.yml
+++ b/spec/build/bsps/i386/pc386/optcirrus.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   If defined, enables use of the Cirrus GD5446 controller rather than the controller utilizing Vesa Bios Extensions - real mode interface.  NOTE: This has only been tested on Qemu.
 enabled-by: true
diff --git a/spec/build/bsps/i386/pc386/optclk8253.yml b/spec/build/bsps/i386/pc386/optclk8253.yml
index ddaeb3bb75..8c759748d5 100644
--- a/spec/build/bsps/i386/pc386/optclk8253.yml
+++ b/spec/build/bsps/i386/pc386/optclk8253.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   None
 enabled-by: true
diff --git a/spec/build/bsps/i386/pc386/optclktsc.yml b/spec/build/bsps/i386/pc386/optclktsc.yml
index 2b02523def..7a4c111b07 100644
--- a/spec/build/bsps/i386/pc386/optclktsc.yml
+++ b/spec/build/bsps/i386/pc386/optclktsc.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   None
 enabled-by: true
diff --git a/spec/build/bsps/i386/pc386/optconcom1.yml b/spec/build/bsps/i386/pc386/optconcom1.yml
index 6743683ecc..654824ab3c 100644
--- a/spec/build/bsps/i386/pc386/optconcom1.yml
+++ b/spec/build/bsps/i386/pc386/optconcom1.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Determines, whether the console will be associated with the standard VGA display or with the COM1 serial port.  Currently only the VGA display and COM1 support printk.
 enabled-by: true
diff --git a/spec/build/bsps/i386/pc386/optencom14.yml b/spec/build/bsps/i386/pc386/optencom14.yml
index 1547f5d890..c42f20b1db 100644
--- a/spec/build/bsps/i386/pc386/optencom14.yml
+++ b/spec/build/bsps/i386/pc386/optencom14.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   Set if COM1..COM4 support is enabled.
 enabled-by: true
diff --git a/spec/build/bsps/i386/pc386/optenide.yml b/spec/build/bsps/i386/pc386/optenide.yml
index db3a9aaf04..68f1efea48 100644
--- a/spec/build/bsps/i386/pc386/optenide.yml
+++ b/spec/build/bsps/i386/pc386/optenide.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   Set if IDE support is enabled.
 enabled-by: true
diff --git a/spec/build/bsps/i386/pc386/optenvga.yml b/spec/build/bsps/i386/pc386/optenvga.yml
index d2f4755a8b..e7e92db751 100644
--- a/spec/build/bsps/i386/pc386/optenvga.yml
+++ b/spec/build/bsps/i386/pc386/optenvga.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   Set if the VGA and keyboard console support is enabled.
 enabled-by: true
diff --git a/spec/build/bsps/i386/pc386/optgdbstub.yml b/spec/build/bsps/i386/pc386/optgdbstub.yml
index 6af1c8ec56..3088bbb0bd 100644
--- a/spec/build/bsps/i386/pc386/optgdbstub.yml
+++ b/spec/build/bsps/i386/pc386/optgdbstub.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   Defined by default. Enables use of the GDB stub for debugging via a serial port.
 enabled-by: true
diff --git a/spec/build/bsps/i386/pc386/optgdtdesc.yml b/spec/build/bsps/i386/pc386/optgdtdesc.yml
index 8898bf4726..f7fa6fcabf 100644
--- a/spec/build/bsps/i386/pc386/optgdtdesc.yml
+++ b/spec/build/bsps/i386/pc386/optgdtdesc.yml
@@ -15,8 +15,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: |
   Defines how many descriptors in GDT may be allocated for application or driver usage.
 enabled-by: true
diff --git a/spec/build/bsps/i386/pc386/optidepriifc.yml b/spec/build/bsps/i386/pc386/optidepriifc.yml
index 375b89904b..a19aafc921 100644
--- a/spec/build/bsps/i386/pc386/optidepriifc.yml
+++ b/spec/build/bsps/i386/pc386/optidepriifc.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   Determines, whether RTEMS will try to use the primary IDE interface.  Disable it, if: - you have no primary IDE interface - or you have no disk attached to this interface - or you do not want to access disks attached to this interface
 enabled-by: true
diff --git a/spec/build/bsps/i386/pc386/optidesecifc.yml b/spec/build/bsps/i386/pc386/optidesecifc.yml
index 4b61958f7d..56eed819eb 100644
--- a/spec/build/bsps/i386/pc386/optidesecifc.yml
+++ b/spec/build/bsps/i386/pc386/optidesecifc.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Determines, whether RTEMS will try to use the secondary IDE interface.  Enable it, if: - you have a secondary IDE interface - and you have at least one disk attached to this interface - and you do want to access disks attached to this interface
 enabled-by: true
diff --git a/spec/build/bsps/i386/pc386/optrelocaddr.yml b/spec/build/bsps/i386/pc386/optrelocaddr.yml
index e052383f80..1aa18bddff 100644
--- a/spec/build/bsps/i386/pc386/optrelocaddr.yml
+++ b/spec/build/bsps/i386/pc386/optrelocaddr.yml
@@ -10,8 +10,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1048576
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1048576
 description: |
   Set the value of RELOCADDR to the address where you want your image to load.
   If you'll be using GRUB to load the images it will have to be >= 0x100000
diff --git a/spec/build/bsps/i386/pc386/optvberm.yml b/spec/build/bsps/i386/pc386/optvberm.yml
index dce5975ef8..8a10dba52e 100644
--- a/spec/build/bsps/i386/pc386/optvberm.yml
+++ b/spec/build/bsps/i386/pc386/optvberm.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   Defined by default. Enables use of the Vesa Bios Extensions - real mode interface, which enables graphical mode and introduce it upon bootup.
 enabled-by: true
diff --git a/spec/build/bsps/i386/pc386/optvga.yml b/spec/build/bsps/i386/pc386/optvga.yml
index 5477de3e0b..81e79b7a78 100644
--- a/spec/build/bsps/i386/pc386/optvga.yml
+++ b/spec/build/bsps/i386/pc386/optvga.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   If defined, enables use of the very basic VGA driver for framebuffer support rather than the controller utilizing Vesa Bios Extensions - real mode interface.
 enabled-by: true
diff --git a/spec/build/bsps/i386/pc386/optvideo80x50.yml b/spec/build/bsps/i386/pc386/optvideo80x50.yml
index f95225bc04..438895b15a 100644
--- a/spec/build/bsps/i386/pc386/optvideo80x50.yml
+++ b/spec/build/bsps/i386/pc386/optvideo80x50.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   If defined, set the VGA display to 80x50.
 enabled-by: true
diff --git a/spec/build/bsps/i386/pc386/tst-xfail-val.yml b/spec/build/bsps/i386/pc386/tst-xfail-val.yml
index 59ee226ebf..15e86152c3 100644
--- a/spec/build/bsps/i386/pc386/tst-xfail-val.yml
+++ b/spec/build/bsps/i386/pc386/tst-xfail-val.yml
@@ -12,8 +12,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/lm32/lm32_evr/abi.yml b/spec/build/bsps/lm32/lm32_evr/abi.yml
index 530e7a5d14..d47c609e80 100644
--- a/spec/build/bsps/lm32/lm32_evr/abi.yml
+++ b/spec/build/bsps/lm32/lm32_evr/abi.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: []
-default-by-variant: []
+default:
+- enabled-by: true
+  value: []
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/lm32/lm32_evr/optsim.yml b/spec/build/bsps/lm32/lm32_evr/optsim.yml
index b02e333c26..bc999b7a07 100644
--- a/spec/build/bsps/lm32/lm32_evr/optsim.yml
+++ b/spec/build/bsps/lm32/lm32_evr/optsim.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - lm32/lm32_evr_gdbsim
+default:
+- enabled-by: lm32/lm32_evr_gdbsim
+  value: true
+- enabled-by: true
+  value: false
 description: |
   If defined, this indicates the BSP is being built to run on the lm32 simulator in GDB.  This enables fast idle support which speeds up the clock ticks while the idle task is running so time spent in the idle task is minimized.  This significantly reduces the wall time required to execute the RTEMS test suites.  It also enables a special exit and alternate printk support.
 enabled-by: true
diff --git a/spec/build/bsps/lm32/milkymist/abi.yml b/spec/build/bsps/lm32/milkymist/abi.yml
index 1b553c1f4d..a8399f581c 100644
--- a/spec/build/bsps/lm32/milkymist/abi.yml
+++ b/spec/build/bsps/lm32/milkymist/abi.yml
@@ -7,11 +7,12 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mbarrel-shift-enabled
-- -mmultiply-enabled
-- -mdivide-enabled
-- -msign-extend-enabled
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mbarrel-shift-enabled
+  - -mmultiply-enabled
+  - -mdivide-enabled
+  - -msign-extend-enabled
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/lm32/milkymist/optsim.yml b/spec/build/bsps/lm32/milkymist/optsim.yml
index 5172e03c63..356ef05750 100644
--- a/spec/build/bsps/lm32/milkymist/optsim.yml
+++ b/spec/build/bsps/lm32/milkymist/optsim.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   If defined, this indicates the BSP is being built to run on the lm32 simulator in GDB.  This enables fast idle support which speeds up the clock ticks while the idle task is running so time spent in the idle task is minimized.  This significantly reduces the wall time required to execute the RTEMS test suites.  It also enables a special exit and alternate printk support.
 enabled-by: true
diff --git a/spec/build/bsps/m68k/av5282/abi.yml b/spec/build/bsps/m68k/av5282/abi.yml
index 78f70236d3..4fa32aac03 100644
--- a/spec/build/bsps/m68k/av5282/abi.yml
+++ b/spec/build/bsps/m68k/av5282/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=528x
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=528x
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/m68k/csb360/abi.yml b/spec/build/bsps/m68k/csb360/abi.yml
index 1ff2806a6c..5f2353a7ff 100644
--- a/spec/build/bsps/m68k/csb360/abi.yml
+++ b/spec/build/bsps/m68k/csb360/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=5272
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=5272
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/m68k/gen68340/abi.yml b/spec/build/bsps/m68k/gen68340/abi.yml
index 0daf8ee06b..ece4fe7c93 100644
--- a/spec/build/bsps/m68k/gen68340/abi.yml
+++ b/spec/build/bsps/m68k/gen68340/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=cpu32
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=cpu32
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/m68k/gen68360/abi.yml b/spec/build/bsps/m68k/gen68360/abi.yml
index 5e83fae804..603e342b59 100644
--- a/spec/build/bsps/m68k/gen68360/abi.yml
+++ b/spec/build/bsps/m68k/gen68360/abi.yml
@@ -7,16 +7,15 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu32
-default-by-variant:
-- value:
+- enabled-by: m68k/gen68360_040
+  value:
   - -mcpu=68040
-  variants:
-  - m68k/gen68360_040
-- value:
+- enabled-by: m68k/gen68360
+  value:
   - -mcpu=cpu32
-  variants:
-  - m68k/gen68360
+- enabled-by: true
+  value:
+  - -mcpu32
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/m68k/gen68360/opt68360.yml b/spec/build/bsps/m68k/gen68360/opt68360.yml
index 11f0f054c9..36d100d549 100644
--- a/spec/build/bsps/m68k/gen68360/opt68360.yml
+++ b/spec/build/bsps/m68k/gen68360/opt68360.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - m68k/gen68360
+default:
+- enabled-by: m68k/gen68360
+  value: true
+- enabled-by: true
+  value: false
 description: |
   If defined, use custom settings for the gen68360 BSP.
 enabled-by: true
diff --git a/spec/build/bsps/m68k/gen68360/opt68360x040.yml b/spec/build/bsps/m68k/gen68360/opt68360x040.yml
index c176a780a3..9ddb102d26 100644
--- a/spec/build/bsps/m68k/gen68360/opt68360x040.yml
+++ b/spec/build/bsps/m68k/gen68360/opt68360x040.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - m68k/gen68360_040
+default:
+- enabled-by: m68k/gen68360_040
+  value: true
+- enabled-by: true
+  value: false
 description: |
   If defined, use custom settings for the gen68360_040 BSP.
 enabled-by: true
diff --git a/spec/build/bsps/m68k/gen68360/optpgh360.yml b/spec/build/bsps/m68k/gen68360/optpgh360.yml
index 8fea68fa42..f809a5eacf 100644
--- a/spec/build/bsps/m68k/gen68360/optpgh360.yml
+++ b/spec/build/bsps/m68k/gen68360/optpgh360.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - m68k/pgh360
+default:
+- enabled-by: m68k/pgh360
+  value: true
+- enabled-by: true
+  value: false
 description: |
   If defined, use custom settings for the pgh360 BSP.
 enabled-by: true
diff --git a/spec/build/bsps/m68k/genmcf548x/abi.yml b/spec/build/bsps/m68k/genmcf548x/abi.yml
index 6680decb4c..41dfdcfd05 100644
--- a/spec/build/bsps/m68k/genmcf548x/abi.yml
+++ b/spec/build/bsps/m68k/genmcf548x/abi.yml
@@ -7,9 +7,10 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcfv4e
-- -Wa,-memac
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcfv4e
+  - -Wa,-memac
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/m68k/genmcf548x/optcpuclk.yml b/spec/build/bsps/m68k/genmcf548x/optcpuclk.yml
index 6cf392fbb6..3ed37a1a38 100644
--- a/spec/build/bsps/m68k/genmcf548x/optcpuclk.yml
+++ b/spec/build/bsps/m68k/genmcf548x/optcpuclk.yml
@@ -5,14 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 100000000
-default-by-variant:
-- value: 132000000
-  variants:
-  - m68k/COBRA5475
-- value: 100000000
-  variants:
-  - m68k/m5484FireEngine
+default:
+- enabled-by: m68k/COBRA5475
+  value: 132000000
+- enabled-by: true
+  value: 100000000
 description: |
   The bus clock to be used inside the mcf54xx
 enabled-by: true
diff --git a/spec/build/bsps/m68k/genmcf548x/optdbug.yml b/spec/build/bsps/m68k/genmcf548x/optdbug.yml
index 26f93cd969..2ab3436d4d 100644
--- a/spec/build/bsps/m68k/genmcf548x/optdbug.yml
+++ b/spec/build/bsps/m68k/genmcf548x/optdbug.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - m68k/COBRA5475
+default:
+- enabled-by: m68k/COBRA5475
+  value: true
+- enabled-by: true
+  value: false
 description: |
   If defined, we will not boot from RESET, but from Freescale DBug monitor.
 enabled-by: true
diff --git a/spec/build/bsps/m68k/genmcf548x/optlowinit.yml b/spec/build/bsps/m68k/genmcf548x/optlowinit.yml
index 7d0f76a6be..d0fa425e1a 100644
--- a/spec/build/bsps/m68k/genmcf548x/optlowinit.yml
+++ b/spec/build/bsps/m68k/genmcf548x/optlowinit.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - m68k/m5484FireEngine
+default:
+- enabled-by: m68k/m5484FireEngine
+  value: true
+- enabled-by: true
+  value: false
 description: |
   If defined, we will do all the low level init of the chip (like bus/memory...).
 enabled-by: true
diff --git a/spec/build/bsps/m68k/genmcf548x/optm5484fireengine.yml b/spec/build/bsps/m68k/genmcf548x/optm5484fireengine.yml
index e2b71f1af1..8cd3f16be7 100644
--- a/spec/build/bsps/m68k/genmcf548x/optm5484fireengine.yml
+++ b/spec/build/bsps/m68k/genmcf548x/optm5484fireengine.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - m68k/m5484FireEngine
+default:
+- enabled-by: m68k/m5484FireEngine
+  value: true
+- enabled-by: true
+  value: false
 description: |
   If defined, use custom settings for the m5484FireEngine BSP.
 enabled-by: true
diff --git a/spec/build/bsps/m68k/mcf5206elite/abi.yml b/spec/build/bsps/m68k/mcf5206elite/abi.yml
index 703730cf3d..7884129ef0 100644
--- a/spec/build/bsps/m68k/mcf5206elite/abi.yml
+++ b/spec/build/bsps/m68k/mcf5206elite/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=5206
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=5206
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/m68k/mcf5206elite/tstmcf5206elite.yml b/spec/build/bsps/m68k/mcf5206elite/tstmcf5206elite.yml
index 02faf0a666..c47390a3fc 100644
--- a/spec/build/bsps/m68k/mcf5206elite/tstmcf5206elite.yml
+++ b/spec/build/bsps/m68k/mcf5206elite/tstmcf5206elite.yml
@@ -6,8 +6,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/m68k/mcf52235/abi.yml b/spec/build/bsps/m68k/mcf52235/abi.yml
index 643eaa7548..c801d96c83 100644
--- a/spec/build/bsps/m68k/mcf52235/abi.yml
+++ b/spec/build/bsps/m68k/mcf52235/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=52235
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=52235
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/m68k/mcf52235/tstmcf52235.yml b/spec/build/bsps/m68k/mcf52235/tstmcf52235.yml
index 0aec1b797f..c14665c35b 100644
--- a/spec/build/bsps/m68k/mcf52235/tstmcf52235.yml
+++ b/spec/build/bsps/m68k/mcf52235/tstmcf52235.yml
@@ -21,8 +21,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/m68k/mcf5225x/abi.yml b/spec/build/bsps/m68k/mcf5225x/abi.yml
index 643eaa7548..c801d96c83 100644
--- a/spec/build/bsps/m68k/mcf5225x/abi.yml
+++ b/spec/build/bsps/m68k/mcf5225x/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=52235
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=52235
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/m68k/mcf5225x/tstmcf5225x.yml b/spec/build/bsps/m68k/mcf5225x/tstmcf5225x.yml
index aebe0bc83e..a9a06b80dd 100644
--- a/spec/build/bsps/m68k/mcf5225x/tstmcf5225x.yml
+++ b/spec/build/bsps/m68k/mcf5225x/tstmcf5225x.yml
@@ -7,8 +7,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/m68k/mcf5235/abi.yml b/spec/build/bsps/m68k/mcf5235/abi.yml
index 3e7f43f45f..174e6baefe 100644
--- a/spec/build/bsps/m68k/mcf5235/abi.yml
+++ b/spec/build/bsps/m68k/mcf5235/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=5235
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=5235
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/m68k/mcf5329/abi.yml b/spec/build/bsps/m68k/mcf5329/abi.yml
index 163fedd212..0e5cf944cb 100644
--- a/spec/build/bsps/m68k/mcf5329/abi.yml
+++ b/spec/build/bsps/m68k/mcf5329/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=5307
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=5307
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/m68k/mrm332/abi.yml b/spec/build/bsps/m68k/mrm332/abi.yml
index 0daf8ee06b..ece4fe7c93 100644
--- a/spec/build/bsps/m68k/mrm332/abi.yml
+++ b/spec/build/bsps/m68k/mrm332/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=cpu32
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=cpu32
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/m68k/mrm332/tstmrm332.yml b/spec/build/bsps/m68k/mrm332/tstmrm332.yml
index d7c2c3e452..541cadd1e6 100644
--- a/spec/build/bsps/m68k/mrm332/tstmrm332.yml
+++ b/spec/build/bsps/m68k/mrm332/tstmrm332.yml
@@ -13,8 +13,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/m68k/mvme147/abi.yml b/spec/build/bsps/m68k/mvme147/abi.yml
index 9d29b297c5..2860b5b968 100644
--- a/spec/build/bsps/m68k/mvme147/abi.yml
+++ b/spec/build/bsps/m68k/mvme147/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=68030
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=68030
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/m68k/mvme147s/abi.yml b/spec/build/bsps/m68k/mvme147s/abi.yml
index 9d29b297c5..2860b5b968 100644
--- a/spec/build/bsps/m68k/mvme147s/abi.yml
+++ b/spec/build/bsps/m68k/mvme147s/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=68030
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=68030
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/m68k/mvme162/abi.yml b/spec/build/bsps/m68k/mvme162/abi.yml
index 87a7b8c43a..a9fc5a686c 100644
--- a/spec/build/bsps/m68k/mvme162/abi.yml
+++ b/spec/build/bsps/m68k/mvme162/abi.yml
@@ -7,9 +7,10 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=68040
-- -msoft-float
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=68040
+  - -msoft-float
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/m68k/mvme162/tstmvme162.yml b/spec/build/bsps/m68k/mvme162/tstmvme162.yml
index 153cfab0e3..ea36fca621 100644
--- a/spec/build/bsps/m68k/mvme162/tstmvme162.yml
+++ b/spec/build/bsps/m68k/mvme162/tstmvme162.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/m68k/mvme162/tstmvme162lx.yml b/spec/build/bsps/m68k/mvme162/tstmvme162lx.yml
index 153cfab0e3..ea36fca621 100644
--- a/spec/build/bsps/m68k/mvme162/tstmvme162lx.yml
+++ b/spec/build/bsps/m68k/mvme162/tstmvme162lx.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/m68k/mvme167/abi.yml b/spec/build/bsps/m68k/mvme167/abi.yml
index 3bedb8a896..3caa563de3 100644
--- a/spec/build/bsps/m68k/mvme167/abi.yml
+++ b/spec/build/bsps/m68k/mvme167/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=68040
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=68040
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/m68k/mvme167/optconminor.yml b/spec/build/bsps/m68k/mvme167/optconminor.yml
index f6694db348..350301d8b2 100644
--- a/spec/build/bsps/m68k/mvme167/optconminor.yml
+++ b/spec/build/bsps/m68k/mvme167/optconminor.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   Port to use for the RTEMS console.  0 - /dev/tty0, Serial Port 1/Console on the MVME712M.  1 - /dev/tty1, Serial Port 2/TTY01 on the MVME712M.  2 - /dev/tty2, Serial Port 3 on the MVME712M.  3 - /dev/tty3, Serial Port 4 on the MVME712M.
 enabled-by: true
diff --git a/spec/build/bsps/m68k/mvme167/optintlvl.yml b/spec/build/bsps/m68k/mvme167/optintlvl.yml
index 6b5005c11d..04c2b0aeb1 100644
--- a/spec/build/bsps/m68k/mvme167/optintlvl.yml
+++ b/spec/build/bsps/m68k/mvme167/optintlvl.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   Interrupt level for the CD2401(when CD2401_IO_MODE == 1).
 enabled-by: true
diff --git a/spec/build/bsps/m68k/mvme167/optiomode.yml b/spec/build/bsps/m68k/mvme167/optiomode.yml
index 44b38da713..cb42a8f693 100644
--- a/spec/build/bsps/m68k/mvme167/optiomode.yml
+++ b/spec/build/bsps/m68k/mvme167/optiomode.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   0 for polled I/O, 1 for interrupt-driven.
 enabled-by: true
diff --git a/spec/build/bsps/m68k/mvme167/optmvme167.yml b/spec/build/bsps/m68k/mvme167/optmvme167.yml
index b857d705bd..6863696c47 100644
--- a/spec/build/bsps/m68k/mvme167/optmvme167.yml
+++ b/spec/build/bsps/m68k/mvme167/optmvme167.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: |
   Defines mvme167 in <bspopts.h>.
 enabled-by: true
diff --git a/spec/build/bsps/m68k/mvme167/optprintkminor.yml b/spec/build/bsps/m68k/mvme167/optprintkminor.yml
index 5976e1dbbb..cad5de52c7 100644
--- a/spec/build/bsps/m68k/mvme167/optprintkminor.yml
+++ b/spec/build/bsps/m68k/mvme167/optprintkminor.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1
 description: |
   Port to use for printk debugging output.  0 - /dev/tty0, Serial Port 1/Console on the MVME712M.  1 - /dev/tty1, Serial Port 2/TTY01 on the MVME712M.  2 - /dev/tty2, Serial Port 3 on the MVME712M.  3 - /dev/tty3, Serial Port 4 on the MVME712M.
 enabled-by: true
diff --git a/spec/build/bsps/m68k/mvme167/optuseterm.yml b/spec/build/bsps/m68k/mvme167/optuseterm.yml
index 585bd63329..8643c42d2b 100644
--- a/spec/build/bsps/m68k/mvme167/optuseterm.yml
+++ b/spec/build/bsps/m68k/mvme167/optuseterm.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   1 for using termios based console.
 enabled-by: true
diff --git a/spec/build/bsps/m68k/uC5282/abi.yml b/spec/build/bsps/m68k/uC5282/abi.yml
index a2d11d2bf3..7f0aa892f9 100644
--- a/spec/build/bsps/m68k/uC5282/abi.yml
+++ b/spec/build/bsps/m68k/uC5282/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=5282
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=5282
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/microblaze/microblaze_fpga/abi.yml b/spec/build/bsps/microblaze/microblaze_fpga/abi.yml
index 4665f5d42e..7d78c9842d 100644
--- a/spec/build/bsps/microblaze/microblaze_fpga/abi.yml
+++ b/spec/build/bsps/microblaze/microblaze_fpga/abi.yml
@@ -7,11 +7,12 @@ build-type: option
 copyrights:
 - Copyright (C) 2021 On-Line Applications Research Corporation (OAR)
 default:
-- -mlittle-endian
-- -mno-xl-soft-div
-- -mno-xl-soft-mul
-- -Wl,-EL
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mlittle-endian
+  - -mno-xl-soft-div
+  - -mno-xl-soft-mul
+  - -Wl,-EL
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/microblaze/microblaze_fpga/optconsoleinterrupts.yml b/spec/build/bsps/microblaze/microblaze_fpga/optconsoleinterrupts.yml
index c75a4450e1..61bd7fc48f 100644
--- a/spec/build/bsps/microblaze/microblaze_fpga/optconsoleinterrupts.yml
+++ b/spec/build/bsps/microblaze/microblaze_fpga/optconsoleinterrupts.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 On-Line Applications Research Corporation (OAR)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   use interrupt driven mode for console
 enabled-by: true
diff --git a/spec/build/bsps/microblaze/microblaze_fpga/optdcachebaseaddress.yml b/spec/build/bsps/microblaze/microblaze_fpga/optdcachebaseaddress.yml
index d568f3fd92..65706834d5 100644
--- a/spec/build/bsps/microblaze/microblaze_fpga/optdcachebaseaddress.yml
+++ b/spec/build/bsps/microblaze/microblaze_fpga/optdcachebaseaddress.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 On-Line Applications Research Corporation (OAR)
-default: 2147483648
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 2147483648
 description: |
   base address of the data cache
 enabled-by: true
diff --git a/spec/build/bsps/microblaze/microblaze_fpga/optdcachelinelen.yml b/spec/build/bsps/microblaze/microblaze_fpga/optdcachelinelen.yml
index 2a9af43baa..0b8ab8bd9b 100644
--- a/spec/build/bsps/microblaze/microblaze_fpga/optdcachelinelen.yml
+++ b/spec/build/bsps/microblaze/microblaze_fpga/optdcachelinelen.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 On-Line Applications Research Corporation (OAR)
-default: 4
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 4
 description: |
   length of the data cache line
 enabled-by: true
diff --git a/spec/build/bsps/microblaze/microblaze_fpga/optdcachesize.yml b/spec/build/bsps/microblaze/microblaze_fpga/optdcachesize.yml
index 71a39a0f10..ee7ef4b7ed 100644
--- a/spec/build/bsps/microblaze/microblaze_fpga/optdcachesize.yml
+++ b/spec/build/bsps/microblaze/microblaze_fpga/optdcachesize.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 On-Line Applications Research Corporation (OAR)
-default: 32768
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 32768
 description: |
   size of the data cache in bytes
 enabled-by: true
diff --git a/spec/build/bsps/microblaze/microblaze_fpga/optdtbheaderpath.yml b/spec/build/bsps/microblaze/microblaze_fpga/optdtbheaderpath.yml
index 6432e8b77f..23f8daf4f9 100644
--- a/spec/build/bsps/microblaze/microblaze_fpga/optdtbheaderpath.yml
+++ b/spec/build/bsps/microblaze/microblaze_fpga/optdtbheaderpath.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 On-Line Applications Research Corporation (OAR)
-default: bsp/microblaze-dtb.h
-default-by-variant: []
+default:
+- enabled-by: true
+  value: bsp/microblaze-dtb.h
 description: |
   the path to the header file containing the device tree binary. See the BSP
   documentation for more information.
diff --git a/spec/build/bsps/microblaze/microblaze_fpga/opticachebaseaddress.yml b/spec/build/bsps/microblaze/microblaze_fpga/opticachebaseaddress.yml
index 207c2e4e1a..53b0c70cf4 100644
--- a/spec/build/bsps/microblaze/microblaze_fpga/opticachebaseaddress.yml
+++ b/spec/build/bsps/microblaze/microblaze_fpga/opticachebaseaddress.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 On-Line Applications Research Corporation (OAR)
-default: 2147483648
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 2147483648
 description: |
   base address of the instruction cache
 enabled-by: true
diff --git a/spec/build/bsps/microblaze/microblaze_fpga/opticachelinelen.yml b/spec/build/bsps/microblaze/microblaze_fpga/opticachelinelen.yml
index 0c0a55011f..f9671f89ac 100644
--- a/spec/build/bsps/microblaze/microblaze_fpga/opticachelinelen.yml
+++ b/spec/build/bsps/microblaze/microblaze_fpga/opticachelinelen.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 On-Line Applications Research Corporation (OAR)
-default: 8
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 8
 description: |
   length of the instruction cache line
 enabled-by: true
diff --git a/spec/build/bsps/microblaze/microblaze_fpga/opticachesize.yml b/spec/build/bsps/microblaze/microblaze_fpga/opticachesize.yml
index 2b5f083dea..c8eb421f0b 100644
--- a/spec/build/bsps/microblaze/microblaze_fpga/opticachesize.yml
+++ b/spec/build/bsps/microblaze/microblaze_fpga/opticachesize.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 On-Line Applications Research Corporation (OAR)
-default: 32768
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 32768
 description: |
   size of the instruction cache in bytes
 enabled-by: true
diff --git a/spec/build/bsps/microblaze/microblaze_fpga/optintcbaseaddress.yml b/spec/build/bsps/microblaze/microblaze_fpga/optintcbaseaddress.yml
index 0030fa1953..162636b884 100644
--- a/spec/build/bsps/microblaze/microblaze_fpga/optintcbaseaddress.yml
+++ b/spec/build/bsps/microblaze/microblaze_fpga/optintcbaseaddress.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 On-Line Applications Research Corporation (OAR)
-default: 1092616192
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1092616192
 description: |
   base address of the AXI Interrupt Controller
 enabled-by: true
diff --git a/spec/build/bsps/microblaze/microblaze_fpga/optramlen.yml b/spec/build/bsps/microblaze/microblaze_fpga/optramlen.yml
index bb12934884..adb20f2c34 100644
--- a/spec/build/bsps/microblaze/microblaze_fpga/optramlen.yml
+++ b/spec/build/bsps/microblaze/microblaze_fpga/optramlen.yml
@@ -7,12 +7,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 On-Line Applications Research (OAR)
-default: 268435456
-default-by-variant:
-- value: 2147483648
-  variants:
+default:
+- enabled-by:
   - microblaze/kcu105
   - microblaze/kcu105_qemu
+  value: 2147483648
+- enabled-by: true
+  value: 268435456
 description: |
   length of memory area available to the BSP
 enabled-by: true
diff --git a/spec/build/bsps/microblaze/microblaze_fpga/optspibaseaddress.yml b/spec/build/bsps/microblaze/microblaze_fpga/optspibaseaddress.yml
index 255ed949c9..08818cbf09 100644
--- a/spec/build/bsps/microblaze/microblaze_fpga/optspibaseaddress.yml
+++ b/spec/build/bsps/microblaze/microblaze_fpga/optspibaseaddress.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 On-Line Applications Research Corporation (OAR)
-default: 1151336448
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1151336448
 description: |
   base address of the AXI Quad SPI
 enabled-by: true
diff --git a/spec/build/bsps/microblaze/microblaze_fpga/optspiirq.yml b/spec/build/bsps/microblaze/microblaze_fpga/optspiirq.yml
index 7186c6b8e1..5d26ea6cf5 100644
--- a/spec/build/bsps/microblaze/microblaze_fpga/optspiirq.yml
+++ b/spec/build/bsps/microblaze/microblaze_fpga/optspiirq.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 On-Line Applications Research Corporation (OAR)
-default: 3
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 3
 description: |
   IRQ number of the AXI SPI
 enabled-by: true
diff --git a/spec/build/bsps/microblaze/microblaze_fpga/opttimerbaseaddress.yml b/spec/build/bsps/microblaze/microblaze_fpga/opttimerbaseaddress.yml
index 132f4a8e9d..0a7afaf262 100644
--- a/spec/build/bsps/microblaze/microblaze_fpga/opttimerbaseaddress.yml
+++ b/spec/build/bsps/microblaze/microblaze_fpga/opttimerbaseaddress.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 On-Line Applications Research Corporation (OAR)
-default: 1103101952
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1103101952
 description: |
   base address of the AXI Timer
 enabled-by: true
diff --git a/spec/build/bsps/microblaze/microblaze_fpga/opttimerfrequency.yml b/spec/build/bsps/microblaze/microblaze_fpga/opttimerfrequency.yml
index 4734f81bc1..e9cdbb6826 100644
--- a/spec/build/bsps/microblaze/microblaze_fpga/opttimerfrequency.yml
+++ b/spec/build/bsps/microblaze/microblaze_fpga/opttimerfrequency.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 On-Line Applications Research Corporation (OAR)
-default: 100000000
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 100000000
 description: |
   frequency of the AXI Timer
 enabled-by: true
diff --git a/spec/build/bsps/microblaze/microblaze_fpga/optuartlitebaseaddress.yml b/spec/build/bsps/microblaze/microblaze_fpga/optuartlitebaseaddress.yml
index 4b423ebe8d..91ecfa0ac7 100644
--- a/spec/build/bsps/microblaze/microblaze_fpga/optuartlitebaseaddress.yml
+++ b/spec/build/bsps/microblaze/microblaze_fpga/optuartlitebaseaddress.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 On-Line Applications Research Corporation (OAR)
-default: 1080033280
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1080033280
 description: |
   base address of the AXI UART Lite
 enabled-by: true
diff --git a/spec/build/bsps/microblaze/microblaze_fpga/tstkcu105_qemu.yml b/spec/build/bsps/microblaze/microblaze_fpga/tstkcu105_qemu.yml
index 50541a1a67..88563ea32c 100644
--- a/spec/build/bsps/microblaze/microblaze_fpga/tstkcu105_qemu.yml
+++ b/spec/build/bsps/microblaze/microblaze_fpga/tstkcu105_qemu.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 On-Line Applications Research Corporation (OAR)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/mips/csb350/abi.yml b/spec/build/bsps/mips/csb350/abi.yml
index 049de557ad..23bee7abfc 100644
--- a/spec/build/bsps/mips/csb350/abi.yml
+++ b/spec/build/bsps/mips/csb350/abi.yml
@@ -7,10 +7,11 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mips32
-- -G0
-- -msoft-float
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mips32
+  - -G0
+  - -msoft-float
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/mips/hurricane/abi.yml b/spec/build/bsps/mips/hurricane/abi.yml
index 79408e4eb3..46d089e3cb 100644
--- a/spec/build/bsps/mips/hurricane/abi.yml
+++ b/spec/build/bsps/mips/hurricane/abi.yml
@@ -7,10 +7,11 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mips3
-- -G0
-- -EL
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mips3
+  - -G0
+  - -EL
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/mips/hurricane/optrm52xx.yml b/spec/build/bsps/mips/hurricane/optrm52xx.yml
index 1fc3d504e4..931f93f968 100644
--- a/spec/build/bsps/mips/hurricane/optrm52xx.yml
+++ b/spec/build/bsps/mips/hurricane/optrm52xx.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   This BSP has a RM52xx compatible CPU.
 enabled-by: true
diff --git a/spec/build/bsps/mips/hurricane/optusc320.yml b/spec/build/bsps/mips/hurricane/optusc320.yml
index 74ddd56d4f..95a912be10 100644
--- a/spec/build/bsps/mips/hurricane/optusc320.yml
+++ b/spec/build/bsps/mips/hurricane/optusc320.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   This BSP has a V3 USC320 system controller chip.
 enabled-by: true
diff --git a/spec/build/bsps/mips/jmr3904/abi.yml b/spec/build/bsps/mips/jmr3904/abi.yml
index c46d4f8c3e..f761e856ac 100644
--- a/spec/build/bsps/mips/jmr3904/abi.yml
+++ b/spec/build/bsps/mips/jmr3904/abi.yml
@@ -7,10 +7,11 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -march=r3900
-- -Wa,-xgot
-- -G0
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -march=r3900
+  - -Wa,-xgot
+  - -G0
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/mips/jmr3904/tstjmr3904.yml b/spec/build/bsps/mips/jmr3904/tstjmr3904.yml
index 9ae030d919..4e4a560336 100644
--- a/spec/build/bsps/mips/jmr3904/tstjmr3904.yml
+++ b/spec/build/bsps/mips/jmr3904/tstjmr3904.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/mips/malta/abi.yml b/spec/build/bsps/mips/malta/abi.yml
index 99038088b2..bc0936cbae 100644
--- a/spec/build/bsps/mips/malta/abi.yml
+++ b/spec/build/bsps/mips/malta/abi.yml
@@ -7,10 +7,11 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -march=24kf1_1
-- -Wa,-xgot
-- -G0
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -march=24kf1_1
+  - -Wa,-xgot
+  - -G0
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/mips/rbtx4925/abi.yml b/spec/build/bsps/mips/rbtx4925/abi.yml
index 79408e4eb3..46d089e3cb 100644
--- a/spec/build/bsps/mips/rbtx4925/abi.yml
+++ b/spec/build/bsps/mips/rbtx4925/abi.yml
@@ -7,10 +7,11 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mips3
-- -G0
-- -EL
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mips3
+  - -G0
+  - -EL
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/mips/rbtx4925/opttx49xx.yml b/spec/build/bsps/mips/rbtx4925/opttx49xx.yml
index a9e7f96fe2..6921be472f 100644
--- a/spec/build/bsps/mips/rbtx4925/opttx49xx.yml
+++ b/spec/build/bsps/mips/rbtx4925/opttx49xx.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   This BSP has a RM52xx compatible CPU.
 enabled-by: true
diff --git a/spec/build/bsps/mips/rbtx4938/abi.yml b/spec/build/bsps/mips/rbtx4938/abi.yml
index 79408e4eb3..46d089e3cb 100644
--- a/spec/build/bsps/mips/rbtx4938/abi.yml
+++ b/spec/build/bsps/mips/rbtx4938/abi.yml
@@ -7,10 +7,11 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mips3
-- -G0
-- -EL
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mips3
+  - -G0
+  - -EL
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/moxie/moxiesim/abi.yml b/spec/build/bsps/moxie/moxiesim/abi.yml
index 530e7a5d14..d47c609e80 100644
--- a/spec/build/bsps/moxie/moxiesim/abi.yml
+++ b/spec/build/bsps/moxie/moxiesim/abi.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: []
-default-by-variant: []
+default:
+- enabled-by: true
+  value: []
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/nios2/nios2_iss/abi.yml b/spec/build/bsps/nios2/nios2_iss/abi.yml
index 231cb54350..2eaca1d8be 100644
--- a/spec/build/bsps/nios2/nios2_iss/abi.yml
+++ b/spec/build/bsps/nios2/nios2_iss/abi.yml
@@ -7,9 +7,10 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mno-hw-mul
-- -mno-hw-div
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mno-hw-mul
+  - -mno-hw-div
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/optabi.yml b/spec/build/bsps/optabi.yml
index d7852a082c..e7e5d21d54 100644
--- a/spec/build/bsps/optabi.yml
+++ b/spec/build/bsps/optabi.yml
@@ -8,8 +8,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/optasflags.yml b/spec/build/bsps/optasflags.yml
index 1f10274103..875f5fdfc2 100644
--- a/spec/build/bsps/optasflags.yml
+++ b/spec/build/bsps/optasflags.yml
@@ -7,8 +7,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/optbsp.yml b/spec/build/bsps/optbsp.yml
index abe9fe840f..2c90a9677b 100644
--- a/spec/build/bsps/optbsp.yml
+++ b/spec/build/bsps/optbsp.yml
@@ -6,8 +6,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/optbspoptflags.yml b/spec/build/bsps/optbspoptflags.yml
index 40dbb6c7ab..cdc265b967 100644
--- a/spec/build/bsps/optbspoptflags.yml
+++ b/spec/build/bsps/optbspoptflags.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
-default: ${OPTIMIZATION_FLAGS}
-default-by-variant: []
+default:
+- enabled-by: true
+  value: ${OPTIMIZATION_FLAGS}
 description: |
   Optimization flags passed to C and C++ compilers for the BSP.
 enabled-by: true
diff --git a/spec/build/bsps/optcachedata.yml b/spec/build/bsps/optcachedata.yml
index 87ab0385a6..aa0cc4e3e8 100644
--- a/spec/build/bsps/optcachedata.yml
+++ b/spec/build/bsps/optcachedata.yml
@@ -6,10 +6,8 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
+default:
+- enabled-by:
   - aarch64/a53_ilp32_qemu
   - aarch64/a53_lp64_qemu
   - aarch64/a72_ilp32_qemu
@@ -24,6 +22,9 @@ default-by-variant:
   - powerpc/qemuppc
   - powerpc/qemuprep
   - powerpc/qemuprep-altivec
+  value: false
+- enabled-by: true
+  value: true
 description: |
   Enable data cache
 enabled-by: true
diff --git a/spec/build/bsps/optcacheinst.yml b/spec/build/bsps/optcacheinst.yml
index ac0afc964a..ffd1df78a3 100644
--- a/spec/build/bsps/optcacheinst.yml
+++ b/spec/build/bsps/optcacheinst.yml
@@ -6,10 +6,8 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
+default:
+- enabled-by:
   - aarch64/a53_ilp32_qemu
   - aarch64/a53_lp64_qemu
   - aarch64/a72_ilp32_qemu
@@ -24,6 +22,9 @@ default-by-variant:
   - powerpc/qemuppc
   - powerpc/qemuprep
   - powerpc/qemuprep-altivec
+  value: false
+- enabled-by: true
+  value: true
 description: |
   Enable instruction cache
 enabled-by: true
diff --git a/spec/build/bsps/optcflags.yml b/spec/build/bsps/optcflags.yml
index 302f1723a6..df10a09235 100644
--- a/spec/build/bsps/optcflags.yml
+++ b/spec/build/bsps/optcflags.yml
@@ -8,8 +8,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/optclang.yml b/spec/build/bsps/optclang.yml
index 14e13d32c4..f67b004a37 100644
--- a/spec/build/bsps/optclang.yml
+++ b/spec/build/bsps/optclang.yml
@@ -7,8 +7,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 Hesham Almatary <Hesham.Almatary at cl.cam.ac.uk>
-default: null
-default-by-variant: []
+default: []
 description: Provides clang support for linker command files.
 enabled-by:
 - clang
diff --git a/spec/build/bsps/optclkbootcpu.yml b/spec/build/bsps/optclkbootcpu.yml
index 4044926fb8..bfc6e3b121 100644
--- a/spec/build/bsps/optclkbootcpu.yml
+++ b/spec/build/bsps/optclkbootcpu.yml
@@ -6,10 +6,8 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - aarch64/a53_ilp32_qemu
   - aarch64/a53_lp64_qemu
   - aarch64/a72_ilp32_qemu
@@ -24,6 +22,9 @@ default-by-variant:
   - powerpc/qemuppc
   - powerpc/qemuprep
   - powerpc/qemuprep-altivec
+  value: true
+- enabled-by: true
+  value: false
 description: |
   Do the clock tick processing on the boot processor on behalf of all other
   processors.
diff --git a/spec/build/bsps/optclkfastidle.yml b/spec/build/bsps/optclkfastidle.yml
index e0b3698992..045cfce700 100644
--- a/spec/build/bsps/optclkfastidle.yml
+++ b/spec/build/bsps/optclkfastidle.yml
@@ -5,10 +5,8 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - aarch64/a53_ilp32_qemu
   - aarch64/a53_lp64_qemu
   - aarch64/a72_ilp32_qemu
@@ -23,6 +21,9 @@ default-by-variant:
   - powerpc/qemuppc
   - powerpc/qemuprep
   - powerpc/qemuprep-altivec
+  value: true
+- enabled-by: true
+  value: false
 description: |
   Set a mode where the time runs as fast as possible when a clock ISR occurs
   while the IDLE thread is executing; this can significantly reduce simulation
diff --git a/spec/build/bsps/optconminor.yml b/spec/build/bsps/optconminor.yml
index 486eb92d33..5bf1015f61 100644
--- a/spec/build/bsps/optconminor.yml
+++ b/spec/build/bsps/optconminor.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1
 description: |
   minor number of console device
 enabled-by: true
diff --git a/spec/build/bsps/optconsolebaud.yml b/spec/build/bsps/optconsolebaud.yml
index 8e754579cd..8a8b56d36e 100644
--- a/spec/build/bsps/optconsolebaud.yml
+++ b/spec/build/bsps/optconsolebaud.yml
@@ -5,19 +5,19 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 115200
-default-by-variant:
-- value: 9600
-  variants:
+default:
+- enabled-by:
   - bsps/powerpc/motorola_powerpc
   - m68k/m5484FireEngine
   - powerpc/beatnik
   - powerpc/hsc_cm01
   - powerpc/mvme3100
   - powerpc/mvme5500
-- value: 19200
-  variants:
-  - m68k/COBRA5475
+  value: 9600
+- enabled-by: m68k/COBRA5475
+  value: 19200
+- enabled-by: true
+  value: 115200
 description: |
   Default baud for console and other serial devices.
 enabled-by: true
diff --git a/spec/build/bsps/optconsoleirq.yml b/spec/build/bsps/optconsoleirq.yml
index f20a56be37..39639d82a7 100644
--- a/spec/build/bsps/optconsoleirq.yml
+++ b/spec/build/bsps/optconsoleirq.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   Use the Termios interrupt mode in the console driver.
 enabled-by: true
diff --git a/spec/build/bsps/optcpukitoptflags.yml b/spec/build/bsps/optcpukitoptflags.yml
index 3baec4b8c8..9cdfde4640 100644
--- a/spec/build/bsps/optcpukitoptflags.yml
+++ b/spec/build/bsps/optcpukitoptflags.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
-default: ${OPTIMIZATION_FLAGS}
-default-by-variant: []
+default:
+- enabled-by: true
+  value: ${OPTIMIZATION_FLAGS}
 description: |
   Optimization flags passed to C and C++ compilers for the CPU kit.
 enabled-by: true
diff --git a/spec/build/bsps/optdtb.yml b/spec/build/bsps/optdtb.yml
index e38cc5a071..78fed67866 100644
--- a/spec/build/bsps/optdtb.yml
+++ b/spec/build/bsps/optdtb.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - riscv/mpfs64imafdc
+default:
+- enabled-by: riscv/mpfs64imafdc
+  value: true
+- enabled-by: true
+  value: false
 description: |
   the path to the header file containing the device tree binary. See the BSP
   documentation for more information.
diff --git a/spec/build/bsps/optdtbheaderpath.yml b/spec/build/bsps/optdtbheaderpath.yml
index a069d084b2..65573c4cb8 100644
--- a/spec/build/bsps/optdtbheaderpath.yml
+++ b/spec/build/bsps/optdtbheaderpath.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 On-Line Applications Research Corporation (OAR)
-default: false
-default-by-variant:
-- value: bsp/mpfs-dtb.h
-  variants:
-  - riscv/mpfs64imafdc
+default:
+- enabled-by: riscv/mpfs64imafdc
+  value: bsp/mpfs-dtb.h
+- enabled-by: true
+  value: false
 description: |
   the path to the header file containing the device tree binary. See the BSP
   documentation for more information.
diff --git a/spec/build/bsps/optfatalverb.yml b/spec/build/bsps/optfatalverb.yml
index d5db6e6c21..2e4d89cbbe 100644
--- a/spec/build/bsps/optfatalverb.yml
+++ b/spec/build/bsps/optfatalverb.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1
 description: |
   If defined to a non-zero value, prints the some information in case of a
   fatal error.
diff --git a/spec/build/bsps/optfdtcpyro.yml b/spec/build/bsps/optfdtcpyro.yml
index c26b1ae051..5a02e39a40 100644
--- a/spec/build/bsps/optfdtcpyro.yml
+++ b/spec/build/bsps/optfdtcpyro.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   copy the FDT blob into the read-only load area via bsp_fdt_copy()
 enabled-by: true
diff --git a/spec/build/bsps/optfdtmxsz.yml b/spec/build/bsps/optfdtmxsz.yml
index 14af766230..305e1d3b71 100644
--- a/spec/build/bsps/optfdtmxsz.yml
+++ b/spec/build/bsps/optfdtmxsz.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 262144
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 262144
 description: |
   maximum size of the FDT blob in bytes
 enabled-by: true
diff --git a/spec/build/bsps/optfdtro.yml b/spec/build/bsps/optfdtro.yml
index a61bb2924b..cbeb50320b 100644
--- a/spec/build/bsps/optfdtro.yml
+++ b/spec/build/bsps/optfdtro.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   place the FDT blob into the read-only data area
 enabled-by: true
diff --git a/spec/build/bsps/optfdtuboot.yml b/spec/build/bsps/optfdtuboot.yml
index 5805e912ff..8c53b8b799 100644
--- a/spec/build/bsps/optfdtuboot.yml
+++ b/spec/build/bsps/optfdtuboot.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   copy the U-Boot provided FDT to an internal storage
 enabled-by: true
diff --git a/spec/build/bsps/optgcc.yml b/spec/build/bsps/optgcc.yml
index ee75b8397e..3c924a3ebd 100644
--- a/spec/build/bsps/optgcc.yml
+++ b/spec/build/bsps/optgcc.yml
@@ -7,8 +7,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 Hesham Almatary <Hesham.Almatary at cl.cam.ac.uk>
-default: null
-default-by-variant: []
+default: []
 description: Provides GNU ld support for linker command files.
 enabled-by:
 - gcc
diff --git a/spec/build/bsps/optincludes.yml b/spec/build/bsps/optincludes.yml
index ea57fe3e05..7cfdc7fe6c 100644
--- a/spec/build/bsps/optincludes.yml
+++ b/spec/build/bsps/optincludes.yml
@@ -8,8 +8,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/optldflags.yml b/spec/build/bsps/optldflags.yml
index d86d8cfb50..6210e05dec 100644
--- a/spec/build/bsps/optldflags.yml
+++ b/spec/build/bsps/optldflags.yml
@@ -8,8 +8,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -Wl,--gc-sections
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -Wl,--gc-sections
 description: |
   Flags passed to the linker at the end of the link command.
 enabled-by: true
diff --git a/spec/build/bsps/optldflagsbsp.yml b/spec/build/bsps/optldflagsbsp.yml
index 74f15bd559..00889ea438 100644
--- a/spec/build/bsps/optldflagsbsp.yml
+++ b/spec/build/bsps/optldflagsbsp.yml
@@ -8,8 +8,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/optlinkflags.yml b/spec/build/bsps/optlinkflags.yml
index 35fa483721..caa0ed1075 100644
--- a/spec/build/bsps/optlinkflags.yml
+++ b/spec/build/bsps/optlinkflags.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
-default: []
-default-by-variant: []
+default:
+- enabled-by: true
+  value: []
 description: |
   Flags passed to the linker.
 enabled-by: true
diff --git a/spec/build/bsps/optmake.yml b/spec/build/bsps/optmake.yml
index 28e9660fb1..7bf3883762 100644
--- a/spec/build/bsps/optmake.yml
+++ b/spec/build/bsps/optmake.yml
@@ -10,8 +10,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/optmakelegacy.yml b/spec/build/bsps/optmakelegacy.yml
index 3810761d3d..c0ff870f14 100644
--- a/spec/build/bsps/optmakelegacy.yml
+++ b/spec/build/bsps/optmakelegacy.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   Install the legacy application Makefile framework.
 enabled-by: true
diff --git a/spec/build/bsps/opto0.yml b/spec/build/bsps/opto0.yml
index 9f54709c07..ccd1b1e956 100644
--- a/spec/build/bsps/opto0.yml
+++ b/spec/build/bsps/opto0.yml
@@ -7,11 +7,12 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -O0
-- -g
-- -fdata-sections
-- -ffunction-sections
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -O0
+  - -g
+  - -fdata-sections
+  - -ffunction-sections
 description: |
   Default optimization flags for C and C++ compilers.
 enabled-by: true
diff --git a/spec/build/bsps/opto1.yml b/spec/build/bsps/opto1.yml
index e0668a887b..ab8322bb33 100644
--- a/spec/build/bsps/opto1.yml
+++ b/spec/build/bsps/opto1.yml
@@ -7,11 +7,12 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -O1
-- -g
-- -fdata-sections
-- -ffunction-sections
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -O1
+  - -g
+  - -fdata-sections
+  - -ffunction-sections
 description: |
   Default optimization flags for C and C++ compilers.
 enabled-by: true
diff --git a/spec/build/bsps/opto2.yml b/spec/build/bsps/opto2.yml
index 7b54556c5b..4145221d1c 100644
--- a/spec/build/bsps/opto2.yml
+++ b/spec/build/bsps/opto2.yml
@@ -7,11 +7,12 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -O2
-- -g
-- -fdata-sections
-- -ffunction-sections
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -O2
+  - -g
+  - -fdata-sections
+  - -ffunction-sections
 description: |
   Default optimization flags for C and C++ compilers.
 enabled-by: true
diff --git a/spec/build/bsps/optobjcopy.yml b/spec/build/bsps/optobjcopy.yml
index c1d19476fa..fcb5e68cd6 100644
--- a/spec/build/bsps/optobjcopy.yml
+++ b/spec/build/bsps/optobjcopy.yml
@@ -7,8 +7,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/optog.yml b/spec/build/bsps/optog.yml
index 2eab2acdd1..3313ccd1ba 100644
--- a/spec/build/bsps/optog.yml
+++ b/spec/build/bsps/optog.yml
@@ -7,11 +7,12 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -Og
-- -g
-- -fdata-sections
-- -ffunction-sections
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -Og
+  - -g
+  - -fdata-sections
+  - -ffunction-sections
 description: |
   Default optimization flags for C and C++ compilers.
 enabled-by: true
diff --git a/spec/build/bsps/optos.yml b/spec/build/bsps/optos.yml
index 1c2c106064..8d70b77891 100644
--- a/spec/build/bsps/optos.yml
+++ b/spec/build/bsps/optos.yml
@@ -7,11 +7,12 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -Os
-- -g
-- -fdata-sections
-- -ffunction-sections
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -Os
+  - -g
+  - -fdata-sections
+  - -ffunction-sections
 description: |
   Default optimization flags for C and C++ compilers.
 enabled-by: true
diff --git a/spec/build/bsps/optprintexcpt.yml b/spec/build/bsps/optprintexcpt.yml
index cf8ffc006c..e65676c401 100644
--- a/spec/build/bsps/optprintexcpt.yml
+++ b/spec/build/bsps/optprintexcpt.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1
 description: |
   If defined to a non-zero value, prints the exception context when an
   unexpected exception occurs.
diff --git a/spec/build/bsps/optreset.yml b/spec/build/bsps/optreset.yml
index 886a059392..3d9a07127e 100644
--- a/spec/build/bsps/optreset.yml
+++ b/spec/build/bsps/optreset.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1
 description: |
   If defined to a non-zero value, reset the board when the application exits.
 enabled-by: true
diff --git a/spec/build/bsps/optresetkey.yml b/spec/build/bsps/optresetkey.yml
index bcd7887962..65bad8002c 100644
--- a/spec/build/bsps/optresetkey.yml
+++ b/spec/build/bsps/optresetkey.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: |
   If defined to a non-zero value, print a message and wait until pressed before
   resetting board when application exits.
diff --git a/spec/build/bsps/optstarthyp.yml b/spec/build/bsps/optstarthyp.yml
index d21db5ad4f..728a5e9450 100644
--- a/spec/build/bsps/optstarthyp.yml
+++ b/spec/build/bsps/optstarthyp.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   If set to true, then the a system start in hypervisor mode (EL2) is
   supported, otherwise it is unsupported.
diff --git a/spec/build/bsps/opttestoptflags.yml b/spec/build/bsps/opttestoptflags.yml
index 43e0c92c07..c7ff3def28 100644
--- a/spec/build/bsps/opttestoptflags.yml
+++ b/spec/build/bsps/opttestoptflags.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
-default: ${OPTIMIZATION_FLAGS}
-default-by-variant: []
+default:
+- enabled-by: true
+  value: ${OPTIMIZATION_FLAGS}
 description: |
   Optimization flags passed to C and C++ compiler for tests.
 enabled-by: true
diff --git a/spec/build/bsps/optxilsupportpath.yml b/spec/build/bsps/optxilsupportpath.yml
index 25ddaf062c..7c6daa9043 100644
--- a/spec/build/bsps/optxilsupportpath.yml
+++ b/spec/build/bsps/optxilsupportpath.yml
@@ -5,27 +5,25 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 On-Line Applications Research (OAR)
-default: null
-default-by-variant:
-- value: arm/cortexr5
-  variants: []
-- value: microblaze
-  variants:
-  - bsps/microblaze/microblaze_fpga
-- value: arm/cortexa9
-  variants:
+default:
+- enabled-by: []
+  value: arm/cortexr5
+- enabled-by: bsps/microblaze/microblaze_fpga
+  value: microblaze
+- enabled-by:
   - bsps/arm/xilinx_zynq
   - bsps/arm/xilinx_zynqmp
-- value: arm/ARMv8/32bit
-  variants:
+  value: arm/cortexa9
+- enabled-by:
   - aarch64/xilinx_zynqmp_ilp32_qemu
   - aarch64/xilinx_zynqmp_ilp32_zu3eg
-- value: arm/ARMv8/64bit
-  variants:
+  value: arm/ARMv8/32bit
+- enabled-by:
   - aarch64/xilinx_zynqmp_lp64_cfc400x
   - aarch64/xilinx_zynqmp_lp64_qemu
   - aarch64/xilinx_zynqmp_lp64_zu3eg
   - bsps/aarch64/xilinx_versal
+  value: arm/ARMv8/64bit
 description: Set the Xilinx support path
 enabled-by: true
 format: '{}'
diff --git a/spec/build/bsps/or1k/generic_or1k/abi.yml b/spec/build/bsps/or1k/generic_or1k/abi.yml
index 48034df3b0..e124cdecd2 100644
--- a/spec/build/bsps/or1k/generic_or1k/abi.yml
+++ b/spec/build/bsps/or1k/generic_or1k/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -O2
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -O2
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/or1k/generic_or1k/optperiphclk.yml b/spec/build/bsps/or1k/generic_or1k/optperiphclk.yml
index ffe76b552b..c1b2f251ac 100644
--- a/spec/build/bsps/or1k/generic_or1k/optperiphclk.yml
+++ b/spec/build/bsps/or1k/generic_or1k/optperiphclk.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 50000000
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 50000000
 description: |
   or1k PERIPHCLK clock frequency in Hz
 enabled-by: true
diff --git a/spec/build/bsps/or1k/generic_or1k/optresetvec.yml b/spec/build/bsps/or1k/generic_or1k/optresetvec.yml
index efd1ea2b2a..bac5c79627 100644
--- a/spec/build/bsps/or1k/generic_or1k/optresetvec.yml
+++ b/spec/build/bsps/or1k/generic_or1k/optresetvec.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   reset vector address for BSP start
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/beatnik/abi.yml b/spec/build/bsps/powerpc/beatnik/abi.yml
index e58eba74f5..16e24ae272 100644
--- a/spec/build/bsps/powerpc/beatnik/abi.yml
+++ b/spec/build/bsps/powerpc/beatnik/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=7400
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=7400
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/beatnik/optsbrk.yml b/spec/build/bsps/powerpc/beatnik/optsbrk.yml
index 05a1acd75f..fa1f5129bc 100644
--- a/spec/build/bsps/powerpc/beatnik/optsbrk.yml
+++ b/spec/build/bsps/powerpc/beatnik/optsbrk.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   If defined then the BSP may reduce the available memory size initially. This can be useful for debugging (reduce the core size) or dynamic loading (std gcc text offsets/jumps are < +/-32M).  Note that the policy can still be defined by the application (see sbrk.c, BSP_sbrk_policy). By undefining CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK this feature is removed and a little memory is saved.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen5200/abi.yml b/spec/build/bsps/powerpc/gen5200/abi.yml
index 29fd9942f9..6d5a558a08 100644
--- a/spec/build/bsps/powerpc/gen5200/abi.yml
+++ b/spec/build/bsps/powerpc/gen5200/abi.yml
@@ -7,11 +7,12 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=603e
-- -mstrict-align
-- -meabi
-- -msdata=sysv
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=603e
+  - -mstrict-align
+  - -meabi
+  - -msdata=sysv
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen5200/optbenchirq.yml b/spec/build/bsps/powerpc/gen5200/optbenchirq.yml
index 3ade789573..ad8ad031ab 100644
--- a/spec/build/bsps/powerpc/gen5200/optbenchirq.yml
+++ b/spec/build/bsps/powerpc/gen5200/optbenchirq.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   If set to !0, enable code to benchmark IRQ processing.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen5200/optenirqnest.yml b/spec/build/bsps/powerpc/gen5200/optenirqnest.yml
index 2dfcefb5ea..073c451ae4 100644
--- a/spec/build/bsps/powerpc/gen5200/optenirqnest.yml
+++ b/spec/build/bsps/powerpc/gen5200/optenirqnest.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
-  - powerpc/icecube
+default:
+- enabled-by: powerpc/icecube
+  value: false
+- enabled-by: true
+  value: true
 description: |
   If set to !0, allow nested IRQ processing.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen5200/optgpiomsk.yml b/spec/build/bsps/powerpc/gen5200/optgpiomsk.yml
index c39ec0ce43..7d3eaeb522 100644
--- a/spec/build/bsps/powerpc/gen5200/optgpiomsk.yml
+++ b/spec/build/bsps/powerpc/gen5200/optgpiomsk.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 856625015
-default-by-variant:
-- value: 58670855
-  variants:
-  - powerpc/pm520_ze30
+default:
+- enabled-by: powerpc/pm520_ze30
+  value: 58670855
+- enabled-by: true
+  value: 856625015
 description: |
   Defines the bits cleared in the MPC5200 GPIOPCR register during
   initialization.  Must match the hardware requirements.  Must be consistent
diff --git a/spec/build/bsps/powerpc/gen5200/optgpioval.yml b/spec/build/bsps/powerpc/gen5200/optgpioval.yml
index 029df6a4f7..5d7b673e66 100644
--- a/spec/build/bsps/powerpc/gen5200/optgpioval.yml
+++ b/spec/build/bsps/powerpc/gen5200/optgpioval.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 17105988
-default-by-variant:
-- value: 22356228
-  variants:
-  - powerpc/pm520_ze30
+default:
+- enabled-by: powerpc/pm520_ze30
+  value: 22356228
+- enabled-by: true
+  value: 17105988
 description: |
   Defines the bits set in the MPC5200 GPIOPCR register during initialization.
   Must match the hardware requirements.  Must be consistent with
diff --git a/spec/build/bsps/powerpc/gen5200/opticecub.yml b/spec/build/bsps/powerpc/gen5200/opticecub.yml
index c93eafa7b2..429a24b681 100644
--- a/spec/build/bsps/powerpc/gen5200/opticecub.yml
+++ b/spec/build/bsps/powerpc/gen5200/opticecub.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - powerpc/icecube
+default:
+- enabled-by: powerpc/icecube
+  value: true
+- enabled-by: true
+  value: false
 description: |
   enable settings for IceCube
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen5200/optpm520cr825.yml b/spec/build/bsps/powerpc/gen5200/optpm520cr825.yml
index 72d96a0696..8b2450db44 100644
--- a/spec/build/bsps/powerpc/gen5200/optpm520cr825.yml
+++ b/spec/build/bsps/powerpc/gen5200/optpm520cr825.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - powerpc/pm520_cr825
+default:
+- enabled-by: powerpc/pm520_cr825
+  value: true
+- enabled-by: true
+  value: false
 description: |
   enable settings for PM520 CR825
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen5200/optpm520ze30.yml b/spec/build/bsps/powerpc/gen5200/optpm520ze30.yml
index 8a285a99aa..0c8bdafacf 100644
--- a/spec/build/bsps/powerpc/gen5200/optpm520ze30.yml
+++ b/spec/build/bsps/powerpc/gen5200/optpm520ze30.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - powerpc/pm520_ze30
+default:
+- enabled-by: powerpc/pm520_ze30
+  value: true
+- enabled-by: true
+  value: false
 description: |
   enable settings for PM520 ZE30
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen5200/optprintkminor.yml b/spec/build/bsps/powerpc/gen5200/optprintkminor.yml
index fd101467b9..b563d84cab 100644
--- a/spec/build/bsps/powerpc/gen5200/optprintkminor.yml
+++ b/spec/build/bsps/powerpc/gen5200/optprintkminor.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: |
   console minor number used by printk()
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen5200/optpscgps.yml b/spec/build/bsps/powerpc/gen5200/optpscgps.yml
index 1a80a6b34e..165b24f44a 100644
--- a/spec/build/bsps/powerpc/gen5200/optpscgps.yml
+++ b/spec/build/bsps/powerpc/gen5200/optpscgps.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: |
   PSC index for GPS module, if defined results in '/dev/gps'
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen5200/optsinglechar.yml b/spec/build/bsps/powerpc/gen5200/optsinglechar.yml
index 26f3e4b8a6..b13cfcc04a 100644
--- a/spec/build/bsps/powerpc/gen5200/optsinglechar.yml
+++ b/spec/build/bsps/powerpc/gen5200/optsinglechar.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   enable single character mode for the PSC console driver
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen5200/optuartmsk.yml b/spec/build/bsps/powerpc/gen5200/optuartmsk.yml
index 2a211006e4..9faddb0c92 100644
--- a/spec/build/bsps/powerpc/gen5200/optuartmsk.yml
+++ b/spec/build/bsps/powerpc/gen5200/optuartmsk.yml
@@ -5,17 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1
-default-by-variant:
-- value: 57
-  variants:
-  - powerpc/pm520_ze30
-- value: 7
-  variants:
-  - powerpc/pm520_cr825
-- value: 1
-  variants:
-  - powerpc/icecube
+default:
+- enabled-by: powerpc/pm520_ze30
+  value: 57
+- enabled-by: powerpc/pm520_cr825
+  value: 7
+- enabled-by: true
+  value: 1
 description: |
   bit mask to specify the UARTS (PSCs), which should be enabled on this board.  Must match the hardware requirements. PSC1 corresponds to the LSB
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen5200/optuartstermirq.yml b/spec/build/bsps/powerpc/gen5200/optuartstermirq.yml
index 219d19a564..fefe93c610 100644
--- a/spec/build/bsps/powerpc/gen5200/optuartstermirq.yml
+++ b/spec/build/bsps/powerpc/gen5200/optuartstermirq.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   enable interrupt support for the PSC console driver
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen5200/optuboot.yml b/spec/build/bsps/powerpc/gen5200/optuboot.yml
index 4d44060774..8699abd092 100644
--- a/spec/build/bsps/powerpc/gen5200/optuboot.yml
+++ b/spec/build/bsps/powerpc/gen5200/optuboot.yml
@@ -5,15 +5,14 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - powerpc/pm520_cr825
   - powerpc/pm520_ze30
-- value: true
-  variants:
   - powerpc/icecube
+  value: true
+- enabled-by: true
+  value: false
 description: |
   enable U-Boot startup
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen83xx/abi.yml b/spec/build/bsps/powerpc/gen83xx/abi.yml
index 003f7c77d5..d4675ca5f5 100644
--- a/spec/build/bsps/powerpc/gen83xx/abi.yml
+++ b/spec/build/bsps/powerpc/gen83xx/abi.yml
@@ -7,11 +7,12 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=603e
-- -meabi
-- -msdata=sysv
-- -mstrict-align
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=603e
+  - -meabi
+  - -msdata=sysv
+  - -mstrict-align
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen83xx/optbruid.yml b/spec/build/bsps/powerpc/gen83xx/optbruid.yml
index e5732379ea..2dd57ebffe 100644
--- a/spec/build/bsps/powerpc/gen83xx/optbruid.yml
+++ b/spec/build/bsps/powerpc/gen83xx/optbruid.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - powerpc/br_uid
+default:
+- enabled-by: powerpc/br_uid
+  value: true
+- enabled-by: true
+  value: false
 description: |
   if defined, then use settings for the BR UID board
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen83xx/optchiptype.yml b/spec/build/bsps/powerpc/gen83xx/optchiptype.yml
index a46f38d4fd..657866d9e4 100644
--- a/spec/build/bsps/powerpc/gen83xx/optchiptype.yml
+++ b/spec/build/bsps/powerpc/gen83xx/optchiptype.yml
@@ -5,20 +5,17 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 8313
-default-by-variant:
-- value: 8309
-  variants:
+default:
+- enabled-by:
   - powerpc/mpc8309som
-- value: 8309
-  variants:
   - powerpc/br_uid
-- value: 8349
-  variants:
+  value: 8309
+- enabled-by:
   - powerpc/mpc8349eamds
-- value: 8349
-  variants:
   - powerpc/hsc_cm01
+  value: 8349
+- enabled-by: true
+  value: 8313
 description: |
   chip type of the MPC83XX family
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen83xx/opthsccm01.yml b/spec/build/bsps/powerpc/gen83xx/opthsccm01.yml
index d934919885..701f4615eb 100644
--- a/spec/build/bsps/powerpc/gen83xx/opthsccm01.yml
+++ b/spec/build/bsps/powerpc/gen83xx/opthsccm01.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - powerpc/hsc_cm01
+default:
+- enabled-by: powerpc/hsc_cm01
+  value: true
+- enabled-by: true
+  value: false
 description: |
   if defined, then use settings for the HSC_CM01 board
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen83xx/optirqnest.yml b/spec/build/bsps/powerpc/gen83xx/optirqnest.yml
index e24b81f9c6..2b423f600a 100644
--- a/spec/build/bsps/powerpc/gen83xx/optirqnest.yml
+++ b/spec/build/bsps/powerpc/gen83xx/optirqnest.yml
@@ -5,14 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
+default:
+- enabled-by:
   - powerpc/mpc8313erdb
-- value: false
-  variants:
   - powerpc/br_uid
+  value: false
+- enabled-by: true
+  value: true
 description: |
   enable interrupt nesting
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen83xx/optmpc8309som.yml b/spec/build/bsps/powerpc/gen83xx/optmpc8309som.yml
index 6722fa2fb3..ecc57e38ce 100644
--- a/spec/build/bsps/powerpc/gen83xx/optmpc8309som.yml
+++ b/spec/build/bsps/powerpc/gen83xx/optmpc8309som.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - powerpc/mpc8309som
+default:
+- enabled-by: powerpc/mpc8309som
+  value: true
+- enabled-by: true
+  value: false
 description: |
   if defined, then use settings for the MPC8309SOM board
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen83xx/optmpc8313erdb.yml b/spec/build/bsps/powerpc/gen83xx/optmpc8313erdb.yml
index f8a9e0b47e..190b11b181 100644
--- a/spec/build/bsps/powerpc/gen83xx/optmpc8313erdb.yml
+++ b/spec/build/bsps/powerpc/gen83xx/optmpc8313erdb.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - powerpc/mpc8313erdb
+default:
+- enabled-by: powerpc/mpc8313erdb
+  value: true
+- enabled-by: true
+  value: false
 description: |
   if defined, then use settings for the MPC8313ERDB board
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen83xx/optmpc8349eamds.yml b/spec/build/bsps/powerpc/gen83xx/optmpc8349eamds.yml
index f6b766099d..0b6847d759 100644
--- a/spec/build/bsps/powerpc/gen83xx/optmpc8349eamds.yml
+++ b/spec/build/bsps/powerpc/gen83xx/optmpc8349eamds.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - powerpc/mpc8349eamds
+default:
+- enabled-by: powerpc/mpc8349eamds
+  value: true
+- enabled-by: true
+  value: false
 description: |
   if defined, then use settings for the MPC8349EAMDS board
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen83xx/optnandcs0.yml b/spec/build/bsps/powerpc/gen83xx/optnandcs0.yml
index d41820ea43..70cce58cba 100644
--- a/spec/build/bsps/powerpc/gen83xx/optnandcs0.yml
+++ b/spec/build/bsps/powerpc/gen83xx/optnandcs0.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - powerpc/br_uid
+default:
+- enabled-by: powerpc/br_uid
+  value: true
+- enabled-by: true
+  value: false
 description: |
   indicates if the board has a NAND large page flash on chip select 0
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen83xx/optnet0phy.yml b/spec/build/bsps/powerpc/gen83xx/optnet0phy.yml
index 70daf1fe3e..d55253bdb6 100644
--- a/spec/build/bsps/powerpc/gen83xx/optnet0phy.yml
+++ b/spec/build/bsps/powerpc/gen83xx/optnet0phy.yml
@@ -5,14 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant:
-- value: 17
-  variants:
-  - powerpc/mpc8309som
-- value: -1
-  variants:
-  - powerpc/br_uid
+default:
+- enabled-by: powerpc/mpc8309som
+  value: 17
+- enabled-by: powerpc/br_uid
+  value: -1
+- enabled-by: true
+  value: 0
 description: |
   PHY address of network interface 0
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen83xx/optuart2.yml b/spec/build/bsps/powerpc/gen83xx/optuart2.yml
index c86b36f11b..95ef0fb361 100644
--- a/spec/build/bsps/powerpc/gen83xx/optuart2.yml
+++ b/spec/build/bsps/powerpc/gen83xx/optuart2.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   if defined, enables UART2
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen83xx/optuartirq.yml b/spec/build/bsps/powerpc/gen83xx/optuartirq.yml
index 5a845aa5fe..3fe9c17c5b 100644
--- a/spec/build/bsps/powerpc/gen83xx/optuartirq.yml
+++ b/spec/build/bsps/powerpc/gen83xx/optuartirq.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
-  - powerpc/hsc_cm01
+default:
+- enabled-by: powerpc/hsc_cm01
+  value: false
+- enabled-by: true
+  value: true
 description: |
   enable usage of interrupts for the UART modules
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen83xx/optuboot.yml b/spec/build/bsps/powerpc/gen83xx/optuboot.yml
index 6b1166553e..2a64e1757f 100644
--- a/spec/build/bsps/powerpc/gen83xx/optuboot.yml
+++ b/spec/build/bsps/powerpc/gen83xx/optuboot.yml
@@ -5,17 +5,14 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - powerpc/mpc8309som
-- value: true
-  variants:
   - powerpc/mpc8313erdb
-- value: true
-  variants:
   - powerpc/mpc8349eamds
+  value: true
+- enabled-by: true
+  value: false
 description: |
   if defined, enables U-Boot support
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/gen83xx/optulpi.yml b/spec/build/bsps/powerpc/gen83xx/optulpi.yml
index fd9be9f12f..a7e5f10e55 100644
--- a/spec/build/bsps/powerpc/gen83xx/optulpi.yml
+++ b/spec/build/bsps/powerpc/gen83xx/optulpi.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - powerpc/br_uid
+default:
+- enabled-by: powerpc/br_uid
+  value: true
+- enabled-by: true
+  value: false
 description: |
   the board has an ULPI PHY connected to the USB EHCI controller
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/motorola_powerpc/abi.yml b/spec/build/bsps/powerpc/motorola_powerpc/abi.yml
index 5e1d47b169..94ac120f77 100644
--- a/spec/build/bsps/powerpc/motorola_powerpc/abi.yml
+++ b/spec/build/bsps/powerpc/motorola_powerpc/abi.yml
@@ -7,31 +7,28 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=603e
-default-by-variant:
-- value:
+- enabled-by: powerpc/qemuprep-altivec
+  value:
   - -mcpu=7400
   - -mmultiple
   - -mstrict-align
-  variants:
-  - powerpc/qemuprep-altivec
-- value:
+- enabled-by: powerpc/qemuprep
+  value:
   - -mcpu=powerpc
   - -mmultiple
   - -mstrict-align
-  variants:
-  - powerpc/qemuprep
-- value:
+- enabled-by: powerpc/mvme2307
+  value:
   - -mcpu=604
   - -mmultiple
   - -mstrict-align
   - -meabi
-  variants:
-  - powerpc/mvme2307
-- value:
+- enabled-by: powerpc/mcp750
+  value:
   - -mcpu=750
-  variants:
-  - powerpc/mcp750
+- enabled-by: true
+  value:
+  - -mcpu=603e
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/motorola_powerpc/optmpc603e.yml b/spec/build/bsps/powerpc/motorola_powerpc/optmpc603e.yml
index 509f6c9c8a..07fbf61e19 100644
--- a/spec/build/bsps/powerpc/motorola_powerpc/optmpc603e.yml
+++ b/spec/build/bsps/powerpc/motorola_powerpc/optmpc603e.yml
@@ -5,14 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - powerpc/mtx603e
-- value: true
-  variants:
   - powerpc/mvme2100
+  value: true
+- enabled-by: true
+  value: false
 description: |
   Define when ppc603e -- undefined for others
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/motorola_powerpc/optmpc750.yml b/spec/build/bsps/powerpc/motorola_powerpc/optmpc750.yml
index d132c17552..9235427ab7 100644
--- a/spec/build/bsps/powerpc/motorola_powerpc/optmpc750.yml
+++ b/spec/build/bsps/powerpc/motorola_powerpc/optmpc750.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - powerpc/mcp750
+default:
+- enabled-by: powerpc/mcp750
+  value: true
+- enabled-by: true
+  value: false
 description: |
   Define when mpc750 -- undefined for others
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/motorola_powerpc/optmpc8240.yml b/spec/build/bsps/powerpc/motorola_powerpc/optmpc8240.yml
index 5cc6475589..9d78e614da 100644
--- a/spec/build/bsps/powerpc/motorola_powerpc/optmpc8240.yml
+++ b/spec/build/bsps/powerpc/motorola_powerpc/optmpc8240.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - powerpc/mvme2100
+default:
+- enabled-by: powerpc/mvme2100
+  value: true
+- enabled-by: true
+  value: false
 description: |
   Defined for boards with MPC8240 -- undefined for others
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/motorola_powerpc/optmvme2100.yml b/spec/build/bsps/powerpc/motorola_powerpc/optmvme2100.yml
index 2443f4bfe8..5214a4c0fe 100644
--- a/spec/build/bsps/powerpc/motorola_powerpc/optmvme2100.yml
+++ b/spec/build/bsps/powerpc/motorola_powerpc/optmvme2100.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - powerpc/mvme2100
+default:
+- enabled-by: powerpc/mvme2100
+  value: true
+- enabled-by: true
+  value: false
 description: |
   Defined for MVME2100 -- undefined for others
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/motorola_powerpc/optqemu.yml b/spec/build/bsps/powerpc/motorola_powerpc/optqemu.yml
index 0e861eed0c..c160ba185d 100644
--- a/spec/build/bsps/powerpc/motorola_powerpc/optqemu.yml
+++ b/spec/build/bsps/powerpc/motorola_powerpc/optqemu.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - powerpc/qemuprep
   - powerpc/qemuprep-altivec
+  value: true
+- enabled-by: true
+  value: false
 description: |
   Defined for QEMU BSP -- undefined for others
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/motorola_powerpc/optsbrk.yml b/spec/build/bsps/powerpc/motorola_powerpc/optsbrk.yml
index 1018b3a4a1..bf5b7965ca 100644
--- a/spec/build/bsps/powerpc/motorola_powerpc/optsbrk.yml
+++ b/spec/build/bsps/powerpc/motorola_powerpc/optsbrk.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   None
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/abi.yml b/spec/build/bsps/powerpc/mpc55xxevb/abi.yml
index dca50fca94..6ca2be33ac 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/abi.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/abi.yml
@@ -7,12 +7,13 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=8540
-- -msoft-float
-- -meabi
-- -msdata=sysv
-- -mstrict-align
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=8540
+  - -msoft-float
+  - -meabi
+  - -msdata=sysv
+  - -mstrict-align
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/ofmpllptmfd.yml b/spec/build/bsps/powerpc/mpc55xxevb/ofmpllptmfd.yml
index 7c1a1fa869..59231558ee 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/ofmpllptmfd.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/ofmpllptmfd.yml
@@ -5,17 +5,15 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant:
-- value: 99
-  variants:
-  - powerpc/gwlcfm
-- value: 111
-  variants:
-  - powerpc/mpc5668g
-- value: 66
-  variants:
-  - powerpc/mpc5674fevb
+default:
+- enabled-by: powerpc/gwlcfm
+  value: 99
+- enabled-by: powerpc/mpc5668g
+  value: 111
+- enabled-by: powerpc/mpc5674fevb
+  value: 66
+- enabled-by: true
+  value: 0
 description: |
   Must be defined to be the PLL multiplication factor for clock generation
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optbootflg.yml b/spec/build/bsps/powerpc/mpc55xxevb/optbootflg.yml
index a0ae88fc13..6e9070dea1 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optbootflg.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optbootflg.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   if defined, builds in bootflags above the RCHW for setup in a debugger to avoid startup MMU setup
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optcachewritethru.yml b/spec/build/bsps/powerpc/mpc55xxevb/optcachewritethru.yml
index 0311e556f4..4680cae5aa 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optcachewritethru.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optcachewritethru.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   use write-through for data cache
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optchipfam.yml b/spec/build/bsps/powerpc/mpc55xxevb/optchipfam.yml
index 38a1e3aaf4..96a4b57457 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optchipfam.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optchipfam.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: (MPC55XX_CHIP_TYPE / 10)
-default-by-variant: []
+default:
+- enabled-by: true
+  value: (MPC55XX_CHIP_TYPE / 10)
 description: |
   specifies the chip family in use (e.g. 555 for MPC5554)
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optchiptype.yml b/spec/build/bsps/powerpc/mpc55xxevb/optchiptype.yml
index d1d037d34c..eaec92680d 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optchiptype.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optchiptype.yml
@@ -5,23 +5,19 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 5554
-default-by-variant:
-- value: 5516
-  variants:
-  - powerpc/gwlcfm
-- value: 5566
-  variants:
-  - powerpc/mpc5566evb
-- value: 5643
-  variants:
-  - powerpc/mpc5643l_evb
-- value: 5668
-  variants:
-  - powerpc/mpc5668g
-- value: 5674
-  variants:
-  - powerpc/mpc5674fevb
+default:
+- enabled-by: powerpc/gwlcfm
+  value: 5516
+- enabled-by: powerpc/mpc5566evb
+  value: 5566
+- enabled-by: powerpc/mpc5643l_evb
+  value: 5643
+- enabled-by: powerpc/mpc5668g
+  value: 5668
+- enabled-by: powerpc/mpc5674fevb
+  value: 5674
+- enabled-by: true
+  value: 5554
 description: |
   specifies the chip type in use (e.g. 5554 for MPC5554)
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optclkemios.yml b/spec/build/bsps/powerpc/mpc55xxevb/optclkemios.yml
index d7cf9b927d..9bb07f5c4c 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optclkemios.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optclkemios.yml
@@ -5,17 +5,15 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 23
-default-by-variant:
-- value: null
-  variants:
+default:
+- enabled-by:
   - powerpc/mpc5643l_evb
-- value: null
-  variants:
   - powerpc/mpc5668g
-- value: 31
-  variants:
-  - powerpc/mpc5674fevb
+  value: null
+- enabled-by: powerpc/mpc5674fevb
+  value: 31
+- enabled-by: true
+  value: 23
 description: |
   selects the eMIOS channel for the RTEMS system tick (the default is the last channel)
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optclkpit.yml b/spec/build/bsps/powerpc/mpc55xxevb/optclkpit.yml
index 9ae42801cb..3baedae91c 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optclkpit.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optclkpit.yml
@@ -5,14 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant:
-- value: 3
-  variants:
-  - powerpc/mpc5643l_evb
-- value: 8
-  variants:
-  - powerpc/mpc5668g
+default:
+- enabled-by: powerpc/mpc5643l_evb
+  value: 3
+- enabled-by: powerpc/mpc5668g
+  value: 8
 description: |
   selects the PIT channel for the RTEMS system tick (the default is the last channel)
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optconbaud.yml b/spec/build/bsps/powerpc/mpc55xxevb/optconbaud.yml
index bd26c32da6..fe3b27177d 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optconbaud.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optconbaud.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 115200
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 115200
 description: |
   default console baud
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optconminor.yml b/spec/build/bsps/powerpc/mpc55xxevb/optconminor.yml
index 99b03fbde1..321862851b 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optconminor.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optconminor.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: |
   determines which serial device will be registered as /dev/console
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optearlystksz.yml b/spec/build/bsps/powerpc/mpc55xxevb/optearlystksz.yml
index 7c0c8a13a5..3dda8a0177 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optearlystksz.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optearlystksz.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1024
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1024
 description: |
   size of the early initialization stack in bytes
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/opteepromname.yml b/spec/build/bsps/powerpc/mpc55xxevb/opteepromname.yml
index 0ad69134d4..957ebb037a 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/opteepromname.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/opteepromname.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: eeprom
-  variants:
-  - powerpc/gwlcfm
+default:
+- enabled-by: powerpc/gwlcfm
+  value: eeprom
+- enabled-by: true
+  value: false
 description: |
   EEPROM name for LibI2C
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/opteeprompath.yml b/spec/build/bsps/powerpc/mpc55xxevb/opteeprompath.yml
index 1ee19aff5e..c1f59fbbf6 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/opteeprompath.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/opteeprompath.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: /dev/i2c1.eeprom
-  variants:
-  - powerpc/gwlcfm
+default:
+- enabled-by: powerpc/gwlcfm
+  value: /dev/i2c1.eeprom
+- enabled-by: true
+  value: false
 description: |
   EEPROM device file path
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optemiosprescal.yml b/spec/build/bsps/powerpc/mpc55xxevb/optemiosprescal.yml
index 931b97e56d..363f743bca 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optemiosprescal.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optemiosprescal.yml
@@ -5,14 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant:
-- value: 66
-  variants:
-  - powerpc/gwlcfm
-- value: null
-  variants:
-  - powerpc/mpc5643l_evb
+default:
+- enabled-by: powerpc/gwlcfm
+  value: 66
+- enabled-by: powerpc/mpc5643l_evb
+  value: null
+- enabled-by: true
+  value: 0
 description: |
   Must be defined to set the EMIOS prescaler
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optenstartpro.yml b/spec/build/bsps/powerpc/mpc55xxevb/optenstartpro.yml
index 5fd2f8715b..139f48508e 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optenstartpro.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optenstartpro.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   if defined, enable start prologue
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optesciirq.yml b/spec/build/bsps/powerpc/mpc55xxevb/optesciirq.yml
index 9724bdfddf..35f2ec7f28 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optesciirq.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optesciirq.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   define to zero or one to disable or enable interrupts for the eSCI devices
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optexcbooke.yml b/spec/build/bsps/powerpc/mpc55xxevb/optexcbooke.yml
index e27cb4ab44..d97e53ccb0 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optexcbooke.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optexcbooke.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   only support Book E exception types
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optexcfixdhdlr.yml b/spec/build/bsps/powerpc/mpc55xxevb/optexcfixdhdlr.yml
index b636d8022b..5661fc0f3e 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optexcfixdhdlr.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optexcfixdhdlr.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   use fixed high-level exception handler
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optfmpllesyncr1.yml b/spec/build/bsps/powerpc/mpc55xxevb/optfmpllesyncr1.yml
index 12e8d37ab5..25441fb90e 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optfmpllesyncr1.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optfmpllesyncr1.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 7
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 7
 description: |
   the FMPLL ESYNCR1[CLKCFG] value
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optfmpllprediv.yml b/spec/build/bsps/powerpc/mpc55xxevb/optfmpllprediv.yml
index 84df5a1dad..2edc87f4af 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optfmpllprediv.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optfmpllprediv.yml
@@ -5,17 +5,15 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant:
-- value: 10
-  variants:
-  - powerpc/gwlcfm
-- value: 6
-  variants:
-  - powerpc/mpc5668g
-- value: 5
-  variants:
-  - powerpc/mpc5674fevb
+default:
+- enabled-by: powerpc/gwlcfm
+  value: 10
+- enabled-by: powerpc/mpc5668g
+  value: 6
+- enabled-by: powerpc/mpc5674fevb
+  value: 5
+- enabled-by: true
+  value: 0
 description: |
   Must be defined to be the PLL predivider factor for clock generation
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optgwlcfm.yml b/spec/build/bsps/powerpc/mpc55xxevb/optgwlcfm.yml
index a525ccf854..897f1f39ba 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optgwlcfm.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optgwlcfm.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - powerpc/gwlcfm
+default:
+- enabled-by: powerpc/gwlcfm
+  value: true
+- enabled-by: true
+  value: false
 description: |
   if defined, use custom settings for GWLCFM board
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optirqtblsz.yml b/spec/build/bsps/powerpc/mpc55xxevb/optirqtblsz.yml
index a5f7417674..45b3f0ad99 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optirqtblsz.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optirqtblsz.yml
@@ -5,17 +5,15 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 63
-default-by-variant:
-- value: 127
-  variants:
+default:
+- enabled-by:
   - powerpc/mpc5643l_evb
-- value: 127
-  variants:
   - powerpc/mpc5566evb
-- value: 255
-  variants:
-  - powerpc/mpc5674fevb
+  value: 127
+- enabled-by: powerpc/mpc5674fevb
+  value: 255
+- enabled-by: true
+  value: 63
 description: |
   defines the maximum number of interrupt handlers
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optlowinit.yml b/spec/build/bsps/powerpc/mpc55xxevb/optlowinit.yml
index 232b759bf8..dddc3efa02 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optlowinit.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optlowinit.yml
@@ -5,10 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants: []
+default:
+- enabled-by: []
+  value: false
+- enabled-by: true
+  value: true
 description: |
   if defined, do low level initialization
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optmpc5566evb.yml b/spec/build/bsps/powerpc/mpc55xxevb/optmpc5566evb.yml
index cc549ede34..e5e43e36c4 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optmpc5566evb.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optmpc5566evb.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - powerpc/mpc5566evb
+default:
+- enabled-by: powerpc/mpc5566evb
+  value: true
+- enabled-by: true
+  value: false
 description: |
   if defined, use custom settings for MPC5566EVB board
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optmpc5674fevb.yml b/spec/build/bsps/powerpc/mpc55xxevb/optmpc5674fevb.yml
index 83a694c193..ee56129a23 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optmpc5674fevb.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optmpc5674fevb.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - powerpc/mpc5674fevb
+default:
+- enabled-by: powerpc/mpc5674fevb
+  value: true
+- enabled-by: true
+  value: false
 description: |
   if defined, use custom settings for MPC5674FEVB board
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optnullprot.yml b/spec/build/bsps/powerpc/mpc55xxevb/optnullprot.yml
index 0c081ab189..2a5b025e53 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optnullprot.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optnullprot.yml
@@ -5,14 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - powerpc/mpc5566evb
-- value: true
-  variants:
   - powerpc/mpc5674fevb
+  value: true
+- enabled-by: true
+  value: false
 description: |
   enable NULL pointer protection
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optphycorempc5554.yml b/spec/build/bsps/powerpc/mpc55xxevb/optphycorempc5554.yml
index 0452770f84..059972f6b6 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optphycorempc5554.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optphycorempc5554.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - powerpc/phycore_mpc5554
+default:
+- enabled-by: powerpc/phycore_mpc5554
+  value: true
+- enabled-by: true
+  value: false
 description: |
   if defined, use custom settings for phyCORE MPC5554 board
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optrefclk.yml b/spec/build/bsps/powerpc/mpc55xxevb/optrefclk.yml
index 8b4fd9a0f0..89b792ca3c 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optrefclk.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optrefclk.yml
@@ -5,20 +5,16 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 8000000
-default-by-variant:
-- value: 40000000
-  variants:
+default:
+- enabled-by:
   - powerpc/gwlcfm
-- value: 40000000
-  variants:
   - powerpc/mpc5643l_evb
-- value: 25000000
-  variants:
-  - powerpc/mpc5668g
-- value: 40000000
-  variants:
   - powerpc/mpc5674fevb
+  value: 40000000
+- enabled-by: powerpc/mpc5668g
+  value: 25000000
+- enabled-by: true
+  value: 8000000
 description: |
   None
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optsmc91111.yml b/spec/build/bsps/powerpc/mpc55xxevb/optsmc91111.yml
index 04a224edd0..82e24eb8c5 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optsmc91111.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optsmc91111.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - powerpc/phycore_mpc5554
+default:
+- enabled-by: powerpc/phycore_mpc5554
+  value: true
+- enabled-by: true
+  value: false
 description: |
   If defined the board has the SMC91111 networking chip.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optsmc9111enaddr.yml b/spec/build/bsps/powerpc/mpc55xxevb/optsmc9111enaddr.yml
index 3bb67b7621..628a324e24 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optsmc9111enaddr.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optsmc9111enaddr.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - powerpc/phycore_mpc5554
+default:
+- enabled-by: powerpc/phycore_mpc5554
+  value: true
+- enabled-by: true
+  value: false
 description: |
   If defined the SMC91111 chip has the ethernet address loaded at reset.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optsmc9218ibige.yml b/spec/build/bsps/powerpc/mpc55xxevb/optsmc9218ibige.yml
index bf47d9429c..e4ce934bc8 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optsmc9218ibige.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optsmc9218ibige.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   enable big endian support for SMSC9218I network interface
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optsmc9218iled.yml b/spec/build/bsps/powerpc/mpc55xxevb/optsmc9218iled.yml
index a3de39efac..f7adeec254 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optsmc9218iled.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optsmc9218iled.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   enable LED outputs for SMSC9218I network interface
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optsmc9218ipinirq.yml b/spec/build/bsps/powerpc/mpc55xxevb/optsmc9218ipinirq.yml
index cfba195031..48c5b6c028 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optsmc9218ipinirq.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optsmc9218ipinirq.yml
@@ -5,11 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant:
-- value: 193
-  variants:
-  - powerpc/mpc5566evb
+default:
+- enabled-by: powerpc/mpc5566evb
+  value: 193
 description: |
   IRQ pin for SMSC9218I network interface
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optsmc9218ipinrst.yml b/spec/build/bsps/powerpc/mpc55xxevb/optsmc9218ipinrst.yml
index d770ce02ed..b83e7f03d4 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optsmc9218ipinrst.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optsmc9218ipinrst.yml
@@ -5,11 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant:
-- value: 186
-  variants:
-  - powerpc/mpc5566evb
+default:
+- enabled-by: powerpc/mpc5566evb
+  value: 186
 description: |
   reset pin for SMSC9218I network interface
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optsmc9218irxchn.yml b/spec/build/bsps/powerpc/mpc55xxevb/optsmc9218irxchn.yml
index 0753f5b85b..8d74b19b86 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optsmc9218irxchn.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optsmc9218irxchn.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 49
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 49
 description: |
   receive eDMA channel for SMSC9218I network interface
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optsmc9218itxchn.yml b/spec/build/bsps/powerpc/mpc55xxevb/optsmc9218itxchn.yml
index 359fb5302c..b87a485459 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optsmc9218itxchn.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optsmc9218itxchn.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 48
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 48
 description: |
   transmit eDMA channel for SMSC9218I network interface
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optsysclk.yml b/spec/build/bsps/powerpc/mpc55xxevb/optsysclk.yml
index 6d4e1554f1..9d206527b7 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optsysclk.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optsysclk.yml
@@ -5,17 +5,15 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant:
-- value: 66000000
-  variants:
-  - powerpc/gwlcfm
-- value: 116000000
-  variants:
-  - powerpc/mpc5668g
-- value: 264000000
-  variants:
-  - powerpc/mpc5674fevb
+default:
+- enabled-by: powerpc/gwlcfm
+  value: 66000000
+- enabled-by: powerpc/mpc5668g
+  value: 116000000
+- enabled-by: powerpc/mpc5674fevb
+  value: 264000000
+- enabled-by: true
+  value: 0
 description: |
   The system clock frequency in Hz.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/optsysclkdiv.yml b/spec/build/bsps/powerpc/mpc55xxevb/optsysclkdiv.yml
index 293e2ed9a6..4374a04169 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/optsysclkdiv.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/optsysclkdiv.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1
-default-by-variant:
-- value: 2
-  variants:
-  - powerpc/mpc5674fevb
+default:
+- enabled-by: powerpc/mpc5674fevb
+  value: 2
+- enabled-by: true
+  value: 1
 description: |
   system clock divider
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/tstgwlcfm.yml b/spec/build/bsps/powerpc/mpc55xxevb/tstgwlcfm.yml
index 69acc1031a..6024c3e5c6 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/tstgwlcfm.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/tstgwlcfm.yml
@@ -7,8 +7,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/powerpc/mpc55xxevb/tstmpc5643levb.yml b/spec/build/bsps/powerpc/mpc55xxevb/tstmpc5643levb.yml
index 8e6190ce14..93553c4081 100644
--- a/spec/build/bsps/powerpc/mpc55xxevb/tstmpc5643levb.yml
+++ b/spec/build/bsps/powerpc/mpc55xxevb/tstmpc5643levb.yml
@@ -6,8 +6,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/powerpc/mpc8260ads/abi.yml b/spec/build/bsps/powerpc/mpc8260ads/abi.yml
index 16cd990e10..01d97d7382 100644
--- a/spec/build/bsps/powerpc/mpc8260ads/abi.yml
+++ b/spec/build/bsps/powerpc/mpc8260ads/abi.yml
@@ -7,12 +7,13 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -Dmpc8260
-- -mcpu=603e
-- -mstrict-align
-- -meabi
-- -msdata=sysv
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -Dmpc8260
+  - -mcpu=603e
+  - -mstrict-align
+  - -meabi
+  - -msdata=sysv
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc8260ads/optconminor.yml b/spec/build/bsps/powerpc/mpc8260ads/optconminor.yml
index 50755157e9..18c0125c60 100644
--- a/spec/build/bsps/powerpc/mpc8260ads/optconminor.yml
+++ b/spec/build/bsps/powerpc/mpc8260ads/optconminor.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: SCC2_MINOR
-default-by-variant: []
+default:
+- enabled-by: true
+  value: SCC2_MINOR
 description: |
   (BSP--console driver) Must be defined to be one of SMC1_MINOR, SMC2_MINOR, SCC2_MINOR, SCC3_MINOR, or SCC4_MINOR.  Determines which device will be registered as /dev/console.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc8260ads/optdisphandstat.yml b/spec/build/bsps/powerpc/mpc8260ads/optdisphandstat.yml
index b7bcab4e5c..8620701deb 100644
--- a/spec/build/bsps/powerpc/mpc8260ads/optdisphandstat.yml
+++ b/spec/build/bsps/powerpc/mpc8260ads/optdisphandstat.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   used by irq/irq.c
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc8260ads/optprintkminor.yml b/spec/build/bsps/powerpc/mpc8260ads/optprintkminor.yml
index bb031dfa83..22d5f2e24b 100644
--- a/spec/build/bsps/powerpc/mpc8260ads/optprintkminor.yml
+++ b/spec/build/bsps/powerpc/mpc8260ads/optprintkminor.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: SMC2_MINOR
-default-by-variant: []
+default:
+- enabled-by: true
+  value: SMC2_MINOR
 description: |
   (BSP--console driver) Must be defined to be one of SMC1_MINOR, SMC2_MINOR, SCC2_MINOR, SCC3_MINOR, or SCC4_MINOR. Determines which device is used for output by printk(). If the port that printk() uses is also used for other I/O (e.g. if  PRINTK_MINOR == \$CONSOLE_MINOR), then both ports should use the same type of I/O, otherwise the drivers will likely conflict with each other.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc8260ads/optuartsiomode.yml b/spec/build/bsps/powerpc/mpc8260ads/optuartsiomode.yml
index eb0d9d8bda..dd3f11ad14 100644
--- a/spec/build/bsps/powerpc/mpc8260ads/optuartsiomode.yml
+++ b/spec/build/bsps/powerpc/mpc8260ads/optuartsiomode.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   (BSP--console driver) Define to 0 or 1 if you want polled I/O performed by RTEMS.  Define to 1 if you want interrupt-driven performed by RTEMS.  Define to 2 if you want polled I/O performed by EPPCBug.  There is no provision to have a mix of interrupt-driven and polled I/O ports, except that the printk port may use a different mode from the other ports. If this is done, do not open the printk port from an RTEMS application. With EPPCBug 1.1, if mode 2 is selected, CONSOLE_MINOR must be set to SMC1_MINOR. This is a deficiency of the firmware: it does not perform serial I/O on any port other than its default debug port, which must be SMC1.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mpc8260ads/optuartsterm.yml b/spec/build/bsps/powerpc/mpc8260ads/optuartsterm.yml
index 1aa2122c24..308084e7a3 100644
--- a/spec/build/bsps/powerpc/mpc8260ads/optuartsterm.yml
+++ b/spec/build/bsps/powerpc/mpc8260ads/optuartsterm.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Define to 1 if you want termios support for every port.  Termios support is independent of the choice of UART I/O mode.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mvme3100/abi.yml b/spec/build/bsps/powerpc/mvme3100/abi.yml
index 41a634b4dc..5e1e220238 100644
--- a/spec/build/bsps/powerpc/mvme3100/abi.yml
+++ b/spec/build/bsps/powerpc/mvme3100/abi.yml
@@ -7,9 +7,10 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=powerpc
-- -msoft-float
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=powerpc
+  - -msoft-float
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mvme3100/optsbrk.yml b/spec/build/bsps/powerpc/mvme3100/optsbrk.yml
index 05a1acd75f..fa1f5129bc 100644
--- a/spec/build/bsps/powerpc/mvme3100/optsbrk.yml
+++ b/spec/build/bsps/powerpc/mvme3100/optsbrk.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   If defined then the BSP may reduce the available memory size initially. This can be useful for debugging (reduce the core size) or dynamic loading (std gcc text offsets/jumps are < +/-32M).  Note that the policy can still be defined by the application (see sbrk.c, BSP_sbrk_policy). By undefining CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK this feature is removed and a little memory is saved.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mvme5500/abi.yml b/spec/build/bsps/powerpc/mvme5500/abi.yml
index 5e31841a7c..988af87dfd 100644
--- a/spec/build/bsps/powerpc/mvme5500/abi.yml
+++ b/spec/build/bsps/powerpc/mvme5500/abi.yml
@@ -7,10 +7,11 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -Dmpc7455
-- -mcpu=7450
-- -mtune=7450
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -Dmpc7455
+  - -mcpu=7450
+  - -mtune=7450
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/mvme5500/optsbrk.yml b/spec/build/bsps/powerpc/mvme5500/optsbrk.yml
index 05a1acd75f..fa1f5129bc 100644
--- a/spec/build/bsps/powerpc/mvme5500/optsbrk.yml
+++ b/spec/build/bsps/powerpc/mvme5500/optsbrk.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   If defined then the BSP may reduce the available memory size initially. This can be useful for debugging (reduce the core size) or dynamic loading (std gcc text offsets/jumps are < +/-32M).  Note that the policy can still be defined by the application (see sbrk.c, BSP_sbrk_policy). By undefining CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK this feature is removed and a little memory is saved.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/psim/abi.yml b/spec/build/bsps/powerpc/psim/abi.yml
index b9b2ae3002..bc22f5c872 100644
--- a/spec/build/bsps/powerpc/psim/abi.yml
+++ b/spec/build/bsps/powerpc/psim/abi.yml
@@ -7,11 +7,12 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -Dppc603e
-- -meabi
-- -mcpu=603e
-- -msdata=sysv
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -Dppc603e
+  - -meabi
+  - -mcpu=603e
+  - -msdata=sysv
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/psim/optclkfastidle.yml b/spec/build/bsps/powerpc/psim/optclkfastidle.yml
index df86867fa7..8e96cc9a15 100644
--- a/spec/build/bsps/powerpc/psim/optclkfastidle.yml
+++ b/spec/build/bsps/powerpc/psim/optclkfastidle.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - powerpc/psim
+default:
+- enabled-by: powerpc/psim
+  value: true
+- enabled-by: true
+  value: false
 description: |
   This sets a mode where the time runs as fast as possible when a clock ISR occurs while the IDLE thread is executing.  This can significantly reduce simulation times.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/psim/optsbrk.yml b/spec/build/bsps/powerpc/psim/optsbrk.yml
index 05a1acd75f..fa1f5129bc 100644
--- a/spec/build/bsps/powerpc/psim/optsbrk.yml
+++ b/spec/build/bsps/powerpc/psim/optsbrk.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   If defined then the BSP may reduce the available memory size initially. This can be useful for debugging (reduce the core size) or dynamic loading (std gcc text offsets/jumps are < +/-32M).  Note that the policy can still be defined by the application (see sbrk.c, BSP_sbrk_policy). By undefining CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK this feature is removed and a little memory is saved.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/psim/optsprg.yml b/spec/build/bsps/powerpc/psim/optsprg.yml
index 89f5b47135..1c530ba45e 100644
--- a/spec/build/bsps/powerpc/psim/optsprg.yml
+++ b/spec/build/bsps/powerpc/psim/optsprg.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   If defined, then the PowerPC specific code in RTEMS will use some of the special purpose registers to slightly optimize interrupt response time.  The use of these registers can conflict with other tools like debuggers.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/psim/optvecbase.yml b/spec/build/bsps/powerpc/psim/optvecbase.yml
index 6de89c1aca..bc47dc4973 100644
--- a/spec/build/bsps/powerpc/psim/optvecbase.yml
+++ b/spec/build/bsps/powerpc/psim/optvecbase.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 4293918976
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 4293918976
 description: |
   This defines the base address of the exception table.  NOTE: Vectors are actually at 0xFFF00000 but file starts at offset.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qemuppc/abi.yml b/spec/build/bsps/powerpc/qemuppc/abi.yml
index df82553bcb..ae394bc617 100644
--- a/spec/build/bsps/powerpc/qemuppc/abi.yml
+++ b/spec/build/bsps/powerpc/qemuppc/abi.yml
@@ -7,9 +7,10 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -Dppc603e
-- -mcpu=603e
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -Dppc603e
+  - -mcpu=603e
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/abi.yml b/spec/build/bsps/powerpc/qoriq/abi.yml
index f88b3afb95..26d9a94249 100644
--- a/spec/build/bsps/powerpc/qoriq/abi.yml
+++ b/spec/build/bsps/powerpc/qoriq/abi.yml
@@ -7,25 +7,24 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=8540
-- -msoft-float
-- -meabi
-- -msdata=sysv
-- -mstrict-align
-default-by-variant:
-- value:
+- enabled-by: powerpc/qoriq_e6500_64
+  value:
   - -mcpu=e6500
   - -m64
   - -mvrsave
-  variants:
-  - powerpc/qoriq_e6500_64
-- value:
+- enabled-by: powerpc/qoriq_e6500_32
+  value:
   - -mcpu=e6500
   - -m32
   - -mvrsave
   - -msdata=sysv
-  variants:
-  - powerpc/qoriq_e6500_32
+- enabled-by: true
+  value:
+  - -mcpu=8540
+  - -msoft-float
+  - -meabi
+  - -msdata=sysv
+  - -mstrict-align
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optbucsr.yml b/spec/build/bsps/powerpc/qoriq/optbucsr.yml
index 5b7af9ce5d..eae6af3166 100644
--- a/spec/build/bsps/powerpc/qoriq/optbucsr.yml
+++ b/spec/build/bsps/powerpc/qoriq/optbucsr.yml
@@ -5,12 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant:
-- value: 20972033
-  variants:
+default:
+- enabled-by:
   - powerpc/qoriq_e6500_32
   - powerpc/qoriq_e6500_64
+  value: 20972033
 description: |
   initial BUCSR value
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optbusclkdiv.yml b/spec/build/bsps/powerpc/qoriq/optbusclkdiv.yml
index 74adc5ae9d..bcc7076da6 100644
--- a/spec/build/bsps/powerpc/qoriq/optbusclkdiv.yml
+++ b/spec/build/bsps/powerpc/qoriq/optbusclkdiv.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1
-default-by-variant:
-- value: 2
-  variants:
+default:
+- enabled-by:
   - powerpc/qoriq_e6500_32
   - powerpc/qoriq_e6500_64
+  value: 2
+- enabled-by: true
+  value: 1
 description: |
   divider of the platform clock to get the clock most on-chip peripherals
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optcachealign.yml b/spec/build/bsps/powerpc/qoriq/optcachealign.yml
index 80423556e9..60108193cd 100644
--- a/spec/build/bsps/powerpc/qoriq/optcachealign.yml
+++ b/spec/build/bsps/powerpc/qoriq/optcachealign.yml
@@ -5,12 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant:
-- value: 64
-  variants:
+default:
+- enabled-by:
   - powerpc/qoriq_e6500_32
   - powerpc/qoriq_e6500_64
+  value: 64
 description: |
   the cache alignment
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optcacheblktouch.yml b/spec/build/bsps/powerpc/qoriq/optcacheblktouch.yml
index 3b9251a774..3b3f73367e 100644
--- a/spec/build/bsps/powerpc/qoriq/optcacheblktouch.yml
+++ b/spec/build/bsps/powerpc/qoriq/optcacheblktouch.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   if defined use dcbt instruction
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optcachedatal1sz.yml b/spec/build/bsps/powerpc/qoriq/optcachedatal1sz.yml
index 1717ff9660..a0e5c409d3 100644
--- a/spec/build/bsps/powerpc/qoriq/optcachedatal1sz.yml
+++ b/spec/build/bsps/powerpc/qoriq/optcachedatal1sz.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 32768
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 32768
 description: |
   the L1 data cache size
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optcachedatal2sz.yml b/spec/build/bsps/powerpc/qoriq/optcachedatal2sz.yml
index 28566edad9..8e2c85781f 100644
--- a/spec/build/bsps/powerpc/qoriq/optcachedatal2sz.yml
+++ b/spec/build/bsps/powerpc/qoriq/optcachedatal2sz.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 262144
-default-by-variant:
-- value: 2097152
-  variants:
+default:
+- enabled-by:
   - powerpc/qoriq_e6500_32
   - powerpc/qoriq_e6500_64
+  value: 2097152
+- enabled-by: true
+  value: 262144
 description: |
   the L2 data cache size
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optcacheinstl1sz.yml b/spec/build/bsps/powerpc/qoriq/optcacheinstl1sz.yml
index 10e96967f7..0f802975ca 100644
--- a/spec/build/bsps/powerpc/qoriq/optcacheinstl1sz.yml
+++ b/spec/build/bsps/powerpc/qoriq/optcacheinstl1sz.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 32768
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 32768
 description: |
   the L1 instruction cache size
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optcacheinstl2sz.yml b/spec/build/bsps/powerpc/qoriq/optcacheinstl2sz.yml
index ea16d60a8b..e9b74ca750 100644
--- a/spec/build/bsps/powerpc/qoriq/optcacheinstl2sz.yml
+++ b/spec/build/bsps/powerpc/qoriq/optcacheinstl2sz.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 262144
-default-by-variant:
-- value: 2097152
-  variants:
+default:
+- enabled-by:
   - powerpc/qoriq_e6500_32
   - powerpc/qoriq_e6500_64
+  value: 2097152
+- enabled-by: true
+  value: 262144
 description: |
   the L2 instruction cache size
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optchipnum.yml b/spec/build/bsps/powerpc/qoriq/optchipnum.yml
index 6e465ac41b..c89dc57e21 100644
--- a/spec/build/bsps/powerpc/qoriq/optchipnum.yml
+++ b/spec/build/bsps/powerpc/qoriq/optchipnum.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1020
-default-by-variant:
-- value: 0
-  variants:
+default:
+- enabled-by:
   - powerpc/qoriq_e6500_32
   - powerpc/qoriq_e6500_64
+  value: 0
+- enabled-by: true
+  value: 1020
 description: |
   chip number, e.g. 1020, 2040, 2080, 4240
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optchipser.yml b/spec/build/bsps/powerpc/qoriq/optchipser.yml
index 29c0c01d6f..faefdc1d02 100644
--- a/spec/build/bsps/powerpc/qoriq/optchipser.yml
+++ b/spec/build/bsps/powerpc/qoriq/optchipser.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: P
-default-by-variant:
-- value: T
-  variants:
+default:
+- enabled-by:
   - powerpc/qoriq_e6500_32
   - powerpc/qoriq_e6500_64
+  value: T
+- enabled-by: true
+  value: P
 description: |
   chip series, e.g. 'P' or 'T'
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optclktmctr.yml b/spec/build/bsps/powerpc/qoriq/optclktmctr.yml
index f3d428e437..be8804fa63 100644
--- a/spec/build/bsps/powerpc/qoriq/optclktmctr.yml
+++ b/spec/build/bsps/powerpc/qoriq/optclktmctr.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1
-default-by-variant:
-- value: 5
-  variants:
-  - powerpc/qoriq_core_1
+default:
+- enabled-by: powerpc/qoriq_core_1
+  value: 5
+- enabled-by: true
+  value: 1
 description: |
   global timer used for the timecounter, 0..3 maps to A0..A3, and 4..7 maps to B0..B3
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optclktmr.yml b/spec/build/bsps/powerpc/qoriq/optclktmr.yml
index 61596b518c..97ed1992ff 100644
--- a/spec/build/bsps/powerpc/qoriq/optclktmr.yml
+++ b/spec/build/bsps/powerpc/qoriq/optclktmr.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant:
-- value: 4
-  variants:
-  - powerpc/qoriq_core_1
+default:
+- enabled-by: powerpc/qoriq_core_1
+  value: 4
+- enabled-by: true
+  value: 0
 description: |
   global timer used for system clock, 0..3 maps to A0..A3, and 4..7 maps to B0..B3
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optcpucnt.yml b/spec/build/bsps/powerpc/qoriq/optcpucnt.yml
index 61b2048edc..c1aa5549f4 100644
--- a/spec/build/bsps/powerpc/qoriq/optcpucnt.yml
+++ b/spec/build/bsps/powerpc/qoriq/optcpucnt.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 2
-default-by-variant:
-- value: 24
-  variants:
+default:
+- enabled-by:
   - powerpc/qoriq_e6500_32
   - powerpc/qoriq_e6500_64
+  value: 24
+- enabled-by: true
+  value: 2
 description: |
   maximum virtual processor count
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optetsec1phy.yml b/spec/build/bsps/powerpc/qoriq/optetsec1phy.yml
index 93e44d817c..870498b894 100644
--- a/spec/build/bsps/powerpc/qoriq/optetsec1phy.yml
+++ b/spec/build/bsps/powerpc/qoriq/optetsec1phy.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: -1
-default-by-variant: []
+default:
+- enabled-by: true
+  value: -1
 description: |
   PHY address for eTSEC interface 1
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optetsec2phy.yml b/spec/build/bsps/powerpc/qoriq/optetsec2phy.yml
index 037db1630a..4b2f86e345 100644
--- a/spec/build/bsps/powerpc/qoriq/optetsec2phy.yml
+++ b/spec/build/bsps/powerpc/qoriq/optetsec2phy.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: |
   PHY address for eTSEC interface 2
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optetsec3phy.yml b/spec/build/bsps/powerpc/qoriq/optetsec3phy.yml
index 21a511339a..402239ebb7 100644
--- a/spec/build/bsps/powerpc/qoriq/optetsec3phy.yml
+++ b/spec/build/bsps/powerpc/qoriq/optetsec3phy.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 1
 description: |
   PHY address for eTSEC interface 3
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optexcbooke.yml b/spec/build/bsps/powerpc/qoriq/optexcbooke.yml
index e27cb4ab44..d97e53ccb0 100644
--- a/spec/build/bsps/powerpc/qoriq/optexcbooke.yml
+++ b/spec/build/bsps/powerpc/qoriq/optexcbooke.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   only support Book E exception types
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optexcfixdhdlr.yml b/spec/build/bsps/powerpc/qoriq/optexcfixdhdlr.yml
index b636d8022b..5661fc0f3e 100644
--- a/spec/build/bsps/powerpc/qoriq/optexcfixdhdlr.yml
+++ b/spec/build/bsps/powerpc/qoriq/optexcfixdhdlr.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   use fixed high-level exception handler
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/opthid0.yml b/spec/build/bsps/powerpc/qoriq/opthid0.yml
index cdc6b51e95..c99c2b10ff 100644
--- a/spec/build/bsps/powerpc/qoriq/opthid0.yml
+++ b/spec/build/bsps/powerpc/qoriq/opthid0.yml
@@ -5,12 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant:
-- value: 1073741824
-  variants:
+default:
+- enabled-by:
   - powerpc/qoriq_e6500_32
   - powerpc/qoriq_e6500_64
+  value: 1073741824
 description: |
   initial HID0 value (EN_L2MMU_MHD is set by default on the T-series)
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/opthyp.yml b/spec/build/bsps/powerpc/qoriq/opthyp.yml
index 39901fed5d..c99a29edb8 100644
--- a/spec/build/bsps/powerpc/qoriq/opthyp.yml
+++ b/spec/build/bsps/powerpc/qoriq/opthyp.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - powerpc/qoriq_e6500_32
   - powerpc/qoriq_e6500_64
+  value: true
+- enabled-by: true
+  value: false
 description: |
   defined if the processor core has a hypervisor mode
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/opthypguest.yml b/spec/build/bsps/powerpc/qoriq/opthypguest.yml
index 6e579dc06c..967a3e1925 100644
--- a/spec/build/bsps/powerpc/qoriq/opthypguest.yml
+++ b/spec/build/bsps/powerpc/qoriq/opthypguest.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   defined if we are a hypervisor guest
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/opticombegin.yml b/spec/build/bsps/powerpc/qoriq/opticombegin.yml
index 29dae8f4a5..5cfe0d816c 100644
--- a/spec/build/bsps/powerpc/qoriq/opticombegin.yml
+++ b/spec/build/bsps/powerpc/qoriq/opticombegin.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 50331648
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 50331648
 description: |
   inter-processor communication area begin
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/opticomsz.yml b/spec/build/bsps/powerpc/qoriq/opticomsz.yml
index ebb977bac9..797f97250d 100644
--- a/spec/build/bsps/powerpc/qoriq/opticomsz.yml
+++ b/spec/build/bsps/powerpc/qoriq/opticomsz.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 16777216
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 16777216
 description: |
   inter-processor communication area size
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optmas7.yml b/spec/build/bsps/powerpc/qoriq/optmas7.yml
index debecaad28..7a0f3efa42 100644
--- a/spec/build/bsps/powerpc/qoriq/optmas7.yml
+++ b/spec/build/bsps/powerpc/qoriq/optmas7.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant:
-- value: 15
-  variants:
+default:
+- enabled-by:
   - powerpc/qoriq_e6500_32
   - powerpc/qoriq_e6500_64
+  value: 15
+- enabled-by: true
+  value: 0
 description: |
   MAS7 value for device TLB1 entries
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optmsr.yml b/spec/build/bsps/powerpc/qoriq/optmsr.yml
index 8bf6f8c75f..8a052c26ea 100644
--- a/spec/build/bsps/powerpc/qoriq/optmsr.yml
+++ b/spec/build/bsps/powerpc/qoriq/optmsr.yml
@@ -5,14 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 33554944
-default-by-variant:
-- value: 2181046784
-  variants:
-  - powerpc/qoriq_e6500_64
-- value: 33563136
-  variants:
-  - powerpc/qoriq_e6500_32
+default:
+- enabled-by: powerpc/qoriq_e6500_64
+  value: 2181046784
+- enabled-by: powerpc/qoriq_e6500_32
+  value: 33563136
+- enabled-by: true
+  value: 33554944
 description: |
   initial MSR value
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optspefscr.yml b/spec/build/bsps/powerpc/qoriq/optspefscr.yml
index 497f91eae3..26392d3ee2 100644
--- a/spec/build/bsps/powerpc/qoriq/optspefscr.yml
+++ b/spec/build/bsps/powerpc/qoriq/optspefscr.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant:
-- value: null
-  variants:
+default:
+- enabled-by:
   - powerpc/qoriq_e6500_32
   - powerpc/qoriq_e6500_64
+  value: null
+- enabled-by: true
+  value: 0
 description: |
   initial SPEFSCR value
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optthrdcnt.yml b/spec/build/bsps/powerpc/qoriq/optthrdcnt.yml
index 9fca5dc401..78410d5fc8 100644
--- a/spec/build/bsps/powerpc/qoriq/optthrdcnt.yml
+++ b/spec/build/bsps/powerpc/qoriq/optthrdcnt.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 1
-default-by-variant:
-- value: 2
-  variants:
+default:
+- enabled-by:
   - powerpc/qoriq_e6500_32
   - powerpc/qoriq_e6500_64
+  value: 2
+- enabled-by: true
+  value: 1
 description: |
   the number of threads per core
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/opttlb1cnt.yml b/spec/build/bsps/powerpc/qoriq/opttlb1cnt.yml
index ac123ecb0c..060c8d1000 100644
--- a/spec/build/bsps/powerpc/qoriq/opttlb1cnt.yml
+++ b/spec/build/bsps/powerpc/qoriq/opttlb1cnt.yml
@@ -5,12 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 16
-default-by-variant:
-- value: 64
-  variants:
+default:
+- enabled-by:
   - powerpc/qoriq_e6500_32
   - powerpc/qoriq_e6500_64
+  value: 64
+- enabled-by: true
+  value: 16
 description: |
   TLB1 entry count
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optuart0en.yml b/spec/build/bsps/powerpc/qoriq/optuart0en.yml
index c462db34d3..cd3cf1710a 100644
--- a/spec/build/bsps/powerpc/qoriq/optuart0en.yml
+++ b/spec/build/bsps/powerpc/qoriq/optuart0en.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
-  - powerpc/qoriq_core_1
+default:
+- enabled-by: powerpc/qoriq_core_1
+  value: false
+- enabled-by: true
+  value: true
 description: |
   use 1 to enable UART 0, otherwise use 0
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optuart1en.yml b/spec/build/bsps/powerpc/qoriq/optuart1en.yml
index af613ec57f..9d471847df 100644
--- a/spec/build/bsps/powerpc/qoriq/optuart1en.yml
+++ b/spec/build/bsps/powerpc/qoriq/optuart1en.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
-  - powerpc/qoriq_core_1
+default:
+- enabled-by: powerpc/qoriq_core_1
+  value: false
+- enabled-by: true
+  value: true
 description: |
   use 1 to enable UART 1, otherwise use 0
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optuartbrg0en.yml b/spec/build/bsps/powerpc/qoriq/optuartbrg0en.yml
index 05706d7ef7..955862eb3f 100644
--- a/spec/build/bsps/powerpc/qoriq/optuartbrg0en.yml
+++ b/spec/build/bsps/powerpc/qoriq/optuartbrg0en.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   use 1 to enable UART 0 to Intercom bridge, otherwise use 0
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optuartbrg1en.yml b/spec/build/bsps/powerpc/qoriq/optuartbrg1en.yml
index cc2c43c13a..c49ac36710 100644
--- a/spec/build/bsps/powerpc/qoriq/optuartbrg1en.yml
+++ b/spec/build/bsps/powerpc/qoriq/optuartbrg1en.yml
@@ -5,14 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
+default:
+- enabled-by:
   - powerpc/qoriq_core_0
-- value: true
-  variants:
   - powerpc/qoriq_core_1
+  value: true
+- enabled-by: true
+  value: false
 description: |
   use 1 to enable UART 1 to Intercom bridge, otherwise use 0
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optuartbrgmas.yml b/spec/build/bsps/powerpc/qoriq/optuartbrgmas.yml
index 8a58b8c518..e7ebba3494 100644
--- a/spec/build/bsps/powerpc/qoriq/optuartbrgmas.yml
+++ b/spec/build/bsps/powerpc/qoriq/optuartbrgmas.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: |
   UART to Intercom bridge master core index
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optuartbrgpri.yml b/spec/build/bsps/powerpc/qoriq/optuartbrgpri.yml
index b653aaf881..a2af223e43 100644
--- a/spec/build/bsps/powerpc/qoriq/optuartbrgpri.yml
+++ b/spec/build/bsps/powerpc/qoriq/optuartbrgpri.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 250
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 250
 description: |
   UART to Intercom bridge task priority
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optuartbrgslv.yml b/spec/build/bsps/powerpc/qoriq/optuartbrgslv.yml
index 8a672326f9..29b69bd33d 100644
--- a/spec/build/bsps/powerpc/qoriq/optuartbrgslv.yml
+++ b/spec/build/bsps/powerpc/qoriq/optuartbrgslv.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: |
   UART to Intercom bridge slave core index
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/qoriq/optuartirq.yml b/spec/build/bsps/powerpc/qoriq/optuartirq.yml
index 152668b2d9..a9fa750357 100644
--- a/spec/build/bsps/powerpc/qoriq/optuartirq.yml
+++ b/spec/build/bsps/powerpc/qoriq/optuartirq.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   enable usage of interrupts for the UART modules
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/ss555/abi.yml b/spec/build/bsps/powerpc/ss555/abi.yml
index 5d49ce0905..9c1e9b4ef8 100644
--- a/spec/build/bsps/powerpc/ss555/abi.yml
+++ b/spec/build/bsps/powerpc/ss555/abi.yml
@@ -7,9 +7,10 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -Dmpc555
-- -mcpu=505
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -Dmpc555
+  - -mcpu=505
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/ss555/optconminor.yml b/spec/build/bsps/powerpc/ss555/optconminor.yml
index edadd92fe1..752248a83e 100644
--- a/spec/build/bsps/powerpc/ss555/optconminor.yml
+++ b/spec/build/bsps/powerpc/ss555/optconminor.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: SCI2_MINOR
-default-by-variant: []
+default:
+- enabled-by: true
+  value: SCI2_MINOR
 description: |
   Must be defined to be one of SCI1_MINOR or SCI2_MINOR.  Determines which device will be registered as /dev/console.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/ss555/optprintkminor.yml b/spec/build/bsps/powerpc/ss555/optprintkminor.yml
index 86cb37b0ab..ea9b8ad35d 100644
--- a/spec/build/bsps/powerpc/ss555/optprintkminor.yml
+++ b/spec/build/bsps/powerpc/ss555/optprintkminor.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: SCI2_MINOR
-default-by-variant: []
+default:
+- enabled-by: true
+  value: SCI2_MINOR
 description: |
   Must be defined to be one of SCI1_MINOR or SCI2_MINOR.  Determines which device is used for output by printk().  The printk port always uses polled I/O.  Don't open the printk port from RTEMS unless also using polled I/O for the SCI ports.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/ss555/optuartsiomode.yml b/spec/build/bsps/powerpc/ss555/optuartsiomode.yml
index 8e351bb7a1..b6dd49c3de 100644
--- a/spec/build/bsps/powerpc/ss555/optuartsiomode.yml
+++ b/spec/build/bsps/powerpc/ss555/optuartsiomode.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Define to 1 if you want interrupt-driven I/O for the SCI ports.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/ss555/optuartsterm.yml b/spec/build/bsps/powerpc/ss555/optuartsterm.yml
index 1aa2122c24..308084e7a3 100644
--- a/spec/build/bsps/powerpc/ss555/optuartsterm.yml
+++ b/spec/build/bsps/powerpc/ss555/optuartsterm.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Define to 1 if you want termios support for every port.  Termios support is independent of the choice of UART I/O mode.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/ss555/optwdgtimeout.yml b/spec/build/bsps/powerpc/ss555/optwdgtimeout.yml
index 2cb717a1fc..e0fa63962b 100644
--- a/spec/build/bsps/powerpc/ss555/optwdgtimeout.yml
+++ b/spec/build/bsps/powerpc/ss555/optwdgtimeout.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 65535
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 65535
 description: |
   Define to the desired timeout (in steps of 1/20 msec) to enable the watchdog.  Default is to disable the watchdog entirely.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/t32mppc/abi.yml b/spec/build/bsps/powerpc/t32mppc/abi.yml
index 30d75f7e1d..9cba401fa6 100644
--- a/spec/build/bsps/powerpc/t32mppc/abi.yml
+++ b/spec/build/bsps/powerpc/t32mppc/abi.yml
@@ -7,11 +7,12 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=8540
-- -msoft-float
-- -meabi
-- -msdata=sysv
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=8540
+  - -msoft-float
+  - -meabi
+  - -msdata=sysv
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/t32mppc/optexcbooke.yml b/spec/build/bsps/powerpc/t32mppc/optexcbooke.yml
index e27cb4ab44..d97e53ccb0 100644
--- a/spec/build/bsps/powerpc/t32mppc/optexcbooke.yml
+++ b/spec/build/bsps/powerpc/t32mppc/optexcbooke.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   only support Book E exception types
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/t32mppc/optexcfixdhdlr.yml b/spec/build/bsps/powerpc/t32mppc/optexcfixdhdlr.yml
index b636d8022b..5661fc0f3e 100644
--- a/spec/build/bsps/powerpc/t32mppc/optexcfixdhdlr.yml
+++ b/spec/build/bsps/powerpc/t32mppc/optexcfixdhdlr.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   use fixed high-level exception handler
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/tqm8xx/abi.yml b/spec/build/bsps/powerpc/tqm8xx/abi.yml
index 42d984d9b2..cf5659825e 100644
--- a/spec/build/bsps/powerpc/tqm8xx/abi.yml
+++ b/spec/build/bsps/powerpc/tqm8xx/abi.yml
@@ -7,13 +7,14 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -Dmpc860
-- -mcpu=860
-- -mstrict-align
-- -fno-strict-aliasing
-- -meabi
-- -msdata=sysv
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -Dmpc860
+  - -mcpu=860
+  - -mstrict-align
+  - -fno-strict-aliasing
+  - -meabi
+  - -msdata=sysv
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/tqm8xx/optconchn.yml b/spec/build/bsps/powerpc/tqm8xx/optconchn.yml
index a33cfc32ab..c186444a98 100644
--- a/spec/build/bsps/powerpc/tqm8xx/optconchn.yml
+++ b/spec/build/bsps/powerpc/tqm8xx/optconchn.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: CONS_CHN_SMC1
-default-by-variant: []
+default:
+- enabled-by: true
+  value: CONS_CHN_SMC1
 description: |
   (BSP--console driver) Must be defined to be one of CONS_CHN_SMC1, CONS_CHN_SMC2, CONS_CHN_SCC1, CONS_CHN_SCC2, CONS_CHN_SCC3, or CONS_CHN_SCC4.  Determines which device will be registered as /dev/console.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/tqm8xx/optconscc1.yml b/spec/build/bsps/powerpc/tqm8xx/optconscc1.yml
index 6c0499daf1..cad2c32e70 100644
--- a/spec/build/bsps/powerpc/tqm8xx/optconscc1.yml
+++ b/spec/build/bsps/powerpc/tqm8xx/optconscc1.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: CONS_MODE_UNUSED
-default-by-variant: []
+default:
+- enabled-by: true
+  value: CONS_MODE_UNUSED
 description: |
   (BSP--SCC1 UART IF mode) Must be defined if SCC1 is used as a tty (UART) channel. Set it to CONS_MODE_POLLED for polled operation, CONS_MODE_IRQ for interrupt driven (spooled) operation. Set it to CONS_MODE_UNUSED, if not used
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/tqm8xx/optconscc2.yml b/spec/build/bsps/powerpc/tqm8xx/optconscc2.yml
index 754abd522f..1d353b71a1 100644
--- a/spec/build/bsps/powerpc/tqm8xx/optconscc2.yml
+++ b/spec/build/bsps/powerpc/tqm8xx/optconscc2.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: CONS_MODE_UNUSED
-default-by-variant: []
+default:
+- enabled-by: true
+  value: CONS_MODE_UNUSED
 description: |
   (BSP--SCC2 UART IF mode) Must be defined if SCC2 is used as a tty (UART) channel. Set it to CONS_MODE_POLLED for polled operation, CONS_MODE_IRQ for interrupt driven (spooled) operation. Set it to CONS_MODE_UNUSED, if not used
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/tqm8xx/optconscc3.yml b/spec/build/bsps/powerpc/tqm8xx/optconscc3.yml
index bdc665cbde..b3a80248d7 100644
--- a/spec/build/bsps/powerpc/tqm8xx/optconscc3.yml
+++ b/spec/build/bsps/powerpc/tqm8xx/optconscc3.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: CONS_MODE_UNUSED
-default-by-variant: []
+default:
+- enabled-by: true
+  value: CONS_MODE_UNUSED
 description: |
   (BSP--SCC3 UART IF mode) Must be defined if SCC3 is used as a tty (UART) channel. Set it to CONS_MODE_POLLED for polled operation, CONS_MODE_IRQ for interrupt driven (spooled) operation. Set it to CONS_MODE_UNUSED, if not used
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/tqm8xx/optconscc4.yml b/spec/build/bsps/powerpc/tqm8xx/optconscc4.yml
index e26ffcad07..335eb23ec9 100644
--- a/spec/build/bsps/powerpc/tqm8xx/optconscc4.yml
+++ b/spec/build/bsps/powerpc/tqm8xx/optconscc4.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: CONS_MODE_UNUSED
-default-by-variant: []
+default:
+- enabled-by: true
+  value: CONS_MODE_UNUSED
 description: |
   (BSP--SCC4 UART IF mode) Must be defined if SCC4 is used as a tty (UART) channel. Set it to CONS_MODE_POLLED for polled operation, CONS_MODE_IRQ for interrupt driven (spooled) operation. Set it to CONS_MODE_UNUSED, if not used
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/tqm8xx/optconsmc1.yml b/spec/build/bsps/powerpc/tqm8xx/optconsmc1.yml
index 7c7f563d00..2983d0805e 100644
--- a/spec/build/bsps/powerpc/tqm8xx/optconsmc1.yml
+++ b/spec/build/bsps/powerpc/tqm8xx/optconsmc1.yml
@@ -5,14 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: CONS_MODE_UNUSED
-default-by-variant:
-- value: CONS_MODE_POLLED
-  variants:
-  - powerpc/tqm8xx_stk8xx
-- value: CONS_MODE_IRQ
-  variants:
-  - powerpc/pghplus
+default:
+- enabled-by: powerpc/tqm8xx_stk8xx
+  value: CONS_MODE_POLLED
+- enabled-by: powerpc/pghplus
+  value: CONS_MODE_IRQ
+- enabled-by: true
+  value: CONS_MODE_UNUSED
 description: |
   (BSP--SMC1 UART IF mode) Must be defined if SMC1 is used as a tty (UART) channel. Set it to CONS_MODE_POLLED for polled operation, CONS_MODE_IRQ for interrupt driven (spooled) operation. Set it to CONS_MODE_UNUSED, if not used
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/tqm8xx/optconsmc2.yml b/spec/build/bsps/powerpc/tqm8xx/optconsmc2.yml
index c19c2850fb..495f70ecdd 100644
--- a/spec/build/bsps/powerpc/tqm8xx/optconsmc2.yml
+++ b/spec/build/bsps/powerpc/tqm8xx/optconsmc2.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: CONS_MODE_UNUSED
-default-by-variant:
-- value: CONS_MODE_POLLED
-  variants:
-  - powerpc/tqm8xx_stk8xx
+default:
+- enabled-by: powerpc/tqm8xx_stk8xx
+  value: CONS_MODE_POLLED
+- enabled-by: true
+  value: CONS_MODE_UNUSED
 description: |
   (BSP--SMC2 UART IF mode) Must be defined if SMC2 is used as a tty (UART) channel. Set it to CONS_MODE_POLLED for polled operation, CONS_MODE_IRQ for interrupt driven (spooled) operation. Set it to CONS_MODE_UNUSED, if not used
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/tqm8xx/optnetfec.yml b/spec/build/bsps/powerpc/tqm8xx/optnetfec.yml
index 52a1fc7afe..b8f8734d32 100644
--- a/spec/build/bsps/powerpc/tqm8xx/optnetfec.yml
+++ b/spec/build/bsps/powerpc/tqm8xx/optnetfec.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - powerpc/pghplus
+default:
+- enabled-by: powerpc/pghplus
+  value: true
+- enabled-by: true
+  value: false
 description: |
   If defined, then the BSP will use the Fast Ethernet Controller for 10/100MBit networking and used as primary networking interface.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/tqm8xx/optnetscc.yml b/spec/build/bsps/powerpc/tqm8xx/optnetscc.yml
index fe3492accf..a62ca0456c 100644
--- a/spec/build/bsps/powerpc/tqm8xx/optnetscc.yml
+++ b/spec/build/bsps/powerpc/tqm8xx/optnetscc.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant:
-- value: false
-  variants:
-  - powerpc/pghplus
+default:
+- enabled-by: powerpc/pghplus
+  value: false
+- enabled-by: true
+  value: true
 description: |
   If defined, then the BSP will use the Serial Communications Controller (SCC1) for 10MBit networking.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/tqm8xx/optprintkchn.yml b/spec/build/bsps/powerpc/tqm8xx/optprintkchn.yml
index cffd48009d..d9b6f72adc 100644
--- a/spec/build/bsps/powerpc/tqm8xx/optprintkchn.yml
+++ b/spec/build/bsps/powerpc/tqm8xx/optprintkchn.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: CONS_CHN_SMC1
-default-by-variant: []
+default:
+- enabled-by: true
+  value: CONS_CHN_SMC1
 description: |
   (BSP--console driver) Must be defined to be one of CONS_CHN_SMC1, CONS_CHN_SMC2, CONS_CHN_SCC2, CONS_CHN_SCC3, or CONS_CHN_SCC4. Determines which device is used for output by printk(). If the port that printk() uses is also used for other I/O (e.g. if  PRINTK_CHN == CONSOLE_CHN), then both ports should use the same type of I/O, otherwise the drivers will likely conflict with each other.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/virtex/abi.yml b/spec/build/bsps/powerpc/virtex/abi.yml
index c4c842a399..992c0d6059 100644
--- a/spec/build/bsps/powerpc/virtex/abi.yml
+++ b/spec/build/bsps/powerpc/virtex/abi.yml
@@ -7,11 +7,12 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -Dppc405
-- -mcpu=403
-- -meabi
-- -msdata=sysv
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -Dppc405
+  - -mcpu=403
+  - -meabi
+  - -msdata=sysv
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/virtex/optconirq.yml b/spec/build/bsps/powerpc/virtex/optconirq.yml
index d3e07791a8..4d19cf8bc9 100644
--- a/spec/build/bsps/powerpc/virtex/optconirq.yml
+++ b/spec/build/bsps/powerpc/virtex/optconirq.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   if defined use interrupt driven Termios mode
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/virtex/optfastramlen.yml b/spec/build/bsps/powerpc/virtex/optfastramlen.yml
index 366457a492..58c2d7aa88 100644
--- a/spec/build/bsps/powerpc/virtex/optfastramlen.yml
+++ b/spec/build/bsps/powerpc/virtex/optfastramlen.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: |
   fast RAM region length
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/virtex/optfastramorg.yml b/spec/build/bsps/powerpc/virtex/optfastramorg.yml
index 608ddb8c42..918370573d 100644
--- a/spec/build/bsps/powerpc/virtex/optfastramorg.yml
+++ b/spec/build/bsps/powerpc/virtex/optfastramorg.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: |
   fast RAM region origin
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/virtex/optramlen.yml b/spec/build/bsps/powerpc/virtex/optramlen.yml
index e07b9b715e..ec50b169f3 100644
--- a/spec/build/bsps/powerpc/virtex/optramlen.yml
+++ b/spec/build/bsps/powerpc/virtex/optramlen.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 134217708
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 134217708
 description: |
   normal RAM region length
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/virtex/optramorg.yml b/spec/build/bsps/powerpc/virtex/optramorg.yml
index 1c396974c9..68fbb0142a 100644
--- a/spec/build/bsps/powerpc/virtex/optramorg.yml
+++ b/spec/build/bsps/powerpc/virtex/optramorg.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: |
   normal RAM region origin
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/virtex/optresetlen.yml b/spec/build/bsps/powerpc/virtex/optresetlen.yml
index 79892a4f41..9995a3e773 100644
--- a/spec/build/bsps/powerpc/virtex/optresetlen.yml
+++ b/spec/build/bsps/powerpc/virtex/optresetlen.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 20
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 20
 description: ''
 enabled-by: true
 format: '{:#010x}'
diff --git a/spec/build/bsps/powerpc/virtex/optresetorg.yml b/spec/build/bsps/powerpc/virtex/optresetorg.yml
index f60fc4646c..d90fff65a7 100644
--- a/spec/build/bsps/powerpc/virtex/optresetorg.yml
+++ b/spec/build/bsps/powerpc/virtex/optresetorg.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 134217708
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 134217708
 description: |
   reset region origin
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/virtex/optxparam.yml b/spec/build/bsps/powerpc/virtex/optxparam.yml
index 4fd5f3d1c4..89e4d3d6bc 100644
--- a/spec/build/bsps/powerpc/virtex/optxparam.yml
+++ b/spec/build/bsps/powerpc/virtex/optxparam.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: <xparameters_dflt.h>
-default-by-variant: []
+default:
+- enabled-by: true
+  value: <xparameters_dflt.h>
 description: |
   This defines the location of the hardware specific "xparameters.h" file.  in the file system. Specify an absolute path. Do not forget the double quotes
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/virtex4/abi.yml b/spec/build/bsps/powerpc/virtex4/abi.yml
index 1fc318b3cb..86611c2bb1 100644
--- a/spec/build/bsps/powerpc/virtex4/abi.yml
+++ b/spec/build/bsps/powerpc/virtex4/abi.yml
@@ -7,9 +7,10 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -Dppc405
-- -mcpu=405
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -Dppc405
+  - -mcpu=405
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/virtex4/optppccachedata.yml b/spec/build/bsps/powerpc/virtex4/optppccachedata.yml
index ef96c06b8e..9ae7573262 100644
--- a/spec/build/bsps/powerpc/virtex4/optppccachedata.yml
+++ b/spec/build/bsps/powerpc/virtex4/optppccachedata.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   If defined, then the PowerPC specific code in RTEMS will use data cache instructions to optimize the context switch code.  This code can conflict with debuggers or emulators.  It is known to break the Corelis PowerPC emulator with at least some combinations of PowerPC 603e revisions and emulator versions.  The BSP actually contains the call that enables this.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/virtex4/optsprg.yml b/spec/build/bsps/powerpc/virtex4/optsprg.yml
index 1e1a112f43..312d2e0230 100644
--- a/spec/build/bsps/powerpc/virtex4/optsprg.yml
+++ b/spec/build/bsps/powerpc/virtex4/optsprg.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   If defined, then the PowerPC specific code in RTEMS will use some of the special purpose registers to slightly optimize interrupt response time.  The use of these registers can conflict with other tools like debuggers.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/virtex4/optvecbase.yml b/spec/build/bsps/powerpc/virtex4/optvecbase.yml
index fdc72a1863..143f4fe4d7 100644
--- a/spec/build/bsps/powerpc/virtex4/optvecbase.yml
+++ b/spec/build/bsps/powerpc/virtex4/optvecbase.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 256
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 256
 description: |
   This defines the base address of the exception table.
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/virtex5/abi.yml b/spec/build/bsps/powerpc/virtex5/abi.yml
index 3318bbbe42..e558e415a0 100644
--- a/spec/build/bsps/powerpc/virtex5/abi.yml
+++ b/spec/build/bsps/powerpc/virtex5/abi.yml
@@ -7,10 +7,11 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -Dppc440
-- -mcpu=440
-- -msoft-float
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -Dppc440
+  - -mcpu=440
+  - -msoft-float
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/virtex5/optppccachedata.yml b/spec/build/bsps/powerpc/virtex5/optppccachedata.yml
index 88fed61502..f7ae16fc1c 100644
--- a/spec/build/bsps/powerpc/virtex5/optppccachedata.yml
+++ b/spec/build/bsps/powerpc/virtex5/optppccachedata.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   None
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/virtex5/optsprg.yml b/spec/build/bsps/powerpc/virtex5/optsprg.yml
index 1bb5de32db..ea0c1d8202 100644
--- a/spec/build/bsps/powerpc/virtex5/optsprg.yml
+++ b/spec/build/bsps/powerpc/virtex5/optsprg.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   None
 enabled-by: true
diff --git a/spec/build/bsps/powerpc/virtex5/optvecbase.yml b/spec/build/bsps/powerpc/virtex5/optvecbase.yml
index fdc72a1863..143f4fe4d7 100644
--- a/spec/build/bsps/powerpc/virtex5/optvecbase.yml
+++ b/spec/build/bsps/powerpc/virtex5/optvecbase.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 256
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 256
 description: |
   This defines the base address of the exception table.
 enabled-by: true
diff --git a/spec/build/bsps/riscv/griscv/abi.yml b/spec/build/bsps/riscv/griscv/abi.yml
index fc915468ae..20c7e46e31 100644
--- a/spec/build/bsps/riscv/griscv/abi.yml
+++ b/spec/build/bsps/riscv/griscv/abi.yml
@@ -7,29 +7,26 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -march=rv32imafdc
-- -mabi=ilp32d
-default-by-variant:
-- value:
+- enabled-by: riscv/grv32imac
+  value:
   - -march=rv32imac
   - -mabi=ilp32
-  variants:
-  - riscv/grv32imac
-- value:
+- enabled-by: riscv/grv32im
+  value:
   - -march=rv32im
   - -mabi=ilp32
-  variants:
-  - riscv/grv32im
-- value:
+- enabled-by: riscv/grv32i
+  value:
   - -march=rv32i
   - -mabi=ilp32
-  variants:
-  - riscv/grv32i
-- value:
+- enabled-by: riscv/griscv
+  value:
   - -march=rv32imafd
   - -mabi=ilp32d
-  variants:
-  - riscv/griscv
+- enabled-by: true
+  value:
+  - -march=rv32imafdc
+  - -mabi=ilp32d
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/riscv/noel/abi.yml b/spec/build/bsps/riscv/noel/abi.yml
index 558ba70c95..841fb17175 100644
--- a/spec/build/bsps/riscv/noel/abi.yml
+++ b/spec/build/bsps/riscv/noel/abi.yml
@@ -7,38 +7,34 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -march=rv32ima
-- -mabi=ilp32
-default-by-variant:
-- value:
+- enabled-by: riscv/noel64imafdc
+  value:
   - -march=rv64imafdc
   - -mabi=lp64d
-  variants:
-  - riscv/noel64imafdc
-- value:
+- enabled-by: riscv/noel64imafd
+  value:
   - -march=rv64imafd
   - -mabi=lp64d
-  variants:
-  - riscv/noel64imafd
-- value:
+- enabled-by: riscv/noel64imac
+  value:
   - -march=rv64imac
   - -mabi=lp64
-  variants:
-  - riscv/noel64imac
-- value:
+- enabled-by: []
+  value:
   - -march=rv64im
   - -mabi=lp64
-  variants: []
-- value:
+- enabled-by: riscv/noel32imafd
+  value:
   - -march=rv32imafd
   - -mabi=ilp32d
-  variants:
-  - riscv/noel32imafd
-- value:
+- enabled-by: riscv/noel32im
+  value:
   - -march=rv32im
   - -mabi=ilp32
-  variants:
-  - riscv/noel32im
+- enabled-by: true
+  value:
+  - -march=rv32ima
+  - -mabi=ilp32
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/riscv/noel/optapbuartmax.yml b/spec/build/bsps/riscv/noel/optapbuartmax.yml
index c120816868..fd6fef8a46 100644
--- a/spec/build/bsps/riscv/noel/optapbuartmax.yml
+++ b/spec/build/bsps/riscv/noel/optapbuartmax.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 Cobham Gaisler AB
-default: 2
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 2
 description: |
   maximum number of APBUART devices supported by the console driver (2 by default)
 enabled-by: true
diff --git a/spec/build/bsps/riscv/optextirqmax.yml b/spec/build/bsps/riscv/optextirqmax.yml
index eddb0a78d5..a56e9c3ccc 100644
--- a/spec/build/bsps/riscv/optextirqmax.yml
+++ b/spec/build/bsps/riscv/optextirqmax.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 128
-default-by-variant:
-- value: 187
-  variants:
-  - riscv/mpfs64imafdc
+default:
+- enabled-by: riscv/mpfs64imafdc
+  value: 187
+- enabled-by: true
+  value: 128
 description: |
   maximum number of external interrupts supported by the BSP (default 128)
 enabled-by: true
diff --git a/spec/build/bsps/riscv/optrambegin.yml b/spec/build/bsps/riscv/optrambegin.yml
index 047c25d66d..ec55d8067d 100644
--- a/spec/build/bsps/riscv/optrambegin.yml
+++ b/spec/build/bsps/riscv/optrambegin.yml
@@ -8,21 +8,20 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 2147483648
-default-by-variant:
-- value: 0
-  variants:
+default:
+- enabled-by:
   - riscv/noel32im
   - riscv/noel32imafd
   - riscv/noel64imac
   - riscv/noel64imafd
   - riscv/noel64imafdc
-- value: 1073741824
-  variants:
-  - riscv/griscv
-- value: 68719476736
-  variants:
-  - riscv/mpfs64imafdc
+  value: 0
+- enabled-by: riscv/griscv
+  value: 1073741824
+- enabled-by: riscv/mpfs64imafdc
+  value: 68719476736
+- enabled-by: true
+  value: 2147483648
 description: ''
 enabled-by: true
 format: '{:#010x}'
diff --git a/spec/build/bsps/riscv/optramsize.yml b/spec/build/bsps/riscv/optramsize.yml
index 3e123fc650..27cb52220e 100644
--- a/spec/build/bsps/riscv/optramsize.yml
+++ b/spec/build/bsps/riscv/optramsize.yml
@@ -8,17 +8,15 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 67108864
-default-by-variant:
-- value: 268435456
-  variants:
+default:
+- enabled-by:
   - riscv/frdme310arty
-- value: 16777216
-  variants:
-  - riscv/griscv
-- value: 268435456
-  variants:
   - riscv/mpfs64imafdc
+  value: 268435456
+- enabled-by: riscv/griscv
+  value: 16777216
+- enabled-by: true
+  value: 67108864
 description: ''
 enabled-by: true
 format: '{:#010x}'
diff --git a/spec/build/bsps/riscv/riscv/abi.yml b/spec/build/bsps/riscv/riscv/abi.yml
index 29dd7b449d..ab3046ee24 100644
--- a/spec/build/bsps/riscv/riscv/abi.yml
+++ b/spec/build/bsps/riscv/riscv/abi.yml
@@ -7,67 +7,51 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -march=rv32imac
-- -mabi=ilp32
-default-by-variant:
-- value:
-  - -march=rv64imafdc
-  - -mabi=lp64d
-  - -mcmodel=medany
-  variants:
+- enabled-by:
   - riscv/mpfs64imafdc
-- value:
-  - -march=rv64imafdc
-  - -mabi=lp64d
-  - -mcmodel=medany
-  variants:
   - riscv/rv64imafdc
-- value:
-  - -march=rv64imafd
+  value:
+  - -march=rv64imafdc
   - -mabi=lp64d
   - -mcmodel=medany
-  variants:
+- enabled-by:
+  - riscv/rv64imafd
   - riscv/rv64imafd
-- value:
+  value:
   - -march=rv64imafd
   - -mabi=lp64d
   - -mcmodel=medany
-  variants:
-  - riscv/rv64imafd
-- value:
+- enabled-by: riscv/rv64imac
+  value:
   - -march=rv64imac
   - -mabi=lp64
   - -mcmodel=medany
-  variants:
-  - riscv/rv64imac
-- value: []
-  variants:
-  - riscv/rv32imafdc
-- value:
+- enabled-by: riscv/rv32imafdc
+  value: []
+- enabled-by: riscv/rv32imafd
+  value:
   - -march=rv32imafd
   - -mabi=ilp32d
-  variants:
-  - riscv/rv32imafd
-- value:
+- enabled-by: riscv/rv32imafc
+  value:
   - -march=rv32imafc
   - -mabi=ilp32f
-  variants:
-  - riscv/rv32imafc
-- value:
+- enabled-by: riscv/rv32im
+  value:
   - -march=rv32im
   - -mabi=ilp32
-  variants:
-  - riscv/rv32im
-- value:
+- enabled-by: riscv/rv32iac
+  value:
   - -march=rv32iac
   - -mabi=ilp32
-  variants:
-  - riscv/rv32iac
-- value:
+- enabled-by: riscv/rv32i
+  value:
   - -march=rv32i
   - -mabi=ilp32
-  variants:
-  - riscv/rv32i
+- enabled-by: true
+  value:
+  - -march=rv32imac
+  - -mabi=ilp32
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/riscv/riscv/optfrdme310arty.yml b/spec/build/bsps/riscv/riscv/optfrdme310arty.yml
index 4bb43a9a18..4f30ce1f4d 100644
--- a/spec/build/bsps/riscv/riscv/optfrdme310arty.yml
+++ b/spec/build/bsps/riscv/riscv/optfrdme310arty.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - riscv/frdme310arty
+default:
+- enabled-by: riscv/frdme310arty
+  value: true
+- enabled-by: true
+  value: false
 description: |
   enables support sifive Freedom E310 Arty board if defined to a non-zero value,otherwise it is disabled (disabled by default)
 enabled-by: true
diff --git a/spec/build/bsps/riscv/riscv/opthtif.yml b/spec/build/bsps/riscv/riscv/opthtif.yml
index af174f82ea..cd85f1d9e4 100644
--- a/spec/build/bsps/riscv/riscv/opthtif.yml
+++ b/spec/build/bsps/riscv/riscv/opthtif.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   Enable the Host/Target Interface (HTIF) support.
 enabled-by: true
diff --git a/spec/build/bsps/riscv/riscv/optmpfs.yml b/spec/build/bsps/riscv/riscv/optmpfs.yml
index 2b734c203b..65534874cf 100644
--- a/spec/build/bsps/riscv/riscv/optmpfs.yml
+++ b/spec/build/bsps/riscv/riscv/optmpfs.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant:
-- value: true
-  variants:
-  - riscv/mpfs64imafdc
+default:
+- enabled-by: riscv/mpfs64imafdc
+  value: true
+- enabled-by: true
+  value: false
 description: |
   enables support Microchip PolarFire SoC if defined to a non-zero value,otherwise it is disabled (disabled by default)
 enabled-by: true
diff --git a/spec/build/bsps/riscv/riscv/optns16550max.yml b/spec/build/bsps/riscv/riscv/optns16550max.yml
index 41a23ee10d..423bb5f74f 100644
--- a/spec/build/bsps/riscv/riscv/optns16550max.yml
+++ b/spec/build/bsps/riscv/riscv/optns16550max.yml
@@ -5,14 +5,13 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 2
-default-by-variant:
-- value: null
-  variants:
-  - riscv/frdme310arty
-- value: 1
-  variants:
-  - riscv/mpfs64imafdc
+default:
+- enabled-by: riscv/frdme310arty
+  value: null
+- enabled-by: riscv/mpfs64imafdc
+  value: 1
+- enabled-by: true
+  value: 2
 description: |
   maximum number of NS16550 devices supported by the console driver (2 by default)
 enabled-by: true
diff --git a/spec/build/bsps/sh/gensh1/abi.yml b/spec/build/bsps/sh/gensh1/abi.yml
index 4e3646562a..c6d8d5bacc 100644
--- a/spec/build/bsps/sh/gensh1/abi.yml
+++ b/spec/build/bsps/sh/gensh1/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -m1
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -m1
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/sh/gensh1/optcpuclk.yml b/spec/build/bsps/sh/gensh1/optcpuclk.yml
index 086145a786..4ccce45d6c 100644
--- a/spec/build/bsps/sh/gensh1/optcpuclk.yml
+++ b/spec/build/bsps/sh/gensh1/optcpuclk.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 20000000
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 20000000
 description: |
   cpu clock rate in HZ
 enabled-by: true
diff --git a/spec/build/bsps/sh/gensh1/optlowinit.yml b/spec/build/bsps/sh/gensh1/optlowinit.yml
index 60f16b388b..121673589c 100644
--- a/spec/build/bsps/sh/gensh1/optlowinit.yml
+++ b/spec/build/bsps/sh/gensh1/optlowinit.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   If defined, selects whether 'early_hw_init()' is called from 'start.S'; 'bsp_hw_init()' is always called from 'bspstart.c'
 enabled-by: true
diff --git a/spec/build/bsps/sh/gensh1/tstgensh1.yml b/spec/build/bsps/sh/gensh1/tstgensh1.yml
index 24ae4936a6..07cf80813f 100644
--- a/spec/build/bsps/sh/gensh1/tstgensh1.yml
+++ b/spec/build/bsps/sh/gensh1/tstgensh1.yml
@@ -12,8 +12,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/sh/gensh2/abi.yml b/spec/build/bsps/sh/gensh2/abi.yml
index 4bd34deb19..5eaeac1669 100644
--- a/spec/build/bsps/sh/gensh2/abi.yml
+++ b/spec/build/bsps/sh/gensh2/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -m2
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -m2
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/sh/gensh2/optcpuclk.yml b/spec/build/bsps/sh/gensh2/optcpuclk.yml
index 086145a786..4ccce45d6c 100644
--- a/spec/build/bsps/sh/gensh2/optcpuclk.yml
+++ b/spec/build/bsps/sh/gensh2/optcpuclk.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 20000000
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 20000000
 description: |
   cpu clock rate in HZ
 enabled-by: true
diff --git a/spec/build/bsps/sh/gensh2/optevb.yml b/spec/build/bsps/sh/gensh2/optevb.yml
index 45d1a7d0bc..d8035d6117 100644
--- a/spec/build/bsps/sh/gensh2/optevb.yml
+++ b/spec/build/bsps/sh/gensh2/optevb.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   If defined, compiles code to jump-start from FLASH, without a monitor
 enabled-by: true
diff --git a/spec/build/bsps/sh/gensh2/optlowinit.yml b/spec/build/bsps/sh/gensh2/optlowinit.yml
index 60f16b388b..121673589c 100644
--- a/spec/build/bsps/sh/gensh2/optlowinit.yml
+++ b/spec/build/bsps/sh/gensh2/optlowinit.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   If defined, selects whether 'early_hw_init()' is called from 'start.S'; 'bsp_hw_init()' is always called from 'bspstart.c'
 enabled-by: true
diff --git a/spec/build/bsps/sh/gensh2/tstgensh2.yml b/spec/build/bsps/sh/gensh2/tstgensh2.yml
index 43be5a19c0..80b051bc4b 100644
--- a/spec/build/bsps/sh/gensh2/tstgensh2.yml
+++ b/spec/build/bsps/sh/gensh2/tstgensh2.yml
@@ -9,8 +9,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/sh/gensh4/abi.yml b/spec/build/bsps/sh/gensh4/abi.yml
index cc406a30b6..7289b3d527 100644
--- a/spec/build/bsps/sh/gensh4/abi.yml
+++ b/spec/build/bsps/sh/gensh4/abi.yml
@@ -7,9 +7,10 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -m4
-- -ml
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -m4
+  - -ml
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/sh/gensh4/optcpuclk.yml b/spec/build/bsps/sh/gensh4/optcpuclk.yml
index 086145a786..4ccce45d6c 100644
--- a/spec/build/bsps/sh/gensh4/optcpuclk.yml
+++ b/spec/build/bsps/sh/gensh4/optcpuclk.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 20000000
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 20000000
 description: |
   cpu clock rate in HZ
 enabled-by: true
diff --git a/spec/build/bsps/sh/gensh4/optcpydata.yml b/spec/build/bsps/sh/gensh4/optcpydata.yml
index 7d49b9b781..a596e4f670 100644
--- a/spec/build/bsps/sh/gensh4/optcpydata.yml
+++ b/spec/build/bsps/sh/gensh4/optcpydata.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Whether to copy data from ROM to RAM in start.S
 enabled-by: true
diff --git a/spec/build/bsps/sh/gensh4/optlowinit.yml b/spec/build/bsps/sh/gensh4/optlowinit.yml
index 2a90a73753..27de113dca 100644
--- a/spec/build/bsps/sh/gensh4/optlowinit.yml
+++ b/spec/build/bsps/sh/gensh4/optlowinit.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Whether to call early_hw_init from start.S
 enabled-by: true
diff --git a/spec/build/bsps/sh/shsim/abi.yml b/spec/build/bsps/sh/shsim/abi.yml
index f5dcf145dc..2b735aea89 100644
--- a/spec/build/bsps/sh/shsim/abi.yml
+++ b/spec/build/bsps/sh/shsim/abi.yml
@@ -7,22 +7,20 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -m4
-- -ml
-default-by-variant:
-- value:
+- enabled-by: sh/simsh2e
+  value:
   - -m2e
   - -ml
-  variants:
-  - sh/simsh2e
-- value:
+- enabled-by: sh/simsh2
+  value:
   - -m2
-  variants:
-  - sh/simsh2
-- value:
+- enabled-by: sh/simsh1
+  value:
   - -m1
-  variants:
-  - sh/simsh1
+- enabled-by: true
+  value:
+  - -m4
+  - -ml
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/sh/shsim/optcpuclk.yml b/spec/build/bsps/sh/shsim/optcpuclk.yml
index 086145a786..4ccce45d6c 100644
--- a/spec/build/bsps/sh/shsim/optcpuclk.yml
+++ b/spec/build/bsps/sh/shsim/optcpuclk.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 20000000
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 20000000
 description: |
   cpu clock rate in HZ
 enabled-by: true
diff --git a/spec/build/bsps/sh/shsim/optlowinit.yml b/spec/build/bsps/sh/shsim/optlowinit.yml
index 60f16b388b..121673589c 100644
--- a/spec/build/bsps/sh/shsim/optlowinit.yml
+++ b/spec/build/bsps/sh/shsim/optlowinit.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   If defined, selects whether 'early_hw_init()' is called from 'start.S'; 'bsp_hw_init()' is always called from 'bspstart.c'
 enabled-by: true
diff --git a/spec/build/bsps/sh/shsim/tstsimsh1.yml b/spec/build/bsps/sh/shsim/tstsimsh1.yml
index 4cad77e4c5..a6af1f3e94 100644
--- a/spec/build/bsps/sh/shsim/tstsimsh1.yml
+++ b/spec/build/bsps/sh/shsim/tstsimsh1.yml
@@ -12,8 +12,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/sh/shsim/tstsimsh2.yml b/spec/build/bsps/sh/shsim/tstsimsh2.yml
index 4cad77e4c5..a6af1f3e94 100644
--- a/spec/build/bsps/sh/shsim/tstsimsh2.yml
+++ b/spec/build/bsps/sh/shsim/tstsimsh2.yml
@@ -12,8 +12,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/sh/shsim/tstsimsh2e.yml b/spec/build/bsps/sh/shsim/tstsimsh2e.yml
index 4cad77e4c5..a6af1f3e94 100644
--- a/spec/build/bsps/sh/shsim/tstsimsh2e.yml
+++ b/spec/build/bsps/sh/shsim/tstsimsh2e.yml
@@ -12,8 +12,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/sh/shsim/tstsimsh4.yml b/spec/build/bsps/sh/shsim/tstsimsh4.yml
index 4cad77e4c5..a6af1f3e94 100644
--- a/spec/build/bsps/sh/shsim/tstsimsh4.yml
+++ b/spec/build/bsps/sh/shsim/tstsimsh4.yml
@@ -12,8 +12,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/sparc/erc32/abi.yml b/spec/build/bsps/sparc/erc32/abi.yml
index f8ea9fb8da..13fc6fe45b 100644
--- a/spec/build/bsps/sparc/erc32/abi.yml
+++ b/spec/build/bsps/sparc/erc32/abi.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=cypress
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mcpu=cypress
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/sparc/erc32/optconirq.yml b/spec/build/bsps/sparc/erc32/optconirq.yml
index df25d621b4..314d022a44 100644
--- a/spec/build/bsps/sparc/erc32/optconirq.yml
+++ b/spec/build/bsps/sparc/erc32/optconirq.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: |
   The erc32 console driver can operate in either polled or interrupt mode.  Under the simulator (especially when FAST_UART is defined), polled seems to operate better. It is common for a task to print a line (like the end of test message) and then exit.  In this case, the program returns control to the simulator command line before the program has even queued the output to the uart.  Thus sis has no chance of getting the data out.
 enabled-by: true
diff --git a/spec/build/bsps/sparc/erc32/optpwrdwnhlt.yml b/spec/build/bsps/sparc/erc32/optpwrdwnhlt.yml
index 6627a5b071..1c35dc61cc 100644
--- a/spec/build/bsps/sparc/erc32/optpwrdwnhlt.yml
+++ b/spec/build/bsps/sparc/erc32/optpwrdwnhlt.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   If defined, CPU is spinning on fatal exit. Otherwise generate system error which will hand over to debugger, simulator, etc.
 enabled-by: true
diff --git a/spec/build/bsps/sparc/leon2/abi.yml b/spec/build/bsps/sparc/leon2/abi.yml
index 21fe1b77ca..22a699dadb 100644
--- a/spec/build/bsps/sparc/leon2/abi.yml
+++ b/spec/build/bsps/sparc/leon2/abi.yml
@@ -7,13 +7,13 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=leon
-default-by-variant:
-- value:
+- enabled-by: sparc/at697f
+  value:
   - -mcpu=leon
   - -mfix-at697f
-  variants:
-  - sparc/at697f
+- enabled-by: true
+  value:
+  - -mcpu=leon
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/sparc/leon2/optconirq.yml b/spec/build/bsps/sparc/leon2/optconirq.yml
index 4163b30aff..1bc1912391 100644
--- a/spec/build/bsps/sparc/leon2/optconirq.yml
+++ b/spec/build/bsps/sparc/leon2/optconirq.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: |
   The leon2 console driver can operate in either polled or interrupt mode.  Under the simulator (especially when FAST_UART is defined), polled seems to operate better. It is common for a task to print a line (like the end of test message) and then exit.  In this case, the program returns control to the simulator command line before the program has even queued the output to the uart.  Thus sis has no chance of getting the data out.
 enabled-by: true
diff --git a/spec/build/bsps/sparc/leon2/optpwrdwnhlt.yml b/spec/build/bsps/sparc/leon2/optpwrdwnhlt.yml
index 6627a5b071..1c35dc61cc 100644
--- a/spec/build/bsps/sparc/leon2/optpwrdwnhlt.yml
+++ b/spec/build/bsps/sparc/leon2/optpwrdwnhlt.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   If defined, CPU is spinning on fatal exit. Otherwise generate system error which will hand over to debugger, simulator, etc.
 enabled-by: true
diff --git a/spec/build/bsps/sparc/leon3/abi.yml b/spec/build/bsps/sparc/leon3/abi.yml
index b725d5de48..5117e3e555 100644
--- a/spec/build/bsps/sparc/leon3/abi.yml
+++ b/spec/build/bsps/sparc/leon3/abi.yml
@@ -7,23 +7,21 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mcpu=leon3
-default-by-variant:
-- value:
+- enabled-by: sparc/ut700
+  value:
   - -mcpu=leon3
   - -mfix-ut700
-  variants:
-  - sparc/ut700
-- value:
+- enabled-by: sparc/ut699
+  value:
   - -mcpu=leon
   - -mfix-ut699
-  variants:
-  - sparc/ut699
-- value:
+- enabled-by: sparc/gr712rc
+  value:
   - -mcpu=leon3
   - -mfix-gr712rc
-  variants:
-  - sparc/gr712rc
+- enabled-by: true
+  value:
+  - -mcpu=leon3
 description: |
   ABI flags
 enabled-by:
diff --git a/spec/build/bsps/sparc/leon3/abiclang.yml b/spec/build/bsps/sparc/leon3/abiclang.yml
index 6c9646e7cd..577129762c 100644
--- a/spec/build/bsps/sparc/leon3/abiclang.yml
+++ b/spec/build/bsps/sparc/leon3/abiclang.yml
@@ -7,26 +7,23 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 Hesham Almatary <Hesham.Almatary at cl.cam.ac.uk>
 default:
-- -mcpu=leon3
-default-by-variant:
-- value:
+- enabled-by: sparc/ut700
+  value:
   - -mcpu=leon3
   - -mfix-ut700
-  variants:
-  - sparc/ut700
-- value:
+- enabled-by: sparc/ut699
+  value:
   - -mcpu=leon
   - -mfix-ut699
-  variants:
-  - sparc/ut699
-- value:
+- enabled-by: sparc/gr712rc
+  value:
   - -mcpu=gr712rc
-  variants:
-  - sparc/gr712rc
-- value:
+- enabled-by: sparc/gr740
+  value:
   - -mcpu=gr740
-  variants:
-  - sparc/gr740
+- enabled-by: true
+  value:
+  - -mcpu=leon3
 description: |
   ABI flags
 enabled-by:
diff --git a/spec/build/bsps/sparc/leon3/optconirq.yml b/spec/build/bsps/sparc/leon3/optconirq.yml
index 2278f00ef3..7083b47892 100644
--- a/spec/build/bsps/sparc/leon3/optconirq.yml
+++ b/spec/build/bsps/sparc/leon3/optconirq.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant: []
+default:
+- enabled-by: true
+  value: 0
 description: |
   The leon3 console driver can operate in either polled or interrupt mode.  Under the simulator (especially when FAST_UART is defined), polled seems to operate better.
 enabled-by: true
diff --git a/spec/build/bsps/sparc/leon3/optleon3smp.yml b/spec/build/bsps/sparc/leon3/optleon3smp.yml
index c78929c198..f86d40c16a 100644
--- a/spec/build/bsps/sparc/leon3/optleon3smp.yml
+++ b/spec/build/bsps/sparc/leon3/optleon3smp.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   Always defined when on a LEON3 to enable the LEON3 support for determining the CPU core number in an SMP configuration.
 enabled-by: true
diff --git a/spec/build/bsps/sparc/leon3/optpwrdwnhlt.yml b/spec/build/bsps/sparc/leon3/optpwrdwnhlt.yml
index 8923870017..1ddb90bc10 100644
--- a/spec/build/bsps/sparc/leon3/optpwrdwnhlt.yml
+++ b/spec/build/bsps/sparc/leon3/optpwrdwnhlt.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   If defined, CPU is powered down on fatal exit. Otherwise generate system error which will hand over to debugger, simulator, etc.
 enabled-by: true
diff --git a/spec/build/bsps/sparc64/niagara/abi.yml b/spec/build/bsps/sparc64/niagara/abi.yml
index d8aadc1831..eae575e1d9 100644
--- a/spec/build/bsps/sparc64/niagara/abi.yml
+++ b/spec/build/bsps/sparc64/niagara/abi.yml
@@ -7,9 +7,10 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -DSUN4V
-- -mcpu=niagara
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -DSUN4V
+  - -mcpu=niagara
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/sparc64/usiii/abi.yml b/spec/build/bsps/sparc64/usiii/abi.yml
index 77dce75223..3b072388cd 100644
--- a/spec/build/bsps/sparc64/usiii/abi.yml
+++ b/spec/build/bsps/sparc64/usiii/abi.yml
@@ -7,10 +7,11 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -DSUN4U
-- -DUS3
-- -mcpu=ultrasparc3
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -DSUN4U
+  - -DUS3
+  - -mcpu=ultrasparc3
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/sparc64/usiii/optclkfastidle.yml b/spec/build/bsps/sparc64/usiii/optclkfastidle.yml
index 5aed542b4b..3fd064cc0a 100644
--- a/spec/build/bsps/sparc64/usiii/optclkfastidle.yml
+++ b/spec/build/bsps/sparc64/usiii/optclkfastidle.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   If defined, speed up the clock ticks while the idle task is running so time spent in the idle task is minimized.  This significantly reduces the wall time required to execute the RTEMS test suites.
 enabled-by: true
diff --git a/spec/build/bsps/tst-xfail-dl06.yml b/spec/build/bsps/tst-xfail-dl06.yml
index 37018a0851..cee1882138 100644
--- a/spec/build/bsps/tst-xfail-dl06.yml
+++ b/spec/build/bsps/tst-xfail-dl06.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/tst-xfail-intr.yml b/spec/build/bsps/tst-xfail-intr.yml
index 7c43194996..2afbc62d63 100644
--- a/spec/build/bsps/tst-xfail-intr.yml
+++ b/spec/build/bsps/tst-xfail-intr.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/tst.yml b/spec/build/bsps/tst.yml
index 8610b375c3..24b863998b 100644
--- a/spec/build/bsps/tst.yml
+++ b/spec/build/bsps/tst.yml
@@ -14,8 +14,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: |
   Provides general test states.
 enabled-by: true
diff --git a/spec/build/bsps/tstnoiconv.yml b/spec/build/bsps/tstnoiconv.yml
index 30de0ef1b4..31293b0490 100644
--- a/spec/build/bsps/tstnoiconv.yml
+++ b/spec/build/bsps/tstnoiconv.yml
@@ -7,8 +7,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/tstnointrcrit.yml b/spec/build/bsps/tstnointrcrit.yml
index 46f7d974c8..69b4e6acac 100644
--- a/spec/build/bsps/tstnointrcrit.yml
+++ b/spec/build/bsps/tstnointrcrit.yml
@@ -28,8 +28,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/tstnojffs2.yml b/spec/build/bsps/tstnojffs2.yml
index 4742d42919..49cdec23cb 100644
--- a/spec/build/bsps/tstnojffs2.yml
+++ b/spec/build/bsps/tstnojffs2.yml
@@ -13,8 +13,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/tstnolibdl.yml b/spec/build/bsps/tstnolibdl.yml
index db89e83130..30469a6f37 100644
--- a/spec/build/bsps/tstnolibdl.yml
+++ b/spec/build/bsps/tstnolibdl.yml
@@ -14,8 +14,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/tstnorfs.yml b/spec/build/bsps/tstnorfs.yml
index ba8ae1c21e..4d72be5989 100644
--- a/spec/build/bsps/tstnorfs.yml
+++ b/spec/build/bsps/tstnorfs.yml
@@ -14,8 +14,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/tstreqtick.yml b/spec/build/bsps/tstreqtick.yml
index e3ff8389b3..5d90e9eba0 100644
--- a/spec/build/bsps/tstreqtick.yml
+++ b/spec/build/bsps/tstreqtick.yml
@@ -51,8 +51,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/bsps/tstsmallmem.yml b/spec/build/bsps/tstsmallmem.yml
index 5f75a43f1d..6132202f72 100644
--- a/spec/build/bsps/tstsmallmem.yml
+++ b/spec/build/bsps/tstsmallmem.yml
@@ -132,8 +132,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links:
diff --git a/spec/build/bsps/v850/gdbv850sim/abi.yml b/spec/build/bsps/v850/gdbv850sim/abi.yml
index 7defa55c80..4e03dd98c4 100644
--- a/spec/build/bsps/v850/gdbv850sim/abi.yml
+++ b/spec/build/bsps/v850/gdbv850sim/abi.yml
@@ -7,28 +7,24 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mv850
-default-by-variant:
-- value:
+- enabled-by: v850/v850essim
+  value:
   - -mv850es
-  variants:
-  - v850/v850essim
-- value:
+- enabled-by: v850/v850esim
+  value:
   - -mv850e
-  variants:
-  - v850/v850esim
-- value:
+- enabled-by: v850/v850e2v3sim
+  value:
   - -mv850e2v3
-  variants:
-  - v850/v850e2v3sim
-- value:
+- enabled-by: v850/v850e2sim
+  value:
   - -mv850e2
-  variants:
-  - v850/v850e2sim
-- value:
+- enabled-by: v850/v850e1sim
+  value:
   - -mv850e1
-  variants:
-  - v850/v850e1sim
+- enabled-by: true
+  value:
+  - -mv850
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/bsps/x86_64/amd64/abi.yml b/spec/build/bsps/x86_64/amd64/abi.yml
index 3e8748d069..ccbea52e23 100644
--- a/spec/build/bsps/x86_64/amd64/abi.yml
+++ b/spec/build/bsps/x86_64/amd64/abi.yml
@@ -7,9 +7,10 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -mno-red-zone
-- -mcmodel=large
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -mno-red-zone
+  - -mcmodel=large
 description: |
   ABI flags
 enabled-by: true
diff --git a/spec/build/cpukit/cfgattrgetaff.yml b/spec/build/cpukit/cfgattrgetaff.yml
index d909a7ad81..a7985bcf9a 100644
--- a/spec/build/cpukit/cfgattrgetaff.yml
+++ b/spec/build/cpukit/cfgattrgetaff.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfgattrgetgrdsz.yml b/spec/build/cpukit/cfgattrgetgrdsz.yml
index e25c7d7d32..3c97140e8d 100644
--- a/spec/build/cpukit/cfgattrgetgrdsz.yml
+++ b/spec/build/cpukit/cfgattrgetgrdsz.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfgattrgetstack.yml b/spec/build/cpukit/cfgattrgetstack.yml
index f0ac46a3c0..6de858cfd1 100644
--- a/spec/build/cpukit/cfgattrgetstack.yml
+++ b/spec/build/cpukit/cfgattrgetstack.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfgattrsetaff.yml b/spec/build/cpukit/cfgattrsetaff.yml
index 9da99651df..3b53dffc53 100644
--- a/spec/build/cpukit/cfgattrsetaff.yml
+++ b/spec/build/cpukit/cfgattrsetaff.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfgattrsetgrdsz.yml b/spec/build/cpukit/cfgattrsetgrdsz.yml
index 7f2108a54e..3232f4e693 100644
--- a/spec/build/cpukit/cfgattrsetgrdsz.yml
+++ b/spec/build/cpukit/cfgattrsetgrdsz.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfgattrsetstack.yml b/spec/build/cpukit/cfgattrsetstack.yml
index 6e5e8e1674..e9bad78da8 100644
--- a/spec/build/cpukit/cfgattrsetstack.yml
+++ b/spec/build/cpukit/cfgattrsetstack.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfgcfghdr.yml b/spec/build/cpukit/cfgcfghdr.yml
index efcf15ffd6..a5f9441559 100644
--- a/spec/build/cpukit/cfgcfghdr.yml
+++ b/spec/build/cpukit/cfgcfghdr.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfgcleanupctx.yml b/spec/build/cpukit/cfgcleanupctx.yml
index 3f0d1a8e67..e4b4efcf17 100644
--- a/spec/build/cpukit/cfgcleanupctx.yml
+++ b/spec/build/cpukit/cfgcleanupctx.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfggetaff.yml b/spec/build/cpukit/cfggetaff.yml
index b8c8f1ab06..d77cf04cb9 100644
--- a/spec/build/cpukit/cfggetaff.yml
+++ b/spec/build/cpukit/cfggetaff.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfggetattr.yml b/spec/build/cpukit/cfggetattr.yml
index fcfc3bcedc..aa49f1839c 100644
--- a/spec/build/cpukit/cfggetattr.yml
+++ b/spec/build/cpukit/cfggetattr.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfginttypes.yml b/spec/build/cpukit/cfginttypes.yml
index baa25af685..57c308c71b 100644
--- a/spec/build/cpukit/cfginttypes.yml
+++ b/spec/build/cpukit/cfginttypes.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfgmemory.yml b/spec/build/cpukit/cfgmemory.yml
index 633d98d0cc..60807483d8 100644
--- a/spec/build/cpukit/cfgmemory.yml
+++ b/spec/build/cpukit/cfgmemory.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfgnewlib.yml b/spec/build/cpukit/cfgnewlib.yml
index d2ebadc808..1f80e39682 100644
--- a/spec/build/cpukit/cfgnewlib.yml
+++ b/spec/build/cpukit/cfgnewlib.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: RTEMS_NEWLIB
 links: []
diff --git a/spec/build/cpukit/cfgpmtxceilcnst.yml b/spec/build/cpukit/cfgpmtxceilcnst.yml
index 0baff35782..8aede1a3b6 100644
--- a/spec/build/cpukit/cfgpmtxceilcnst.yml
+++ b/spec/build/cpukit/cfgpmtxceilcnst.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfgprionode.yml b/spec/build/cpukit/cfgprionode.yml
index e26ce4d970..a1864b1657 100644
--- a/spec/build/cpukit/cfgprionode.yml
+++ b/spec/build/cpukit/cfgprionode.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfgpshdprmcnst.yml b/spec/build/cpukit/cfgpshdprmcnst.yml
index 04fa53d142..f3d077e035 100644
--- a/spec/build/cpukit/cfgpshdprmcnst.yml
+++ b/spec/build/cpukit/cfgpshdprmcnst.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfgrcmd.yml b/spec/build/cpukit/cfgrcmd.yml
index f65980cbbb..8d1027f15a 100644
--- a/spec/build/cpukit/cfgrcmd.yml
+++ b/spec/build/cpukit/cfgrcmd.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfgsetaff.yml b/spec/build/cpukit/cfgsetaff.yml
index 04a5f48e2c..c14b35102b 100644
--- a/spec/build/cpukit/cfgsetaff.yml
+++ b/spec/build/cpukit/cfgsetaff.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfgstdatomic.yml b/spec/build/cpukit/cfgstdatomic.yml
index caa724a85e..970364588d 100644
--- a/spec/build/cpukit/cfgstdatomic.yml
+++ b/spec/build/cpukit/cfgstdatomic.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfgstdint.yml b/spec/build/cpukit/cfgstdint.yml
index da6ee92d36..6ea9d0ab1c 100644
--- a/spec/build/cpukit/cfgstdint.yml
+++ b/spec/build/cpukit/cfgstdint.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfgstdlib.yml b/spec/build/cpukit/cfgstdlib.yml
index 70ba02ab58..be849739d2 100644
--- a/spec/build/cpukit/cfgstdlib.yml
+++ b/spec/build/cpukit/cfgstdlib.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfgstring.yml b/spec/build/cpukit/cfgstring.yml
index ebd444d539..2e75a94bbe 100644
--- a/spec/build/cpukit/cfgstring.yml
+++ b/spec/build/cpukit/cfgstring.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfgstrings.yml b/spec/build/cpukit/cfgstrings.yml
index 4d202d90c9..6c847334ab 100644
--- a/spec/build/cpukit/cfgstrings.yml
+++ b/spec/build/cpukit/cfgstrings.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfgsysstat.yml b/spec/build/cpukit/cfgsysstat.yml
index 394618ff71..a7a9806994 100644
--- a/spec/build/cpukit/cfgsysstat.yml
+++ b/spec/build/cpukit/cfgsysstat.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfgsystypes.yml b/spec/build/cpukit/cfgsystypes.yml
index 89494a4edc..5f966f9975 100644
--- a/spec/build/cpukit/cfgsystypes.yml
+++ b/spec/build/cpukit/cfgsystypes.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfgszoff.yml b/spec/build/cpukit/cfgszoff.yml
index edd8861d2e..7698c1d7cb 100644
--- a/spec/build/cpukit/cfgszoff.yml
+++ b/spec/build/cpukit/cfgszoff.yml
@@ -6,8 +6,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfgszsize.yml b/spec/build/cpukit/cfgszsize.yml
index 84926d8e70..190ca79238 100644
--- a/spec/build/cpukit/cfgszsize.yml
+++ b/spec/build/cpukit/cfgszsize.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfgsztime.yml b/spec/build/cpukit/cfgsztime.yml
index 449eee7699..204aabc1c7 100644
--- a/spec/build/cpukit/cfgsztime.yml
+++ b/spec/build/cpukit/cfgsztime.yml
@@ -6,8 +6,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/cfgunistd.yml b/spec/build/cpukit/cfgunistd.yml
index c48ea77b8e..76b710d523 100644
--- a/spec/build/cpukit/cfgunistd.yml
+++ b/spec/build/cpukit/cfgunistd.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/optada.yml b/spec/build/cpukit/optada.yml
index df3111feaa..24b47ee8e3 100644
--- a/spec/build/cpukit/optada.yml
+++ b/spec/build/cpukit/optada.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Enable the Ada support
 enabled-by: true
diff --git a/spec/build/cpukit/optarchbits.yml b/spec/build/cpukit/optarchbits.yml
index ba8d52aa61..c10a1a1d62 100644
--- a/spec/build/cpukit/optarchbits.yml
+++ b/spec/build/cpukit/optarchbits.yml
@@ -6,11 +6,8 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 Hesham Almatary <Hesham.Almatary at cl.cam.ac.uk>
-default: ''
-default-by-variant:
-- value:
-  - '64'
-  variants:
+default:
+- enabled-by:
   - riscv/mpfs64imafdc
   - riscv/noel64imac
   - riscv/noel64imafd
@@ -18,9 +15,9 @@ default-by-variant:
   - riscv/rv64imac
   - riscv/rv64imafd
   - riscv/rv64imafdc
-- value:
-  - '32'
-  variants:
+  value:
+  - '64'
+- enabled-by:
   - riscv/griscv
   - riscv/noel32im
   - riscv/noel32imafd
@@ -31,6 +28,10 @@ default-by-variant:
   - riscv/rv32imafc
   - riscv/rv32imafd
   - riscv/rv32imafdc
+  value:
+  - '32'
+- enabled-by: true
+  value: ''
 description: The architecture word bits for the clang target triple.
 enabled-by:
 - and:
diff --git a/spec/build/cpukit/optarflags.yml b/spec/build/cpukit/optarflags.yml
index 52a55544c2..ccc582ea1b 100644
--- a/spec/build/cpukit/optarflags.yml
+++ b/spec/build/cpukit/optarflags.yml
@@ -7,8 +7,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- crD
-default-by-variant: []
+- enabled-by: true
+  value:
+  - crD
 description: |
   Flags passed to the library archiver
 enabled-by: true
diff --git a/spec/build/cpukit/optboothartid.yml b/spec/build/cpukit/optboothartid.yml
index e23154d4b4..90d37a8ec5 100644
--- a/spec/build/cpukit/optboothartid.yml
+++ b/spec/build/cpukit/optboothartid.yml
@@ -5,11 +5,11 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: 0
-default-by-variant:
-- value: 1
-  variants:
-  - riscv/mpfs64imafdc
+default:
+- enabled-by: riscv/mpfs64imafdc
+  value: 1
+- enabled-by: true
+  value: 0
 description: |
   boot hartid (processor number) of risc-v cpu (default 0)
 enabled-by: riscv
diff --git a/spec/build/cpukit/optbuildlabel.yml b/spec/build/cpukit/optbuildlabel.yml
index f039089622..36c04a7220 100644
--- a/spec/build/cpukit/optbuildlabel.yml
+++ b/spec/build/cpukit/optbuildlabel.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
-default: DEFAULT
-default-by-variant: []
+default:
+- enabled-by: true
+  value: DEFAULT
 description: |
   Defines the build label returned by rtems_get_build_label().
 enabled-by: true
diff --git a/spec/build/cpukit/optclang.yml b/spec/build/cpukit/optclang.yml
index 3eaf1fed87..612eaaaedb 100644
--- a/spec/build/cpukit/optclang.yml
+++ b/spec/build/cpukit/optclang.yml
@@ -35,8 +35,7 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 Hesham Almatary <Hesham.Almatary at cl.cam.ac.uk>
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by:
 - clang
diff --git a/spec/build/cpukit/optcoverage.yml b/spec/build/cpukit/optcoverage.yml
index 7c7013fe43..9d5d8ff0eb 100644
--- a/spec/build/cpukit/optcoverage.yml
+++ b/spec/build/cpukit/optcoverage.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Enable the code and branch coverage support.
 enabled-by: true
diff --git a/spec/build/cpukit/optcoveragecflags.yml b/spec/build/cpukit/optcoveragecflags.yml
index 08cc79eb6c..81aa7bcdd6 100644
--- a/spec/build/cpukit/optcoveragecflags.yml
+++ b/spec/build/cpukit/optcoveragecflags.yml
@@ -7,10 +7,11 @@ build-type: option
 copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- --coverage
-- -fprofile-info-section=.rtemsroset.gcov_info.content
-- -fprofile-update=atomic
-default-by-variant: []
+- enabled-by: true
+  value:
+  - --coverage
+  - -fprofile-info-section=.rtemsroset.gcov_info.content
+  - -fprofile-update=atomic
 description: |
   Compiler flags recommended for components which should generate coverage
   information.
diff --git a/spec/build/cpukit/optcoverageldflags.yml b/spec/build/cpukit/optcoverageldflags.yml
index 600c89e770..a45081a1c7 100644
--- a/spec/build/cpukit/optcoverageldflags.yml
+++ b/spec/build/cpukit/optcoverageldflags.yml
@@ -7,15 +7,16 @@ build-type: option
 copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -Wl,--wrap=_CPU_Fatal_halt
-- -Wl,--wrap=bsp_reset
-- -Wl,--start-group
-- -lrtemsbsp
-- -lrtemscpu
-- -lrtemstest
-- -lgcov
-- -Wl,--end-group
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -Wl,--wrap=_CPU_Fatal_halt
+  - -Wl,--wrap=bsp_reset
+  - -Wl,--start-group
+  - -lrtemsbsp
+  - -lrtemscpu
+  - -lrtemstest
+  - -lgcov
+  - -Wl,--end-group
 description: |
   Linker flags recommended for executables which contain modules with coverage
   information.
diff --git a/spec/build/cpukit/optdebug.yml b/spec/build/cpukit/optdebug.yml
index 2c976a2f49..4cdc2a5060 100644
--- a/spec/build/cpukit/optdebug.yml
+++ b/spec/build/cpukit/optdebug.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Enable the RTEMS internal debug support
 enabled-by: true
diff --git a/spec/build/cpukit/optdrvmgr.yml b/spec/build/cpukit/optdrvmgr.yml
index f39313704c..dbee1b5648 100644
--- a/spec/build/cpukit/optdrvmgr.yml
+++ b/spec/build/cpukit/optdrvmgr.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Enable the Driver Manager startup
 enabled-by: true
diff --git a/spec/build/cpukit/optexceptionextensions.yml b/spec/build/cpukit/optexceptionextensions.yml
index d1c815776d..a9a9bb735c 100644
--- a/spec/build/cpukit/optexceptionextensions.yml
+++ b/spec/build/cpukit/optexceptionextensions.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 On-Line Applications Research (OAR)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   Enable the RTEMS Exception Extensions for manipulating and acting on exception
   frames.
diff --git a/spec/build/cpukit/optgcc.yml b/spec/build/cpukit/optgcc.yml
index 1e72232700..664907e062 100644
--- a/spec/build/cpukit/optgcc.yml
+++ b/spec/build/cpukit/optgcc.yml
@@ -30,8 +30,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by:
 - gcc
diff --git a/spec/build/cpukit/optincludes.yml b/spec/build/cpukit/optincludes.yml
index dffd71eba8..4384afc05d 100644
--- a/spec/build/cpukit/optincludes.yml
+++ b/spec/build/cpukit/optincludes.yml
@@ -6,8 +6,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/optinstall.yml b/spec/build/cpukit/optinstall.yml
index 6b39f95e85..a3bf35e377 100644
--- a/spec/build/cpukit/optinstall.yml
+++ b/spec/build/cpukit/optinstall.yml
@@ -12,8 +12,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/optlibdebugger.yml b/spec/build/cpukit/optlibdebugger.yml
index c657db4ba4..4cee9809f6 100644
--- a/spec/build/cpukit/optlibdebugger.yml
+++ b/spec/build/cpukit/optlibdebugger.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 Chris Johns (chrisj at rtems.org)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by:
 - aarch64
diff --git a/spec/build/cpukit/optlibdl.yml b/spec/build/cpukit/optlibdl.yml
index a3269c68ea..394370db0f 100644
--- a/spec/build/cpukit/optlibdl.yml
+++ b/spec/build/cpukit/optlibdl.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by:
 - aarch64
diff --git a/spec/build/cpukit/optmpci.yml b/spec/build/cpukit/optmpci.yml
index 8cac36c4d3..fdab768ea6 100644
--- a/spec/build/cpukit/optmpci.yml
+++ b/spec/build/cpukit/optmpci.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   If set to "True", then the message passing based multiprocessing support
   (MPCI) is enabled, otherwise it is disabled.  Do not confuse this with the
diff --git a/spec/build/cpukit/optnewlib.yml b/spec/build/cpukit/optnewlib.yml
index a35156cafa..f9ed25d9cb 100644
--- a/spec/build/cpukit/optnewlib.yml
+++ b/spec/build/cpukit/optnewlib.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   Enable the Newlib C library support
 enabled-by: true
diff --git a/spec/build/cpukit/optnocoveragecflags.yml b/spec/build/cpukit/optnocoveragecflags.yml
index 4cdb245f3e..fcae525e50 100644
--- a/spec/build/cpukit/optnocoveragecflags.yml
+++ b/spec/build/cpukit/optnocoveragecflags.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
-default: []
-default-by-variant: []
+default:
+- enabled-by: true
+  value: []
 description: |
   Compiler flags recommended for components which should generate coverage
   information.
diff --git a/spec/build/cpukit/optnocoverageldflags.yml b/spec/build/cpukit/optnocoverageldflags.yml
index 247b171d26..4167dafdd9 100644
--- a/spec/build/cpukit/optnocoverageldflags.yml
+++ b/spec/build/cpukit/optnocoverageldflags.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
-default: []
-default-by-variant: []
+default:
+- enabled-by: true
+  value: []
 description: |
   Linker flags recommended for executables which contain modules which generate
   coverage information.
diff --git a/spec/build/cpukit/optparavirt.yml b/spec/build/cpukit/optparavirt.yml
index 3a06ce7930..51d4dd3d22 100644
--- a/spec/build/cpukit/optparavirt.yml
+++ b/spec/build/cpukit/optparavirt.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Enable the para-virtualization support
 enabled-by: true
diff --git a/spec/build/cpukit/optposix.yml b/spec/build/cpukit/optposix.yml
index 15f6abc2a2..d74e928373 100644
--- a/spec/build/cpukit/optposix.yml
+++ b/spec/build/cpukit/optposix.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Enable support for POSIX signals
 enabled-by: true
diff --git a/spec/build/cpukit/optprofiling.yml b/spec/build/cpukit/optprofiling.yml
index c47be24fe2..7b351ee9db 100644
--- a/spec/build/cpukit/optprofiling.yml
+++ b/spec/build/cpukit/optprofiling.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Enable the SMP lock profiling support
 enabled-by: true
diff --git a/spec/build/cpukit/optsmp.yml b/spec/build/cpukit/optsmp.yml
index db404efe21..bbe93443ad 100644
--- a/spec/build/cpukit/optsmp.yml
+++ b/spec/build/cpukit/optsmp.yml
@@ -6,8 +6,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Enable the Symmetric Multiprocessing (SMP) support
 enabled-by:
diff --git a/spec/build/cpukit/optszblkcnt.yml b/spec/build/cpukit/optszblkcnt.yml
index 292c27c89b..07a53fe880 100644
--- a/spec/build/cpukit/optszblkcnt.yml
+++ b/spec/build/cpukit/optszblkcnt.yml
@@ -6,8 +6,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/optszblksize.yml b/spec/build/cpukit/optszblksize.yml
index 4e11f51106..34c931e5b6 100644
--- a/spec/build/cpukit/optszblksize.yml
+++ b/spec/build/cpukit/optszblksize.yml
@@ -6,8 +6,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/optszmode.yml b/spec/build/cpukit/optszmode.yml
index d9e19ec814..37a50e1ca5 100644
--- a/spec/build/cpukit/optszmode.yml
+++ b/spec/build/cpukit/optszmode.yml
@@ -6,8 +6,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/optszoff.yml b/spec/build/cpukit/optszoff.yml
index 49e9231dd3..a08dff2c1b 100644
--- a/spec/build/cpukit/optszoff.yml
+++ b/spec/build/cpukit/optszoff.yml
@@ -6,8 +6,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/optsztime.yml b/spec/build/cpukit/optsztime.yml
index 85564321ca..8a44801163 100644
--- a/spec/build/cpukit/optsztime.yml
+++ b/spec/build/cpukit/optsztime.yml
@@ -6,8 +6,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/optvermaj.yml b/spec/build/cpukit/optvermaj.yml
index 9dbded9e64..b04c94ef06 100644
--- a/spec/build/cpukit/optvermaj.yml
+++ b/spec/build/cpukit/optvermaj.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/optvermin.yml b/spec/build/cpukit/optvermin.yml
index 29c01a7c91..c3a97ce9d7 100644
--- a/spec/build/cpukit/optvermin.yml
+++ b/spec/build/cpukit/optvermin.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/optverrev.yml b/spec/build/cpukit/optverrev.yml
index cbe7fecc66..726de4cdcf 100644
--- a/spec/build/cpukit/optverrev.yml
+++ b/spec/build/cpukit/optverrev.yml
@@ -5,8 +5,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/optversion.yml b/spec/build/cpukit/optversion.yml
index 98a765e724..c3b33d66ff 100644
--- a/spec/build/cpukit/optversion.yml
+++ b/spec/build/cpukit/optversion.yml
@@ -16,8 +16,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/cpukit/optwarn.yml b/spec/build/cpukit/optwarn.yml
index fd97ec35b7..6cd2b7e1a3 100644
--- a/spec/build/cpukit/optwarn.yml
+++ b/spec/build/cpukit/optwarn.yml
@@ -9,8 +9,9 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -Wall
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -Wall
 description: |
   Warning flags passed to the C and C++ compiler
 enabled-by: true
diff --git a/spec/build/cpukit/optwarncc.yml b/spec/build/cpukit/optwarncc.yml
index 4992c36110..7bdf7bf930 100644
--- a/spec/build/cpukit/optwarncc.yml
+++ b/spec/build/cpukit/optwarncc.yml
@@ -8,11 +8,12 @@ build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 default:
-- -Wmissing-prototypes
-- -Wimplicit-function-declaration
-- -Wstrict-prototypes
-- -Wnested-externs
-default-by-variant: []
+- enabled-by: true
+  value:
+  - -Wmissing-prototypes
+  - -Wimplicit-function-declaration
+  - -Wstrict-prototypes
+  - -Wnested-externs
 description: |
   Warning flags passed to the C compiler
 enabled-by: true
diff --git a/spec/build/cpukit/optwarncxx.yml b/spec/build/cpukit/optwarncxx.yml
index cd05555923..7fa86bb1cf 100644
--- a/spec/build/cpukit/optwarncxx.yml
+++ b/spec/build/cpukit/optwarncxx.yml
@@ -7,8 +7,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: []
-default-by-variant: []
+default:
+- enabled-by: true
+  value: []
 description: |
   Warning flags passed to the C++ compiler
 enabled-by: true
diff --git a/spec/build/testsuites/ada/optgnat.yml b/spec/build/testsuites/ada/optgnat.yml
index 82d940b502..47f6b060ae 100644
--- a/spec/build/testsuites/ada/optgnat.yml
+++ b/spec/build/testsuites/ada/optgnat.yml
@@ -7,8 +7,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/testsuites/libtests/optrtemsld.yml b/spec/build/testsuites/libtests/optrtemsld.yml
index 1373023c7e..90f40c79f1 100644
--- a/spec/build/testsuites/libtests/optrtemsld.yml
+++ b/spec/build/testsuites/libtests/optrtemsld.yml
@@ -6,8 +6,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/testsuites/libtests/optrtemssyms.yml b/spec/build/testsuites/libtests/optrtemssyms.yml
index 51872b04b7..b49599a67e 100644
--- a/spec/build/testsuites/libtests/optrtemssyms.yml
+++ b/spec/build/testsuites/libtests/optrtemssyms.yml
@@ -6,8 +6,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/testsuites/optada.yml b/spec/build/testsuites/optada.yml
index a1844c4f73..d95021295e 100644
--- a/spec/build/testsuites/optada.yml
+++ b/spec/build/testsuites/optada.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Build the Ada test programs (may be also enabled by BUILD_TESTS)
 enabled-by: true
diff --git a/spec/build/testsuites/optall.yml b/spec/build/testsuites/optall.yml
index 437a4cb8ca..9596f868c3 100644
--- a/spec/build/testsuites/optall.yml
+++ b/spec/build/testsuites/optall.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Build the test programs
 enabled-by: true
diff --git a/spec/build/testsuites/optbenchmarks.yml b/spec/build/testsuites/optbenchmarks.yml
index 5452746d5c..5d9f74c84a 100644
--- a/spec/build/testsuites/optbenchmarks.yml
+++ b/spec/build/testsuites/optbenchmarks.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Build the benchmark programs (may be also enabled by BUILD_TESTS)
 enabled-by: true
diff --git a/spec/build/testsuites/optbin2c.yml b/spec/build/testsuites/optbin2c.yml
index 0470905529..ad056ebdeb 100644
--- a/spec/build/testsuites/optbin2c.yml
+++ b/spec/build/testsuites/optbin2c.yml
@@ -6,8 +6,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/testsuites/optfs.yml b/spec/build/testsuites/optfs.yml
index bc479b8948..16e1cb8253 100644
--- a/spec/build/testsuites/optfs.yml
+++ b/spec/build/testsuites/optfs.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Build the file system test programs (may be also enabled by BUILD_TESTS)
 enabled-by: true
diff --git a/spec/build/testsuites/optgzip.yml b/spec/build/testsuites/optgzip.yml
index d53136b076..1469c15e09 100644
--- a/spec/build/testsuites/optgzip.yml
+++ b/spec/build/testsuites/optgzip.yml
@@ -6,8 +6,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/spec/build/testsuites/optlib.yml b/spec/build/testsuites/optlib.yml
index c3d1e5e7a6..3cca761de6 100644
--- a/spec/build/testsuites/optlib.yml
+++ b/spec/build/testsuites/optlib.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Build the library test programs (may be also enabled by BUILD_TESTS)
 enabled-by: true
diff --git a/spec/build/testsuites/optmp.yml b/spec/build/testsuites/optmp.yml
index 6a7ff38730..1aff86a89c 100644
--- a/spec/build/testsuites/optmp.yml
+++ b/spec/build/testsuites/optmp.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Build the MPCI test programs (may be also enabled by BUILD_TESTS)
 enabled-by: true
diff --git a/spec/build/testsuites/optpsx.yml b/spec/build/testsuites/optpsx.yml
index c3a821421e..55765bbeee 100644
--- a/spec/build/testsuites/optpsx.yml
+++ b/spec/build/testsuites/optpsx.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Build the POSIX test programs (may be also enabled by BUILD_TESTS)
 enabled-by: true
diff --git a/spec/build/testsuites/optpsxtm.yml b/spec/build/testsuites/optpsxtm.yml
index 8452c3de8c..c3bfff05e2 100644
--- a/spec/build/testsuites/optpsxtm.yml
+++ b/spec/build/testsuites/optpsxtm.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Build the POSIX timing test programs (may be also enabled by BUILD_TESTS)
 enabled-by: true
diff --git a/spec/build/testsuites/optrhs.yml b/spec/build/testsuites/optrhs.yml
index e9e779660c..b92cb2a920 100644
--- a/spec/build/testsuites/optrhs.yml
+++ b/spec/build/testsuites/optrhs.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Build the Rhealstone benchmark programs (may be also enabled by BUILD_TESTS)
 enabled-by: true
diff --git a/spec/build/testsuites/optsamples.yml b/spec/build/testsuites/optsamples.yml
index 0edef21734..49bbbc3aaf 100644
--- a/spec/build/testsuites/optsamples.yml
+++ b/spec/build/testsuites/optsamples.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: true
-default-by-variant: []
+default:
+- enabled-by: true
+  value: true
 description: |
   Build the sample programs (may be also enabled by BUILD_TESTS)
 enabled-by: true
diff --git a/spec/build/testsuites/optsmp.yml b/spec/build/testsuites/optsmp.yml
index 9851841aad..148ccb6f4c 100644
--- a/spec/build/testsuites/optsmp.yml
+++ b/spec/build/testsuites/optsmp.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Build the SMP test programs (may be also enabled by BUILD_TESTS)
 enabled-by: true
diff --git a/spec/build/testsuites/optsp.yml b/spec/build/testsuites/optsp.yml
index 88f378f838..36aa7ef63e 100644
--- a/spec/build/testsuites/optsp.yml
+++ b/spec/build/testsuites/optsp.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Build the single-processor test programs (may be also enabled by BUILD_TESTS)
 enabled-by: true
diff --git a/spec/build/testsuites/opttm.yml b/spec/build/testsuites/opttm.yml
index f5ee6afd7d..96472cd8c9 100644
--- a/spec/build/testsuites/opttm.yml
+++ b/spec/build/testsuites/opttm.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Build the timing test programs (may be also enabled by BUILD_TESTS)
 enabled-by: true
diff --git a/spec/build/testsuites/optunit.yml b/spec/build/testsuites/optunit.yml
index d103dd1b2c..6605c17248 100644
--- a/spec/build/testsuites/optunit.yml
+++ b/spec/build/testsuites/optunit.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Build the unit test programs (may be also enabled by BUILD_TESTS)
 enabled-by: true
diff --git a/spec/build/testsuites/optvalidation.yml b/spec/build/testsuites/optvalidation.yml
index 81eb320d53..f83467307d 100644
--- a/spec/build/testsuites/optvalidation.yml
+++ b/spec/build/testsuites/optvalidation.yml
@@ -5,8 +5,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: false
-default-by-variant: []
+default:
+- enabled-by: true
+  value: false
 description: |
   Build the validation test programs (may be also enabled by BUILD_TESTS)
 enabled-by: true
diff --git a/spec/build/testsuites/optverbosity.yml b/spec/build/testsuites/optverbosity.yml
index a4f1e9e6f4..9920fc163e 100644
--- a/spec/build/testsuites/optverbosity.yml
+++ b/spec/build/testsuites/optverbosity.yml
@@ -16,8 +16,9 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: Normal
-default-by-variant: []
+default:
+- enabled-by: true
+  value: Normal
 description: |
   Sets the test verbosity of the RTEMS Test Framework.  Valid values are
   "Verbose", "Normal", and "Quiet".  For normal test runs you can use a
diff --git a/spec/build/testsuites/optxz.yml b/spec/build/testsuites/optxz.yml
index 8bad91a7bb..f44464abe4 100644
--- a/spec/build/testsuites/optxz.yml
+++ b/spec/build/testsuites/optxz.yml
@@ -6,8 +6,7 @@ actions:
 build-type: option
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
-default: null
-default-by-variant: []
+default: []
 description: ''
 enabled-by: true
 links: []
diff --git a/wscript b/wscript
index ffed3f13d6..fe090f5d2d 100755
--- a/wscript
+++ b/wscript
@@ -203,11 +203,11 @@ class Item(object):
     def get_enabled_by(self):
         return self.data["enabled-by"]
 
-    def defaults(self, enable, variant, family):
-        if _is_enabled(enable, self.get_enabled_by()):
+    def defaults(self, enabled):
+        if _is_enabled(enabled, self.get_enabled_by()):
             for p in self.links():
-                p.defaults(enable, variant, family)
-            self.do_defaults(variant, family)
+                p.defaults(enabled)
+            self.do_defaults(enabled)
 
     def configure(self, conf, cic):
         if _is_enabled(conf.env.ENABLE, self.get_enabled_by()):
@@ -223,7 +223,7 @@ class Item(object):
                 p.build(bld, bic)
             self.do_build(bld, bic)
 
-    def do_defaults(self, variant, family):
+    def do_defaults(self, enabled):
         return
 
     def prepare_configure(self, conf, cic):
@@ -750,25 +750,12 @@ class OptionItem(Item):
     def __init__(self, uid, data):
         super(OptionItem, self).__init__(uid, data)
 
-    @staticmethod
-    def _is_variant(variants, variant):
-        for pattern in variants:
-            if re.match(pattern + "$", variant):
-                return True
-        return False
-
-    def default_value(self, variant, family):
-        value = self.data["default"]
-        for default in self.data["default-by-variant"]:
-            if OptionItem._is_variant(default["variants"], variant):
+    def default_value(self, enabled):
+        value = None
+        for default in self.data["default"]:
+            if _is_enabled(enabled, default["enabled-by"]):
                 value = default["value"]
                 break
-        else:
-            family = "bsps/" + family
-            for default in self.data["default-by-variant"]:
-                if OptionItem._is_variant(default["variants"], family):
-                    value = default["value"]
-                    break
         if value is None:
             return value
         if isinstance(value, list):
@@ -777,8 +764,8 @@ class OptionItem(Item):
             return value
         return self.data["format"].format(value)
 
-    def do_defaults(self, variant, family):
-        value = self.default_value(variant, family)
+    def do_defaults(self, enabled):
+        value = self.default_value(enabled)
         if value is None:
             return
         description = self.data["description"]
@@ -961,7 +948,7 @@ class OptionItem(Item):
             value = cic.cp.getboolean(conf.variant, name)
             cic.add_option(name)
         except configparser.NoOptionError:
-            value = self.default_value(conf.env.ARCH_BSP, conf.env.ARCH_FAMILY)
+            value = self.default_value(conf.env.ENABLE)
         except ValueError as ve:
             conf.fatal("Invalid value for configuration option {}: {}".format(
                 name, ve))
@@ -976,7 +963,7 @@ class OptionItem(Item):
             value = cic.cp.get(conf.variant, name)
             cic.add_option(name)
         except configparser.NoOptionError:
-            value = self.default_value(conf.env.ARCH_BSP, conf.env.ARCH_FAMILY)
+            value = self.default_value(conf.env.ENABLE)
             if value is None:
                 return value
         try:
@@ -993,7 +980,7 @@ class OptionItem(Item):
             cic.add_option(name)
             value = no_unicode(value)
         except configparser.NoOptionError:
-            value = self.default_value(conf.env.ARCH_BSP, conf.env.ARCH_FAMILY)
+            value = self.default_value(conf.env.ENABLE)
         return value
 
     def _get_string_command_line(self, conf, cic, value, arg):
@@ -1660,9 +1647,10 @@ def bspdefaults(ctx):
 COMPILER = {}""".format(variant, compiler))
                 enable = [compiler, arch, variant]
                 bsp_item = bsps[arch][bsp]
-                family = arch + "/" + bsp_item.data["family"]
-                items[top_group].defaults(enable, variant, family)
-                bsp_item.defaults(enable, variant, family)
+                family = "bsps/" + arch + "/" + bsp_item.data["family"]
+                enabled = [compiler, arch, family, variant]
+                items[top_group].defaults(enabled)
+                bsp_item.defaults(enabled)
     if first:
         no_matches_error(ctx, white_list)
 
-- 
2.35.3



More information about the devel mailing list