crosstool-ng/config/binutils/binutils.in
Chris Copeland f22be3a625 allow plugins and LTO with static toolchains
This reverts commit 0841e2f820 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 of 45512b003d 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>
2023-09-24 16:11:41 +13:00

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