# 10. Field Syntax Reference

## 10.1. Notation

Field syntax is described as they are in the latest cabal file format version.

- terminals are enclosed in quotes and type set in typewriter script:

  \[\mathord{"}\mathtt{example}\mathord{"}\]

- non-terminals are type set in italic:

  \[\mathit{version\text-range}\]

- character sets are type set resembling regular expression notation:

  \[[ \mathord{"}\mathtt{1}\mathord{"} \cdots \mathord{"}\mathtt{9}\mathord{"} ]\]

  Character set complements have \(c\) superscript:

  \[[ \mathord{"}\mathtt{1}\mathord{"} \cdots \mathord{"}\mathtt{9}\mathord{"} ]^c\]

- repetition is type set using regular expression inspired notation. Superscripts tell how many time to repeat: The generic notation is \(\in[n\ldots5]\), however there are common shorthands: \(\ast\) for \(\in[0\ldots\infty]\) (`many`), \(+\) for \(\in[1\ldots\infty]\) (`some`), \(?\) for \(\in[0\ldots1]\) (`optional`).

  Subscripts tell the used separator:

  \[\mathit{digit}^+_{\mathord{"}\mathtt{.}\mathord{"}}\]

  Would be `digit(\.digit)*` in common regex syntax.

- alternatives are listed in braces separated by vertical bar:

  \[\{ \mathit{foo} \mid \mathit{bar} \}\]

  In case of multiple alternatives, the stacked notation is used

  \[\begin{split}\left\{\begin{gathered} \mathit{one} \\ \mathit{two} \\ \mathit{three} \\ \mathit{four} \\ \mathit{five} \end{gathered}\right\}\end{split}\]

- parenthesis are used only for grouping:

  \[\left(\mathit{foo} \mid \mathit{bar}\right)^+\]

- any amount of spaces, and at least single space are type set using \(\circ\) and \(\bullet\) respectively. They may appear standalone, not only as binary operators.

  \[\mathit{module} \bullet \mathord{``}\mathtt{as}\mathord{"} \bullet \mathit{module}\]

- While notation is heavily regular expression inspired, there are also fixed points, which allow represent recursive grammars

  \[\mathbf{fix}\; \mathit{expr}\; \mathbf{in}\; \mathit{digit} \mid \mathit{expr} \circ \mathord{``}\mathtt{+}\mathord{"} \circ \mathit{expr} \mid \mathord{``}\mathtt{(} \mathord{"} \circ \mathit{expr} \circ \mathord{``}\mathtt{)}\mathord{"}\]

## 10.2. Lists

Many fields in cabal file format are lists. There are three variations:

Space separated

  Are used for lists of things with simple grammars, for example `ghc-options`

  \[{\mathop{\mathit{element}}}^\ast_{\bullet}\]
Comma separated

  Are used for lists of things with complicated grammars, for example `build-depends` There can be leading or trailing comma (but not both) since `cabal-version: 2.2`. Note, the comma cannot exist alone.

  \[\mathrm{commalist}(\mathit{element}) = \left\{ {\mathop{\mathit{element}}}^\ast_{\left(\circ\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}\circ\right)}\mid\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}\circ{\mathop{\mathit{element}}}^+_{\left(\circ\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}\circ\right)}\mid{\mathop{\mathit{element}}}^+_{\left(\circ\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}\circ\right)}\circ\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}} \right\}\]
Optional comma separated

  Surprisingly many fields can have optional comma separator. Since `cabal-version: 3.0` comma usage have to be consistent, in other words either used everywhere or nowhere. It’s recommended to avoid using comma in these fields, an example field is `default-extensions`.

  \[\begin{split}\mathrm{optcommalist}(\mathit{element}) = \left\{ \begin{gathered}{\mathop{\mathit{element}}}^\ast_{\bullet}\\{\mathop{\mathit{element}}}^\ast_{\left(\circ\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}\circ\right)}\\\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}\circ{\mathop{\mathit{element}}}^+_{\left(\circ\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}\circ\right)}\\{\mathop{\mathit{element}}}^+_{\left(\circ\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}\circ\right)}\circ\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}\end{gathered} \right\}\end{split}\]

