| 1 | module Main where |
|---|
| 2 | |
|---|
| 3 | import GHC |
|---|
| 4 | import DynFlags(defaultDynFlags) |
|---|
| 5 | import System.Environment |
|---|
| 6 | |
|---|
| 7 | ghcLibDir = "/usr/local/lib/ghc-6.7.20070215" |
|---|
| 8 | |
|---|
| 9 | main = defaultErrorHandler defaultDynFlags $ do |
|---|
| 10 | (session,modules) <- initSessionFromArgs |
|---|
| 11 | targets <- mapM (flip guessTarget Nothing) modules |
|---|
| 12 | setTargets session targets |
|---|
| 13 | loadSessionTargets session |
|---|
| 14 | |
|---|
| 15 | |
|---|
| 16 | initSessionFromArgs :: IO (Session, [String]) |
|---|
| 17 | initSessionFromArgs = 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 | |
|---|
| 25 | loadSessionTargets :: Session -> IO () |
|---|
| 26 | loadSessionTargets 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!" |
|---|