Previous: Option file format, Up: Options
7.2 Option properties
The second field of an option record can specify the following properties:
Common
- The option is available for all languages and targets.
Target
- The option is available for all languages but is target-specific.
- language
- The option is available when compiling for the given language.
It is possible to specify several different languages for the same option. Each language must have been declared by an earlier
Language
record. See Option file format. RejectNegative
- The option does not have a “no-” form. All options beginning with
“f”, “W” or “m” are assumed to have a “no-” form unless this
property is used.
Negative(
othername)
- The option will turn off another option othername, which is the
the option name with the leading “-” removed. This chain action will
propagate through the
Negative
property of the option to be turned off. Joined
Separate
- The option takes a mandatory argument.
Joined
indicates that the option and argument can be included in the sameargv
entry (as with-mflush-func=
name, for example).Separate
indicates that the option and argument can be separateargv
entries (as with-o
). An option is allowed to have both of these properties. JoinedOrMissing
- The option takes an optional argument. If the argument is given,
it will be part of the same
argv
entry as the option itself.This property cannot be used alongside
Joined
orSeparate
. UInteger
- The option's argument is a non-negative integer. The option parser
will check and convert the argument before passing it to the relevant
option handler.
Var(
var)
- The state of this option should be stored in variable var.
The way that the state is stored depends on the type of option:
- If the option uses the
Mask
orInverseMask
properties, var is the integer variable that contains the mask. - If the option is a normal on/off switch, var is an integer variable that is nonzero when the option is enabled. The options parser will set the variable to 1 when the positive form of the option is used and 0 when the “no-” form is used.
- If the option takes an argument and has the
UInteger
property, var is an integer variable that stores the value of the argument. - Otherwise, if the option takes an argument, var is a pointer to the argument string. The pointer will be null if the argument is optional and wasn't given.
The option-processing script will usually declare var in options.c and leave it to be zero-initialized at start-up time. You can modify this behavior using
VarExists
andInit
. - If the option uses the
Var(
var,
set)
- The option controls an integer variable var and is active when
var equals set. The option parser will set var to
set when the positive form of the option is used and
!
set when the “no-” form is used.var is declared in the same way as for the single-argument form described above.
VarExists
- The variable specified by the
Var
property already exists. No definition should be added to options.c in response to this option record.You should use this property only if the variable is declared outside options.c.
Init(
value)
- The variable specified by the
Var
property should be statically initialized to value. Mask(
name)
- The option is associated with a bit in the
target_flags
variable (see Run-time Target) and is active when that bit is set. You may also specifyVar
to select a variable other thantarget_flags
.The options-processing script will automatically allocate a unique bit for the option. If the option is attached to `target_flags', the script will set the macro
MASK_
name to the appropriate bitmask. It will also declare aTARGET_
name macro that has the value 1 when the option is active and 0 otherwise. If you useVar
to attach the option to a different variable, the associated macros are calledOPTION_MASK_
name andOPTION_
name respectively.You can disable automatic bit allocation using
MaskExists
. InverseMask(
othername)
InverseMask(
othername,
thisname)
- The option is the inverse of another option that has the
Mask(
othername)
property. If thisname is given, the options-processing script will declare aTARGET_
thisname macro that is 1 when the option is active and 0 otherwise. MaskExists
- The mask specified by the
Mask
property already exists. NoMASK
orTARGET
definitions should be added to options.h in response to this option record.The main purpose of this property is to support synonymous options. The first option should use `Mask(name)' and the others should use `Mask(name) MaskExists'.
Report
- The state of the option should be printed by -fverbose-asm.
Undocumented
- The option is deliberately missing documentation and should not
be included in the --help output.
Condition(
cond)
- The option should only be accepted if preprocessor condition cond is true. Note that any C declarations associated with the option will be present even if cond is false; cond simply controls whether the option is accepted and whether it is printed in the --help output.