{-# 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
--
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
|| 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
---------------- 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
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")