Next: Host Fragment, Up: Fragments
Target makefile fragments can set these Makefile variables.
LIBGCC2_CFLAGS
LIB2FUNCS_EXTRA
Floating Point Emulation
FPBIT
and DPBIT
along with a few rules as follows:
# We want fine grained libraries, so use the new code # to build the floating point emulation libraries. FPBIT = fp-bit.c DPBIT = dp-bit.c fp-bit.c: $(srcdir)/config/fp-bit.c echo '#define FLOAT' > fp-bit.c cat $(srcdir)/config/fp-bit.c >> fp-bit.c dp-bit.c: $(srcdir)/config/fp-bit.c cat $(srcdir)/config/fp-bit.c > dp-bit.c
You may need to provide additional #defines at the beginning of fp-bit.c and dp-bit.c to control target endianness and other options.
CRTSTUFF_T_CFLAGS
CRTSTUFF_T_CFLAGS_S
EXTRA-PARTS
.
See Initialization.
MULTILIB_OPTIONS
The MULTILIB_OPTIONS
macro lists the set of options for which
special versions of libgcc.a must be built. Write options that
are mutually incompatible side by side, separated by a slash. Write
options that may be used together separated by a space. The build
procedure will build all combinations of compatible options.
For example, if you set MULTILIB_OPTIONS
to `m68000/m68020
msoft-float', Makefile will build special versions of
libgcc.a using the following sets of options: -m68000,
-m68020, -msoft-float, `-m68000 -msoft-float', and
`-m68020 -msoft-float'.
MULTILIB_DIRNAMES
MULTILIB_OPTIONS
is used, this variable specifies the
directory names that should be used to hold the various libraries.
Write one element in MULTILIB_DIRNAMES
for each element in
MULTILIB_OPTIONS
. If MULTILIB_DIRNAMES
is not used, the
default value will be MULTILIB_OPTIONS
, with all slashes treated
as spaces.
For example, if MULTILIB_OPTIONS
is set to `m68000/m68020
msoft-float', then the default value of MULTILIB_DIRNAMES
is
`m68000 m68020 msoft-float'. You may specify a different value if
you desire a different set of directory names.
MULTILIB_MATCHES
MULTILIB_OPTIONS
, GCC needs to know about
any synonyms. In that case, set MULTILIB_MATCHES
to a list of
items of the form `option=option' to describe all relevant
synonyms. For example, `m68000=mc68000 m68020=mc68020'.
MULTILIB_EXCEPTIONS
MULTILIB_OPTIONS
being
specified, there are combinations that should not be built. In that
case, set MULTILIB_EXCEPTIONS
to be all of the switch exceptions
in shell case syntax that should not be built.
For example the ARM processor cannot execute both hardware floating
point instructions and the reduced size THUMB instructions at the same
time, so there is no need to build libraries with both of these
options enabled. Therefore MULTILIB_EXCEPTIONS
is set to:
*mthumb/*mhard-float*
MULTILIB_EXTRA_OPTS
MULTILIB_EXTRA_OPTS
to be the list
of options to be used for all builds. If you set this, you should
probably set CRTSTUFF_T_CFLAGS
to a dash followed by it.
SPECS
MULTILIB_EXTRA_OPTS
is not enough, since
it does not affect the build of target libraries, at least not the
build of the default multilib. One possible work-around is to use
DRIVER_SELF_SPECS
to bring options from the specs file
as if they had been passed in the compiler driver command line.
However, you don't want to be adding these options after the toolchain
is installed, so you can instead tweak the specs file that will
be used during the toolchain build, while you still install the
original, built-in specs. The trick is to set SPECS
to
some other filename (say specs.install), that will then be
created out of the built-in specs, and introduce a Makefile
rule to generate the specs file that's going to be used at
build time out of your specs.install.