2013-06-30 21:28:59 +02:00
|
|
|
comment "GCC Options"
|
|
|
|
|
|
|
|
choice
|
|
|
|
prompt "GCC compiler Version"
|
2016-08-11 15:25:38 +02:00
|
|
|
default BR2_GCC_VERSION_ARC if BR2_arc
|
2016-09-20 19:25:42 +02:00
|
|
|
default BR2_GCC_VERSION_5_X
|
2013-06-30 21:28:59 +02:00
|
|
|
help
|
|
|
|
Select the version of gcc you wish to use.
|
|
|
|
|
|
|
|
config BR2_GCC_VERSION_4_8_X
|
2014-09-22 19:32:21 +02:00
|
|
|
bool "gcc 4.8.x"
|
|
|
|
# Broken or unsupported architectures
|
2015-02-14 10:23:11 +01:00
|
|
|
depends on !BR2_microblaze && !BR2_arc \
|
2016-06-03 06:05:31 +02:00
|
|
|
&& !BR2_powerpc64le && !BR2_nios2 && !BR2_bfin
|
2014-09-22 19:32:21 +02:00
|
|
|
# Broken or unsupported ARM cores
|
2016-02-21 14:12:10 +01:00
|
|
|
depends on !BR2_cortex_a12 && !BR2_cortex_a17
|
2014-09-22 19:32:21 +02:00
|
|
|
# Broken or unsupported PPC cores
|
2014-11-17 23:12:33 +01:00
|
|
|
depends on !BR2_powerpc_power8
|
2016-09-30 11:36:54 +02:00
|
|
|
# Unsupported MIPS cores
|
|
|
|
depends on !BR2_mips_interaptiv
|
2015-07-02 17:19:08 +02:00
|
|
|
# gcc-4.8.x + binutils-2.25 is broken for MIPS
|
2015-07-28 15:48:21 +02:00
|
|
|
depends on !((BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el) && BR2_BINUTILS_VERSION_2_25_X)
|
2016-09-30 11:36:51 +02:00
|
|
|
# Unsupported for MIPS R5
|
2016-09-30 11:36:52 +02:00
|
|
|
depends on !BR2_MIPS_CPU_MIPS32R5 && !BR2_MIPS_CPU_MIPS64R5
|
2015-10-12 12:08:06 +02:00
|
|
|
# Unsupported for MIPS R6
|
2016-09-30 11:36:49 +02:00
|
|
|
depends on !BR2_MIPS_CPU_MIPS32R6 && !BR2_MIPS_CPU_MIPS64R6
|
2016-08-18 08:37:29 +02:00
|
|
|
# musl ppc64 unsupported
|
gcc: fix gcc version dependencies for the PowerPC64/musl exclusion
In commit
5ab751ca44e9da6f406876ff582b3a813056b0d4 ("toolchain-buildroot: allow to
build ppc64(le) musl toolchains"), support for building a musl toolchain
for ppc64(le) was added. Since this support only works with gcc 6, some
additional dependencies have been added to the older gcc versions so
that they cannot be selected on ppc64(le)/musl.
Unfortunately, the expression of the dependency was wrong, and leads to
those older gcc versions being non-selectable if you're not using
musl. Indeed, the dependencies look like this:
depends on !BR2_powerpc64 && !BR2_powerpc64le && BR2_TOOLCHAIN_USES_MUSL
So as soon as you're not using musl, BR2_TOOLCHAIN_USES_MUSL is false,
so the entire condition is false, and the gcc version is not available.
Due to this, only gcc 6.x can be selected currently with uclibc or
glibc, which is clearly not the intended behavior.
This commit reworks those dependencies to:
depends on !(BR2_TOOLCHAIN_USES_MUSL && (BR2_powerpc64 || BR2_powerpc64el))
which more clearly expresses what we want:
"We don't want to (have a toolchain that uses musl and (be building
either for PPC64 or PPC64le))"
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-08-20 16:05:19 +02:00
|
|
|
depends on !(BR2_TOOLCHAIN_USES_MUSL && (BR2_powerpc64 || BR2_powerpc64el))
|
2016-08-22 21:19:54 +02:00
|
|
|
# musl mips64 unsupported
|
|
|
|
depends on !(BR2_TOOLCHAIN_USES_MUSL && (BR2_mips64 || BR2_mips64el))
|
2015-08-04 20:00:34 +02:00
|
|
|
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
|
2013-06-30 21:28:59 +02:00
|
|
|
|
2016-08-11 15:25:38 +02:00
|
|
|
config BR2_GCC_VERSION_ARC
|
|
|
|
bool "gcc arc (6.x)"
|
2014-09-22 19:32:21 +02:00
|
|
|
# Only supported architecture
|
2013-07-18 23:47:52 +02:00
|
|
|
depends on BR2_arc
|
2016-08-11 15:25:38 +02:00
|
|
|
select BR2_TOOLCHAIN_GCC_AT_LEAST_6
|
2015-08-04 20:00:34 +02:00
|
|
|
|
2014-04-24 03:00:30 +02:00
|
|
|
config BR2_GCC_VERSION_4_9_X
|
2014-09-22 19:32:21 +02:00
|
|
|
bool "gcc 4.9.x"
|
|
|
|
# Broken or unsupported architectures
|
2016-06-03 06:05:31 +02:00
|
|
|
depends on !BR2_arc && !BR2_bfin
|
2016-02-21 14:12:10 +01:00
|
|
|
# Broken or unsupported ARM cores
|
|
|
|
depends on !BR2_cortex_a17
|
2016-09-30 11:36:54 +02:00
|
|
|
# Unsupported MIPS cores
|
|
|
|
depends on !BR2_mips_interaptiv
|
2016-09-30 11:36:51 +02:00
|
|
|
# Unsupported for MIPS R5
|
2016-09-30 11:36:52 +02:00
|
|
|
depends on !BR2_MIPS_CPU_MIPS32R5 && !BR2_MIPS_CPU_MIPS64R5
|
2015-10-12 12:08:06 +02:00
|
|
|
# Unsupported for MIPS R6
|
2016-09-30 11:36:49 +02:00
|
|
|
depends on !BR2_MIPS_CPU_MIPS32R6 && !BR2_MIPS_CPU_MIPS64R6
|
2016-10-23 21:26:16 +02:00
|
|
|
# musl microblaze unsupported
|
|
|
|
depends on !(BR2_TOOLCHAIN_USES_MUSL && (BR2_microblazeel || BR2_microblazebe))
|
2016-08-18 08:37:29 +02:00
|
|
|
# musl ppc64 unsupported
|
gcc: fix gcc version dependencies for the PowerPC64/musl exclusion
In commit
5ab751ca44e9da6f406876ff582b3a813056b0d4 ("toolchain-buildroot: allow to
build ppc64(le) musl toolchains"), support for building a musl toolchain
for ppc64(le) was added. Since this support only works with gcc 6, some
additional dependencies have been added to the older gcc versions so
that they cannot be selected on ppc64(le)/musl.
Unfortunately, the expression of the dependency was wrong, and leads to
those older gcc versions being non-selectable if you're not using
musl. Indeed, the dependencies look like this:
depends on !BR2_powerpc64 && !BR2_powerpc64le && BR2_TOOLCHAIN_USES_MUSL
So as soon as you're not using musl, BR2_TOOLCHAIN_USES_MUSL is false,
so the entire condition is false, and the gcc version is not available.
Due to this, only gcc 6.x can be selected currently with uclibc or
glibc, which is clearly not the intended behavior.
This commit reworks those dependencies to:
depends on !(BR2_TOOLCHAIN_USES_MUSL && (BR2_powerpc64 || BR2_powerpc64el))
which more clearly expresses what we want:
"We don't want to (have a toolchain that uses musl and (be building
either for PPC64 or PPC64le))"
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-08-20 16:05:19 +02:00
|
|
|
depends on !(BR2_TOOLCHAIN_USES_MUSL && (BR2_powerpc64 || BR2_powerpc64el))
|
2016-08-22 21:19:54 +02:00
|
|
|
# musl mips64 unsupported
|
|
|
|
depends on !(BR2_TOOLCHAIN_USES_MUSL && (BR2_mips64 || BR2_mips64el))
|
2014-07-18 13:10:41 +02:00
|
|
|
# PR60102 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60102
|
2015-08-04 20:00:34 +02:00
|
|
|
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
|
2014-04-24 03:00:30 +02:00
|
|
|
|
2015-07-17 16:31:13 +02:00
|
|
|
config BR2_GCC_VERSION_5_X
|
|
|
|
bool "gcc 5.x"
|
gcc: add support for gcc 5.1
This commit adds support for gcc 5.1 in Buildroot. In terms of gcc
patches, compared to gcc 4.9.x:
* Kept as is, sometimes after minor adjusments:
100-uclibc-conf.patch
301-missing-execinfo_h.patch
810-arm-softfloat-libgcc.patch
830-arm_unbreak_armv4t.patch
840-microblaze-enable-dwarf-eh-support.patch
850-libstdcxx-uclibc-c99.patch
860-cilk-wchar.patch
* Dropped:
110-pr64896.patch
111-pr65730.patch
* Split in multiple parts:
900-musl-support.patch
The patches from Crosstool-NG for muls support are used instead of
one single patch.
* Renamed:
910-gcc-poison-system-directories.patch to
200-gcc-poison-system-directories.patch
920-libgcc-remove-unistd-header.patch to
201-libgcc-remove-unistd-header.patch
Since the 9xx part of the series is now used by the various musl
related patches.
We have tested the following configurations, with a minimal Busybox
system:
* ARM, uClibc-ng
* ARM, glibc
* ARM, musl
* x86, uClibc-ng and uClibc 0.9.33.2
* x86, glibc
* x86, musl
All of the configurations built fine. All the configurations boot fine
in Qemu, except x86/uClibc (either ng or 0.9.33.2), it segfaults when
running init:
devtmpfs: mounted
Freeing unused kernel memory: 300K (c1389000 - c13d4000)
init[1]: segfault at 0 ip b77708c1 sp bfa9bb0c error 4 in ld-uClibc-0.9.33.2.so[b776c000+6000]
Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
We'll give some time for the uClibc developers to fix the problem
before taking other measures in Buildroot to exclude gcc 5.1 from a
x86/uClibc configuration.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2015-06-14 16:33:28 +02:00
|
|
|
# Broken or unsupported architectures
|
2016-06-03 06:05:31 +02:00
|
|
|
depends on !BR2_arc && !BR2_bfin
|
2016-08-18 08:37:29 +02:00
|
|
|
# musl ppc64 unsupported
|
gcc: fix gcc version dependencies for the PowerPC64/musl exclusion
In commit
5ab751ca44e9da6f406876ff582b3a813056b0d4 ("toolchain-buildroot: allow to
build ppc64(le) musl toolchains"), support for building a musl toolchain
for ppc64(le) was added. Since this support only works with gcc 6, some
additional dependencies have been added to the older gcc versions so
that they cannot be selected on ppc64(le)/musl.
Unfortunately, the expression of the dependency was wrong, and leads to
those older gcc versions being non-selectable if you're not using
musl. Indeed, the dependencies look like this:
depends on !BR2_powerpc64 && !BR2_powerpc64le && BR2_TOOLCHAIN_USES_MUSL
So as soon as you're not using musl, BR2_TOOLCHAIN_USES_MUSL is false,
so the entire condition is false, and the gcc version is not available.
Due to this, only gcc 6.x can be selected currently with uclibc or
glibc, which is clearly not the intended behavior.
This commit reworks those dependencies to:
depends on !(BR2_TOOLCHAIN_USES_MUSL && (BR2_powerpc64 || BR2_powerpc64el))
which more clearly expresses what we want:
"We don't want to (have a toolchain that uses musl and (be building
either for PPC64 or PPC64le))"
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-08-20 16:05:19 +02:00
|
|
|
depends on !(BR2_TOOLCHAIN_USES_MUSL && (BR2_powerpc64 || BR2_powerpc64el))
|
2016-09-30 11:36:54 +02:00
|
|
|
# Unsupported MIPS cores
|
2016-11-08 11:32:57 +01:00
|
|
|
depends on !BR2_mips_interaptiv && !BR2_mips_m5150 && \
|
2016-11-08 11:32:58 +01:00
|
|
|
!BR2_mips_m6250 && !BR2_mips_i6400 && !BR2_mips_p6600
|
2016-08-22 21:19:54 +02:00
|
|
|
# musl mips64 unsupported
|
|
|
|
depends on !(BR2_TOOLCHAIN_USES_MUSL && (BR2_mips64 || BR2_mips64el))
|
2015-08-04 20:00:34 +02:00
|
|
|
select BR2_TOOLCHAIN_GCC_AT_LEAST_5
|
gcc: add support for gcc 5.1
This commit adds support for gcc 5.1 in Buildroot. In terms of gcc
patches, compared to gcc 4.9.x:
* Kept as is, sometimes after minor adjusments:
100-uclibc-conf.patch
301-missing-execinfo_h.patch
810-arm-softfloat-libgcc.patch
830-arm_unbreak_armv4t.patch
840-microblaze-enable-dwarf-eh-support.patch
850-libstdcxx-uclibc-c99.patch
860-cilk-wchar.patch
* Dropped:
110-pr64896.patch
111-pr65730.patch
* Split in multiple parts:
900-musl-support.patch
The patches from Crosstool-NG for muls support are used instead of
one single patch.
* Renamed:
910-gcc-poison-system-directories.patch to
200-gcc-poison-system-directories.patch
920-libgcc-remove-unistd-header.patch to
201-libgcc-remove-unistd-header.patch
Since the 9xx part of the series is now used by the various musl
related patches.
We have tested the following configurations, with a minimal Busybox
system:
* ARM, uClibc-ng
* ARM, glibc
* ARM, musl
* x86, uClibc-ng and uClibc 0.9.33.2
* x86, glibc
* x86, musl
All of the configurations built fine. All the configurations boot fine
in Qemu, except x86/uClibc (either ng or 0.9.33.2), it segfaults when
running init:
devtmpfs: mounted
Freeing unused kernel memory: 300K (c1389000 - c13d4000)
init[1]: segfault at 0 ip b77708c1 sp bfa9bb0c error 4 in ld-uClibc-0.9.33.2.so[b776c000+6000]
Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
We'll give some time for the uClibc developers to fix the problem
before taking other measures in Buildroot to exclude gcc 5.1 from a
x86/uClibc configuration.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2015-06-14 16:33:28 +02:00
|
|
|
|
2016-04-27 15:54:03 +02:00
|
|
|
config BR2_GCC_VERSION_6_X
|
|
|
|
bool "gcc 6.x"
|
|
|
|
# Broken or unsupported architectures
|
|
|
|
depends on !BR2_arc
|
2016-10-23 21:26:16 +02:00
|
|
|
depends on !BR2_microblaze
|
2016-09-30 11:36:59 +02:00
|
|
|
# Unsupported MIPS cores
|
2016-11-08 11:32:58 +01:00
|
|
|
depends on !BR2_mips_m6250 && !BR2_mips_p6600
|
2016-04-27 15:54:03 +02:00
|
|
|
select BR2_TOOLCHAIN_GCC_AT_LEAST_6
|
|
|
|
|
2013-06-30 21:28:59 +02:00
|
|
|
endchoice
|
|
|
|
|
2016-06-03 06:03:02 +02:00
|
|
|
# Indicates if GCC for architecture supports --with-{arch,cpu,..} to
|
|
|
|
# set default CFLAGS, otherwise values will be used by toolchain
|
|
|
|
# wrapper.
|
|
|
|
config BR2_GCC_ARCH_HAS_CONFIGURABLE_DEFAULTS
|
|
|
|
bool
|
|
|
|
default y if !BR2_bfin
|
|
|
|
|
2013-06-30 21:28:59 +02:00
|
|
|
config BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE
|
|
|
|
bool
|
2015-02-14 10:23:11 +01:00
|
|
|
default y
|
2013-06-30 21:28:59 +02:00
|
|
|
|
|
|
|
config BR2_GCC_VERSION
|
|
|
|
string
|
2015-06-24 09:20:43 +02:00
|
|
|
default "4.8.5" if BR2_GCC_VERSION_4_8_X
|
2016-08-03 23:48:24 +02:00
|
|
|
default "4.9.4" if BR2_GCC_VERSION_4_9_X
|
2016-06-07 03:21:48 +02:00
|
|
|
default "5.4.0" if BR2_GCC_VERSION_5_X
|
2016-09-06 03:12:10 +02:00
|
|
|
default "6.2.0" if BR2_GCC_VERSION_6_X
|
2016-12-02 19:38:12 +01:00
|
|
|
default "arc-2016.09-rc2" if BR2_GCC_VERSION_ARC
|
2013-06-30 21:28:59 +02:00
|
|
|
|
|
|
|
config BR2_EXTRA_GCC_CONFIG_OPTIONS
|
|
|
|
string "Additional gcc options"
|
|
|
|
default ""
|
|
|
|
help
|
gcc: use BR2_EXTRA_GCC_CONFIG_OPTIONS in gcc-initial and gcc-intermediate
When refactoring the internal toolchain backend logic, the code was
changed to pass the custom configure options given through
BR2_EXTRA_GCC_CONFIG_OPTIONS only for the gcc final pass, with the
idea that we're only interested by user customization for the final
compiler.
However, the beaglebone_defconfig was passing --with-float=hard
--with-fpu=vfpv3-d16 as BR2_EXTRA_GCC_CONFIG_OPTIONS, and since the
refactoring, it was causing build failures of the beaglebone_defconfig
(with messages saying that Busybox is built to use VFP arguments, but
libc/libm are not). This is due to the fact that the gcc intermediate,
which is used to build the C library, wasn't built to generate hard
float, while the final compiler was generating hard float.
So, we get back to the original situation where the options in
BR2_EXTRA_GCC_CONFIG_OPTIONS are passed to all of the compiler
passes. Of course, the specific case of hard float will be fixed by
following patches in this area, but the idea still remains: the three
gcc should have the same options, if those options affected the ABI of
the generated code.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2013-07-14 00:27:24 +02:00
|
|
|
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.
|
2013-06-30 21:28:59 +02:00
|
|
|
|
2013-09-02 18:06:32 +02:00
|
|
|
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.
|
|
|
|
|
2016-07-03 15:47:39 +02:00
|
|
|
comment "Fortran support needs a toolchain w/ wchar"
|
|
|
|
depends on BR2_TOOLCHAIN_HAS_LIBQUADMATH
|
|
|
|
depends on !BR2_USE_WCHAR # libquadmath
|
|
|
|
|
2015-05-09 19:40:54 +02:00
|
|
|
config BR2_TOOLCHAIN_BUILDROOT_FORTRAN
|
|
|
|
bool "Enable Fortran support"
|
2016-07-03 15:47:39 +02:00
|
|
|
# on architecture building libquadmath, wchar is required
|
|
|
|
depends on !BR2_TOOLCHAIN_HAS_LIBQUADMATH || \
|
|
|
|
(BR2_TOOLCHAIN_HAS_LIBQUADMATH && BR2_USE_WCHAR)
|
2016-07-03 15:47:42 +02:00
|
|
|
select BR2_TOOLCHAIN_HAS_FORTRAN
|
2015-05-09 19:40:54 +02:00
|
|
|
help
|
|
|
|
Enable this option if you want your toolchain to support the
|
|
|
|
Fortran language and you want Fortran libraries to be
|
|
|
|
installed on your target system.
|
|
|
|
|
2015-03-06 13:34:06 +01:00
|
|
|
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.
|
|
|
|
|
2013-06-30 21:28:59 +02:00
|
|
|
config BR2_GCC_ENABLE_OPENMP
|
|
|
|
bool "Enable compiler OpenMP support"
|
2015-02-14 10:23:11 +01:00
|
|
|
depends on !BR2_PTHREADS_NONE && !BR2_arc && !BR2_microblaze
|
2013-06-30 21:28:59 +02:00
|
|
|
help
|
|
|
|
Enable OpenMP support for the compiler
|
2013-09-02 18:06:38 +02:00
|
|
|
|
|
|
|
config BR2_GCC_ENABLE_LIBMUDFLAP
|
|
|
|
bool "Enable libmudflap support"
|
|
|
|
# There are architectures, or specific configurations for
|
|
|
|
# which mudflap is not supported.
|
2015-03-17 23:44:17 +01:00
|
|
|
depends on !BR2_ARM_INSTRUCTIONS_THUMB && !BR2_powerpc_SPE
|
2016-06-04 18:45:56 +02:00
|
|
|
depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
|
2013-09-02 18:06:38 +02:00
|
|
|
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.
|
2014-05-19 21:48:13 +02:00
|
|
|
|
|
|
|
config BR2_GCC_ENABLE_GRAPHITE
|
|
|
|
bool "Enable graphite support"
|
|
|
|
help
|
|
|
|
This option enables the graphite optimizations in the
|
|
|
|
compiler.
|