metafile ::= entry*
entry ::= assignment | addition | subpackage
subpackage ::= "package" pkgname '(' metafile ')'
assignment ::= variable_name [ formal_predicates ] '=' value
addition ::= variable_name [ formal_predicates ] '+=' value
formal_predicates ::= '(' formal_predicate { ',' formal_predicate } ')'
variable_name ::= name
formal_predicate ::= name | '-' name
name ::= [ 'A'-'Z' 'a'-'z' '0'-'9' '_' '.' ]+
pkgname ::= '"' (character but not '.')* '"'
value ::= '"' character* '"'
There is a list of predefined variables and a list of standard predicates. These variables define: required packages, description, version information, directories, archive files, and linker options. The predicates denote circumstances of the application of the variables: whether the bytecode or the native compiler is used, if there is a toploop compiled in, details of multi-threading execution, details of profiling.
Names are sequences of the characters A-Z, a-z, 0-9, or _. Names containing capital letters and names beginning with digits are allowed but not recommended.
Values are enclosed between double quotes. Values may contain any character. The characters " and \ must be preceded by backslashes.
Package names must not contain the '.' character because it is used as delimiter of compound names.
The keyword package starts the definition of a subpackage. There must not be two such definitions with the same name. W