: "$TopPwd/${CURRENT_DIR}" );
if ( $ENV{'TMPDIR'} ) { # where to make tmp file names
- $Tmp_prefix = ($ENV{'TMPDIR'} . "/ghc$$");
+ # Try to find a $Tmp_prefix which isn't being used...
+ $tmp = $$;
+ do {
+ $Tmp_prefix = ($ENV{'TMPDIR'} . "/ghc$tmp");
+ $tmp++;
+ } while ( -e "$Tmp_prefix.hc" ||
+ -e "$Tmp_Prefix.s" ||
+ -e "$Tmp_Prefix.hi" );
} else {
print STDERR "TMPDIR has not been set to anything useful!\n" if (${TMPDIR} eq '');
$Tmp_prefix ="${TMPDIR}/ghc$$"; # TMPDIR set via Makefile when booting..
&run_something("cp $hsc_out_h_stub $ofile_h_stub_target", 'Copy foreign export header file');
}
+ #
+ # Bring the C stub protos into scope when compiling the .hc file.
+ #
+ push (@CcInjects, "#include \"${hsc_out_h_stub}\"\n");
+ # Hack - ensure that the stub .h file is included in the OPTIONS section
+ # if the .hc file is saved.
+ push (@File_options, "-#include \"${ofile_h_stub_target}\"\n");
+
+ if ($do_cc) {
+ &runGcc ($is_hc_file, $hsc_out, $cc_as_o);
+ &runMangler($is_hc_file, $cc_as_o, $cc_as, $ifile_root) if ! $Only_preprocess_hc;
+ }
+
+ &split_asm_file($cc_as) if $do_as && $SplitObjFiles;
+
+ # save a copy of the .s file..
+ &saveIntermediate($ifile_root , "s" , $cc_as) if ($do_as && $Keep_s_file_too);
+ &runAs($as_out, $ifile_root) if $do_as;
+
if (-f $hsc_out_c_stub) {
&run_something("rm -f $ofile_c_stub_target && echo '#include \"${ofile_h_stub_target}\"' > $ofile_c_stub_target && cat $hsc_out_c_stub >> $ofile_c_stub_target", 'Copy foreign export C stubs');
local ($hsc_out_s_stub);
($ofile_o_stub_target = $ofile_c_stub_target) =~ s/\.(.*)$//;
$ofile_o_stub_target = &osuf_ify($ofile_o_stub_target, "o");
- if ($do_cc) {
+ if ($do_cc || $do_as) { # might be using NCG, so check $do_as
&runGcc (0, $ofile_c_stub_target, $ofile_s_stub_target);
&runAs ($ofile_o_stub_target, $ofile_s_stub_target);
}
- #
- # Bring the C stub protos into scope when compiling the .hc file.
- #
- push (@CcInjects, "#include \"${hsc_out_h_stub}\"\n");
- # Hack - ensure that the stub .h file is included in the OPTIONS section
- # if the .hc file is saved.
- push (@File_options, "-#include \"${ofile_h_stub_target}\"\n");
-
- }
-
- if ($do_cc) {
- &runGcc ($is_hc_file, $hsc_out, $cc_as_o);
- &runMangler($is_hc_file, $cc_as_o, $cc_as, $ifile_root) if ! $Only_preprocess_hc;
}
- &split_asm_file($cc_as) if $do_as && $SplitObjFiles;
-
- # save a copy of the .s file..
- &saveIntermediate($ifile_root , "s" , $cc_as) if ($do_as && $Keep_s_file_too);
- &runAs($as_out, $ifile_root) if $do_as;
\end{code}
Finally, decide what to queue up for linker input.
: "$TopPwd/hslibs/concurrent"
)
, '' # where to find the cbits archive to use when linking
- , '' # Syslib dependencies
+ , 'lang' # Syslib dependencies
, '' # extra ghc opts
, '' # extra cc opts
, '' # extra ld opts