Initial commit

This commit is contained in:
Nav
2021-04-04 21:04:12 +01:00
commit a29c5e1fec
549 changed files with 441216 additions and 0 deletions

BIN
build/bin/platforms/libqxcb.so Executable file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

1
build/lib/libQt5Core.so.5 Symbolic link
View File

@@ -0,0 +1 @@
./libQt5Core.so.5.12.10

Binary file not shown.

1
build/lib/libQt5DBus.so.5 Symbolic link
View File

@@ -0,0 +1 @@
./libQt5DBus.so.5.12.10

BIN
build/lib/libQt5DBus.so.5.12.10 Executable file

Binary file not shown.

1
build/lib/libQt5Gui.so.5 Symbolic link
View File

@@ -0,0 +1 @@
./libQt5Gui.so.5.12.10

Binary file not shown.

1
build/lib/libQt5Svg.so.5 Symbolic link
View File

@@ -0,0 +1 @@
./libQt5Svg.so.5.12.10

BIN
build/lib/libQt5Svg.so.5.12.10 Executable file

Binary file not shown.

View File

@@ -0,0 +1 @@
./libQt5Widgets.so.5.12.10

Binary file not shown.

1
build/lib/libQt5XcbQpa.so.5 Symbolic link
View File

@@ -0,0 +1 @@
./libQt5XcbQpa.so.5.12.10

Binary file not shown.

1
build/lib/libQt5Xml.so.5 Symbolic link
View File

@@ -0,0 +1 @@
./libQt5Xml.so.5.12.10

Binary file not shown.

Binary file not shown.

1
build/lib/libicudata.so.56 Symbolic link
View File

@@ -0,0 +1 @@
./libicudata.so.56.1

Binary file not shown.

1
build/lib/libicui18n.so.56 Symbolic link
View File

@@ -0,0 +1 @@
./libicui18n.so.56.1

Binary file not shown.

1
build/lib/libicuuc.so.56 Symbolic link
View File

@@ -0,0 +1 @@
./libicuuc.so.56.1

BIN
build/lib/libicuuc.so.56.1 Normal file

Binary file not shown.

BIN
build/lib/libqxcb.so Executable file

Binary file not shown.

1
build/lib/libqxcb.so.1 Symbolic link
View File

@@ -0,0 +1 @@
./libqxcb.so

BIN
build/lib/libusb-1.0.so.0 Normal file

Binary file not shown.

View File

