-{-# OPTIONS -W -fno-warn-incomplete-patterns #-}
+{-# OPTIONS -fno-warn-incomplete-patterns #-}
-----------------------------------------------------------------------------
--- $Id: Main.hs,v 1.29 2000/11/21 14:35:52 simonmar Exp $
+-- $Id: Main.hs,v 1.36 2000/12/11 16:42:26 sewardj 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
(hPutStrLn stderr ("Using package config file: " ++ conf_file))
-- initialise the finder
- initFinder pkg_details
+ pkg_avails <- getPackageInfo
+ initFinder pkg_avails
-- mkdependHS is special
when (mode == DoMkDependHS) beginMkDependHS
-- make/interactive require invoking the compilation manager
- if (mode == DoMake) then beginMake pkg_details srcs else do
- if (mode == DoInteractive) then beginInteractive pkg_details 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