kumquat-buildroot/package/gcc/Config.in.host
Peter Kümmel 814f63ec32 toolchain: add link-time-optimization support
Add a new option BR2_GCC_ENABLE_LTO that builds gcc and binutils with
LTO support.

Individual packages still have to enable LTO explicitly by passing '-flto' to
GCC, which passes it on to the linker. This option does not add that flag
globally. Some packages detect if the compiler supports LTO and enable the flag
if it does.

To support LTO, ar and ranlib must be called with an argument which triggers the
usage of the LTO plugin. Since GCC doesn't call these tools itself, it instead
provides wrappers for ar and ranlib that pass the LTO arguments. This way
existing Makefiles don't need to be changed for LTO support. However, these
wrappers are called <tuple>-gcc-ar which matches the pattern to link to the
buildroot wrapper in the external toolchain logic. So the external toolchain
logic is updated to provide the correct symlink.

[Thomas:
  - Add a separate BR2_BINUTILS_ENABLE_LTO option to enable LTO
    support in binutils. This is a blind option, selected by
    BR2_GCC_ENABLE_LTO. It just avoids having binutils.mk poke
    directly into gcc Config.in options.
  - Remove the check on the AVR32 special gcc version, which we don't
    support anymore.
  - Adapt the help text of the LTO Config.in option to no longer
    mention "Since version 4.5", since we only support gcc >= 4.5 in
    Buildroot anyway.
  - Fix typo in toolchain-external.mk comment.]

Signed-off-by: Peter Kümmel <syntheticpp@gmx.net>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-03-07 15:01:53 +01:00

154 lines
4.7 KiB
Plaintext

