src_opts <- liftIO $ getOptionsFromFile dflags0 input_fn
(dflags, unhandled_flags, warns)
<- liftIO $ parseDynamicNoPackageFlags dflags0 src_opts
- liftIO $ handleFlagWarnings dflags warns -- XXX: may exit the program
- liftIO $ checkProcessArgsResult unhandled_flags -- XXX: may throw program error
+ handleFlagWarnings dflags warns
+ checkProcessArgsResult unhandled_flags
if not (dopt Opt_Cpp dflags) then
-- no need to preprocess CPP, just pass input file along
m <- liftIO $ getCoreModuleName input_fn
return (Nothing, mkModuleName m, [], [])
- _ -> liftIO $ do
- buf <- hGetStringBuffer input_fn
+ _ -> do
+ buf <- liftIO $ hGetStringBuffer input_fn
(src_imps,imps,L _ mod_name) <- getImports dflags buf input_fn (basename <.> suff)
return (Just buf, mod_name, imps, src_imps)
Wrapped wrapmode ->
do
let (o_base, o_ext) = splitExtension input_fn
- let wrapped_executable | o_ext == "exe" = (o_base ++ "_real") <.> o_ext
- | otherwise = input_fn ++ "_real"
+ let wrapped_executable | o_ext == "exe" = (o_base ++ ".dyn") <.> o_ext
+ | otherwise = input_fn ++ ".dyn"
behaviour <- wrapper_behaviour dflags wrapmode dep_packages
-- THINKME isn't this possible to do a bit nicer?
-- because the RTS lib comes in several flavours and we want to be
-- able to pick the flavour when a binary is linked.
pkgs <- getPreloadPackagesAnd dflags dep_packages
- let pkgs_no_rts = filter ((/= rtsPackageId) . packageConfigId) pkgs
+ -- On Windows we need to link the RTS import lib as Windows does
+ -- not allow undefined symbols.
+#if !defined(mingw32_HOST_OS)
+ let pkgs_no_rts = filter ((/= rtsPackageId) . packageConfigId) pkgs
+#else
+ let pkgs_no_rts = pkgs
+#endif
let pkg_lib_paths = collectLibraryPaths pkgs_no_rts
let pkg_lib_path_opts = map ("-L"++) pkg_lib_paths