## 10.3. Non-terminals

In the syntax definitions below the following non-terminal symbols are used:

hs-string

  String as in Haskell; it’s recommended to avoid using Haskell-specific escapes.

  \[\begin{split}\mathop{\mathord{``}\mathtt{\text{"}}\mathord{"}}{\left\{ {[\mathop{\mathord{``}\mathtt{\text{"}}\mathord{"}}\mathop{\mathord{``}\mathtt{\text{\\}}\mathord{"}}]^c}\mid\left\{ \begin{gathered}\mathop{\mathord{``}\mathtt{\text{\\}\text{&}}\mathord{"}}\\\mathop{\mathord{``}\mathtt{\text{\\}\text{\\}}\mathord{"}}\\\left\{ \mathop{\mathord{``}\mathtt{\text{\\}n}\mathord{"}}\mid\mathop{\mathit{escapes}} \right\}\\\mathop{\mathord{``}\mathtt{\text{\\}}\mathord{"}}[\mathop{\mathord{``}\mathtt{0}\mathord{"}}\cdots\mathop{\mathord{``}\mathtt{9}\mathord{"}}]\\\mathop{\mathord{``}\mathtt{\text{\\}o}\mathord{"}}[\mathop{\mathord{``}\mathtt{0}\mathord{"}}\cdots\mathop{\mathord{``}\mathtt{7}\mathord{"}}]\\\mathop{\mathord{``}\mathtt{\text{\\}x}\mathord{"}}[\mathop{\mathord{``}\mathtt{0}\mathord{"}}\cdots\mathop{\mathord{``}\mathtt{9}\mathord{"}}\mathop{\mathord{``}\mathtt{A}\mathord{"}}\cdots\mathop{\mathord{``}\mathtt{F}\mathord{"}}\mathop{\mathord{``}\mathtt{a}\mathord{"}}\cdots\mathop{\mathord{``}\mathtt{f}\mathord{"}}]\\\left\{ \mathop{\mathord{``}\mathtt{\text{\\}\text{^}\text{@}}\mathord{"}}\mid\mathop{\mathit{control}} \right\}\\\left\{ \mathop{\mathord{``}\mathtt{\text{\\}NUL}\mathord{"}}\mid\mathop{\mathit{ascii}} \right\}\end{gathered} \right\} \right\}}^\ast_{}\mathop{\mathord{``}\mathtt{\text{"}}\mathord{"}}\end{split}\]
unqual-name

  Unqualified component names are used for package names, component names etc. but not flag names. Unqualified component name consist of components separated by dash, each component is non-empty alphanumeric string, with at least one alphabetic character. In other words, component may not look like a number.

  \[{\left({\mathop{\mathit{alpha\text{-}num}}}^\ast_{}\mathop{\mathit{alpha}}{\mathop{\mathit{alpha\text{-}num}}}^\ast_{}\right)}^+_{\mathop{\mathord{``}\mathtt{\text{-}}\mathord{"}}}\]
module-name

  Haskell module name as recognized by Cabal parser.

  \[{\left(\mathop{\mathit{upper}}{\left\{ \mathop{\mathit{alpha\text{-}num}}\mid[\mathop{\mathord{``}\mathtt{\text{'}}\mathord{"}}\mathop{\mathord{``}\mathtt{\text{_}}\mathord{"}}] \right\}}^\ast_{}\right)}^+_{\mathop{\mathord{``}\mathtt{\text{.}}\mathord{"}}}\]
version

  Version is to first approximation numbers separated by dots, where leading zero is not allowed and each version digit is consists at most of nine characters.

  \[{\left\{ \mathop{\mathord{``}\mathtt{0}\mathord{"}}\mid[\mathop{\mathord{``}\mathtt{1}\mathord{"}}\cdots\mathop{\mathord{``}\mathtt{9}\mathord{"}}]{[\mathop{\mathord{``}\mathtt{0}\mathord{"}}\cdots\mathop{\mathord{``}\mathtt{9}\mathord{"}}]}^{\in [0\ldots8]}_{} \right\}}^+_{\mathop{\mathord{``}\mathtt{\text{.}}\mathord{"}}}\]
version-range

  Version range syntax is recursive. Also note the set syntax added in `cabal-version: 3.0`, set cannot be empty.

  \[\begin{split}\mathbf{fix}\;\mathop{\mathit{version\text{-}range}}\;\mathbf{in}\;\left\{ \begin{gathered}\mathop{\mathord{``}\mathtt{\text{=}\text{=}}\mathord{"}}\circ\mathop{\mathit{version}}\\\mathop{\mathord{``}\mathtt{\text{>}}\mathord{"}}\circ\mathop{\mathit{version}}\\\mathop{\mathord{``}\mathtt{\text{<}}\mathord{"}}\circ\mathop{\mathit{version}}\\\mathop{\mathord{``}\mathtt{\text{<}\text{=}}\mathord{"}}\circ\mathop{\mathit{version}}\\\mathop{\mathord{``}\mathtt{\text{>}\text{=}}\mathord{"}}\circ\mathop{\mathit{version}}\\\mathop{\mathord{``}\mathtt{\text{^}\text{>}\text{=}}\mathord{"}}\circ\mathop{\mathit{version}}\\\mathop{\mathord{``}\mathtt{\text{=}\text{=}}\mathord{"}}\circ{\left\{ \mathop{\mathord{``}\mathtt{0}\mathord{"}}\mid[\mathop{\mathord{``}\mathtt{1}\mathord{"}}\cdots\mathop{\mathord{``}\mathtt{9}\mathord{"}}]{[\mathop{\mathord{``}\mathtt{0}\mathord{"}}\cdots\mathop{\mathord{``}\mathtt{9}\mathord{"}}]}^{\in [0\ldots8]}_{} \right\}}^+_{\mathop{\mathord{``}\mathtt{\text{.}}\mathord{"}}}\mathop{\mathord{``}\mathtt{\text{.}\text{*}}\mathord{"}}\\\mathop{\mathit{version\text{-}range}}\circ\mathop{\mathord{``}\mathtt{\text{|}\text{|}}\mathord{"}}\circ\mathop{\mathit{version\text{-}range}}\\\mathop{\mathit{version\text{-}range}}\circ\mathop{\mathord{``}\mathtt{\text{&}\text{&}}\mathord{"}}\circ\mathop{\mathit{version\text{-}range}}\\\mathop{\mathord{``}\mathtt{\text{(}}\mathord{"}}\circ\mathop{\mathit{version\text{-}range}}\circ\mathop{\mathord{``}\mathtt{\text{)}}\mathord{"}}\\\mathop{\mathord{``}\mathtt{\text{=}\text{=}}\mathord{"}}\circ\mathop{\mathord{``}\mathtt{\{}\mathord{"}}\circ{\mathop{\mathit{version}}}^+_{\left(\circ\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}\circ\right)}\circ\mathop{\mathord{``}\mathtt{\}}\mathord{"}}\\\mathop{\mathord{``}\mathtt{\text{^}\text{>}\text{=}}\mathord{"}}\circ\mathop{\mathord{``}\mathtt{\{}\mathord{"}}\circ{\mathop{\mathit{version}}}^+_{\left(\circ\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}\circ\right)}\circ\mathop{\mathord{``}\mathtt{\}}\mathord{"}}\end{gathered} \right\}\end{split}\]

## 10.4. Build info fields

asm-options

  - Monoidal field

  - Available since `cabal-version: 3.0`.

  - Documentation of `asm-options`

  \[{\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}]^c}}^+_{} \right\}}^\ast_{\bullet}\]
asm-sources

  - Monoidal field

  - Available since `cabal-version: 3.0`.

  - Documentation of `asm-sources`

  \[\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
autogen-includes

  - Monoidal field

  - Available since `cabal-version: 3.0`.

  - Documentation of `autogen-includes`

  \[\mathrm{optcommalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
autogen-modules

  - Monoidal field

  - Available since `cabal-version: 2.0`.

  - Documentation of `autogen-modules`

  \[\mathrm{commalist}\left({\left(\mathop{\mathit{upper}}{\left\{ \mathop{\mathit{alpha\text{-}num}}\mid[\mathop{\mathord{``}\mathtt{\text{'}}\mathord{"}}\mathop{\mathord{``}\mathtt{\text{_}}\mathord{"}}] \right\}}^\ast_{}\right)}^+_{\mathop{\mathord{``}\mathtt{\text{.}}\mathord{"}}}\right)\]
build-depends

  - Monoidal field

  - Documentation of `build-depends`

  \[\mathrm{commalist}\left(\mathop{\mathit{pkg\text{-}name}}{\left(\mathop{\mathord{``}\mathtt{\text{:}}\mathord{"}}\left\{ \mathop{\mathit{unqual\text{-}name}}\mid\mathop{\mathord{``}\mathtt{\{}\mathord{"}}\circ{\mathop{\mathit{unqual\text{-}name}}}^+_{\left(\circ\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}\circ\right)}\circ\mathop{\mathord{``}\mathtt{\}}\mathord{"}} \right\}\right)}^?{\left(\circ\mathop{\mathit{version\text{-}range}}\right)}^?\right)\]
build-tool-depends

  - Monoidal field

  - Documentation of `build-tool-depends`

  \[\mathrm{commalist}\mathsf{\color{red}{TODO}}\]
build-tools

  - Monoidal field

  - Deprecated since `cabal-version: 2.0`: Please use ‘build-tool-depends’ field

  - Removed in `cabal-version: 3.0`: Please use ‘build-tool-depends’ field.

  \[\mathrm{commalist}\mathsf{\color{red}{TODO}}\]
buildable

  - Boolean field

  - Default: `True`

  - Documentation of `buildable`

  \[\left\{ \mathop{\mathord{``}\mathtt{True}\mathord{"}}\mid\mathop{\mathord{``}\mathtt{False}\mathord{"}} \right\}\]
c-sources

  - Monoidal field

  - Documentation of `c-sources`

  \[\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
cc-options

  - Monoidal field

  - Documentation of `cc-options`

  \[{\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}]^c}}^+_{} \right\}}^\ast_{\bullet}\]
cmm-options

  - Monoidal field

  - Available since `cabal-version: 3.0`.

  - Documentation of `cmm-options`

  \[{\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}]^c}}^+_{} \right\}}^\ast_{\bullet}\]
cmm-sources

  - Monoidal field

  - Available since `cabal-version: 3.0`.

  - Documentation of `cmm-sources`

  \[\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
cpp-options

  - Monoidal field

  - Documentation of `cpp-options`

  \[{\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}]^c}}^+_{} \right\}}^\ast_{\bullet}\]
cxx-options

  - Monoidal field

  - Available since `cabal-version: 2.2`.

  - Documentation of `cxx-options`

  \[{\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}]^c}}^+_{} \right\}}^\ast_{\bullet}\]
cxx-sources

  - Monoidal field

  - Available since `cabal-version: 2.2`.

  - Documentation of `cxx-sources`

  \[\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
default-extensions

  - Monoidal field

  - Available since `cabal-version: 1.10`.

  - Documentation of `default-extensions`

  \[\mathrm{optcommalist}\mathsf{\color{red}{TODO}}\]
default-language

  - Optional field

  - Available since `cabal-version: 1.10`.

  - Documentation of `default-language`

  \[\left\{ \mathop{\mathord{``}\mathtt{Haskell98}\mathord{"}}\mid\mathop{\mathord{``}\mathtt{Haskell2010}\mathord{"}} \right\}\]
extensions

  - Monoidal field

  - Deprecated since `cabal-version: 1.12`: Please use ‘default-extensions’ or ‘other-extensions’ fields.

  - Removed in `cabal-version: 3.0`: Please use ‘default-extensions’ or ‘other-extensions’ fields.

  \[\mathrm{optcommalist}\mathsf{\color{red}{TODO}}\]
extra-bundled-libraries

  - Monoidal field

  - Documentation of `extra-bundled-libraries`

  \[\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
extra-dynamic-library-flavours

  - Monoidal field

  - Available since `cabal-version: 3.0`.

  - Documentation of `extra-dynamic-library-flavours`

  \[\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
extra-framework-dirs

  - Monoidal field

  - Documentation of `extra-framework-dirs`

  \[\mathrm{optcommalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
extra-ghci-libraries

  - Monoidal field

  - Documentation of `extra-ghci-libraries`

  \[\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
extra-lib-dirs

  - Monoidal field

  - Documentation of `extra-lib-dirs`

  \[\mathrm{optcommalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
extra-lib-dirs-static

  - Monoidal field

  - Documentation of `extra-lib-dirs-static`

  \[\mathrm{optcommalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
extra-libraries

  - Monoidal field

  - Documentation of `extra-libraries`

  \[\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
extra-library-flavours

  - Monoidal field

  - Documentation of `extra-library-flavours`

  \[\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
extra-libraries

  - Monoidal field

  - Documentation of `extra-libraries-static`

  \[\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
frameworks

  - Monoidal field

  - Documentation of `frameworks`

  \[\mathrm{optcommalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
ghc-options

  - Monoidal field

  - Documentation of `ghc-options`

  \[{\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}]^c}}^+_{} \right\}}^\ast_{\bullet}\]
ghc-prof-options

  - Monoidal field

  - Documentation of `ghc-prof-options`

  \[{\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}]^c}}^+_{} \right\}}^\ast_{\bullet}\]
ghc-shared-options

  - Monoidal field

  - Documentation of `ghc-shared-options`

  \[{\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}]^c}}^+_{} \right\}}^\ast_{\bullet}\]
ghcjs-options

  - Monoidal field

  - Documentation of `ghcjs-options`

  \[{\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}]^c}}^+_{} \right\}}^\ast_{\bullet}\]
ghcjs-prof-options

  - Monoidal field

  - Documentation of `ghcjs-prof-options`

  \[{\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}]^c}}^+_{} \right\}}^\ast_{\bullet}\]
ghcjs-shared-options

  - Monoidal field

  - Documentation of `ghcjs-shared-options`

  \[{\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}]^c}}^+_{} \right\}}^\ast_{\bullet}\]
