diff --git a/build/scripts/TargetDescriptionFiles/TargetDescriptionFile.php b/build/scripts/TargetDescriptionFiles/TargetDescriptionFile.php index 1a1c759e..ebfc565d 100644 --- a/build/scripts/TargetDescriptionFiles/TargetDescriptionFile.php +++ b/build/scripts/TargetDescriptionFiles/TargetDescriptionFile.php @@ -4,6 +4,7 @@ namespace Bloom\BuildScripts\TargetDescriptionFiles; use Exception; use SimpleXMLElement; +require_once __DIR__ . "/TargetFamily.php"; require_once __DIR__ . "/Variant.php"; require_once __DIR__ . "/AddressSpace.php"; require_once __DIR__ . "/PropertyGroup.php"; @@ -20,6 +21,7 @@ class TargetDescriptionFile public ?SimpleXMLElement $xml = null; public ?string $targetName = null; + public ?TargetFamily $targetFamily = null; public ?string $configurationValue = null; public ?string $targetArchitecture = null; @@ -75,6 +77,10 @@ class TargetDescriptionFile $this->configurationValue = strtolower($device['name']); } + if (!empty($this->deviceAttributesByName['family'])) { + $this->targetFamily = TargetFamily::tryFrom($device['family']); + } + if (!empty($this->deviceAttributesByName['architecture'])) { $this->targetArchitecture = stristr($device['architecture'], 'avr') !== false ? self::ARCHITECTURE_AVR8 : $device['architecture']; @@ -486,6 +492,10 @@ class TargetDescriptionFile $failures[] = 'Target name cannot contain whitespaces'; } + if (empty($this->targetFamily)) { + $failures[] = 'Missing/invalid target family'; + } + if (empty($this->targetArchitecture)) { $failures[] = 'Target architecture not found'; } diff --git a/build/scripts/TargetDescriptionFiles/TargetFamily.php b/build/scripts/TargetDescriptionFiles/TargetFamily.php new file mode 100644 index 00000000..495ea1b7 --- /dev/null +++ b/build/scripts/TargetDescriptionFiles/TargetFamily.php @@ -0,0 +1,8 @@ +