value => 'TargetFamily::AVR_8', TargetFamily::RISC_V->value => 'TargetFamily::RISC_V', ]; const MAP_ENTRY_TEMPLATE = '{"@CONFIG_VALUE@", {"@TARGET_NAME@", "@CONFIG_VALUE@", @TARGET_FAMILY@, "@TDF_PATH@"}}'; $entries = []; foreach ($xmlFiles as $xmlFile) { $xmlFilePath = $xmlFile->getPathname(); print 'Processing ' . $xmlFilePath . PHP_EOL; $targetDescriptionFile = TargetDescriptionFiles\Factory::loadTdfFromFile($xmlFilePath); $relativeTdfPath = $targetDescriptionFile->targetFamily->value . '/' . strtoupper($targetDescriptionFile->targetName) . '.xml'; $entries[] = str_replace( ['@CONFIG_VALUE@', '@TARGET_NAME@', '@TARGET_FAMILY@', '@TDF_PATH@'], [ $targetDescriptionFile->configurationValue, $targetDescriptionFile->targetName, $targetFamilyMapping[$targetDescriptionFile->targetFamily->value], $relativeTdfPath, ], MAP_ENTRY_TEMPLATE ); $tdfDestinationPath = TDF_OUTPUT_PATH . '/' . $relativeTdfPath; $tdfDestinationDirPath = dirname($tdfDestinationPath); if (!file_exists($tdfDestinationDirPath)) { mkdir($tdfDestinationDirPath, 0700, true); } if (!copy($targetDescriptionFile->filePath, $tdfDestinationPath)) { print 'FATAL ERROR: Failed to copy TDF file to ' . $tdfDestinationPath . PHP_EOL; print 'Aborting' . PHP_EOL; exit(1); } } file_put_contents( MAPPING_OUTPUT_PATH, str_replace( '//@MAPPING_PLACEHOLDER@', implode(',' . PHP_EOL . str_repeat(' ', 12), $entries), file_get_contents(MAPPING_TEMPLATE_PATH) ) ); print PHP_EOL; print 'Processed ' . count($xmlFiles) . ' TDFs.' . PHP_EOL; print 'Generated TDF mapping at ' . MAPPING_OUTPUT_PATH . PHP_EOL; print 'Done' . PHP_EOL;