7.1 Option file format
Option files are a simple list of records in which each field occupies its own line and in which the records themselves are separated by blank lines. Comments may appear on their own line anywhere within the file and are preceded by semicolons. Whitespace is allowed before the semicolon.
The files can contain the following types of record:
- A language definition record. These records have two fields: the string Language and the name of the language. Once a language has been declared in this way, it can be used as an option property. See Option properties.
- A target specific save record to save additional information. These
records have two fields: the string TargetSave, and a
declaration type to go in the
- An option definition record. These records have the following fields:
- the name of the option, with the leading “-” removed
- a space-separated list of option properties (see Option properties)
- the help text to use for --help (omitted if the second field
By default, all options beginning with “f”, “W” or “m” are implicitly assumed to take a “no-” form. This form should not be listed separately. If an option beginning with one of these letters does not have a “no-” form, you can use the
RejectNegativeproperty to reject it.
The help text is automatically line-wrapped before being displayed. Normally the name of the option is printed on the left-hand side of the output and the help text is printed on the right. However, if the help text contains a tab character, the text to the left of the tab is used instead of the option's name and the text to the right of the tab forms the help text. This allows you to elaborate on what type of argument the option takes.
- A target mask record. These records have one field of the form
Mask(x). The options-processing script will automatically
allocate a bit in
target_flags(see Run-time Target) for each mask name x and set the macro
MASK_x to the appropriate bitmask. It will also declare a
TARGET_x macro that has the value 1 when bit
MASK_x is set and 0 otherwise.
They are primarily intended to declare target masks that are not associated with user options, either because these masks represent internal switches or because the options are not available on all configurations and yet the masks always need to be defined.