diff --git a/Cabal.hs b/Cabal.hs index 2da1100..95be721 100644 --- a/Cabal.hs +++ b/Cabal.hs @@ -17,12 +17,15 @@ import Types ---------------------------------------------------------------- +importDirs :: [String] +importDirs = ["..","../..","../../..","../../../..","../../../../.."] + initializeGHC :: Options -> FilePath -> [String] -> Bool -> Ghc (FilePath,LogReader) initializeGHC opt fileName ghcOptions logging = do (owdir,mdirfile) <- liftIO getDirs case mdirfile of Nothing -> do - logReader <- initSession opt ghcOptions Nothing logging + logReader <- initSession opt ghcOptions importDirs logging return (fileName,logReader) Just (cdir,cfile) -> do midirs <- parseCabalFile cfile @@ -31,7 +34,7 @@ initializeGHC opt fileName ghcOptions logging = do Nothing -> [cdir,owdir] Just dirs -> dirs ++ [owdir] file = ajustFileName fileName owdir cdir - logReader <- initSession opt ghcOptions (Just idirs) logging + logReader <- initSession opt ghcOptions idirs logging return (file,logReader) ---------------------------------------------------------------- diff --git a/Types.hs b/Types.hs index 929d51a..4de4736 100644 --- a/Types.hs +++ b/Types.hs @@ -31,22 +31,23 @@ initSession0 :: Options -> Ghc [PackageId] initSession0 opt = getSessionDynFlags >>= setSessionDynFlags . setPackageConfFlags opt -initSession :: Options -> [String] -> Maybe [FilePath] -> Bool -> Ghc LogReader -initSession opt cmdOpts midirs logging = do +initSession :: Options -> [String] -> [FilePath] -> Bool -> Ghc LogReader +initSession opt cmdOpts idirs logging = do dflags <- getSessionDynFlags let opts = map noLoc cmdOpts (dflags',_,_) <- parseDynamicFlags dflags opts - (dflags'',readLog) <- liftIO . setLogger logging . setPackageConfFlags opt . setFlags dflags' $ midirs + (dflags'',readLog) <- liftIO . setLogger logging . setPackageConfFlags opt . setFlags dflags' $ idirs setSessionDynFlags dflags'' return readLog ---------------------------------------------------------------- -setFlags :: DynFlags -> Maybe [FilePath] -> DynFlags -setFlags d midirs = maybe d' (\x -> d' { importPaths = x }) midirs +setFlags :: DynFlags -> [FilePath] -> DynFlags +setFlags d idirs = d' where d' = d { packageFlags = ghcPackage : packageFlags d + , importPaths = idirs , ghcLink = NoLink , hscTarget = HscInterpreted }