Skip to content
Snippets Groups Projects
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
No related merge requests found
......@@ -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)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment