- -- set the default HscTarget. The HscTarget can be further
- -- adjusted on a module by module basis, using only the -fvia-C and
- -- -fasm flags. If the default HscTarget is not HscC or HscAsm,
- -- -fvia-C and -fasm have no effect.
- let lang = case cli_mode of
- DoInteractive -> HscInterpreted
- DoEval _ -> HscInterpreted
- _other -> hscTarget dflags0
-
- let dflags1 = dflags0{ ghcMode = mode,
- hscTarget = lang,
+ -- set the default GhcMode, HscTarget and GhcLink. The HscTarget
+ -- can be further adjusted on a module by module basis, using only
+ -- the -fvia-C and -fasm flags. If the default HscTarget is not
+ -- HscC or HscAsm, -fvia-C and -fasm have no effect.
+ let dflt_target = hscTarget dflags0
+ (mode, lang, link)
+ = case cli_mode of
+ DoInteractive -> (CompManager, HscInterpreted, LinkInMemory)
+ DoEval _ -> (CompManager, HscInterpreted, LinkInMemory)
+ DoMake -> (CompManager, dflt_target, LinkBinary)
+ DoMkDependHS -> (MkDepend, dflt_target, LinkBinary)
+ _ -> (OneShot, dflt_target, LinkBinary)
+
+ let dflags1 = dflags0{ ghcMode = mode,
+ hscTarget = lang,
+ ghcLink = link,