{-# OPTIONS -W -fno-warn-incomplete-patterns #-}
-----------------------------------------------------------------------------
--- $Id: Main.hs,v 1.30 2000/11/21 16:18:17 sewardj Exp $
+-- $Id: Main.hs,v 1.35 2000/11/24 17:09:52 simonmar Exp $
--
-- GHC Driver program
--
#include "HsVersions.h"
-import CompManager
-import Interpreter
+
#ifdef GHCI
+import Interpreter
import InteractiveUI
#endif
+
+#ifndef mingw32_TARGET_OS
+import Dynamic
+import Posix
+#endif
+
+import CompManager
import DriverPipeline
import DriverState
import DriverFlags
import Panic
import DriverPhases ( Phase(..) )
import CmdLineOpts ( HscLang(..), DynFlags(..), v_Static_hsc_opts )
-import Module ( mkModuleName )
import TmpFiles
import Finder ( initFinder )
import CmStaticInfo
import Config
import Util
+
+
import Concurrent
-#ifndef mingw32_TARGET_OS
-import Posix
-#endif
import Directory
import IOExts
import Exception
-import Dynamic
import IO
import Monad
when (mode == DoMkDependHS) beginMkDependHS
-- make/interactive require invoking the compilation manager
- if (mode == DoMake) then beginMake pkg_avails srcs else do
- if (mode == DoInteractive) then beginInteractive pkg_avails srcs else do
+ if (mode == DoMake) then beginMake srcs else do
+ if (mode == DoInteractive) then beginInteractive srcs else do
-- for each source file, find which phases to run
let lang = hscLang init_dyn_flags
some -> writeIORef v_TopDir (drop 2 (last some)))
return others
-beginMake :: PackageConfigInfo -> [String] -> IO ()
-beginMake pkg_details mods
+beginMake :: [String] -> IO ()
+beginMake mods
= do case mods of
[] -> throwDyn (UsageError "no input files")
- [mod] -> do state <- cmInit pkg_details Batch
+ [mod] -> do state <- cmInit Batch
cmLoadModule state mod
return ()
_ -> throwDyn (UsageError "only one module allowed with --make")
+
+beginInteractive :: [String] -> IO ()
#ifndef GHCI
beginInteractive = throwDyn (OtherError "not build for interactive use")
#else
-beginInteractive pkg_details mods
- = do state <- cmInit pkg_details Interactive
- case mods of
- [] -> return ()
- [mod] -> do cmLoadModule state mod; return ()
- _ -> throwDyn (UsageError
- "only one module allowed with --interactive")
- interactiveUI state
+beginInteractive mods
+ = do state <- cmInit Interactive
+ let mod = case mods of
+ [] -> Nothing
+ [mod] -> Just mod
+ _ -> throwDyn (UsageError
+ "only one module allowed with --interactive")
+ interactiveUI state mod
#endif