+
+ -- We compile in two stages, because the file may have an
+ -- OPTIONS pragma that affects the compilation pipeline (eg. -fvia-C)
+
+ let (basename, suffix) = splitFilename src
+
+ -- just preprocess
+ pp <- if not (haskellish_file src) || mode == StopBefore Hsc
+ then return src else do
+ phases <- genPipeline (StopBefore Hsc) stop_flag
+ False{-not persistent-} defaultHscLang src
+ pipeLoop phases src False{-no linking-} False{-no -o flag-}
+ basename suffix
+
+ -- rest of compilation
+ dyn_flags <- readIORef v_DynFlags
+ phases <- genPipeline mode stop_flag True (hscLang dyn_flags) pp
+ r <- pipeLoop phases pp (mode==DoLink || mode==DoMkDLL) True{-use -o flag-}
+ basename suffix