Commit 207e5dfd authored by sof's avatar sof
Browse files

[project @ 1999-01-15 17:59:26 by sof]

Added options that 3.xx supported for dumping out selected
chunks of the .hi file to stdout, i.e.,

   -hi-with-imports      = prints out the import 'section' of the .hi file
   -hi-with-declarations = print  out just decls

(Only) useful when working with runstdtest, where we just want
to look at selected portions of the generated interface file.
parent 4ec89230
......@@ -49,9 +49,21 @@ sub postprocessHiFile {
}
# if we produced an interface file "no matter what",
# print what we got on stderr (ToDo: honor -ohi flag)
# print what we got on stderr.
if ( $HiOnStdout ) {
system("$Cat $new_hi 1>&2");
if ( $HiWith ne '' ) {
# output some of the sections
local($hi_after) = "$Tmp_prefix.hi-now";
foreach $hi ( split(' ',$HiWith) ) {
$HiSection{$hi} = 1;
}
&hiSectionsOnly($new_hi, $hi_after);
system("$Cat $hi_after 1>&2 ; $Rm $hi_after; ");
} else {
system("$Cat $new_hi 1>&2");
}
} else {
&run_something("$Cmp -s $hifile_target $new_hi || ( $Rm $hifile_target && $Cp $new_hi $hifile_target )",
"Replace .$HiSuffix file, if changed");
......@@ -76,6 +88,32 @@ sub deUsagifyHi {
}
\end{code}
\begin{code}
sub hiSectionsOnly {
local($ifile,$ofile) = @_;
open(OLDHIF, "< $ifile") || &tidy_up_and_die(1,"Can't open $ifile (read)\n");
open(NEWHIF, "> $ofile") || &tidy_up_and_die(1,"Can't open $ofile (write)\n");
# read up to _usages_ line
$_ = <OLDHIF>;
while ($_ ne '' ) {
if ( /^__export/ && $HiSection {'exports'} ||
/^import / && $HiSection {'imports'} ||
/^\d+ ([^ ]+ :: |type |data |class |newtype )/ && $HiSection {'declarations'} ||
/^instance / && $HiSection {'instances'} ) {
print NEWHIF $_;
$_ = <OLDHIF>;
} else {
$_ = <OLDHIF>;
}
}
close(OLDHIF) || &tidy_up_and_die(1,"Failed reading from $ifile\n");
close(NEWHIF) || &tidy_up_and_die(1,"Failed writing to $ofile\n");
}
\end{code}
\begin{code}
sub constructNewHiFile {
local($hsc_hi, # The iface info produced by hsc.
......
......@@ -2792,6 +2792,8 @@ arg: while($_ = $Args[0]) {
/^-hi$/ && do { $HiOnStdout = 1; $ProduceHi = '-hifile='; next arg; };
# _do_ generate an interface; usually used as: -noC -hi
/^-hi-with-(.*)$/ && do { $HiOnStdout = 1; $HiWith .= " $1" ; $ProduceHi = '-hifile='; next arg; };
# limit ourselves to outputting a particular section.
/^-nohi$/ && do { $ProduceHi = '-nohifile='; next arg; };
# don't generate an interface (even if generating C)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment