[project @ 2003-06-27 18:28:31 by sof]
[ghc-hetmet.git] / ghc / compiler / main / Main.hs
index f6175e7..1fed643 100644 (file)
@@ -1,7 +1,7 @@
 {-# OPTIONS -fno-warn-incomplete-patterns -optc-DNON_POSIX_SOURCE #-}
 
 -----------------------------------------------------------------------------
--- $Id: Main.hs,v 1.125 2003/06/10 17:54:56 sof Exp $
+-- $Id: Main.hs,v 1.128 2003/06/27 18:28:33 sof Exp $
 --
 -- GHC Driver program
 --
@@ -160,7 +160,7 @@ main =
    extra_non_static <- processArgs static_flags 
                           (unreg_opts ++ way_opts ++ pkg_extra_opts) []
 
-       -- give the static flags to hsc
+       -- Give the static flags to hsc
    static_opts <- buildStaticHscOpts
    writeIORef v_Static_hsc_opts static_opts
 
@@ -219,12 +219,11 @@ main =
                          || looksLikeModuleName m
                          || '.' `notElem` m
 
-    (raw_srcs, objs) = partition looks_like_an_input fileish_args
-
-     -- To simplify the handling of filepaths, we normalise all source file
-     -- paths right away - e.g., for win32 platforms, backslashes are converted
+     -- To simplify the handling of filepaths, we normalise all filepaths right 
+     -- away - e.g., for win32 platforms, backslashes are converted
      -- into forward slashes.
-    srcs             = map normalisePath raw_srcs
+    normal_fileish_paths = map normalisePath fileish_args
+    (srcs, objs)         = partition looks_like_an_input normal_fileish_paths
 
    mapM_ (add v_Ld_inputs) objs
 
@@ -234,6 +233,12 @@ main =
        ---------------- Final sanity checking -----------
    checkOptions mode srcs objs
 
+    -- We always link in the base package in
+    -- one-shot linking.  Any other packages
+    -- required must be given using -package
+    -- options on the command-line.
+   let def_hs_pkgs = [basePackage, haskell98Package]
+
        ---------------- Do the business -----------
    case mode of
        DoMake         -> doMake srcs
@@ -243,16 +248,11 @@ main =
                               endMkDependHS }
        StopBefore p   -> do { compileFiles mode srcs; return () }
        DoMkDLL        -> do { o_files <- compileFiles mode srcs; 
-                              doMkDLL o_files }
+                              doMkDLL o_files def_hs_pkgs }
        DoLink         -> do { o_files <- compileFiles mode srcs; 
                               omit_linking <- readIORef v_NoLink;
                               when (not omit_linking)
-                                   (staticLink o_files 
-                                       [basePackage, haskell98Package]) }
-                       -- We always link in the base package in
-                       -- one-shot linking.  Any other packages
-                       -- required must be given using -package
-                       -- options on the command-line.
+                                   (staticLink o_files def_hs_pkgs) }
 
 #ifndef GHCI
        DoInteractive -> throwDyn (CmdLineError "not built for interactive use")