split <- readIORef v_Split_object_files
mangle <- readIORef v_Do_asm_mangling
keep_hc <- readIORef v_Keep_hc_files
+ keep_il <- readIORef v_Keep_il_files
keep_raw_s <- readIORef v_Keep_raw_s_files
keep_s <- readIORef v_Keep_s_files
osuf <- readIORef v_Object_suf
stop_phase = case todo of
StopBefore As | split -> SplitAs
+ | real_lang == HscILX -> Ilasm
StopBefore phase -> phase
DoMkDependHS -> Ln
DoLink -> Ln
Mangle | keep_raw_s -> Persistent
As | keep_s -> Persistent
HCc | keep_hc -> Persistent
+ Ilasm | keep_il -> Persistent
_other -> Temporary
-- add information about output files to the pipeline
where (basename, _) = splitFilename input_fn
pipeLoop [] input_fn _ _ _ _ = return input_fn
-pipeLoop ((phase, keep, o_suffix):phases)
+pipeLoop (all_phases@((phase, keep, o_suffix):phases))
(input_fn,real_suff) do_linking use_ofile orig_basename orig_suffix
= do
-- checker has determined that recompilation isn't necessary.
case mbCarryOn of
Nothing -> do
- let (_,keep,final_suffix) = last phases
+ let (_,keep,final_suffix) = last all_phases
ofile <- outputFileName True keep final_suffix
return (ofile, final_suffix)
-- carry on ...
let dyn_flags' = dyn_flags { hscOutName = output_fn,
hscStubCOutName = basename ++ "_stub.c",
hscStubHOutName = basename ++ "_stub.h",
- extCoreName = basename ++ ".core" }
+ extCoreName = basename ++ ".hcr" }
-- run the compiler!
pcs <- initPersistentCompilerState
++ pkg_extra_ld_opts
++ extra_ld_opts
++ if static && not no_hs_main then
- [ "-u", prefixUnderscore "PrelMain_mainIO_closure" ,
- "-u", prefixUnderscore "__init_PrelMain"]
+ [ "-u", prefixUnderscore "PrelMain_mainIO_closure",
+ "-u", prefixUnderscore "__stginit_PrelMain"]
else []))
-- parallel only: move binary to another dir -- HWL
(basename, _) = splitFilename input_fn
keep_hc <- readIORef v_Keep_hc_files
+ keep_il <- readIORef v_Keep_il_files
keep_s <- readIORef v_Keep_s_files
output_fn <-
| otherwise -> newTempName (phaseInputExt HCc)
HscJava -> newTempName "java" -- ToDo
#ifdef ILX
- HscILX -> return (phaseInputExt Ilx2Il)
+ HscILX | keep_il -> return (basename ++ '.':phaseInputExt Ilasm)
+ | otherwise -> newTempName (phaseInputExt Ilx2Il)
#endif
HscInterpreted -> return (error "no output file")
HscNothing -> return (error "no output file")
let dyn_flags' = dyn_flags { hscOutName = output_fn,
hscStubCOutName = basename ++ "_stub.c",
hscStubHOutName = basename ++ "_stub.h",
- extCoreName = basename ++ ".core" }
+ extCoreName = basename ++ ".hcr" }
-- figure out which header files to #include in a generated .hc file
c_includes <- getPackageCIncludes
-- -no-recomp should also work with --make
do_recomp <- readIORef v_Recomp
- let source_unchanged' = source_unchanged && not do_recomp
+ let source_unchanged' = source_unchanged && do_recomp
-- run the compiler
hsc_result <- hscMain ghci_mode dyn_flags'