blob: a86774c78ee0618ab72dfd9ff4983b39e168f49b [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001#!/usr/bin/perl
2#
3# Copyright Statement:
4# --------------------
5# This software is protected by Copyright and the information contained
6# herein is confidential. The software may not be copied and the information
7# contained herein may not be used or disclosed except with the written
8# permission of MediaTek Inc. (C) 2005
9#
10# BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
11# THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
12# RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
13# AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
14# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
15# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
16# NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
17# SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
18# SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
19# THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
20# NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
21# SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
22#
23# BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
24# LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
25# AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
26# OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
27# MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
28#
29# THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
30# WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
31# LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
32# RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
33# THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
34#
35#
36
37use strict;
38my $logPath = "$ARGV[0]/bin/log";
39my $logPath_modis = "$ARGV[0]/MoDIS/_BUILD_LOG";
40my $modisConfig = "false";
41my $debugPrint = 0;
42my $filename;
43my $outStr = "";
44my $outFile = "$ARGV[2]/comp_err.txt";
45
46unlink $outFile if(-e $outFile);
47
48if (defined $ARGV[1])
49{
50 $modisConfig = lc($ARGV[1]);
51}
52else
53{
54 $debugPrint = 1;
55}
56if (defined $ARGV[3] && $ARGV[3] eq "TRUE")
57{
58 $debugPrint = 1;
59}
60
61if ($modisConfig eq "true")
62{
63 $logPath = "$ARGV[0]/MoDIS/_BUILD_XGEN/bin/log";
64 $filename = "${logPath_modis}/codegen.log";
65}
66else
67{
68 $filename = "${logPath}/codegen.log";
69}
70
71if ((-e $filename) && (!-z $filename)) {
72 $outStr .= "Codegen might be failed ==> $filename\n";
73 open(F, $filename) || die "I can't open $filename";
74 while(<F>) {
75 next if (/^\s*$/);
76 $outStr .= " $_";
77 }
78 close (F);
79}
80
81if ($modisConfig eq "true")
82{
83 $filename = "${logPath_modis}/mcddll_update.log";
84}
85else
86{
87 $filename = "${logPath}/mcddll_update.log";
88}
89
90if ((-e $filename) && (!-z $filename)) {
91 $outStr .= "mcddll_update might be failed ==> $filename\n";
92 open(F, $filename) || die "I can't open $filename";
93 while(<F>) {
94 next if (/^\s*$/);
95 $outStr .= " $_";
96 }
97 close (F);
98}
99
100if ($modisConfig eq "true")
101{
102 &Output_Error if ($outStr ne "");
103 exit 0;
104}
105
106my $errModule = 0;
107while(defined($filename= <$logPath/*.log>)) {
108 next if ($filename =~ /info/);
109 next if ($filename =~ /codegen/);
110 open(F, $filename ) || die "I can't open $filename";
111 my $errFlag = 0;
112 my $showthefile = 1;
113 my $thefile;
114 while(<F>) {
115 if (/\/\*.*error\s*:.*\*\//i) {
116 next;
117 }
118 if (/Compiling (\S+)/) {
119 $thefile = $1;
120 $showthefile = 0;
121 } elsif ((/Serious error:/)||(/Error:/i)||(/Fatal error:/)||(/No rule/)||(/dependency errors/) || ((/\bError(s?)\b/)&&($_ !~ /\b0 Errors\b/)&&($filename =~ "bootloader"))) {
122 $errModule++;
123 if ($errFlag == 0) {
124 $errFlag = 1;
125 $outStr .= "$filename\n";
126 }
127 if($showthefile == 0)
128 {
129 $outStr .= " $thefile:\n";
130 }
131 $showthefile = 1;
132 $outStr .= " $_";
133 last if ($errModule > 300);
134 }
135 } ## while
136 close(F);
137 last if ($errModule > 300);
138} ## while
139
140if ($errModule == 0) {
141 while(defined($filename= <$ARGV[0]/bin/*.log>)) {
142 open(F, $filename ) || die "I can't open $filename";
143 my $errFlag = 0;
144 while(<F>) {
145 if ((/Serious error:/) || (/Error:/) || (/No rule/) || (/Fatal error:/)) {
146 if ($errFlag == 0) {
147 $errFlag = 1;
148 $outStr .= "$filename\n";
149 }
150 $outStr .= " $_";
151 }
152 } ## while
153 close(F);
154 } ## while
155} elsif ($errModule > 300) {
156 $outStr .= "\n Too many errors. Stop parsing.";
157}
158
159&Output_Error if ($outStr ne "");
160exit 0;
161
162sub Output_Error
163{
164 if($debugPrint)
165 {
166 print "Please check following errors:\n";
167 print "$outStr\n";
168 }
169 open (Fout, ">$outFile") || die "Error: cannot open $outFile\n";
170 print Fout "$outStr\n";
171 close Fout;
172}