-----------------------------------------------------------------------------
--- $Id: DriverMkDepend.hs,v 1.14 2001/08/02 16:35:10 simonmar Exp $
+-- $Id: DriverMkDepend.hs,v 1.20 2002/03/21 09:00:54 simonpj Exp $
--
-- GHC Driver
--
#include "HsVersions.h"
-import DriverState
-import DriverUtil
+import DriverState
+import DriverUtil ( add, softGetDirectoryContents )
import DriverFlags
import SysTools ( newTempName )
import qualified SysTools
-import Module
-import Config
-import Module ( isHomeModule )
-import Finder ( findModule )
+import Module ( ModuleName, moduleNameUserString, isHomeModule )
+import Finder ( findModuleDep )
import HscTypes ( ModuleLocation(..) )
-import Util
+import Util ( global )
import Panic
import IOExts
import Directory
import IO
-import Monad
-import Maybe
+import Monad ( when )
+import Maybe ( isJust )
+
+#if __GLASGOW_HASKELL__ <= 408
+import Util ( catchJust, ioErrors )
+#endif
-------------------------------------------------------------------------------
-- mkdependHS
-- flags
GLOBAL_VAR(v_Dep_makefile, "Makefile", String);
GLOBAL_VAR(v_Dep_include_prelude, False, Bool);
-GLOBAL_VAR(v_Dep_exclude_mods, [], [String]);
+GLOBAL_VAR(v_Dep_exclude_mods, ["GHC.Prim"], [String]);
GLOBAL_VAR(v_Dep_suffixes, [], [String]);
GLOBAL_VAR(v_Dep_warnings, True, Bool);
-- for compatibility with the old mkDependHS, we accept options of the form
-- -optdep-f -optdep.depend, etc.
-dep_opts = [
- ( "s", SepArg (add v_Dep_suffixes) ),
- ( "f", SepArg (writeIORef v_Dep_makefile) ),
- ( "w", NoArg (writeIORef v_Dep_warnings False) ),
- ( "-include-prelude", NoArg (writeIORef v_Dep_include_prelude True) )
--- ( "-exclude-module=", Prefix (add v_Dep_exclude_mods) )
--- ( "x", Prefix (add v_Dep_exclude_mods) )
- ]
+dep_opts =
+ [ ( "s", SepArg (add v_Dep_suffixes) )
+ , ( "f", SepArg (writeIORef v_Dep_makefile) )
+ , ( "w", NoArg (writeIORef v_Dep_warnings False) )
+ , ( "-include-prelude", NoArg (writeIORef v_Dep_include_prelude True) )
+ , ( "-exclude-module=", Prefix (add v_Dep_exclude_mods) )
+ , ( "x", Prefix (add v_Dep_exclude_mods) )
+ ]
beginMkDependHS :: IO ()
beginMkDependHS = do
if imp_mod `elem` excl_mods
then return Nothing
else do
- r <- findModule imp
+ r <- findModuleDep imp is_source
case r of
Just (mod,loc)
| isHomeModule mod || include_prelude
-> return (Just (ml_hi_file loc, not is_source))
- | otherwise
+ | otherwise
-> return Nothing
Nothing -> throwDyn (ProgramError
- (src ++ ": " ++ "can't locate import `" ++ imp_mod ++ "'"))
+ (src ++ ": " ++ "can't locate import `" ++ imp_mod ++ "'" ++
+ if is_source then " (SOURCE import)" else ""))