Cabal-3.12.1.0: A framework for packaging Haskell software
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.

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 () 

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

Start an interpreter without loading any package files.

Build preparation

preBuildComponent Source #

Arguments

:: Verbosity 
-> LocalBuildInfo

Configuration information

-> TargetInfo 
-> IO () 

Pre-build steps for a component: creates the autogenerated files for a particular configured component.

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 -> FilePath -> IO PackageDB Source #

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