projects
/
ghc-hetmet.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
89692d0
)
Fix -keep-s-file with --make
author
Simon Marlow
<simonmar@microsoft.com>
Thu, 1 Mar 2007 09:57:49 +0000
(09:57 +0000)
committer
Simon Marlow
<simonmar@microsoft.com>
Thu, 1 Mar 2007 09:57:49 +0000
(09:57 +0000)
compiler/main/DriverPipeline.hs
patch
|
blob
|
history
diff --git
a/compiler/main/DriverPipeline.hs
b/compiler/main/DriverPipeline.hs
index
1ee2924
..
fba4afb
100644
(file)
--- a/
compiler/main/DriverPipeline.hs
+++ b/
compiler/main/DriverPipeline.hs
@@
-75,7
+75,8
@@
import System.Environment
preprocess :: DynFlags -> (FilePath, Maybe Phase) -> IO (DynFlags, FilePath)
preprocess dflags (filename, mb_phase) =
ASSERT2(isJust mb_phase || isHaskellSrcFilename filename, text filename)
preprocess :: DynFlags -> (FilePath, Maybe Phase) -> IO (DynFlags, FilePath)
preprocess dflags (filename, mb_phase) =
ASSERT2(isJust mb_phase || isHaskellSrcFilename filename, text filename)
- runPipeline anyHsc dflags (filename, mb_phase) Temporary Nothing{-no ModLocation-}
+ runPipeline anyHsc dflags (filename, mb_phase)
+ Nothing Temporary Nothing{-no ModLocation-}
-- ---------------------------------------------------------------------------
-- Compile
-- ---------------------------------------------------------------------------
-- Compile
@@
-169,7
+170,9
@@
compile hsc_env mod_summary maybe_old_linkable old_iface mod_index nmods = do
-> return ([], ms_hs_date mod_summary)
-- We're in --make mode: finish the compilation pipeline.
_other
-> return ([], ms_hs_date mod_summary)
-- We're in --make mode: finish the compilation pipeline.
_other
- -> do runPipeline StopLn dflags (output_fn,Nothing) Persistent
+ -> do runPipeline StopLn dflags (output_fn,Nothing)
+ (Just basename)
+ Persistent
(Just location)
-- The object filename comes from the ModLocation
o_time <- getModificationTime object_filename
(Just location)
-- The object filename comes from the ModLocation
o_time <- getModificationTime object_filename
@@
-238,7
+241,7
@@
compileStub dflags mod location = do
-- compile the _stub.c file w/ gcc
let (stub_c,_) = mkStubPaths dflags (moduleName mod) location
-- compile the _stub.c file w/ gcc
let (stub_c,_) = mkStubPaths dflags (moduleName mod) location
- runPipeline StopLn dflags (stub_c,Nothing)
+ runPipeline StopLn dflags (stub_c,Nothing) Nothing
(SpecificFile stub_o) Nothing{-no ModLocation-}
return stub_o
(SpecificFile stub_o) Nothing{-no ModLocation-}
return stub_o
@@
-361,7
+364,8
@@
compileFile dflags stop_phase (src, mb_phase) = do
other -> stop_phase
(_, out_file) <- runPipeline stop_phase' dflags
other -> stop_phase
(_, out_file) <- runPipeline stop_phase' dflags
- (src, mb_phase) output Nothing{-no ModLocation-}
+ (src, mb_phase) Nothing output
+ Nothing{-no ModLocation-}
return out_file
return out_file
@@
-407,13
+411,16
@@
runPipeline
:: Phase -- When to stop
-> DynFlags -- Dynamic flags
-> (FilePath,Maybe Phase) -- Input filename (and maybe -x suffix)
:: Phase -- When to stop
-> DynFlags -- Dynamic flags
-> (FilePath,Maybe Phase) -- Input filename (and maybe -x suffix)
+ -> Maybe FilePath -- original basename (if different from ^^^)
-> PipelineOutput -- Output filename
-> Maybe ModLocation -- A ModLocation, if this is a Haskell module
-> IO (DynFlags, FilePath) -- (final flags, output filename)
-> PipelineOutput -- Output filename
-> Maybe ModLocation -- A ModLocation, if this is a Haskell module
-> IO (DynFlags, FilePath) -- (final flags, output filename)
-runPipeline stop_phase dflags (input_fn, mb_phase) output maybe_loc
+runPipeline stop_phase dflags (input_fn, mb_phase) mb_basename output maybe_loc
= do
= do
- let (basename, suffix) = splitFilename input_fn
+ let (input_basename, suffix) = splitFilename input_fn
+ basename | Just b <- mb_basename = b
+ | otherwise = input_basename
-- If we were given a -x flag, then use that phase to start from
start_phase = fromMaybe (startPhase suffix) mb_phase
-- If we were given a -x flag, then use that phase to start from
start_phase = fromMaybe (startPhase suffix) mb_phase