mirror of
https://github.com/hathach/tinyusb.git
synced 2025-01-17 05:32:55 +08:00
64 lines
1.9 KiB
Perl
64 lines
1.9 KiB
Perl
#!/usr/bin/perl
|
|
|
|
use Scalar::Util qw(looks_like_number);
|
|
|
|
$" = "\n"; # change list separator
|
|
|
|
$keil_size = "Program Size:.+";
|
|
|
|
%report_patterns =
|
|
( #toolchain, pattern-list
|
|
'keil' => ['Build target \'(.+)\'', '(\d+ Error.+\d+ Warning)', $keil_size . 'Code=(\d+)', $keil_size . 'RO-data=(\d+)', $keil_size . 'RW-data=(\d+)', $keil_size . 'ZI-data=(\d+)'],
|
|
'iar' => ['Building configuration.+ (.+)', 'Total number of (.+)', '((\s+\d+){4})\s+[0-9a-f]+'],
|
|
'xpresso' => ['Build of configuration (\S+) ', '(Finished) building target', '((\s+\d+){4})\s+[0-9a-f]+']
|
|
);
|
|
|
|
@report_file_list = <build_all_*.txt>;
|
|
#print "@report_file_list"; die;
|
|
|
|
open $freport, ">build_report.txt" or die "cannot open build_reprot.txt";
|
|
|
|
foreach (@report_file_list)
|
|
{
|
|
/build_all_([^_]+)_/;
|
|
build_report($_, $1);
|
|
}
|
|
|
|
sub build_report
|
|
{
|
|
my $report_file = $_[0];
|
|
my $toolchain = $_[1];
|
|
|
|
my @pattern = @{$report_patterns{$toolchain}};
|
|
|
|
open $report_handle, $report_file or die "cannot open $report_file";
|
|
|
|
$report_file =~ /build_all_(.+).txt/;
|
|
|
|
print $freport "--------------------------------------------------------------------\n";
|
|
printf $freport "%-25s", $1;
|
|
printf $freport "%13s", "" if $toolchain eq 'iar';
|
|
print $freport " text data bss dec" if $toolchain eq 'xpresso' or $toolchain eq 'iar';
|
|
print $freport " Code RO RW ZI" if $toolchain eq 'keil';
|
|
print $freport "\n--------------------------------------------------------------------";
|
|
|
|
while( my $line = <$report_handle> )
|
|
{
|
|
local $/ = "\r\n";
|
|
chomp $line;
|
|
|
|
foreach (@pattern)
|
|
{
|
|
if ($line =~ /$_/)
|
|
{
|
|
my $fmat = ($_ eq $pattern[0]) ? "\n%-25s" : "%s ";
|
|
$fmat = "%6s " if $toolchain eq 'keil' and looks_like_number($1);
|
|
printf $freport $fmat, $1;
|
|
}
|
|
}
|
|
}
|
|
|
|
close $report_handle;
|
|
|
|
print $freport "\n\n";
|
|
} |