+ return $var_prefix.'TARGETS'.($target eq 'all' ? '' : "_$target");
+}
+
+our $writing_output;
+our %output_files;
+
+sub close_any_output_file() {
+ return unless defined $writing_output;
+ O->error and die "error writing $writing_output.tmp: $! (?)\n";
+ close O or die "error closing $writing_output.tmp: $!\n";
+ $writing_output = undef;
+}
+
+sub start_output_file ($) {
+ close_any_output_file();
+ ($writing_output) = @_;
+ die if $output_files{$writing_output}++;
+ my $tmp = "$writing_output.tmp";
+ open O, ">", $tmp or die "create $tmp: $!\n";
+}
+
+sub o {
+ die unless defined $writing_output;
+ print O @_ or die "error writing $writing_output.tmp: $!\n";