buildrootschalter/toolchain/Config.in
Thomas Petazzoni 2babed4a50 toolchain-internal: skip gcc-intermediate when possible
When NPTL support was introduced, gcc required a three stages build
process. Since gcc 4.7, this is no longer necessary, and it is
possible to get back to a two stages build process. This patch takes
advantage of this, by doing a two stages build process when possible.

We introduce a few hidden kconfig options:

 * BR2_GCC_VERSION_NEEDS_THREE_STAGE_BUILD, which is set by the gcc
   Config.in logic to indicate that the compiler might need a three
   stages build. Currently, all versions prior to 4.7.x are selecting
   this kconfig option.

 * BR2_TOOLCHAIN_LIBC_NEEDS_THREE_STAGE_BUILD, which indicates whether
   the C library might need a three stages build. This is the case for
   eglibc, and uClibc when NPTL is enabled.

 * BR2_TOOLCHAIN_NEEDS_THREE_STAGE_BUILD finally is enabled when both
   of the previous options are enabled. It indicates that a three
   stages build is actually needed.

In addition to those options, the uClibc/gcc build logic is changed to
use only a two stages build process when possible.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2013-09-15 22:50:20 +02:00

68 lines
1.8 KiB
Plaintext

menu "Toolchain"
config BR2_TOOLCHAIN_NEEDS_THREE_STAGE_BUILD
bool
default y if BR2_TOOLCHAIN_LIBC_NEEDS_THREE_STAGE_BUILD && \
BR2_GCC_VERSION_NEEDS_THREE_STAGE_BUILD
config BR2_TOOLCHAIN_LIBC_NEEDS_THREE_STAGE_BUILD
bool
# Should be selected for glibc or eglibc
config BR2_TOOLCHAIN_USES_GLIBC
bool
select BR2_LARGEFILE
select BR2_INET_IPV6
select BR2_USE_WCHAR
select BR2_ENABLE_LOCALE
select BR2_TOOLCHAIN_HAS_THREADS
select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
select BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS
select BR2_TOOLCHAIN_LIBC_NEEDS_THREE_STAGE_BUILD
config BR2_TOOLCHAIN_USES_UCLIBC
bool
choice
prompt "Toolchain type"
help
Select whether to use the toolchain provided by buildroot
or an external toolchain.
Some vendors provide toolchains in binary form, some in
source form.
config BR2_TOOLCHAIN_BUILDROOT
bool "Buildroot toolchain"
depends on !BR2_microblaze && !BR2_aarch64 && !BR2_nios2
select BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS
config BR2_TOOLCHAIN_EXTERNAL
bool "External toolchain"
help
Select if you want to use an existing cross-compiling
toolchain. Buildroot can either download automatically a
toolchain, or use an already installed toolchain.
config BR2_TOOLCHAIN_CTNG
bool "Crosstool-NG toolchain"
depends on BR2_DEPRECATED
depends on !BR2_microblaze && !BR2_aarch64 && !BR2_xtensa && \
!BR2_arc && !BR2_nios2
select BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS
help
Say 'y' if you want to generate the toolchain with crosstool-NG
(http://crosstool-ng.org).
This is considered experimental, and you can expect some breakage.
endchoice
source "toolchain/toolchain-buildroot/Config.in"
source "toolchain/toolchain-external/Config.in"
source "toolchain/toolchain-crosstool-ng/Config.in"
source "toolchain/toolchain-common.in"
source "toolchain/toolchain-buildroot/Config.in.2"
endmenu