<!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.Configure</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-Configure.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.Configure</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 deals with the <EM >configure</EM > phase. It provides the <TT ><A HREF="Distribution-Simple-Configure.html#v%3Aconfigure" >configure</A ></TT > action which is given the package description and configure flags. It then tries to: configure the compiler; resolves any conditionals in the package description; resolve the package dependencies; check if all the extensions used by this package are supported by the compiler; check that all the build tools are available (including version checks if appropriate); checks for any required <TT >pkg-config</TT > packages (updating the <TT ><A HREF="Distribution-PackageDescription.html#t%3ABuildInfo" >BuildInfo</A ></TT > with the results) </P ><P >Then based on all this it saves the info in the <TT ><A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</A ></TT > and writes it out to the <TT >dist/setup-config</TT > file. It also displays various details to the user, the amount of information displayed depending on the verbosity level. </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="../base/Data-Either.html#t%3AEither" >Either</A > <A HREF="Distribution-PackageDescription.html#t%3AGenericPackageDescription" >GenericPackageDescription</A > <A HREF="Distribution-PackageDescription.html#t%3APackageDescription" >PackageDescription</A >, <A HREF="Distribution-PackageDescription.html#t%3AHookedBuildInfo" >HookedBuildInfo</A >) -> <A HREF="Distribution-Simple-Setup.html#t%3AConfigFlags" >ConfigFlags</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AwritePersistBuildConfig" >writePersistBuildConfig</A > :: <A HREF="../base/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</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%3AgetPersistBuildConfig" >getPersistBuildConfig</A > :: <A HREF="../base/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AcheckPersistBuildConfig" >checkPersistBuildConfig</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%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%3AmaybeGetPersistBuildConfig" >maybeGetPersistBuildConfig</A > :: <A HREF="../base/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > (<A HREF="../base/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AlocalBuildInfoFile" >localBuildInfoFile</A > :: <A HREF="../base/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="../base/System-IO.html#t%3AFilePath" >FilePath</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%3ACompiler" >Compiler</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="../base/Data-Maybe.html#t%3AMaybe" >Maybe</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%3AconfigDependency" >configDependency</A > :: <A HREF="Distribution-Verbosity.html#t%3AVerbosity" >Verbosity</A > -> <A HREF="Distribution-Simple-PackageIndex.html#t%3APackageIndex" >PackageIndex</A > <A HREF="Distribution-InstalledPackageInfo.html#t%3AInstalledPackageInfo" >InstalledPackageInfo</A > -> <A HREF="Distribution-Package.html#t%3ADependency" >Dependency</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="Distribution-Package.html#t%3APackageIdentifier" >PackageIdentifier</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AconfigCompiler" >configCompiler</A > :: <A HREF="../base/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="Distribution-Compiler.html#t%3ACompilerFlavor" >CompilerFlavor</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="Distribution-Verbosity.html#t%3AVerbosity" >Verbosity</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%3AconfigCompilerAux" >configCompilerAux</A > :: <A HREF="Distribution-Simple-Setup.html#t%3AConfigFlags" >ConfigFlags</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%3AccLdOptionsBuildInfo" >ccLdOptionsBuildInfo</A > :: [<A HREF="../base/Data-Char.html#t%3AString" >String</A >] -> [<A HREF="../base/Data-Char.html#t%3AString" >String</A >] -> <A HREF="Distribution-PackageDescription.html#t%3ABuildInfo" >BuildInfo</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtryGetConfigStateFile" >tryGetConfigStateFile</A > :: <A HREF="../base/Text-Read.html#t%3ARead" >Read</A > a => <A HREF="../base/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > (<A HREF="../base/Data-Either.html#t%3AEither" >Either</A > <A HREF="../base/Data-Char.html#t%3AString" >String</A > a)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AcheckForeignDeps" >checkForeignDeps</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 ></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="../base/Data-Either.html#t%3AEither" >Either</A > <A HREF="Distribution-PackageDescription.html#t%3AGenericPackageDescription" >GenericPackageDescription</A > <A HREF="Distribution-PackageDescription.html#t%3APackageDescription" >PackageDescription</A >, <A HREF="Distribution-PackageDescription.html#t%3AHookedBuildInfo" >HookedBuildInfo</A >) -> <A HREF="Distribution-Simple-Setup.html#t%3AConfigFlags" >ConfigFlags</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</A ></TD ></TR ><TR ><TD CLASS="doc" >Perform the "<TT >./setup configure</TT >" action. Returns the <TT >.setup-config</TT > file. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:writePersistBuildConfig" ><A NAME="v%3AwritePersistBuildConfig" ></A ></A ><B >writePersistBuildConfig</B > :: <A HREF="../base/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</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" >After running configure, output the <TT ><A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</A ></TT > to the <TT ><A HREF="Distribution-Simple-Configure.html#v%3AlocalBuildInfoFile" >localBuildInfoFile</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getPersistBuildConfig" ><A NAME="v%3AgetPersistBuildConfig" ></A ></A ><B >getPersistBuildConfig</B > :: <A HREF="../base/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</A ></TD ></TR ><TR ><TD CLASS="doc" >Read the <TT ><A HREF="Distribution-Simple-Configure.html#v%3AlocalBuildInfoFile" >localBuildInfoFile</A ></TT >. Error if it doesn't exist. Also fail if the file containing LocalBuildInfo is older than the .cabal file, indicating that a re-configure is required. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:checkPersistBuildConfig" ><A NAME="v%3AcheckPersistBuildConfig" ></A ></A ><B >checkPersistBuildConfig</B > :: <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%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="doc" >Check that localBuildInfoFile is up-to-date with respect to the .cabal file. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:maybeGetPersistBuildConfig" ><A NAME="v%3AmaybeGetPersistBuildConfig" ></A ></A ><B >maybeGetPersistBuildConfig</B > :: <A HREF="../base/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > (<A HREF="../base/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="Distribution-Simple-LocalBuildInfo.html#t%3ALocalBuildInfo" >LocalBuildInfo</A >)</TD ></TR ><TR ><TD CLASS="doc" >Try to read the <TT ><A HREF="Distribution-Simple-Configure.html#v%3AlocalBuildInfoFile" >localBuildInfoFile</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:localBuildInfoFile" ><A NAME="v%3AlocalBuildInfoFile" ></A ></A ><B >localBuildInfoFile</B > :: <A HREF="../base/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="../base/System-IO.html#t%3AFilePath" >FilePath</A ></TD ></TR ><TR ><TD CLASS="doc" ><PRE >dist/setup-config</PRE ></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%3ACompiler" >Compiler</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="../base/Data-Maybe.html#t%3AMaybe" >Maybe</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:configDependency" ><A NAME="v%3AconfigDependency" ></A ></A ><B >configDependency</B > :: <A HREF="Distribution-Verbosity.html#t%3AVerbosity" >Verbosity</A > -> <A HREF="Distribution-Simple-PackageIndex.html#t%3APackageIndex" >PackageIndex</A > <A HREF="Distribution-InstalledPackageInfo.html#t%3AInstalledPackageInfo" >InstalledPackageInfo</A > -> <A HREF="Distribution-Package.html#t%3ADependency" >Dependency</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > <A HREF="Distribution-Package.html#t%3APackageIdentifier" >PackageIdentifier</A ></TD ></TR ><TR ><TD CLASS="doc" >Test for a package dependency and record the version we have installed. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:configCompiler" ><A NAME="v%3AconfigCompiler" ></A ></A ><B >configCompiler</B > :: <A HREF="../base/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="Distribution-Compiler.html#t%3ACompilerFlavor" >CompilerFlavor</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="Distribution-Verbosity.html#t%3AVerbosity" >Verbosity</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:configCompilerAux" ><A NAME="v%3AconfigCompilerAux" ></A ></A ><B >configCompilerAux</B > :: <A HREF="Distribution-Simple-Setup.html#t%3AConfigFlags" >ConfigFlags</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:ccLdOptionsBuildInfo" ><A NAME="v%3AccLdOptionsBuildInfo" ></A ></A ><B >ccLdOptionsBuildInfo</B > :: [<A HREF="../base/Data-Char.html#t%3AString" >String</A >] -> [<A HREF="../base/Data-Char.html#t%3AString" >String</A >] -> <A HREF="Distribution-PackageDescription.html#t%3ABuildInfo" >BuildInfo</A ></TD ></TR ><TR ><TD CLASS="doc" ><P >Makes a <TT ><A HREF="Distribution-PackageDescription.html#t%3ABuildInfo" >BuildInfo</A ></TT > from C compiler and linker flags. </P ><P >This can be used with the output from configuration programs like pkg-config and similar package-specific programs like mysql-config, freealut-config etc. For example: </P ><PRE > ccflags <- rawSystemProgramStdoutConf verbosity prog conf ["--cflags"] ldflags <- rawSystemProgramStdoutConf verbosity prog conf ["--libs"] return (ccldOptionsBuildInfo (words ccflags) (words ldflags)) </PRE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tryGetConfigStateFile" ><A NAME="v%3AtryGetConfigStateFile" ></A ></A ><B >tryGetConfigStateFile</B > :: <A HREF="../base/Text-Read.html#t%3ARead" >Read</A > a => <A HREF="../base/System-IO.html#t%3AFilePath" >FilePath</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > (<A HREF="../base/Data-Either.html#t%3AEither" >Either</A > <A HREF="../base/Data-Char.html#t%3AString" >String</A > a)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:checkForeignDeps" ><A NAME="v%3AcheckForeignDeps" ></A ></A ><B >checkForeignDeps</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="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 >