mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2024-12-25 07:21:05 +00:00
f22be3a625
This reverts commit0841e2f820
from 2011, which disabled plugin support in binutils for static toolchains, citing build system problems. This problem seems to be resolved. This also reverts part of45512b003d
from 2017, which disabled LTO in gcc for static toolchains, citing problems on Arch Linux with loading the LTO plugin from a static binary. Signed-off-by: Chris Copeland <chris@chrisnc.net>
216 lines
6.0 KiB
Plaintext
216 lines
6.0 KiB
Plaintext
# binutils options
|
|
|
|
comment "GNU binutils"
|
|
|
|
# gold only suports the listed architectures
|
|
config BINUTILS_GOLD_SUPPORTS_ARCH
|
|
bool
|
|
default y if ARCH_ARM
|
|
default y if ARCH_X86
|
|
|
|
config BINUTILS_GOLD_SUPPORT
|
|
bool
|
|
default y
|
|
depends on BINUTILS_GOLD_SUPPORTS_ARCH
|
|
depends on ! STATIC_TOOLCHAIN
|
|
|
|
# Force using the BFD linker if needed. There are two options:
|
|
# - For some C libraries (eg. glibc at least), BFD ld must be
|
|
# built and be selected by default.
|
|
# - For elf2flt, BFD ld must be the only linker built.
|
|
config BINUTILS_FORCE_LD_BFD_DEFAULT
|
|
bool
|
|
|
|
config BINUTILS_FORCE_LD_BFD_ONLY
|
|
bool
|
|
|
|
# Binutils 2.39 requires bison 3.0.4 or later for gprofng on x86/aarch64
|
|
config BINUTILS_DEP_BISON
|
|
def_bool y
|
|
depends on BINUTILS_2_39_or_later && !CONFIGURE_has_bison_3_0_4_or_newer && (ARCH_X86 || (ARCH_ARM && ARCH_64))
|
|
select COMP_TOOLS_BISON
|
|
|
|
choice
|
|
bool
|
|
prompt "Linkers to enable"
|
|
|
|
config BINUTILS_LINKER_LD
|
|
bool
|
|
prompt "ld"
|
|
help
|
|
The historical, bfd linker.
|
|
|
|
config BINUTILS_LINKER_GOLD
|
|
bool
|
|
prompt "gold"
|
|
depends on BINUTILS_GOLD_SUPPORT
|
|
depends on !BINUTILS_FORCE_LD_BFD_DEFAULT && !BINUTILS_FORCE_LD_BFD_ONLY
|
|
select BINUTILS_GOLD_INSTALLED
|
|
help
|
|
gold is a new, optimised, multi-threaded linker with support
|
|
for plugins. Designed to be a drop-in replacement for the
|
|
original linker, ld, it can be much faster, with a 5:1 or
|
|
bigger ratio being not uncommon, YMMV.
|
|
|
|
config BINUTILS_LINKER_LD_GOLD
|
|
bool
|
|
prompt "ld, gold"
|
|
depends on !BINUTILS_FORCE_LD_BFD_ONLY
|
|
depends on BINUTILS_GOLD_SUPPORT
|
|
select BINUTILS_GOLD_INSTALLED
|
|
select BINUTILS_LINKER_BOTH
|
|
help
|
|
Both the historical ld and the new gold linkers will be
|
|
installed, with ld being the default linker used.
|
|
|
|
See help for gold, above.
|
|
|
|
config BINUTILS_LINKER_GOLD_LD
|
|
bool
|
|
prompt "gold, ld"
|
|
depends on !BINUTILS_FORCE_LD_BFD_DEFAULT && !BINUTILS_FORCE_LD_BFD_ONLY
|
|
depends on BINUTILS_GOLD_SUPPORT
|
|
select BINUTILS_GOLD_INSTALLED
|
|
select BINUTILS_LINKER_BOTH
|
|
select BINUTILS_LD_WRAPPER if BINUTILS_FORCE_LD_BFD_DEFAULT
|
|
help
|
|
Both the historical ld and the new gold linkers will be
|
|
installed, with gold being the default linker used.
|
|
|
|
See help for gold, above.
|
|
|
|
endchoice # Enable linkers
|
|
|
|
if BINUTILS_LINKER_GOLD
|
|
comment "WARNING! gold is not capable of"
|
|
comment "| building glibc!"
|
|
endif # BINUTILS_LINKER_GOLD
|
|
|
|
config BINUTILS_GOLD_INSTALLED
|
|
bool
|
|
|
|
config BINUTILS_GOLD_THREADS
|
|
bool
|
|
prompt "| Enable threaded gold"
|
|
depends on BINUTILS_GOLD_INSTALLED
|
|
help
|
|
When configured with threads, gold can link in parallel,
|
|
possibly cooperating with a make jobserver.
|
|
|
|
config BINUTILS_LINKER_BOTH
|
|
bool
|
|
|
|
config BINUTILS_LINKERS_LIST
|
|
string
|
|
default "ld" if BINUTILS_LINKER_LD
|
|
default "gold" if BINUTILS_LINKER_GOLD
|
|
default "ld,gold" if BINUTILS_LINKER_LD_GOLD
|
|
default "gold,ld" if BINUTILS_LINKER_GOLD_LD
|
|
|
|
config BINUTILS_LD_WRAPPER
|
|
bool
|
|
prompt "| Add ld wrapper"
|
|
depends on BINUTILS_LINKER_BOTH
|
|
help
|
|
Add an ld wrapper that calls to either gold or ld.
|
|
|
|
By default, the wrapper will call to the default wrapper,
|
|
but if you set the environment variable CTNG_LD_IS, you
|
|
can change which linker will get called:
|
|
CTNG_LD_IS=gold will unconditionally call the gold linker
|
|
CTNG_LD_IS=bfd will unconditionally call the old bfd ld linker
|
|
|
|
config BINUTILS_LINKER_DEFAULT
|
|
string
|
|
default "bfd" if BINUTILS_LINKER_LD || BINUTILS_LINKER_LD_GOLD
|
|
default "gold" if BINUTILS_LINKER_GOLD || BINUTILS_LINKER_GOLD_LD
|
|
|
|
config BINUTILS_PLUGINS
|
|
bool
|
|
prompt "Enable support for plugins"
|
|
help
|
|
binutils can be extended through the use of plugins.
|
|
Especially, gold can use the lto-plugin, as installed
|
|
by gcc, to handle LTO.
|
|
|
|
config BINUTILS_RELRO
|
|
tristate
|
|
prompt "Enable -z relro in ELF linker by default" if BINUTILS_2_27_or_later
|
|
default m
|
|
help
|
|
Setting this option forces "-z relro" by default in the ELF linker.
|
|
Clearing this option forces "-z norelro" by default in the ELF linker.
|
|
Setting this option to 'M' configures binutils with their internal
|
|
default for the selected architecture.
|
|
|
|
config BINUTILS_DETERMINISTIC_ARCHIVES
|
|
bool
|
|
prompt "Enable deterministic archives by default"
|
|
default y
|
|
help
|
|
Setting this option will enable deterministic mode by default (-D).
|
|
ar and ranlib will use zero for UIDs, GIDs,
|
|
timestamps, and use consistent file modes for all files.
|
|
|
|
config BINUTILS_EXTRA_CONFIG_ARRAY
|
|
string
|
|
prompt "binutils extra config"
|
|
default ""
|
|
help
|
|
Extra flags passed onto ./configure when configuring
|
|
|
|
You can enter multiple arguments here, and arguments can contain spaces
|
|
if they are properly quoted (or escaped, but prefer quotes). Eg.:
|
|
--with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space
|
|
|
|
config BINUTILS_FOR_TARGET
|
|
bool
|
|
prompt "binutils libraries for the target"
|
|
depends on ! BARE_METAL
|
|
help
|
|
Some utilities may need binutils libraries to be available on
|
|
the target, eg. oprofile.
|
|
|
|
if BINUTILS_FOR_TARGET
|
|
|
|
config BINUTILS_FOR_TARGET_IBERTY
|
|
bool
|
|
prompt "libiberty"
|
|
default y
|
|
|
|
config BINUTILS_FOR_TARGET_BFD
|
|
bool
|
|
prompt "libbfd"
|
|
default y
|
|
|
|
config BINUTILS_FOR_TARGET_OPCODES
|
|
bool
|
|
prompt "libopcodes"
|
|
default y
|
|
|
|
endif # BINUTILS_FOR_TARGET
|
|
|
|
if ARCH_BINFMT_FLAT
|
|
|
|
comment "elf2flt"
|
|
|
|
config ELF2FLT_REQUIRES
|
|
def_bool y
|
|
select ZLIB_NEEDED
|
|
select BINUTILS_FORCE_LD_BFD_ONLY
|
|
|
|
source "config/versions/elf2flt.in"
|
|
|
|
config ELF2FLT_EXTRA_CONFIG_ARRAY
|
|
string
|
|
prompt "elf2flt extra config"
|
|
default ""
|
|
help
|
|
Extra flags passed onto ./configure when configuring
|
|
|
|
You can enter multiple arguments here, and arguments can contain spaces
|
|
if they are properly quoted (or escaped, but prefer quotes). Eg.:
|
|
--with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space
|
|
|
|
endif # ARCH_BINFMT_FLAT
|