Ticket #1181: APILoad.hs

File APILoad.hs, 1.0 KB (added by judahj, 7 years ago)
Line 
1module Main where
2
3import GHC
4import DynFlags(defaultDynFlags)
5import System.Environment
6
7ghcLibDir = "/usr/local/lib/ghc-6.7.20070215"
8
9main = defaultErrorHandler defaultDynFlags $ do
10    (session,modules) <- initSessionFromArgs
11    targets <- mapM (flip guessTarget Nothing) modules
12    setTargets session targets
13    loadSessionTargets session
14   
15
16initSessionFromArgs :: IO (Session, [String])
17initSessionFromArgs = do
18    session <- newSession Interactive (Just ghcLibDir)
19    f0 <- getSessionDynFlags session
20    cmdLineArgs <- getArgs
21    (f1,modules) <- parseDynamicFlags f0 cmdLineArgs
22    setSessionDynFlags session f1{hscTarget=HscInterpreted}
23    return (session,modules)
24   
25loadSessionTargets :: Session -> IO ()
26loadSessionTargets session = do
27    f <- getSessionDynFlags session
28    sf <- defaultCleanupHandler f $ do
29        putStrLn "Loading..."
30        res <- load session LoadAllTargets
31        putStrLn "Done loading."
32        return res
33    case sf of
34        Succeeded -> return ()
35        Failed -> error "Failed to load modules!"
36