<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!--Rendered using the Haskell Html Library v0.2--> <HTML ><HEAD ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" ><TITLE >DriverPipeline</TITLE ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" ><SCRIPT SRC="haddock-util.js" TYPE="text/javascript" ></SCRIPT ><SCRIPT TYPE="text/javascript" >window.onload = function () {setSynopsis("mini_DriverPipeline.html")};</SCRIPT ></HEAD ><BODY ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="topbar" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title" >ghc-6.12.3: The GHC API</TD ><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD ><TD CLASS="topbut" ><A HREF="doc-index.html" >Index</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="modulebar" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD ><FONT SIZE="6" >DriverPipeline</FONT ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Synopsis</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="#v%3AoneShot" >oneShot</A > :: <A HREF="HscTypes.html#t%3AGhcMonad" >GhcMonad</A > m => <A HREF="HscTypes.html#t%3AHscEnv" >HscEnv</A > -> <A HREF="DriverPhases.html#t%3APhase" >Phase</A > -> [(<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</A >, <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="DriverPhases.html#t%3APhase" >Phase</A >)] -> m <A HREF="../ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AcompileFile" >compileFile</A > :: <A HREF="HscTypes.html#t%3AGhcMonad" >GhcMonad</A > m => <A HREF="HscTypes.html#t%3AHscEnv" >HscEnv</A > -> <A HREF="DriverPhases.html#t%3APhase" >Phase</A > -> (<A HREF="../base-4.2.0.2/System-IO.html#t%3AFilePath" >FilePath</A >, <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="DriverPhases.html#t%3APhase" >Phase</A >) -> m <A HREF="../base-4.2.0.2/System-IO.html#t%3AFilePath" >FilePath</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AlinkBinary" >linkBinary</A > :: <A HREF="DynFlags.html#t%3ADynFlags" >DynFlags</A > -> [<A HREF="../base-4.2.0.2/System-IO.html#t%3AFilePath" >FilePath</A >] -> [<A HREF="Module.html#t%3APackageId" >PackageId</A >] -> <A HREF="../base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > <A HREF="../ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Apreprocess" >preprocess</A > :: <A HREF="HscTypes.html#t%3AGhcMonad" >GhcMonad</A > m => <A HREF="HscTypes.html#t%3AHscEnv" >HscEnv</A > -> (<A HREF="../base-4.2.0.2/System-IO.html#t%3AFilePath" >FilePath</A >, <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="DriverPhases.html#t%3APhase" >Phase</A >) -> m (<A HREF="DynFlags.html#t%3ADynFlags" >DynFlags</A >, <A HREF="../base-4.2.0.2/System-IO.html#t%3AFilePath" >FilePath</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Acompile" >compile</A > :: <A HREF="HscTypes.html#t%3AGhcMonad" >GhcMonad</A > m => <A HREF="HscTypes.html#t%3AHscEnv" >HscEnv</A > -> <A HREF="HscTypes.html#t%3AModSummary" >ModSummary</A > -> <A HREF="../base-4.2.0.2/Data-Int.html#t%3AInt" >Int</A > -> <A HREF="../base-4.2.0.2/Data-Int.html#t%3AInt" >Int</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="HscTypes.html#t%3AModIface" >ModIface</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="HscTypes.html#t%3ALinkable" >Linkable</A > -> m <A HREF="HscTypes.html#t%3AHomeModInfo" >HomeModInfo</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Acompile%27" >compile'</A > :: <A HREF="HscTypes.html#t%3AGhcMonad" >GhcMonad</A > m => (Compiler m (<A HREF="HscMain.html#t%3AHscStatus" >HscStatus</A >, <A HREF="HscTypes.html#t%3AModIface" >ModIface</A >, <A HREF="HscTypes.html#t%3AModDetails" >ModDetails</A >), Compiler m (<A HREF="HscMain.html#t%3AInteractiveStatus" >InteractiveStatus</A >, <A HREF="HscTypes.html#t%3AModIface" >ModIface</A >, <A HREF="HscTypes.html#t%3AModDetails" >ModDetails</A >), Compiler m (<A HREF="HscMain.html#t%3AHscStatus" >HscStatus</A >, <A HREF="HscTypes.html#t%3AModIface" >ModIface</A >, <A HREF="HscTypes.html#t%3AModDetails" >ModDetails</A >)) -> <A HREF="HscTypes.html#t%3AHscEnv" >HscEnv</A > -> <A HREF="HscTypes.html#t%3AModSummary" >ModSummary</A > -> <A HREF="../base-4.2.0.2/Data-Int.html#t%3AInt" >Int</A > -> <A HREF="../base-4.2.0.2/Data-Int.html#t%3AInt" >Int</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="HscTypes.html#t%3AModIface" >ModIface</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="HscTypes.html#t%3ALinkable" >Linkable</A > -> m <A HREF="HscTypes.html#t%3AHomeModInfo" >HomeModInfo</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Alink" >link</A > :: <A HREF="DynFlags.html#t%3AGhcLink" >GhcLink</A > -> <A HREF="DynFlags.html#t%3ADynFlags" >DynFlags</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A > -> <A HREF="HscTypes.html#t%3AHomePackageTable" >HomePackageTable</A > -> <A HREF="../base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > <A HREF="BasicTypes.html#t%3ASuccessFlag" >SuccessFlag</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Documentation</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:oneShot" ><A NAME="v%3AoneShot" ></A ></A ><B >oneShot</B > :: <A HREF="HscTypes.html#t%3AGhcMonad" >GhcMonad</A > m => <A HREF="HscTypes.html#t%3AHscEnv" >HscEnv</A > -> <A HREF="DriverPhases.html#t%3APhase" >Phase</A > -> [(<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</A >, <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="DriverPhases.html#t%3APhase" >Phase</A >)] -> m <A HREF="../ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:compileFile" ><A NAME="v%3AcompileFile" ></A ></A ><B >compileFile</B > :: <A HREF="HscTypes.html#t%3AGhcMonad" >GhcMonad</A > m => <A HREF="HscTypes.html#t%3AHscEnv" >HscEnv</A > -> <A HREF="DriverPhases.html#t%3APhase" >Phase</A > -> (<A HREF="../base-4.2.0.2/System-IO.html#t%3AFilePath" >FilePath</A >, <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="DriverPhases.html#t%3APhase" >Phase</A >) -> m <A HREF="../base-4.2.0.2/System-IO.html#t%3AFilePath" >FilePath</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:linkBinary" ><A NAME="v%3AlinkBinary" ></A ></A ><B >linkBinary</B > :: <A HREF="DynFlags.html#t%3ADynFlags" >DynFlags</A > -> [<A HREF="../base-4.2.0.2/System-IO.html#t%3AFilePath" >FilePath</A >] -> [<A HREF="Module.html#t%3APackageId" >PackageId</A >] -> <A HREF="../base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > <A HREF="../ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:preprocess" ><A NAME="v%3Apreprocess" ></A ></A ><B >preprocess</B ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="arg" >:: <A HREF="HscTypes.html#t%3AGhcMonad" >GhcMonad</A > m</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" >=> <A HREF="HscTypes.html#t%3AHscEnv" >HscEnv</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" >-> (<A HREF="../base-4.2.0.2/System-IO.html#t%3AFilePath" >FilePath</A >, <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="DriverPhases.html#t%3APhase" >Phase</A >)</TD ><TD CLASS="rdoc" >filename and starting phase </TD ></TR ><TR ><TD CLASS="arg" >-> m (<A HREF="DynFlags.html#t%3ADynFlags" >DynFlags</A >, <A HREF="../base-4.2.0.2/System-IO.html#t%3AFilePath" >FilePath</A >)</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="ndoc" COLSPAN="2" ><P >Just preprocess a file, put the result in a temp. file (used by the compilation manager during the summary phase). </P ><P >We return the augmented DynFlags, because they contain the result of slurping in the OPTIONS pragmas </P ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:compile" ><A NAME="v%3Acompile" ></A ></A ><B >compile</B ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="arg" >:: <A HREF="HscTypes.html#t%3AGhcMonad" >GhcMonad</A > m</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" >=> <A HREF="HscTypes.html#t%3AHscEnv" >HscEnv</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="HscTypes.html#t%3AModSummary" >ModSummary</A ></TD ><TD CLASS="rdoc" >summary for module being compiled </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="../base-4.2.0.2/Data-Int.html#t%3AInt" >Int</A ></TD ><TD CLASS="rdoc" >module N ... </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="../base-4.2.0.2/Data-Int.html#t%3AInt" >Int</A ></TD ><TD CLASS="rdoc" >... of M </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="HscTypes.html#t%3AModIface" >ModIface</A ></TD ><TD CLASS="rdoc" >old interface, if we have one </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="HscTypes.html#t%3ALinkable" >Linkable</A ></TD ><TD CLASS="rdoc" >old linkable, if we have one </TD ></TR ><TR ><TD CLASS="arg" >-> m <A HREF="HscTypes.html#t%3AHomeModInfo" >HomeModInfo</A ></TD ><TD CLASS="rdoc" >the complete HomeModInfo, if successful </TD ></TR ><TR ><TD CLASS="ndoc" COLSPAN="2" ><P >Compile </P ><P >Compile a single module, under the control of the compilation manager. </P ><P >This is the interface between the compilation manager and the compiler proper (hsc), where we deal with tedious details like reading the OPTIONS pragma from the source file, and passing the output of hsc through the C compiler. </P ><P >NB. No old interface can also mean that the source has changed. </P ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:compile'" ><A NAME="v%3Acompile%27" ></A ></A ><B >compile'</B ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="arg" >:: <A HREF="HscTypes.html#t%3AGhcMonad" >GhcMonad</A > m</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" >=> (Compiler m (<A HREF="HscMain.html#t%3AHscStatus" >HscStatus</A >, <A HREF="HscTypes.html#t%3AModIface" >ModIface</A >, <A HREF="HscTypes.html#t%3AModDetails" >ModDetails</A >), Compiler m (<A HREF="HscMain.html#t%3AInteractiveStatus" >InteractiveStatus</A >, <A HREF="HscTypes.html#t%3AModIface" >ModIface</A >, <A HREF="HscTypes.html#t%3AModDetails" >ModDetails</A >), Compiler m (<A HREF="HscMain.html#t%3AHscStatus" >HscStatus</A >, <A HREF="HscTypes.html#t%3AModIface" >ModIface</A >, <A HREF="HscTypes.html#t%3AModDetails" >ModDetails</A >))</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="HscTypes.html#t%3AHscEnv" >HscEnv</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="HscTypes.html#t%3AModSummary" >ModSummary</A ></TD ><TD CLASS="rdoc" >summary for module being compiled </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="../base-4.2.0.2/Data-Int.html#t%3AInt" >Int</A ></TD ><TD CLASS="rdoc" >module N ... </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="../base-4.2.0.2/Data-Int.html#t%3AInt" >Int</A ></TD ><TD CLASS="rdoc" >... of M </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="HscTypes.html#t%3AModIface" >ModIface</A ></TD ><TD CLASS="rdoc" >old interface, if we have one </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="HscTypes.html#t%3ALinkable" >Linkable</A ></TD ><TD CLASS="rdoc" >old linkable, if we have one </TD ></TR ><TR ><TD CLASS="arg" >-> m <A HREF="HscTypes.html#t%3AHomeModInfo" >HomeModInfo</A ></TD ><TD CLASS="rdoc" >the complete HomeModInfo, if successful </TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:link" ><A NAME="v%3Alink" ></A ></A ><B >link</B > :: <A HREF="DynFlags.html#t%3AGhcLink" >GhcLink</A > -> <A HREF="DynFlags.html#t%3ADynFlags" >DynFlags</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A > -> <A HREF="HscTypes.html#t%3AHomePackageTable" >HomePackageTable</A > -> <A HREF="../base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > <A HREF="BasicTypes.html#t%3ASuccessFlag" >SuccessFlag</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="botbar" >Produced by <A HREF="http://www.haskell.org/haddock/" >Haddock</A > version 2.6.1</TD ></TR ></TABLE ></BODY ></HTML >