54 |
|
|
55 |
|
use constant kMakeDiv => "__MAKE__"; |
56 |
|
use constant kProjDiv => "__PROJ__"; |
57 |
+ |
use constant kProjCfgDiv => "__PROJCFG__"; |
58 |
|
use constant kEndDiv => "__END__"; |
59 |
|
use constant kStUnk => 0; |
60 |
|
use constant kStMake => 1; |
61 |
|
use constant kStProj => 2; |
62 |
+ |
use constant kStProjCfg => 3; |
63 |
|
use constant kMakeFile => "make_basic.mk"; |
64 |
|
use constant kTargetFile => "target.mk"; |
65 |
|
use constant kRulesFile => "Rules.mk"; |
66 |
+ |
use constant kProjCfgFile => "configure"; |
67 |
|
use constant kMakeVarCOMPILER => "COMPILER"; |
68 |
|
use constant kMakeVarFCOMPILER => "FCOMPILER"; |
69 |
|
use constant kMakeVarJSOC_MACHINE => "JSOC_MACHINE"; |
89 |
|
my($val); |
90 |
|
my($mdiv); |
91 |
|
my($pdiv); |
92 |
+ |
my($pcdiv); |
93 |
|
my($ediv); |
94 |
|
my($xml); |
95 |
|
|
113 |
|
{ |
114 |
|
my($makedone); |
115 |
|
my($projdone); |
116 |
+ |
my($projcfgdone); |
117 |
|
|
118 |
|
$st = kStUnk; |
119 |
|
$mdiv = kMakeDiv; |
120 |
|
$pdiv = kProjDiv; |
121 |
+ |
$pcdiv = kProjCfgDiv; |
122 |
|
$ediv = kEndDiv; |
123 |
|
|
124 |
|
$makedone = 0; |
125 |
|
$projdone = 0; |
126 |
+ |
$projcfgdone = 0; |
127 |
|
|
128 |
|
while (defined($line = <CFGFILE>)) |
129 |
|
{ |
169 |
|
$xml = ""; |
170 |
|
next; |
171 |
|
} |
172 |
+ |
elsif ($line =~ /^$pcdiv/) |
173 |
+ |
{ |
174 |
+ |
$st = kStProjCfg; |
175 |
+ |
if (!open(PROJCFGFILE, ">${locdir}/" . kProjCfgFile)) |
176 |
+ |
{ |
177 |
+ |
print STDERR "Unable to open " . kProjCfgFile . " for writing.\n"; |
178 |
+ |
$err = 1; |
179 |
+ |
last; |
180 |
+ |
} |
181 |
+ |
|
182 |
+ |
next; |
183 |
+ |
} |
184 |
|
elsif ($line =~ /^$ediv/) |
185 |
|
{ |
186 |
|
if ($st == kStMake) |
191 |
|
{ |
192 |
|
$projdone = 1; |
193 |
|
} |
194 |
+ |
elsif ($st == kStProjCfg) |
195 |
+ |
{ |
196 |
+ |
$projcfgdone = 1; |
197 |
+ |
} |
198 |
|
|
199 |
|
$st = kStUnk; |
200 |
|
|
201 |
< |
if ($makedone && $projdone) |
201 |
> |
if ($makedone && $projdone && $projcfgdone) |
202 |
|
{ |
203 |
|
last; |
204 |
|
} |
216 |
|
# suck out xml |
217 |
|
$xml = $xml . "$line\n"; |
218 |
|
} |
219 |
+ |
elsif ($st == kStProjCfg) |
220 |
+ |
{ |
221 |
+ |
# copy verbatim to configure |
222 |
+ |
print PROJCFGFILE "$line\n"; |
223 |
+ |
} |
224 |
|
} # loop over cfg file |
225 |
|
|
226 |
|
close(CFGFILE); |
344 |
|
print RULESFILE "${filesuffix}\n"; |
345 |
|
} |
346 |
|
} |
347 |
< |
|
347 |
> |
|
348 |
|
close(TARGETFILE); |
349 |
|
close(RULESFILE); |
350 |
+ |
close(PROJCFGFILE); |
351 |
|
close(MKFILE); |
352 |
+ |
|
353 |
+ |
if (chmod(0744, "${locdir}/" . kProjCfgFile) != 1) |
354 |
+ |
{ |
355 |
+ |
print STDERR "Unable to set file permissions for ${locdir}/" . kProjCfgFile . ".\n"; |
356 |
+ |
$err = 1; |
357 |
+ |
} |
358 |
|
} |
359 |
|
else |
360 |
|
{ |
361 |
|
print STDERR "Unable to open configuration file $cfgfile.\n"; |
362 |
< |
exit(1); |
362 |
> |
$err = 1; |
363 |
|
} |
364 |
|
} |
365 |
|
|