bloombloombloom / Bloom

A debug interface for AVR-based embedded systems development on GNU/Linux.
https://bloom.oscillate.io/
Other
64 stars 3 forks source link

Provide JSON list of supported targets via CLI command #101

Open navnavnav opened 4 months ago

navnavnav commented 4 months ago

Given all the changes I've made to Bloom's TDF format and the way TDFs are handled, we can now easily present a list of all supported targets and their respective configuration values, in a machine readable format.

This should work similar to the --version-machine CLI command.

I'm going to implement this in the RISC-V branch (as that's where the TDF changes currently reside).

This is a small change, so it will likely be included in v1.1.0.

navnavnav commented 4 months ago

This is pretty much done. The new --target-list-machine command will list all targets supported by the Bloom binary:

$ bloom --target-list-machine
[
    {
        "configurationValue": "at90can128",
        "family": "AVR8",
        "name": "AT90CAN128"
    },
    {
        "configurationValue": "at90can32",
        "family": "AVR8",
        "name": "AT90CAN32"
    },
    {
        "configurationValue": "at90can64",
        "family": "AVR8",
        "name": "AT90CAN64"
    },
    {
        "configurationValue": "at90usb82",
        "family": "AVR8",
        "name": "AT90USB82"
    },
    {
        "configurationValue": "atmega128",
        "family": "AVR8",
        "name": "ATmega128"
    },
    {
        "configurationValue": "atmega1280",
        "family": "AVR8",
        "name": "ATmega1280"
    },
    {
        "configurationValue": "atmega1281",
        "family": "AVR8",
        "name": "ATmega1281"
    } ...
]

Still need to do some testing before I can close this.

navnavnav commented 4 months ago

Changed the command to --capabilities-machine, so that I can extend with other capabilities when necessary.

Also added the insight boolean flag to indicate whether the build includes the Insight GUI.

$ bloom --capabilities-machine
{
    "insight": false,
    "targets": [
        {
            "configurationValue": "at90can128",
            "family": "AVR8",
            "name": "AT90CAN128"
        },
        {
            "configurationValue": "at90can32",
            "family": "AVR8",
            "name": "AT90CAN32"
        },
        {
            "configurationValue": "at90can64",
            "family": "AVR8",
            "name": "AT90CAN64"
        },
        {
            "configurationValue": "atmega165pa",
            "family": "AVR8",
            "name": "ATmega165PA"
        },
        {
            "configurationValue": "atmega168",
            "family": "AVR8",
            "name": "ATmega168"
        },
        {
            "configurationValue": "atmega168a",
            "family": "AVR8",
            "name": "ATmega168A"
        },
        {
            "configurationValue": "atmega168p",
            "family": "AVR8",
            "name": "ATmega168P"
        },
        {
            "configurationValue": "atmega168pa",
            "family": "AVR8",
            "name": "ATmega168PA"
        },
        {
            "configurationValue": "atmega168pb",
            "family": "AVR8",
            "name": "ATmega168PB"
        },
        {
            "configurationValue": "atmega169a",
            "family": "AVR8",
            "name": "ATmega169A"
        },
        {
            "configurationValue": "atmega169p",
            "family": "AVR8",
            "name": "ATmega169P"
        }
        ...
    ]
}