<!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 >Distribution.Simple.GHC</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_Distribution-Simple-GHC.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" >Cabal-1.8.0.6: A framework for packaging Haskell software</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" >Distribution.Simple.GHC</FONT ></TD ><TD ALIGN="right" ><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="infohead" >Portability</TD ><TD CLASS="infoval" >portable</TD ></TR ><TR ><TD CLASS="infohead" >Maintainer</TD ><TD CLASS="infoval" >cabal-devel@haskell.org</TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Description</TD ></TR ><TR ><TD CLASS="doc" ><P >This is a fairly large module. It contains most of the GHC-specific code for configuring, building and installing packages. It also exports a function for finding out what packages are already installed. Configuring involves finding the <TT >ghc</TT > and <TT >ghc-pkg</TT > programs, finding what language extensions this version of ghc supports and returning a <TT ><A HREF="Distribution-Simple-Compiler.html#t%3ACompiler" >Compiler</A ></TT > value. </P ><P ><TT ><A HREF="Distribution-Simple-GHC.html#v%3AgetInstalledPackages" >getInstalledPackages</A ></TT > involves calling the <TT >ghc-pkg</TT > program to find out what packages are installed. </P ><P >Building is somewhat complex as there is quite a bit of information to take into account. We have to build libs and programs, possibly for profiling and shared libs. We have to support building libraries that will be usable by GHCi and also ghc's <TT >-split-objs</TT > feature. We have to compile any C files using ghc. Linking, especially for <TT >split-objs</TT > is remarkably complex, partly because there tend to be 1,000's of <TT >.o</TT > files and this can often be more than we can pass to the <TT >ld</TT > or <TT >ar</TT > programs in one go. </P ><P >Installing for libs and exes involves finding the right files and copying them to the right places. One of the more tricky things about this module is remembering the layout of files in the build directory (which is not explicitly documented) and thus what search dirs are used for various kinds of files. </P ></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%3Aconfigure" >configure</A > :: <A HREF="Distribution-Verbosity.html#t%3AVerbosity" >Verbosity</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</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="../base-4.2.0.2/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="Distribution-Simple-Program.html#t%3AProgramConfiguration" >ProgramConfiguration</A > -> <A HREF="../base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > (<A HREF="Distribution-Simple-Compiler.html#t%3ACompiler" >Compiler</A >, <A HREF="Distribution-Simple-Program.html#t%3AProgramConfiguration" >ProgramConfiguration</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetInstalledPackages" >getInstalledPackages</A > :: <A HREF="Distribution-Verbosity.html#t%3AVerbosity" >Verbosity</A > -> <A HREF="Distribution-Simple-Compiler.html#t%3APackageDBStack" >PackageDBStack</A > -> <A HREF="Distribution-Simple-Program.html#t%3AProgramConfiguration" >ProgramConfiguration</A > -> <A HREF="../base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > <A HREF="Distribution-Simple-PackageIndex.html#t%3APackageIndex" >PackageIndex</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AbuildLib" >buildLib</A > :: <A HREF="Distribution-Verbosity.html#t%3AVerbosity" >Verbosity</A > -> <A HREF="Distribution-PackageDescription.html#t%3APackageDescription" >PackageDescription</A > -> <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</A > -> <A HREF="Distribution-PackageDescription.html#t%3ALibrary" >Library</A > -> <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3AComponentLocalBuildInfo" >ComponentLocalBuildInfo</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%3AbuildExe" >buildExe</A > :: <A HREF="Distribution-Verbosity.html#t%3AVerbosity" >Verbosity</A > -> <A HREF="Distribution-PackageDescription.html#t%3APackageDescription" >PackageDescription</A > -> <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</A > -> <A HREF="Distribution-PackageDescription.html#t%3AExecutable" >Executable</A > -> <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3AComponentLocalBuildInfo" >ComponentLocalBuildInfo</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%3AinstallLib" >installLib</A > :: <A HREF="Distribution-Simple-Setup.html#t%3ACopyFlags" >CopyFlags</A > -> <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</A > -> <A HREF="../base-4.2.0.2/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="../base-4.2.0.2/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="../base-4.2.0.2/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="Distribution-PackageDescription.html#t%3APackageDescription" >PackageDescription</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%3AinstallExe" >installExe</A > :: <A HREF="Distribution-Simple-Setup.html#t%3ACopyFlags" >CopyFlags</A > -> <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</A > -> <A HREF="Distribution-Simple-InstallDirs.html#t%3AInstallDirs" >InstallDirs</A > <A HREF="../base-4.2.0.2/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="../base-4.2.0.2/System-IO.html#t%3AFilePath" >FilePath</A > -> (<A HREF="../base-4.2.0.2/System-IO.html#t%3AFilePath" >FilePath</A >, <A HREF="../base-4.2.0.2/System-IO.html#t%3AFilePath" >FilePath</A >) -> <A HREF="Distribution-PackageDescription.html#t%3APackageDescription" >PackageDescription</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%3AlibAbiHash" >libAbiHash</A > :: <A HREF="Distribution-Verbosity.html#t%3AVerbosity" >Verbosity</A > -> <A HREF="Distribution-PackageDescription.html#t%3APackageDescription" >PackageDescription</A > -> <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</A > -> <A HREF="Distribution-PackageDescription.html#t%3ALibrary" >Library</A > -> <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3AComponentLocalBuildInfo" >ComponentLocalBuildInfo</A > -> <A HREF="../base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AghcOptions" >ghcOptions</A > :: <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</A > -> <A HREF="Distribution-PackageDescription.html#t%3ABuildInfo" >BuildInfo</A > -> <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3AComponentLocalBuildInfo" >ComponentLocalBuildInfo</A > -> <A HREF="../base-4.2.0.2/System-IO.html#t%3AFilePath" >FilePath</A > -> [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</A >]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AghcVerbosityOptions" >ghcVerbosityOptions</A > :: <A HREF="Distribution-Verbosity.html#t%3AVerbosity" >Verbosity</A > -> [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</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:configure" ><A NAME="v%3Aconfigure" ></A ></A ><B >configure</B > :: <A HREF="Distribution-Verbosity.html#t%3AVerbosity" >Verbosity</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</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="../base-4.2.0.2/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="Distribution-Simple-Program.html#t%3AProgramConfiguration" >ProgramConfiguration</A > -> <A HREF="../base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > (<A HREF="Distribution-Simple-Compiler.html#t%3ACompiler" >Compiler</A >, <A HREF="Distribution-Simple-Program.html#t%3AProgramConfiguration" >ProgramConfiguration</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getInstalledPackages" ><A NAME="v%3AgetInstalledPackages" ></A ></A ><B >getInstalledPackages</B > :: <A HREF="Distribution-Verbosity.html#t%3AVerbosity" >Verbosity</A > -> <A HREF="Distribution-Simple-Compiler.html#t%3APackageDBStack" >PackageDBStack</A > -> <A HREF="Distribution-Simple-Program.html#t%3AProgramConfiguration" >ProgramConfiguration</A > -> <A HREF="../base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > <A HREF="Distribution-Simple-PackageIndex.html#t%3APackageIndex" >PackageIndex</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:buildLib" ><A NAME="v%3AbuildLib" ></A ></A ><B >buildLib</B > :: <A HREF="Distribution-Verbosity.html#t%3AVerbosity" >Verbosity</A > -> <A HREF="Distribution-PackageDescription.html#t%3APackageDescription" >PackageDescription</A > -> <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</A > -> <A HREF="Distribution-PackageDescription.html#t%3ALibrary" >Library</A > -> <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3AComponentLocalBuildInfo" >ComponentLocalBuildInfo</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="doc" >Build a library with GHC. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:buildExe" ><A NAME="v%3AbuildExe" ></A ></A ><B >buildExe</B > :: <A HREF="Distribution-Verbosity.html#t%3AVerbosity" >Verbosity</A > -> <A HREF="Distribution-PackageDescription.html#t%3APackageDescription" >PackageDescription</A > -> <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</A > -> <A HREF="Distribution-PackageDescription.html#t%3AExecutable" >Executable</A > -> <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3AComponentLocalBuildInfo" >ComponentLocalBuildInfo</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="doc" >Build an executable with GHC. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:installLib" ><A NAME="v%3AinstallLib" ></A ></A ><B >installLib</B ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="arg" >:: <A HREF="Distribution-Simple-Setup.html#t%3ACopyFlags" >CopyFlags</A ></TD ><TD CLASS="rdoc" >verbosity </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</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 ></TD ><TD CLASS="rdoc" >install location </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="../base-4.2.0.2/System-IO.html#t%3AFilePath" >FilePath</A ></TD ><TD CLASS="rdoc" >install location for dynamic librarys </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="../base-4.2.0.2/System-IO.html#t%3AFilePath" >FilePath</A ></TD ><TD CLASS="rdoc" >Build location </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="Distribution-PackageDescription.html#t%3APackageDescription" >PackageDescription</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" >-> <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 ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="ndoc" COLSPAN="2" >Install for ghc, .hi, .a and, if --with-ghci given, .o </TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:installExe" ><A NAME="v%3AinstallExe" ></A ></A ><B >installExe</B ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="arg" >:: <A HREF="Distribution-Simple-Setup.html#t%3ACopyFlags" >CopyFlags</A ></TD ><TD CLASS="rdoc" >verbosity </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="Distribution-Simple-InstallDirs.html#t%3AInstallDirs" >InstallDirs</A > <A HREF="../base-4.2.0.2/System-IO.html#t%3AFilePath" >FilePath</A ></TD ><TD CLASS="rdoc" >Where to copy the files to </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="../base-4.2.0.2/System-IO.html#t%3AFilePath" >FilePath</A ></TD ><TD CLASS="rdoc" >Build location </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/System-IO.html#t%3AFilePath" >FilePath</A >)</TD ><TD CLASS="rdoc" >Executable (prefix,suffix) </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="Distribution-PackageDescription.html#t%3APackageDescription" >PackageDescription</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" >-> <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 ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="ndoc" COLSPAN="2" >Install executables for GHC. </TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:libAbiHash" ><A NAME="v%3AlibAbiHash" ></A ></A ><B >libAbiHash</B > :: <A HREF="Distribution-Verbosity.html#t%3AVerbosity" >Verbosity</A > -> <A HREF="Distribution-PackageDescription.html#t%3APackageDescription" >PackageDescription</A > -> <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</A > -> <A HREF="Distribution-PackageDescription.html#t%3ALibrary" >Library</A > -> <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3AComponentLocalBuildInfo" >ComponentLocalBuildInfo</A > -> <A HREF="../base-4.2.0.2/System-IO.html#t%3AIO" >IO</A > <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="doc" >Extracts a String representing a hash of the ABI of a built library. It can fail if the library has not yet been built. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:ghcOptions" ><A NAME="v%3AghcOptions" ></A ></A ><B >ghcOptions</B > :: <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</A > -> <A HREF="Distribution-PackageDescription.html#t%3ABuildInfo" >BuildInfo</A > -> <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3AComponentLocalBuildInfo" >ComponentLocalBuildInfo</A > -> <A HREF="../base-4.2.0.2/System-IO.html#t%3AFilePath" >FilePath</A > -> [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</A >]</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:ghcVerbosityOptions" ><A NAME="v%3AghcVerbosityOptions" ></A ></A ><B >ghcVerbosityOptions</B > :: <A HREF="Distribution-Verbosity.html#t%3AVerbosity" >Verbosity</A > -> [<A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</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 >