2010-07-27 16:08:16 -06:00
|
|
|
# Config entries for internal toolchain backend
|
2008-12-15 08:28:48 -07:00
|
|
|
|
2009-12-14 04:10:12 -07:00
|
|
|
if BR2_TOOLCHAIN_BUILDROOT
|
2014-04-01 00:25:47 -06:00
|
|
|
|
2016-08-08 12:34:59 -06:00
|
|
|
comment "Toolchain Buildroot Options"
|
|
|
|
|
2014-04-01 00:25:47 -06:00
|
|
|
config BR2_TOOLCHAIN_BUILDROOT_VENDOR
|
|
|
|
string "custom toolchain vendor name"
|
|
|
|
default "buildroot"
|
|
|
|
help
|
|
|
|
This option allows to customize the "vendor" part of the
|
|
|
|
toolchain tuple, where the toolchain tuple has the form
|
|
|
|
<arch>-<vendor>-<os>-<libc>. The default value, "buildroot",
|
|
|
|
is fine for most cases, except in very specific situations
|
|
|
|
where gcc might make different decisions based on the vendor
|
|
|
|
part of the tuple. The value "unknown" is not allowed, as the
|
|
|
|
cross-compiling toolchain might then be confused with the
|
|
|
|
native toolchain when the target and host architecture are
|
|
|
|
identical. The value can not be empty either.
|
|
|
|
|
|
|
|
If you're not sure, just leave the default "buildroot" value.
|
|
|
|
|
2013-06-30 13:29:12 -06:00
|
|
|
choice
|
|
|
|
prompt "C library"
|
2018-05-09 10:33:22 -06:00
|
|
|
default BR2_TOOLCHAIN_BUILDROOT_UCLIBC
|
2017-02-03 07:28:14 -07:00
|
|
|
default BR2_TOOLCHAIN_BUILDROOT_GLIBC if BR2_powerpc64
|
2013-06-30 13:29:12 -06:00
|
|
|
|
|
|
|
config BR2_TOOLCHAIN_BUILDROOT_UCLIBC
|
2016-06-04 14:53:47 -06:00
|
|
|
bool "uClibc-ng"
|
Revert "toolchain/toolchain-buildroot: enable uclibc for riscv64"
This reverts commit bd9810e176273914eca1208bcba23f0de9e446b3. Indeed,
while uClibc-ng has support for RISC-V 64-bit, this support lacks the
__riscv_flush_icache() function call, which is used by some GCC
builtins used for example in libffi.
Due to this missing __riscv_flush_icache(), anything that links
against libffi fails to build:
/home/test/autobuild/run/instance-0/output-1/host/bin/riscv64-buildroot-linux-uclibc-gcc -o gobject/gobject-query gobject/gobject-query.p/gobject-query.c.o -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -Wl,--start-group glib/libglib-2.0.so.0.6400.4 gobject/libgobject-2.0.so.0.6400.4 -Wl,--end-group -pthread '-Wl,-rpath,$ORIGIN/../glib:$ORIGIN/' -Wl,-rpath-link,/home/test/autobuild/run/instance-0/output-1/build/libglib2-2.64.4/build/glib -Wl,-rpath-link,/home/test/autobuild/run/instance-0/output-1/build/libglib2-2.64.4/build/gobject
/home/test/autobuild/run/instance-0/output-1/host/lib/gcc/riscv64-buildroot-linux-uclibc/9.3.0/../../../../riscv64-buildroot-linux-uclibc/bin/ld: /home/test/autobuild/run/instance-0/output-1/host/riscv64-buildroot-linux-uclibc/sysroot/usr/lib64/libffi.so.7: undefined reference to `__riscv_flush_icache'
collect2: error: ld returned 1 exit status
Note that this commit means that
support/config-fragments/autobuild/br-riscv64-full-internal.config
will be back to using glibc as the C library, but that is OK, until
uClibc-ng is fixed to implemented __riscv_flush_icache().
This uClibc-ng issue has been reported upstream at
https://mailman.uclibc-ng.org/pipermail/devel/2020-August/002022.html.
Fixes:
http://autobuild.buildroot.net/results/ec1185ad1fd8863a3990143a0af2ace987761a27/
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2020-08-15 08:10:38 -06:00
|
|
|
depends on BR2_aarch64 || BR2_aarch64_be || BR2_arcle || BR2_arceb || \
|
|
|
|
BR2_arm || BR2_armeb || \
|
|
|
|
BR2_i386 || BR2_m68k || BR2_microblaze || \
|
|
|
|
BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el || \
|
2020-11-12 16:20:52 -07:00
|
|
|
BR2_or1k || BR2_powerpc || BR2_RISCV_64 || BR2_sh2a || \
|
2020-09-08 05:33:19 -06:00
|
|
|
BR2_sh4 || BR2_sh4eb || BR2_sparc || BR2_xtensa || \
|
|
|
|
BR2_x86_64
|
2018-03-31 23:08:38 -06:00
|
|
|
select BR2_TOOLCHAIN_USES_UCLIBC
|
2013-06-30 13:29:12 -06:00
|
|
|
help
|
2016-06-04 14:53:47 -06:00
|
|
|
This option selects uClibc-ng as the C library for the
|
2013-06-30 13:29:12 -06:00
|
|
|
cross-compilation toolchain.
|
|
|
|
|
2016-06-04 14:53:47 -06:00
|
|
|
http://uclibc-ng.org
|
2013-06-30 13:29:12 -06:00
|
|
|
|
2013-09-02 10:06:33 -06:00
|
|
|
config BR2_TOOLCHAIN_BUILDROOT_GLIBC
|
2013-11-11 10:57:30 -07:00
|
|
|
bool "glibc"
|
2015-03-18 03:49:48 -06:00
|
|
|
depends on BR2_arm || BR2_armeb || BR2_aarch64 || \
|
|
|
|
BR2_aarch64_be || BR2_i386 || BR2_mips || \
|
|
|
|
BR2_mipsel || BR2_mips64 || BR2_mips64el|| \
|
|
|
|
BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le || \
|
2020-09-16 22:07:52 -06:00
|
|
|
BR2_riscv || BR2_s390x || BR2_sh || \
|
|
|
|
BR2_sparc64 || BR2_x86_64 || BR2_microblaze || \
|
|
|
|
BR2_nios2 || (BR2_arc && BR2_ARC_ATOMIC_EXT) || BR2_csky
|
2014-03-03 11:31:27 -07:00
|
|
|
depends on BR2_USE_MMU
|
2014-12-03 14:41:29 -07:00
|
|
|
depends on !BR2_STATIC_LIBS
|
2017-06-10 14:53:37 -06:00
|
|
|
depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
|
2017-09-23 15:24:02 -06:00
|
|
|
depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 || !BR2_powerpc64le
|
2017-09-03 03:53:52 -06:00
|
|
|
depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5 || !BR2_MIPS_NAN_2008
|
2020-07-27 03:29:49 -06:00
|
|
|
depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0 || !BR2_RISCV_64
|
2020-12-07 15:47:19 -07:00
|
|
|
depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1 || !BR2_arc
|
2014-05-22 16:16:14 -06:00
|
|
|
depends on !BR2_powerpc_SPE
|
2018-09-12 04:22:54 -06:00
|
|
|
depends on BR2_RISCV_ISA_RVA || !BR2_riscv
|
2014-03-03 11:31:27 -07:00
|
|
|
select BR2_TOOLCHAIN_USES_GLIBC
|
2013-09-02 10:06:33 -06:00
|
|
|
help
|
|
|
|
This option selects glibc as the C library for the
|
|
|
|
cross-compilation toolchain.
|
|
|
|
|
|
|
|
http://www.gnu.org/software/libc/
|
|
|
|
|
2017-06-10 14:53:37 -06:00
|
|
|
comment "glibc needs a toolchain w/ dynamic library, kernel headers >= 3.2"
|
2016-03-31 13:00:09 -06:00
|
|
|
depends on BR2_USE_MMU
|
2017-06-10 14:53:37 -06:00
|
|
|
depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
|
2013-11-11 10:57:31 -07:00
|
|
|
|
2017-09-23 15:24:02 -06:00
|
|
|
# glibc >= 2.26 require kernel headers >= 3.10 on powerpc64le.
|
|
|
|
comment "glibc on powerpc64le needs a toolchain w/ headers >= 3.10"
|
|
|
|
depends on BR2_powerpc64le
|
|
|
|
depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
|
|
|
|
|
2017-11-25 08:19:02 -07:00
|
|
|
# Support for MIPS NAN2008 needs headers >= 4.5
|
|
|
|
comment "glibc on MIPS w/ NAN2008 needs a toolchain w/ headers >= 4.5"
|
|
|
|
depends on BR2_MIPS_NAN_2008
|
|
|
|
depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
|
|
|
|
|
2014-05-05 15:17:08 -06:00
|
|
|
config BR2_TOOLCHAIN_BUILDROOT_MUSL
|
2016-05-16 16:13:02 -06:00
|
|
|
bool "musl"
|
2017-11-29 23:00:28 -07:00
|
|
|
depends on BR2_aarch64 || BR2_arm || BR2_armeb || BR2_i386 || \
|
|
|
|
BR2_microblaze || BR2_mips || BR2_mipsel || BR2_mips64 || \
|
|
|
|
BR2_mips64el || BR2_or1k || BR2_powerpc || BR2_powerpc64 || \
|
2019-07-30 10:39:31 -06:00
|
|
|
BR2_powerpc64le || BR2_RISCV_64 || BR2_sh || BR2_x86_64
|
2014-09-10 14:16:04 -06:00
|
|
|
depends on !BR2_powerpc_SPE # not supported, build breaks
|
2020-02-04 14:35:48 -07:00
|
|
|
depends on !(BR2_powerpc64 || BR2_powerpc64le) || BR2_POWERPC_CPU_HAS_ALTIVEC
|
2016-03-31 13:00:10 -06:00
|
|
|
# sh2 nommu is supported by musl, but we don't have support
|
|
|
|
# for it in Buildroot.
|
|
|
|
depends on BR2_USE_MMU
|
2014-05-05 15:17:08 -06:00
|
|
|
select BR2_TOOLCHAIN_USES_MUSL
|
|
|
|
help
|
|
|
|
This option selects musl as the C library for the
|
|
|
|
cross-compilation toolchain.
|
|
|
|
|
2019-11-28 10:58:42 -07:00
|
|
|
https://www.musl-libc.org/
|
|
|
|
|
2013-06-30 13:29:12 -06:00
|
|
|
endchoice
|
|
|
|
|
|
|
|
config BR2_TOOLCHAIN_BUILDROOT_LIBC
|
|
|
|
string
|
|
|
|
default "uclibc" if BR2_TOOLCHAIN_BUILDROOT_UCLIBC
|
2013-09-02 10:06:33 -06:00
|
|
|
default "glibc" if BR2_TOOLCHAIN_BUILDROOT_GLIBC
|
2014-05-05 15:17:08 -06:00
|
|
|
default "musl" if BR2_TOOLCHAIN_BUILDROOT_MUSL
|
2013-06-30 13:29:12 -06:00
|
|
|
|
2016-08-08 12:34:59 -06:00
|
|
|
source "package/linux-headers/Config.in.host"
|
2015-12-29 16:10:38 -07:00
|
|
|
source "package/linux-headers/Config.in"
|
toolchain: also source the musl package
We do source the glibc and uClibc packages in the toolchain menu,
because they do provide user-visible options. However, we do not so
far source the musl Config.in file
However, in 822be87 (toolchain: include C libraries in legal-info),
a Config.in file for musl was explicitly created, so that:
- legal-info would work (needed at the time, probably no longer needed
nowadays),
- the appropriate packages are enabled, like netbsd-queue or kernel
headers.
Yet, we do not source musl/Config.in, which means we do not get
netbsd-queue or kernel-headers to be selected:
$ make distclean; make menuconfig
Toolchain --->
C library ---> musl
save-and-exit
$ grep BR2_PACKAGE_LINUX_HEADERS .config
[nothing]
$ grep BR2_PACKAGE_NETBSD_QUEUE .config
[nothing]
Fix that by sourcing musl/Config.in at the same place we source glibc
and uClibc.
Normally, we do have a check in place that verifies that a package
that is not enabled is not a dependency of another package that is
enabled. However, musl is only a dependency of host-gcc-final, which
is a host package and has no corresponding BR2_PACKAGE_HOST_GCC_FINAL.
Thus host-gcc-final is not in the PACKAGES variable, and thus does not
trigger our check.
Reported-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2016-03-08 13:02:22 -07:00
|
|
|
source "package/musl/Config.in"
|
2013-06-30 13:29:05 -06:00
|
|
|
source "package/uclibc/Config.in"
|
2014-02-10 10:43:46 -07:00
|
|
|
source "package/glibc/Config.in"
|
2010-12-31 04:39:01 -07:00
|
|
|
source "package/binutils/Config.in.host"
|
2013-06-30 13:29:03 -06:00
|
|
|
source "package/gcc/Config.in.host"
|
2013-09-02 10:06:37 -06:00
|
|
|
source "package/elf2flt/Config.in.host"
|
2008-12-15 08:28:48 -07:00
|
|
|
endif
|