<!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.6.0.3: 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 >There is also some code for generating <TT >Makefiles</TT > but the less said about that the better. </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/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="../base/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="../base/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="../base/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="Distribution-Simple-Program.html#t%3AProgramConfiguration" >ProgramConfiguration</A > -> <A HREF="../base/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%3APackageDB" >PackageDB</A > -> <A HREF="Distribution-Simple-Program.html#t%3AProgramConfiguration" >ProgramConfiguration</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > (<A HREF="Distribution-Simple-PackageIndex.html#t%3APackageIndex" >PackageIndex</A > <A HREF="Distribution-InstalledPackageInfo.html#t%3AInstalledPackageInfo" >InstalledPackageInfo</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Abuild" >build</A > :: <A HREF="Distribution-PackageDescription.html#t%3APackageDescription" >PackageDescription</A > -> <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</A > -> <A HREF="Distribution-Verbosity.html#t%3AVerbosity" >Verbosity</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Amakefile" >makefile</A > :: <A HREF="Distribution-PackageDescription.html#t%3APackageDescription" >PackageDescription</A > -> <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</A > -> <A HREF="Distribution-Simple-Setup.html#t%3AMakefileFlags" >MakefileFlags</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/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/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="../base/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="../base/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="Distribution-PackageDescription.html#t%3APackageDescription" >PackageDescription</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/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/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="Distribution-Simple-InstallDirs.html#t%3AInstallDirs" >InstallDirs</A > <A HREF="../base/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="../base/System-IO.html#t%3AFilePath" >FilePath</A > -> (<A HREF="../base/System-IO.html#t%3AFilePath" >FilePath</A >, <A HREF="../base/System-IO.html#t%3AFilePath" >FilePath</A >) -> <A HREF="Distribution-PackageDescription.html#t%3APackageDescription" >PackageDescription</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</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="../base/System-IO.html#t%3AFilePath" >FilePath</A > -> [<A HREF="../base/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/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/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="../base/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="../base/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="../base/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="Distribution-Simple-Program.html#t%3AProgramConfiguration" >ProgramConfiguration</A > -> <A HREF="../base/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%3APackageDB" >PackageDB</A > -> <A HREF="Distribution-Simple-Program.html#t%3AProgramConfiguration" >ProgramConfiguration</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > (<A HREF="Distribution-Simple-PackageIndex.html#t%3APackageIndex" >PackageIndex</A > <A HREF="Distribution-InstalledPackageInfo.html#t%3AInstalledPackageInfo" >InstalledPackageInfo</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:build" ><A NAME="v%3Abuild" ></A ></A ><B >build</B > :: <A HREF="Distribution-PackageDescription.html#t%3APackageDescription" >PackageDescription</A > -> <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</A > -> <A HREF="Distribution-Verbosity.html#t%3AVerbosity" >Verbosity</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="doc" >Building for GHC. If .ghc-packages exists and is readable, add it to the command-line. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:makefile" ><A NAME="v%3Amakefile" ></A ></A ><B >makefile</B > :: <A HREF="Distribution-PackageDescription.html#t%3APackageDescription" >PackageDescription</A > -> <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</A > -> <A HREF="Distribution-Simple-Setup.html#t%3AMakefileFlags" >MakefileFlags</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></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/System-IO.html#t%3AFilePath" >FilePath</A ></TD ><TD CLASS="rdoc" >install location </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="../base/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/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/System-IO.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/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/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="Distribution-Simple-InstallDirs.html#t%3AInstallDirs" >InstallDirs</A > <A HREF="../base/System-IO.html#t%3AFilePath" >FilePath</A ></TD ><TD CLASS="rdoc" >Where to pretend the files are (i.e. ignores --destdir) </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="../base/System-IO.html#t%3AFilePath" >FilePath</A ></TD ><TD CLASS="rdoc" >Build location </TD ></TR ><TR ><TD CLASS="arg" >-> (<A HREF="../base/System-IO.html#t%3AFilePath" >FilePath</A >, <A HREF="../base/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/System-IO.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/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: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="../base/System-IO.html#t%3AFilePath" >FilePath</A > -> [<A HREF="../base/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/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.4.2</TD ></TR ></TABLE ></BODY ></HTML >