Cabal
CopyrightIsaac Jones 2003-2005
Ross Paterson 2006
Duncan Coutts 2007-2008 2012
LicenseBSD3
Maintainercabal-devel@haskell.org
Portabilityportable
Safe HaskellSafe-Inferred
LanguageHaskell2010

Distribution.Simple.Build

Description

This is the entry point to actually building the modules in a package. It doesn't actually do much itself, most of the work is delegated to compiler-specific actions. It does do some non-compiler specific bits like running pre-processors.

Synopsis

Build

build Source #

Arguments

:: PackageDescription

Mostly information from the .cabal file

-> LocalBuildInfo

Configuration information

-> BuildFlags

Flags that the user passed to build

-> [PPSuffixHandler]

preprocessors to run before compiling

-> IO () 

Build the libraries and executables in this package.

build_setupHooks Source #

Arguments

:: BuildHooks 
-> PackageDescription

Mostly information from the .cabal file

-> LocalBuildInfo

Configuration information

-> BuildFlags

Flags that the user passed to build

-> [PPSuffixHandler]

preprocessors to run before compiling

-> IO () 

Repl

repl Source #

Arguments

:: PackageDescription

Mostly information from the .cabal file

-> LocalBuildInfo

Configuration information

-> ReplFlags

Flags that the user passed to build

-> [PPSuffixHandler]

preprocessors to run before compiling

-> [String] 
-> IO () 

repl_setupHooks Source #

Arguments

:: BuildHooks

build hook

-> PackageDescription

Mostly information from the .cabal file

-> LocalBuildInfo

Configuration information

-> ReplFlags

Flags that the user passed to build

-> [PPSuffixHandler]

preprocessors to run before compiling

-> [String] 
-> IO () 

startInterpreter :: Verbosity -> ProgramDb -> Compiler -> Platform -> PackageDBStack -> IO () Source #

Start an interpreter without loading any package files.

Build preparation

preBuildComponent Source #

Arguments

:: (LocalBuildInfo -> TargetInfo -> IO ())

pre-build hook

-> Verbosity 
-> LocalBuildInfo

Configuration information

-> TargetInfo 
-> IO () 

Creates the autogenerated files for a particular configured component, and runs the pre-build hook.

type AutogenFileContents = ByteString Source #

A representation of the contents of an autogenerated file.

writeBuiltinAutogenFiles :: Verbosity -> PackageDescription -> LocalBuildInfo -> ComponentLocalBuildInfo -> IO () Source #

Generate and write to disk all built-in autogenerated files for the specified component. These files will be put in the autogenerated module directory for this component (see autogenComponentsModuleDir).

This includes:

  • Paths_pkg.hs,
  • PackageInfo_pkg.hs,
  • Backpack signature files for components that are not fully instantiated,
  • cabal_macros.h.

writeAutogenFiles :: Verbosity -> LocalBuildInfo -> ComponentLocalBuildInfo -> Map AutogenFile AutogenFileContents -> IO () Source #

Write the given autogenerated files in the autogenerated modules directory for the component.

Legacy functions

componentInitialBuildSteps Source #

Arguments

:: FilePath

"dist" prefix

-> PackageDescription

mostly information from the .cabal file

-> LocalBuildInfo

Configuration information

-> ComponentLocalBuildInfo

Build info about the component

-> Verbosity

The verbosity to use

-> IO () 

Deprecated: This function does not prepare all source files for a component. Suggestion: use 'Setup repl compName --repl-multi-file=fn'.

Creates the autogenerated files for a particular configured component.

Legacy function: does not run pre-build hooks or pre-processors. This function is insufficient on its own to prepare the build for a component.

Consumers wanting to prepare the sources of a component, e.g. in order to launch a REPL session, are advised to run Setup repl compName --repl-multi-file=fn instead.

initialBuildSteps Source #

Arguments

:: FilePath

"dist" prefix

-> PackageDescription

mostly information from the .cabal file

-> LocalBuildInfo

Configuration information

-> Verbosity

The verbosity to use

-> IO () 

Deprecated: This function does not prepare all source files for a package. Suggestion: use 'Setup repl --repl-multi-file=fn'.

Runs componentInitialBuildSteps on every configured component.

Legacy function: does not run pre-build hooks or pre-processors. This function is insufficient on its own to prepare the build for a package.

Consumers wanting to prepare the sources of a package, e.g. in order to launch a REPL session, are advised to run Setup repl --repl-multi-file=fn instead.

Internal package database creation

createInternalPackageDB :: Verbosity -> LocalBuildInfo -> SymbolicPath Pkg (Dir Dist) -> IO PackageDB Source #

Initialize a new package db file for libraries defined internally to the package.

Handling of internal build tools

addInternalBuildTools :: PackageDescription -> LocalBuildInfo -> BuildInfo -> ProgramDb -> ProgramDb Source #

Update the program database to include any build-tool-depends specified in the given BuildInfo on build tools internal to the current package.

This function:

  • adds these internal build tools to the ProgramDb, including paths to their respective data directories,
  • adds their paths to the current progSearchPath, and adds the data directory environment variable for the current package to the current progOverrideEnv, so that any programs configured from now on will be able to invoke these build tools.