@@ -0,0 +1,17 @@
#!/bin/bash
cd /home/nav/Projects/Bloom || exit;
rm -fr build/cmake-build-debug/*; rm -fr build/cmake-build-release/*;
rm -fr release;
rm -fr Bloom-*.deb;
rm -fr "_CPack_Packages";
export CMAKE_PREFIX_PATH=/opt/Qt/5.12.10/gcc_64/
cd build/cmake-build-debug/ && cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER=/usr/bin/g++-9 /home/nav/Projects/Bloom/
cd /home/nav/Projects/Bloom/ && cmake --build /home/nav/Projects/Bloom/build/cmake-build-debug --target clean
cmake --build /home/nav/Projects/Bloom/build/cmake-build-debug --target Bloom
cmake --install /home/nav/Projects/Bloom/build/cmake-build-debug --target Bloom

View File

@@ -0,0 +1,178 @@
<?php
/*
* Parses Microchip AVR Part Description (.atdf/.xml) files and creates a JSON mapping of target IDs to file paths.
* Also copies the files over to the Distribution directory.
*
* The JSON mapping is compiled as a Qt resource and used for looking-up target description file paths, by target ID.
*
* This script should be run as part of the build process.
*/
CONST AVR_PD_FILE_PATH = __DIR__ . "/../../src/Targets/Microchip/AVR/PartDescriptionFiles";
CONST TARGET_PD_DEST_FILE_PATH = __DIR__ . "/../resources/TargetPartDescriptions/AVR";
CONST TARGET_PD_DEST_RELATIVE_FILE_PATH = "../resources/TargetPartDescriptions/AVR";
CONST TARGET_PD_MAPPING_FILE_PATH = TARGET_PD_DEST_FILE_PATH . "/Mapping.json";
CONST PD_COMMENT = "\n<!-- This is an automatically generated file. Any changes made to it will likely be lost. -->\n";
// Empty destination directory
if (file_exists(TARGET_PD_DEST_FILE_PATH)) {
// There is no PHP function to delete a non-empty directory and I can't be arsed to write one. Bite me
exec("rm -r " . TARGET_PD_DEST_FILE_PATH);
}
if (file_exists(TARGET_PD_MAPPING_FILE_PATH)) {
unlink(TARGET_PD_MAPPING_FILE_PATH);
}
mkdir(TARGET_PD_DEST_FILE_PATH, 0777, true);
class TargetDescription implements JsonSerializable
{
public ?string $targetId;
public ?string $targetName;
public ?string $originalFilePath;
public ?string $destinationFilePath;
public ?string $relativeDestinationFilePath;
public function jsonSerialize() {
return [
'targetName' => $this->targetName,
'targetDescriptionFilePath' => $this->relativeDestinationFilePath,
];
}
}
$processedFileCount = 0;
$failedFileCount = 0;
/**
* Will read all .atdf and .xml files in $path and attempt to parse them as AVR target description files.
* This function is recursive - it will call itself if it stumbles upon a directory within $path.
*
* @param $path
* @return TargetDescription[][]
* A mapping of target IDs to an array of TargetDescription objects. Note: target IDs are not
* always unique to targets. That is why each ID is mapped to an array of TargetDescription objects.
*/
function processAvrPartFiles($path) : array {
global $processedFileCount, $failedFileCount;
/** @var TargetDescription[][] $output */
$output = [];
foreach (glob($path . "/*") as $file) {
if (is_dir($file)) {
$output = array_merge($output, processAvrPartFiles($file));
continue;
}
if (strstr($file, '.atdf') === false && strstr($file, '.xml') === false) {
// Unknown file type
continue;
}
$fileContents = file_get_contents($file);
$pdXml = simplexml_load_string($fileContents);
if ($pdXml === false) {
print "Invalid XML in \"" . $file . "\"\n";
$failedFileCount++;
continue;
}
$device = $pdXml->devices[0]->device;
$partDescriptionXml = new TargetDescription();
$partDescriptionXml->originalFilePath = $file;
$partDescriptionXml->destinationFilePath = TARGET_PD_DEST_FILE_PATH . "/";
$partDescriptionXml->relativeDestinationFilePath = TARGET_PD_DEST_RELATIVE_FILE_PATH . "/";
if (!empty($device['architecture'])
&& in_array($device['architecture'], ['AVR8', 'AVR32', 'AVR8X', 'AVR8L', 'AVR8_XMEGA'])
) {
// This is an AVR device.
if (!empty($device['architecture'])) {
// Group by architecture
$partDescriptionXml->destinationFilePath .= strtoupper((string) $device['architecture']) . "/";
$partDescriptionXml->relativeDestinationFilePath .= strtoupper((string) $device['architecture']) . "/";
}
if (!empty($device['family'])) {
// Group by family
$partDescriptionXml->destinationFilePath .= str_replace([' '] , '_', strtoupper((string) $device['family']));
$partDescriptionXml->relativeDestinationFilePath .= str_replace([' '] , '_', strtoupper((string) $device['family']));
}
$partDescriptionXml->targetName = str_replace([' '], '', (string) $device['name']);
if (!empty(($signatures = $device->{'property-groups'}
->xpath('property-group[@name="SIGNATURES"]')[0]))
&& !empty($signatures->xpath('property[@name="SIGNATURE0"]'))
&& !empty($signatures->xpath('property[@name="SIGNATURE1"]'))
&& !empty($signatures->xpath('property[@name="SIGNATURE2"]'))
) {
$partDescriptionXml->targetId = (string) $signatures->xpath('property[@name="SIGNATURE0"]')[0]['value']
. str_replace('0x', '', (string) $signatures->xpath('property[@name="SIGNATURE1"]')[0]['value'])
. str_replace('0x', '', (string) $signatures->xpath('property[@name="SIGNATURE2"]')[0]['value'])
;
$partDescriptionXml->targetId = strtolower($partDescriptionXml->targetId);
}
}
if (empty($partDescriptionXml->destinationFilePath)
|| empty($partDescriptionXml->targetName)
|| empty($partDescriptionXml->targetId)
) {
print "Failed to parse file {$file}\n";
$failedFileCount++;
continue;
}
if (!file_exists($partDescriptionXml->destinationFilePath)) {
mkdir($partDescriptionXml->destinationFilePath, 0777, true);
}
$partDescriptionXml->destinationFilePath .= "/" . strtoupper($partDescriptionXml->targetName) . ".xml";
$partDescriptionXml->relativeDestinationFilePath .= "/" . strtoupper($partDescriptionXml->targetName) . ".xml";
if (strstr($fileContents, '<avr-tools-device-file ') !== false) {
// Prefix auto gen comment
// This approach could be better
$fileContents = str_replace(
'<avr-tools-device-file ',
PD_COMMENT . "<avr-tools-device-file ",
$fileContents
);
}
if (file_put_contents($partDescriptionXml->destinationFilePath, $fileContents) === false) {
print "FATAL ERROR: Failed to write data to " . $partDescriptionXml->destinationFilePath . "\n";
print "Aborting\n";
exit(1);
}
$output[$partDescriptionXml->targetId][] = $partDescriptionXml;
echo "Target Part Description File Processed: \"" . substr($partDescriptionXml->originalFilePath, strlen(AVR_PD_FILE_PATH)) . "\"\n"
. "Target Name: \"" . $partDescriptionXml->targetName . "\" Target ID: \"" . $partDescriptionXml->targetId
. "\" Destination: \"" . substr($partDescriptionXml->destinationFilePath, strlen(TARGET_PD_DEST_FILE_PATH))
. "\"\n\n"
;
$processedFileCount++;
}
return $output;
}
print "Processing files in " . AVR_PD_FILE_PATH . "\n\n";
$targetDescriptions = processAvrPartFiles(AVR_PD_FILE_PATH);
if (file_put_contents(TARGET_PD_MAPPING_FILE_PATH, json_encode($targetDescriptions, JSON_PRETTY_PRINT)) === false) {
print "FATAL ERROR: Failed to create JSON mapping of target IDs to target description file paths\n";
exit(1);
}
print "\nCreated JSON mapping of target IDs to target description file paths: " . TARGET_PD_MAPPING_FILE_PATH . "\n";
print "\nProcessed " . $processedFileCount . " files. Failures: " . $failedFileCount . "\n";
print "Done\n";