X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fmain%2FMain.hs;h=5786dec2885e1178e3ba4138a7be7a2f403f4365;hb=4d1b970fe7ae5e25a54a7bce03c2501f07f27211;hp=dbc9cec9bdfb173d3c1d6b22f12637dffbce4f7c;hpb=e663f7b8508aac0df712250bee90488429fcbad6;p=ghc-hetmet.git diff --git a/ghc/compiler/main/Main.hs b/ghc/compiler/main/Main.hs index dbc9cec..5786dec 100644 --- a/ghc/compiler/main/Main.hs +++ b/ghc/compiler/main/Main.hs @@ -1,6 +1,6 @@ -{-# 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 -- @@ -15,11 +15,18 @@ module Main (main) where #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 @@ -28,21 +35,18 @@ import DriverUtil 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 @@ -237,14 +241,15 @@ main = (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 @@ -281,24 +286,26 @@ setTopDir args = do 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