comment "GCC Options"
config BR2_GCC_NEEDS_MPC
bool
config BR2_GCC_SUPPORTS_GRAPHITE
bool
choice
prompt "GCC compiler Version"
default BR2_GCC_VERSION_4_8_ARC if BR2_arc
default BR2_GCC_VERSION_4_9_X if BR2_microblaze || BR2_powerpc64le
default BR2_GCC_VERSION_4_5_X if BR2_bfin
default BR2_GCC_VERSION_4_8_X
help
Select the version of gcc you wish to use.
config BR2_GCC_VERSION_4_5_X
bool "gcc 4.5.x"
# Broken or unsupported architectures
depends on !BR2_microblaze && !BR2_aarch64 && !BR2_arc \
&& !BR2_powerpc64le && !BR2_nios2
# Broken or unsupported ARM cores
depends on !BR2_cortex_a7 && !BR2_cortex_a12 && \
!BR2_cortex_a15 && !BR2_fa526 && !BR2_pj4
# Broken or unsupported PPC cores
depends on !BR2_powerpc_e5500 && !BR2_powerpc_e6500 && \
!BR2_powerpc_power8
# SPARC -mcpu=leon3 appeared in gcc 4.8.x
depends on !BR2_sparc_leon3
# Broken or unsupported X86 cores
depends on !BR2_x86_corei7 && !BR2_x86_jaguar && !BR2_x86_steamroller
# ARM EABIhf support appeared in gcc 4.6
depends on !BR2_ARM_EABIHF
# musl patches only for gcc 4.7+
depends on !BR2_TOOLCHAIN_BUILDROOT_MUSL
select BR2_GCC_NEEDS_MPC
config BR2_GCC_VERSION_4_7_X
bool "gcc 4.7.x"
# Broken or unsupported architectures
depends on !BR2_microblaze && !BR2_aarch64 && !BR2_arc \
&& !BR2_bfin && !BR2_powerpc64le && !BR2_nios2
# Broken or unsupported ARM cores
depends on !BR2_cortex_a12 && !BR2_pj4
# Broken or unsupported PPC cores
depends on !BR2_powerpc_e5500 && !BR2_powerpc_e6500 && \
!BR2_powerpc_power8
# SPARC -mcpu=leon3 appeared in gcc 4.8.x
depends on !BR2_sparc_leon3
# Broken or unsupported x86 cores
depends on !BR2_x86_jaguar && !BR2_x86_steamroller
select BR2_GCC_NEEDS_MPC
config BR2_GCC_VERSION_4_8_X
bool "gcc 4.8.x"
# Broken or unsupported architectures
depends on !BR2_microblaze && !BR2_arc \
&& !BR2_bfin && !BR2_powerpc64le && !BR2_nios2
# Broken or unsupported ARM cores
depends on !BR2_cortex_a12
# Broken or unsupported PPC cores
depends on !BR2_powerpc_power8
select BR2_GCC_NEEDS_MPC
select BR2_GCC_SUPPORTS_GRAPHITE
config BR2_GCC_VERSION_4_8_ARC
bool "gcc 4.8-arc"
# Only supported architecture
depends on BR2_arc
select BR2_GCC_NEEDS_MPC
config BR2_GCC_VERSION_4_9_X
bool "gcc 4.9.x"
# Broken or unsupported architectures
depends on !BR2_arc && !BR2_bfin
# PR60102 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60102
select BR2_GCC_NEEDS_MPC
select BR2_GCC_SUPPORTS_GRAPHITE
endchoice
config BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE
bool
default y
config BR2_GCC_VERSION
string
default "4.5.4" if BR2_GCC_VERSION_4_5_X
default "4.7.4" if BR2_GCC_VERSION_4_7_X
default "4.8.4" if BR2_GCC_VERSION_4_8_X
default "4.9.2" if BR2_GCC_VERSION_4_9_X
default "arc-2014.12" if BR2_GCC_VERSION_4_8_ARC
config BR2_EXTRA_GCC_CONFIG_OPTIONS
string "Additional gcc options"
default ""
help
Any additional gcc configure options you may want to
include. Those options are applied for all of the gcc
initial, gcc intermediate and gcc final passes.
config BR2_TOOLCHAIN_BUILDROOT_CXX
bool "Enable C++ support"
select BR2_INSTALL_LIBSTDCPP
help
Enable this option if you want your toolchain to support the
C++ language and you want C++ libraries to be installed on
your target system.
config BR2_GCC_ENABLE_TLS
bool "Enable compiler tls support" if BR2_TOOLCHAIN_BUILDROOT_UCLIBC
default y
depends on BR2_PTHREADS_NATIVE || BR2_TOOLCHAIN_BUILDROOT_EGLIBC || BR2_TOOLCHAIN_BUILDROOT_GLIBC
help
Enable the compiler to generate code for accessing
thread local storage variables
config BR2_GCC_ENABLE_LTO
bool "Enable compiler link-time-optimization support"
select BR2_BINUTILS_ENABLE_LTO
help
This option enables link-time optimization (LTO) support in
gcc.
config BR2_GCC_ENABLE_OPENMP
bool "Enable compiler OpenMP support"
depends on !BR2_PTHREADS_NONE && !BR2_arc && !BR2_microblaze
help
Enable OpenMP support for the compiler
config BR2_GCC_ENABLE_LIBMUDFLAP
bool "Enable libmudflap support"
# There are architectures, or specific configurations for
# which mudflap is not supported.
depends on !BR2_bfin && !BR2_ARM_INSTRUCTIONS_THUMB && !BR2_powerpc_SPE
depends on !BR2_GCC_VERSION_4_9_X
help
libmudflap is a gcc library used for the mudflap pointer
debugging functionality. It is only needed if you intend to
use the -fmudflap gcc flag.
See http://gcc.gnu.org/wiki/Mudflap_Pointer_Debugging and
the help of the gcc -fmudflap option for more details.
If you're unsure, leave this option disabled.
config BR2_GCC_ENABLE_GRAPHITE
bool "Enable graphite support"
depends on BR2_GCC_SUPPORTS_GRAPHITE
help
This option enables the graphite optimizations in the
compiler.