Next: Host Fragment, Up: Fragments
LIBGCC2_CFLAGSLIB2FUNCS_EXTRAFloating Point EmulationFPBIT 和 DPBIT:
# 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
CRTSTUFF_T_CFLAGSCRTSTUFF_T_CFLAGS_SEXTRA-PARTS 中使用 crtbeginS.o 和 crtendS.o
时。参见Initialization。
MULTILIB_OPTIONSMULTILIB_OPTIONS 宏列出了必须构建特定版本 libgcc.a 的
选项集。将互不兼容的选项并排写出,并由斜线分隔。将可以一起使用的选项
由空格分开。构建程序将会构建所有兼容选项的组合。
例如,如果将 MULTILIB_OPTIONS 设置为
‘m68000/m68020 msoft-float’,Makefile 将会使用下列选项集
来构建特定版本的 libgcc.a:-m68000, -m68020,
-msoft-float, ‘-m68000 -msoft-float’, 和
‘-m68020 -msoft-float’。
MULTILIB_DIRNAMESMULTILIB_OPTIONS,该变量指定了用于存放不同库的目录名。
MULTILIB_OPTIONS 中的每个元素,对应于 MULTILIB_DIRNAMES 中
的每个元素。如果没有使用 MULTILIB_DIRNAMES,缺省值将为
MULTILIB_OPTIONS,并使用斜线来替代空格。
例如,如果 MULTILIB_OPTIONS 设置为 ‘m68000/m68020 msoft-float’,
则 MULTILIB_DIRNAMES 的缺省值为 ‘m68000 m68020 msoft-float’。
如果需要不同的目录名时,可以指定不同的值。
MULTILIB_MATCHESMULTILIB_OPTIONS 式列出,GCC需要知道它的任何同义形式。这种情况下,
将 MULTILIB_MATCHES 设置为 ‘option=option’ 形式的列表来描述
所有相关的同义词。例如,‘m68000=mc68000 m68020=mc68020’。
MULTILIB_EXCEPTIONSMULTILIB_OPTIONS 中指定了多个选项集时,会有些组合不能被
构建。这种情况下,将 MULTILIB_EXCEPTIONS 设置为所有不被构建的例外。
例如ARM处理器不能执行同时执行硬件浮点指令和缩减大小的THUMB指令,这样就没
有必要构建这些选项组合的库。因此将 MULTILIB_EXCEPTIONS 设为:
*mthumb/*mhard-float*
MULTILIB_EXTRA_OPTSMULTILIB_EXTRA_OPTS 设置为用于所有构建时的选项列表。如果设
置了该宏,则可能要将 CRTSTUFF_T_CFLAGS 设置为跟在其后的破折号。
NATIVE_SYSTEM_HEADER_DIRSYSTEM_INCLUDE_DIR 宏的值。
SPECSMULTILIB_EXTRA_OPTS 并不足够,因为它并不影响目标库的
构建,最起码对于缺省multilib的构建是这样的。一种可能的方法是使用
DRIVER_SELF_SPECS 从 specs 文件中取得选项,就像是它们被传给了
编译器驱动程序的命令行。但是,你不想在安装工具链之后再增加这些选项,所以你
可以在安装原始的内嵌 specs 时,调节在构建工具链时使用的 specs
文件。诀窍是将 SPECS 设置为其它文件名(例如 specs.install),
然后该文件将会由内建 specs 创建出来,并且引出一个 Makefile 规
则来生成 specs 文件,在构建时候使用。
T_CFLAGS