[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Here are run-time target specifications.
CPP_PREDEFINES
In addition, a parallel set of macros are predefined, whose names are made by appending `__' at the beginning and at the end. These `__' macros are permitted by the ISO standard, so they are predefined regardless of whether `-ansi' or a `-std' option is specified.
For example, on the Sun, one can use the following value:
"-Dmc68000 -Dsun -Dunix" |
The result is to define the macros __mc68000__
, __sun__
and __unix__
unconditionally, and the macros mc68000
,
sun
and unix
provided `-ansi' is not specified.
extern int target_flags;
TARGET_...
TARGET_68020
that tests a bit in
target_flags
.
Define a macro TARGET_featurename
for each such option.
Its definition should test a bit in target_flags
. It is
recommended that a helper macro TARGET_MASK_featurename
is defined for each bit-value to test, and used in
TARGET_featurename
and TARGET_SWITCHES
. For
example:
#define TARGET_MASK_68020 1 #define TARGET_68020 (target_flags & TARGET_MASK_68020) |
One place where these macros are used is in the condition-expressions
of instruction patterns. Note how TARGET_68020
appears
frequently in the 68000 machine description file, `m68k.md'.
Another place they are used is in the definitions of the other
macros in the `machine.h' file.
TARGET_SWITCHES
target_flags
. Its definition is an initializer
with a subgrouping for each command option.
Each subgrouping contains a string constant, that defines the option
name, a number, which contains the bits to set in
target_flags
, and a second string which is the description
displayed by `--help'. If the number is negative then the bits specified
by the number are cleared instead of being set. If the description
string is present but empty, then no help information will be displayed
for that option, but it will not count as an undocumented option. The
actual option name is made by appending `-m' to the specified name.
Non-empty description strings should be marked with N_(...)
for
xgettext
. In addition to the description for `--help',
more detailed documentation for each option should be added to
`invoke.texi'.
One of the subgroupings should have a null string. The number in
this grouping is the default value for target_flags
. Any
target options act starting with that value.
Here is an example which defines `-m68000' and `-m68020' with opposite meanings, and picks the latter as the default:
#define TARGET_SWITCHES \ { { "68020", TARGET_MASK_68020, "" }, \ { "68000", -TARGET_MASK_68020, \ N_("Compile for the 68000") }, \ { "", TARGET_MASK_68020, "" }} |
TARGET_OPTIONS
TARGET_SWITCHES
but defines names of command
options that have values. Its definition is an initializer with a
subgrouping for each command option.
Each subgrouping contains a string constant, that defines the fixed part
of the option name, the address of a variable, and a description string
(which should again be marked with N_(...)
).
The variable, type char *
, is set to the variable part of the
given option if the fixed part matches. The actual option name is made
by appending `-m' to the specified name. Again, each option should
also be documented in `invoke.texi'.
Here is an example which defines `-mshort-data-number'. If the
given option is `-mshort-data-512', the variable m88k_short_data
will be set to the string "512"
.
extern char *m88k_short_data; #define TARGET_OPTIONS \ { { "short-data-", &m88k_short_data, \ N_("Specify the size of the short data section") } } |
TARGET_VERSION
stderr
a string
describing the particular machine description choice. Every machine
description should define TARGET_VERSION
. For example:
#ifdef MOTOROLA #define TARGET_VERSION \ fprintf (stderr, " (68k, Motorola syntax)"); #else #define TARGET_VERSION \ fprintf (stderr, " (68k, MIT syntax)"); #endif |
OVERRIDE_OPTIONS
OVERRIDE_OPTIONS
to take account of this. This macro, if
defined, is executed once just after all the command options have been
parsed.
Don't use this macro to turn on various extra optimizations for
`-O'. That is what OPTIMIZATION_OPTIONS
is for.
OPTIMIZATION_OPTIONS (level, size)
level is the optimization level specified; 2 if `-O2' is specified, 1 if `-O' is specified, and 0 if neither is specified.
size is non-zero if `-Os' is specified and zero otherwise.
You should not use this macro to change options that are not machine-specific. These should uniformly selected by the same optimization level on all supported machines. Use this macro to enable machine-specific optimizations.
Do not examine write_symbols
in
this macro! The debugging options are not supposed to alter the
generated code.
CAN_DEBUG_WITHOUT_FP
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |