X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fmain%2FDriverPipeline.hs;h=3a883187ef6b2c3f338bd45f14ce1bf49535adfc;hb=1246293616fc45787ecaed13aa31a2555510f7e3;hp=5355d8f36c6ce27f65716a285a8d6e421ce1d9b1;hpb=3a61d75c70f61a2b919e94e85ffe1166e7151b5b;p=ghc-hetmet.git diff --git a/compiler/main/DriverPipeline.hs b/compiler/main/DriverPipeline.hs index 5355d8f..3a88318 100644 --- a/compiler/main/DriverPipeline.hs +++ b/compiler/main/DriverPipeline.hs @@ -665,9 +665,9 @@ runPhase (Cpp sf) _stop hsc_env _basename _suff input_fn get_output_fn maybe_loc = do let dflags0 = hsc_dflags hsc_env src_opts <- liftIO $ getOptionsFromFile dflags0 input_fn (dflags, unhandled_flags, warns) - <- liftIO $ parseDynamicFlags dflags0 src_opts - liftIO $ handleFlagWarnings dflags warns -- XXX: may exit the program - liftIO $ checkProcessArgsResult unhandled_flags -- XXX: may throw program error + <- liftIO $ parseDynamicNoPackageFlags dflags0 src_opts + handleFlagWarnings dflags warns + checkProcessArgsResult unhandled_flags if not (dopt Opt_Cpp dflags) then -- no need to preprocess CPP, just pass input file along @@ -726,8 +726,8 @@ runPhase (Hsc src_flavour) stop hsc_env basename suff input_fn get_output_fn _ma 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) @@ -1188,8 +1188,8 @@ runPhase_MoveBinary dflags input_fn dep_packages 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? @@ -1494,8 +1494,14 @@ linkDynLib dflags o_files dep_packages = do -- 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