-----------------------------------------------------------------------------
--- $Id: DriverPhases.hs,v 1.5 2001/02/27 12:36:37 rrt Exp $
+-- $Id: DriverPhases.hs,v 1.6 2001/02/27 15:25:18 simonmar Exp $
--
-- GHC Driver
--
startPhase, -- :: String -> Phase
phaseInputExt, -- :: Phase -> String
- haskellish_file,
- haskellish_suffix,
- cish_file,
- cish_suffix
+ haskellish_file, haskellish_suffix,
+ objish_file, objish_suffix,
+ cish_file, cish_suffix
) where
import DriverUtil
haskellish_suffix = (`elem` [ "hs", "hspp", "lhs", "hc" ])
cish_suffix = (`elem` [ "c", "s", "S" ]) -- maybe .cc et al.??
-haskellish_file f = haskellish_suffix suf where (_,suf) = splitFilename f
-cish_file f = cish_suffix suf where (_,suf) = splitFilename f
+#if mingw32_TARGET_OS || cygwin32_TARGET_OS
+objish_suffix = (`elem` [ "o", "O", "obj", "OBJ" ])
+#else
+objish_suffix = (`elem` [ "o" ])
+#endif
+haskellish_file f = haskellish_suffix suf where (_,suf) = splitFilename f
+cish_file f = cish_suffix suf where (_,suf) = splitFilename f
+objish_file f = objish_suffix suf where (_,suf) = splitFilename f
{-# OPTIONS -fno-warn-incomplete-patterns #-}
-----------------------------------------------------------------------------
--- $Id: Main.hs,v 1.55 2001/02/27 12:36:37 rrt Exp $
+-- $Id: Main.hs,v 1.56 2001/02/27 15:25:18 simonmar Exp $
--
-- GHC Driver program
--
import DriverMkDepend
import DriverUtil
import Panic
-import DriverPhases ( Phase(..), haskellish_file )
+import DriverPhases ( Phase(..), haskellish_file, objish_file )
import CmdLineOpts
import TmpFiles
import Finder ( initFinder )
import IO
import Monad
import List
-import Char ( toLower )
import System
import Maybe
return others
beginMake :: [String] -> IO ()
-beginMake mods
- = do case mods of
+beginMake fileish_args
+ = do let (objs, mods) = partition objish_file fileish_args
+ mapM (add v_Ld_inputs) objs
+
+ case mods of
[] -> throwDyn (UsageError "no input files")
[mod] -> do state <- cmInit Batch
cmLoadModule state mod
#else
beginInteractive fileish_args
= do minus_ls <- readIORef v_Cmdline_libraries
- let is_libraryish nm
- = let nmr = map toLower (reverse nm)
- in take 2 nmr == "o."
- libs = map Left (filter is_libraryish fileish_args)
- ++ map Right minus_ls
- mods = filter (not.is_libraryish) fileish_args
- mod = case mods of
- [] -> Nothing
- [mod] -> Just mod
- _ -> throwDyn (UsageError
- "only one module allowed with --interactive")
+
+ let (objs, mods) = partition objish_file fileish_args
+ libs = map Left objs ++ map Right minus_ls
+
state <- cmInit Interactive
- interactiveUI state mod libs
+ case mods of
+ [] -> interactiveUI state Nothing libs
+ [mod] -> interactiveUI state (Just mod) libs
+ _ -> throwDyn (UsageError
+ "only one module allowed with --interactive")
#endif