I've checked in code for the function Neil asked for:

Mon Jun 25 15:06:08 PDT 2007  Tim Chevalier <[EMAIL PROTECTED]>
 * Add a compileToCore function to the GHC API

Here is the program I used for testing it:
---------
import GHC
import DynFlags
import PackageConfig
import BasicTypes
import Outputable

ghcBaseDir = "/home/krc/ghc_june24_complete/ghc_1"
preludeModName = mkModuleName "Prelude"
preludeFileName = ghcBaseDir ++ "/libraries/base/Prelude.hs"

main = defaultErrorHandler defaultDynFlags $ do
 -- Set up flags...
 s <- newSession (Just ghcBaseDir)
 flags1 <- getSessionDynFlags s
 (flags2, _) <- parseDynamicFlags flags1 ["-cpp"]
 setSessionDynFlags s flags2
 -- Load the module...
 let mod = mkModule (stringToPackageId "base")
                    preludeModName
 target <- guessTarget preludeFileName Nothing
 addTarget s target
 sc <- load s LoadAllTargets
 setContext s [] [mod]
 -- Compile to Core
 ghc_core <- compileToCore s preludeModName preludeFileName
 case ghc_core of
    Just cb -> pprTrace "Core binds: " (ppr cb)
                 return ()
    _      -> putStrLn "error compiling to Core"
------------
So it's not quite as simple as just calling two functions :-) Most of
the incantations here are documented on the "GHC as a library" page on
the wiki, though. I'm happy to take suggestions as to whether any of
the extra code can be incorporated into compileToCore so that the user
doesn't have to invoke it separately; I'm not very familiar with the
GHC API. I also haven't tested the code that extensively, so I'm happy
to fix any bugs that might come up.

Cheers,
Tim

--
Tim Chevalier* catamorphism.org *Often in error, never in doubt
"Nuclear war can ruin your whole compile." -- Karl Lehenbauer

_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to