| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #!/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";
- }
|