hs-source-dir

  - Monoidal field

  - Deprecated since `cabal-version: 1.2`: Please use ‘hs-source-dirs’

  - Removed in `cabal-version: 3.0`: Please use ‘hs-source-dirs’ field.

  \[\mathrm{optcommalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
hs-source-dirs

  - Monoidal field

  - Documentation of `hs-source-dirs`

  \[\mathrm{optcommalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
include-dirs

  - Monoidal field

  - Documentation of `include-dirs`

  \[\mathrm{optcommalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
includes

  - Monoidal field

  - Documentation of `includes`

  \[\mathrm{optcommalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
install-includes

  - Monoidal field

  - Documentation of `install-includes`

  \[\mathrm{optcommalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
js-sources

  - Monoidal field

  - Documentation of `js-sources`

  \[\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
ld-options

  - Monoidal field

  - Documentation of `ld-options`

  \[{\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}]^c}}^+_{} \right\}}^\ast_{\bullet}\]
mixins

  - Monoidal field

  - Available since `cabal-version: 2.0`.

  - Documentation of `mixins`

  \[\mathrm{commalist}\left(\mathop{\mathit{package\text{-}name}}{\left(\mathop{\mathord{``}\mathtt{\text{:}}\mathord{"}}\mathop{\mathit{library\text{-}name}}\right)}^?{\left(\bullet\left\{ \mid\mathop{\mathord{``}\mathtt{hiding}\mathord{"}}\circ\mathop{\mathord{``}\mathtt{\text{(}}\mathord{"}}\circ{\mathop{\mathit{module\text{-}name}}}^\ast_{\left(\circ\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}\circ\right)}\circ\mathop{\mathord{``}\mathtt{\text{)}}\mathord{"}}\mid\mathop{\mathord{``}\mathtt{\text{(}}\mathord{"}}\circ{\left(\mathop{\mathit{module\text{-}name}}{\left(\bullet\mathop{\mathord{``}\mathtt{as}\mathord{"}}\bullet\mathop{\mathit{module\text{-}name}}\right)}^?\right)}^\ast_{\left(\circ\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}\circ\right)}\circ\mathop{\mathord{``}\mathtt{\text{)}}\mathord{"}} \right\}{\left(\circ\mathop{\mathord{``}\mathtt{requires}\mathord{"}}\bullet\left\{ \mid\mathop{\mathord{``}\mathtt{hiding}\mathord{"}}\circ\mathop{\mathord{``}\mathtt{\text{(}}\mathord{"}}\circ{\mathop{\mathit{module\text{-}name}}}^\ast_{\left(\circ\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}\circ\right)}\circ\mathop{\mathord{``}\mathtt{\text{)}}\mathord{"}}\mid\mathop{\mathord{``}\mathtt{\text{(}}\mathord{"}}\circ{\left(\mathop{\mathit{module\text{-}name}}{\left(\bullet\mathop{\mathord{``}\mathtt{as}\mathord{"}}\bullet\mathop{\mathit{module\text{-}name}}\right)}^?\right)}^\ast_{\left(\circ\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}\circ\right)}\circ\mathop{\mathord{``}\mathtt{\text{)}}\mathord{"}} \right\}\right)}^?\right)}^?\right)\]
other-extensions

  - Monoidal field

  - Available since `cabal-version: 1.10`.

  - Documentation of `other-extensions`

  \[\mathrm{optcommalist}\mathsf{\color{red}{TODO}}\]
other-languages

  - Monoidal field

  - Available since `cabal-version: 1.10`.

  - Documentation of `other-languages`

  \[\mathrm{optcommalist}\left\{ \mathop{\mathord{``}\mathtt{Haskell98}\mathord{"}}\mid\mathop{\mathord{``}\mathtt{Haskell2010}\mathord{"}} \right\}\]
other-modules

  - Monoidal field

  - Documentation of `other-modules`

  \[\mathrm{commalist}\left({\left(\mathop{\mathit{upper}}{\left\{ \mathop{\mathit{alpha\text{-}num}}\mid[\mathop{\mathord{``}\mathtt{\text{'}}\mathord{"}}\mathop{\mathord{``}\mathtt{\text{_}}\mathord{"}}] \right\}}^\ast_{}\right)}^+_{\mathop{\mathord{``}\mathtt{\text{.}}\mathord{"}}}\right)\]
pkgconfig-depends

  - Monoidal field

  - Documentation of `pkgconfig-depends`

  \[\mathrm{commalist}\mathsf{\color{red}{TODO}}\]
virtual-modules

  - Monoidal field

  - Available since `cabal-version: 2.2`.

  - Documentation of `virtual-modules`

  \[\mathrm{commalist}\left({\left(\mathop{\mathit{upper}}{\left\{ \mathop{\mathit{alpha\text{-}num}}\mid[\mathop{\mathord{``}\mathtt{\text{'}}\mathord{"}}\mathop{\mathord{``}\mathtt{\text{_}}\mathord{"}}] \right\}}^\ast_{}\right)}^+_{\mathop{\mathord{``}\mathtt{\text{.}}\mathord{"}}}\right)\]

## 10.5. Library fields

visibility

  - Optional field

  - Documentation of `library:visibility`

  \[\left\{ \mathop{\mathord{``}\mathtt{public}\mathord{"}}\mid\mathop{\mathord{``}\mathtt{private}\mathord{"}} \right\}\]

## 10.6. Package description fields

author

  - Free text field

  - Documentation of `author`

bug-reports

  - Free text field

  - Documentation of `bug-reports`

build-type

  - Optional field

  - Documentation of `build-type`

  \[\begin{split}\left\{ \begin{gathered}\mathop{\mathord{``}\mathtt{Simple}\mathord{"}}\\\mathop{\mathord{``}\mathtt{Configure}\mathord{"}}\\\mathop{\mathord{``}\mathtt{Custom}\mathord{"}}\\\mathop{\mathord{``}\mathtt{Make}\mathord{"}}\\\mathop{\mathord{``}\mathtt{Default}\mathord{"}}\end{gathered} \right\}\end{split}\]
cabal-version

  - Optional field

  - Default: `>=1.0`

  - Documentation of `cabal-version`

  \[\mathop{\mathord{``}\mathtt{3\text{.}4}\mathord{"}}\]
category

  - Free text field

  - Documentation of `category`

copyright

  - Free text field

  - Documentation of `copyright`

data-dir

  - Optional field

  - Default: `""`

  - Documentation of `data-dir`

  \[\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
data-files

  - Monoidal field

  - Documentation of `data-files`

  \[\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
description

  - Free text field

  - Documentation of `description`

extra-doc-files

  - Monoidal field

  - Documentation of `extra-doc-files`

  \[\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
extra-source-files

  - Monoidal field

  - Documentation of `extra-source-files`

  \[\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
extra-tmp-files

  - Monoidal field

  - Documentation of `extra-tmp-files`

  \[\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
homepage

  - Free text field

  - Documentation of `homepage`

license

  - Optional field

  - Default: `NONE`

  - Documentation of `license`

  \[\mathsf{\color{red}{TODO}}\]
license-file

  - Monoidal field

  - Documentation of `license-file`

  \[\mathrm{optcommalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
maintainer

  - Free text field

  - Documentation of `maintainer`

name

  - Required field

  - Documentation of `name`

  \[\mathop{\mathit{unqual\text{-}name}}\]
package-url

  - Free text field

  - Documentation of `package-url`

stability

  - Free text field

  - Documentation of `stability`

synopsis

  - Free text field

  - Documentation of `synopsis`

tested-with

  - Monoidal field

  - Documentation of `tested-with`

  \[\mathrm{optcommalist}\mathsf{\color{red}{TODO}}\]
version

  - Required field

  - Documentation of `version`

  \[{\left\{ \mathop{\mathord{``}\mathtt{0}\mathord{"}}\mid[\mathop{\mathord{``}\mathtt{1}\mathord{"}}\cdots\mathop{\mathord{``}\mathtt{9}\mathord{"}}]{[\mathop{\mathord{``}\mathtt{0}\mathord{"}}\cdots\mathop{\mathord{``}\mathtt{9}\mathord{"}}]}^{\in [0\ldots8]}_{} \right\}}^+_{\mathop{\mathord{``}\mathtt{\text{.}}\mathord{"}}}\]

## 10.7. Test-suite fields

main-is

  - Optional field

  - Documentation of `test-suite:main-is`

  \[\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{``}\mathtt{\ }\mathord{"}}\mathop{\mathord{``}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}\]
test-module

  - Optional field

  - Documentation of `test-suite:test-module`

  \[{\left(\mathop{\mathit{upper}}{\left\{ \mathop{\mathit{alpha\text{-}num}}\mid[\mathop{\mathord{``}\mathtt{\text{'}}\mathord{"}}\mathop{\mathord{``}\mathtt{\text{_}}\mathord{"}}] \right\}}^\ast_{}\right)}^+_{\mathop{\mathord{``}\mathtt{\text{.}}\mathord{"}}}\]
type

  - Optional field

  - Documentation of `test-suite:type`

  \[\left\{ \mathop{\mathord{``}\mathtt{exitcode\text{-}stdio\text{-}1\text{.}0}\mathord{"}}\mid\mathop{\mathord{``}\mathtt{detailed\text{-}0\text{.}9}\mathord{"}} \right\}\]