buildroot long term support release 2024.02.3

buildroot-2024.02.3.tar.gz

Signed-off-by: carbon <carbon@milkv.io>
This commit is contained in:
carbon
2024-06-14 22:30:26 +08:00
parent aac91c08cd
commit e42fe97d74
19479 changed files with 284259 additions and 232833 deletions

View File

@ -0,0 +1,941 @@
menu "Toolchain"
# Invisible option that makes sure the toolchain package always gets
# built
config BR2_TOOLCHAIN
bool
default y
# Should be selected for glibc or eglibc
config BR2_TOOLCHAIN_USES_GLIBC
bool
select BR2_USE_WCHAR
select BR2_ENABLE_LOCALE
select BR2_TOOLCHAIN_HAS_FULL_GETTEXT
select BR2_TOOLCHAIN_HAS_THREADS
select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
select BR2_TOOLCHAIN_HAS_THREADS_NPTL
select BR2_TOOLCHAIN_HAS_UCONTEXT
select BR2_TOOLCHAIN_SUPPORTS_PIE
config BR2_TOOLCHAIN_USES_UCLIBC
bool
# ucontext is only available for a subset of the supported
# architectures
select BR2_TOOLCHAIN_HAS_UCONTEXT if BR2_ARM_CPU_HAS_ARM || BR2_i386 \
|| BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el \
|| BR2_sparc || BR2_x86_64
select BR2_TOOLCHAIN_SUPPORTS_PIE if !BR2_m68k && !BR2_microblaze && !BR2_STATIC_LIBS
config BR2_TOOLCHAIN_USES_MUSL
bool
select BR2_USE_WCHAR
select BR2_ENABLE_LOCALE
select BR2_TOOLCHAIN_HAS_THREADS
select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
select BR2_TOOLCHAIN_HAS_THREADS_NPTL
select BR2_TOOLCHAIN_SUPPORTS_PIE if !BR2_STATIC_LIBS
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_ARCH_HAS_TOOLCHAIN_BUILDROOT
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.
endchoice
source "toolchain/toolchain-buildroot/Config.in"
source "toolchain/toolchain-external/Config.in"
# Generic toolchain options
# we want gdb config in the middle of both source and external
# toolchains, but mconf won't let us source the same file twice,
# so put it here instead
source "package/gdb/Config.in.host"
comment "Toolchain Generic Options"
# https://sourceware.org/bugzilla/show_bug.cgi?id=27597
# Affect toolchains built with binutils 2.36.1, still not fixed.
config BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597
bool
default y if BR2_nios2
# https://sourceware.org/bugzilla/show_bug.cgi?id=30730
# Affect toolchains built with binutils 2.40, still not fixed.
config BR2_TOOLCHAIN_HAS_BINUTILS_BUG_30730
bool
default y if BR2_m68k_cf
# Atomic types can be:
# - never lock-free
# - sometimes lock-free
# - always lock-free
# see https://en.cppreference.com/w/c/atomic/ATOMIC_LOCK_FREE_consts
#
# On most architectures, gcc provides "always lock-free" atomic types,
# but a few architectures are limited to "sometimes lock-free"
# types. This hidden option allows to know if the architecture
# provides "always lock-free" atomic types.
config BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
bool
default y
depends on !BR2_nios2
depends on !BR2_ARM_CPU_ARMV4
depends on !BR2_ARM_CPU_ARMV5
depends on !BR2_sparc_v8
depends on !BR2_m68k_cf5208
# GCC uses thunk functions to adjust the 'this' pointer when calling
# C++ member functions in classes derived with multiple inheritance.
# Generation of thunk functions requires support from the compiler
# back end. In the absence of that support target-independent code
# in the C++ front end is used to generate thunk functions, but it
# does not support vararg functions.
# or1k will support it in the gcc mainline starting with gcc-9.
config BR2_TOOLCHAIN_SUPPORTS_VARIADIC_MI_THUNK
bool
default y
depends on !BR2_or1k
depends on !BR2_xtensa
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43744. This bug
# reappeared on gcc 9.x and is still not fixed on gcc 11.x
config BR2_TOOLCHAIN_HAS_GCC_BUG_43744
bool
default y if !BR2_TOOLCHAIN_GCC_AT_LEAST_8
default y if BR2_TOOLCHAIN_GCC_AT_LEAST_9
depends on BR2_sh
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63261. This bug no
# longer exists in gcc 8.x.
config BR2_TOOLCHAIN_HAS_GCC_BUG_63261
bool
default y if BR2_microblaze
depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_8
# Prior to gcc 7.x, exception_ptr, nested_exception and future from
# libstdc++ would only be provided on architectures that support
# always lock-free atomic ints. See
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64735. This issue has
# been removed in GCC 7.x, where exception propagation is now
# supported without lock-free atomic int.
config BR2_TOOLCHAIN_HAS_GCC_BUG_64735
bool
default y if !BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS && \
!BR2_TOOLCHAIN_GCC_AT_LEAST_7
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68485. This bug still
# exists in gcc 12.x
config BR2_TOOLCHAIN_HAS_GCC_BUG_68485
bool
default y if BR2_microblaze
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81426
config BR2_TOOLCHAIN_HAS_GCC_BUG_81426
bool
default y if BR2_sh
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83143
# Error: invalid operands (*UND* and .text sections) for `-' on sh4.
# This bug no longer exists in gcc 10.x but reappeared on gcc 11.x and
# it still not been fixed yet.
config BR2_TOOLCHAIN_HAS_GCC_BUG_83143
bool
default y if !BR2_TOOLCHAIN_GCC_AT_LEAST_10
default y if BR2_TOOLCHAIN_GCC_AT_LEAST_11
depends on BR2_sh
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85180. This bug no
# longer exists in gcc 8.x.
config BR2_TOOLCHAIN_HAS_GCC_BUG_85180
bool
default y if BR2_microblaze
depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_8
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85862
# An infinite loop exists in the find_base_term() logic of 6.x
# on microblaze. http://autobuild.buildroot.net/results/158e8ebb39713e1b436a5cc1a1916f46c30694df/
config BR2_TOOLCHAIN_HAS_GCC_BUG_85862
bool
default y if BR2_microblaze
depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90620
# ICE: in do_output_reload, at reload1.c:7978 on microblaze.
# This bug no longer exists in gcc 10.x but reappeared in gcc 11.x
config BR2_TOOLCHAIN_HAS_GCC_BUG_90620
bool
default y if BR2_microblaze
depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_10 \
|| BR2_TOOLCHAIN_GCC_AT_LEAST_11
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93847
# ICE: compiler error: Segmentation fault on Nios II. This bug
# no longer exists in gcc 9.x.
config BR2_TOOLCHAIN_HAS_GCC_BUG_93847
bool
default y if BR2_nios2 && !BR2_TOOLCHAIN_GCC_AT_LEAST_9
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99410
# Error: branch offset out of range on Nios II. This bug
# no longer exists in gcc 8.x but reappeared on gcc 9.x and still exists
# on gcc 12.x
config BR2_TOOLCHAIN_HAS_GCC_BUG_99410
bool
default y if !BR2_TOOLCHAIN_GCC_AT_LEAST_8
default y if BR2_TOOLCHAIN_GCC_AT_LEAST_9
depends on BR2_nios2
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101737
# ICE: SH4 -Os causes internal compiler error. This bug
# still exists in gcc = 11.1.0
config BR2_TOOLCHAIN_HAS_GCC_BUG_101737
bool
default y if BR2_sh
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101915
# ICE: in extract_insn, at recog.c:2294 on microblaze.
# This bug still exists in gcc = 12.1.0
config BR2_TOOLCHAIN_HAS_GCC_BUG_101915
bool
default y if BR2_microblaze
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101916
# ICE: on SH4: Segmentation fault signal terminated program cc1.
# This bug still exists in gcc = 11.1.0
config BR2_TOOLCHAIN_HAS_GCC_BUG_101916
bool
default y if BR2_sh4
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101952
# ICE: on SH4: unaligned opcodes detected in executable segment.
# This bug still exists in gcc = 11.1.0
config BR2_TOOLCHAIN_HAS_GCC_BUG_101952
bool
default y if BR2_sh4
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104028
# ICE: on M68K: Error: value -16034 out of range
# This bug still exists in gcc = 11.1.0
config BR2_TOOLCHAIN_HAS_GCC_BUG_104028
bool
default y if BR2_m68k
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107728
# https://sourceware.org/bugzilla/show_bug.cgi?id=29621
config BR2_TOOLCHAIN_HAS_GCC_BUG_107728
bool
default y if BR2_microblazebe || BR2_microblazeel \
|| BR2_mips || BR2_mipsel \
|| BR2_nios2 \
|| BR2_or1k \
|| BR2_sh
depends on BR2_TOOLCHAIN_USES_GLIBC
depends on BR2_OPTIMIZE_0
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110934
# ICE: on M68K: in change_address_1, at emit-rtl.cc:2287
# This bug exists in gcc = 12.3.0 and gcc = 13.2.0
config BR2_TOOLCHAIN_HAS_GCC_BUG_110934
bool
default y if BR2_m68k
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111001
# ICE: on SH4: during RTL pass: sh_treg_combine2
# This bug exist in gcc = 13.2.0
config BR2_TOOLCHAIN_HAS_GCC_BUG_111001
bool
default y if BR2_sh
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_13
depends on BR2_OPTIMIZE_1 || \
BR2_OPTIMIZE_2 || \
BR2_OPTIMIZE_3
config BR2_TOOLCHAIN_HAS_NATIVE_RPC
bool
config BR2_USE_WCHAR
bool
config BR2_ENABLE_LOCALE
bool
config BR2_INSTALL_LIBSTDCPP
bool
config BR2_TOOLCHAIN_HAS_DLANG
bool
config BR2_TOOLCHAIN_HAS_FORTRAN
bool
config BR2_TOOLCHAIN_HAS_THREADS
bool
config BR2_TOOLCHAIN_HAS_THREADS_DEBUG
bool
config BR2_TOOLCHAIN_HAS_THREADS_NPTL
bool
config BR2_TOOLCHAIN_HAS_SSP
bool
config BR2_TOOLCHAIN_HAS_SSP_STRONG
bool
default y if BR2_TOOLCHAIN_HAS_SSP && BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
# This boolean is true if the toolchain provides a full featured
# ucontext implementation with ucontext_t and {get,make,set}context
config BR2_TOOLCHAIN_HAS_UCONTEXT
bool
config BR2_TOOLCHAIN_HAS_OPENMP
bool
config BR2_TOOLCHAIN_SUPPORTS_PIE
bool
config BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY
bool "Copy gconv libraries"
depends on BR2_TOOLCHAIN_USES_GLIBC
help
The gconv libraries are used to convert between different
character sets (charsets).
Say 'y' if you need to store and/or display different
charsets.
config BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_LIST
string "Gconv libraries to copy"
depends on BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY
help
Set to the list of gconv libraries to copy.
Leave empty to copy all gconv libraries.
Specify only the basename of the libraries, leave
out the .so extension. Eg.:
IBM850 ISO8859-15 UNICODE
Note: the full set of gconv libs are ~8MiB (on ARM).
config BR2_TOOLCHAIN_EXTRA_LIBS
string "Extra toolchain libraries to be copied to target"
default BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS if BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS != "" # legacy
depends on !BR2_STATIC_LIBS
help
If your toolchain provides extra libraries that need to be
copied to the target filesystem, enter them here, separated
by spaces. The library should not include a suffix or any
type of pre/post wildcard.
Examples where this can be useful is for adding debug
libraries to the target like the GCC libsanitizer.
e.g. "libasan liblsan libtsan libubsan"
# This boolean is true if the toolchain provides a built-in full
# featured gettext implementation (glibc), and false if only a stub
# gettext implementation is provided (uclibc, musl)
config BR2_TOOLCHAIN_HAS_FULL_GETTEXT
bool
config BR2_TARGET_OPTIMIZATION
string "Target Optimizations"
default ""
help
Optimizations to use when building for the target host.
NOTE: gcc optimization level is defined in build options.
config BR2_TARGET_LDFLAGS
string "Target linker options"
help
Extra options to pass to the linker when building for the
target.
Note that options with a '$' sign (eg.
-Wl,-rpath='$ORIGIN/../lib') are not supported.
# Options for packages to depend on, if they require at least a
# specific version of the kernel headers.
# Toolchains should choose the adequate option (ie. the highest
# version, not all of them).
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
bool
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_16
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_17
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_16
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_18
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_17
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_19
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_18
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_0
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_19
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_1
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_0
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_2
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_1
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_3
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_2
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_4
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_3
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_5
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_4
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_6
bool
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_5
select BR2_TOOLCHAIN_HEADERS_LATEST
# This should be selected by the latest version, above, to indicate that
# Buildroot does not know of more recent headers than the ones selected.
# This allows using toolchains with headers more recent than Buildroot
# knows about, while still enforcing strict check for older headers.
config BR2_TOOLCHAIN_HEADERS_LATEST
bool
# This order guarantees that the highest version is set, as kconfig
# stops affecting a value on the first matching default.
config BR2_TOOLCHAIN_HEADERS_AT_LEAST
string
default "6.6" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_6
default "6.5" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_5
default "6.4" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_4
default "6.3" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_3
default "6.2" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_2
default "6.1" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_1
default "6.0" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_0
default "5.19" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_19
default "5.18" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_18
default "5.17" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_17
default "5.16" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_16
default "5.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15
default "5.14" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14
default "5.13" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13
default "5.12" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12
default "5.11" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11
default "5.10" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10
default "5.9" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9
default "5.8" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8
default "5.7" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7
default "5.6" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6
default "5.5" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5
default "5.4" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4
default "5.3" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3
default "5.2" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2
default "5.1" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1
default "5.0" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0
default "4.20" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20
default "4.19" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19
default "4.18" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18
default "4.17" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17
default "4.16" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16
default "4.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15
default "4.14" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14
default "4.13" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13
default "4.12" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12
default "4.11" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11
default "4.10" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10
default "4.9" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9
default "4.8" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
default "4.7" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
default "4.6" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
default "4.5" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
default "4.4" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
default "4.3" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
default "4.2" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
default "4.1" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
default "4.0" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
default "3.19" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
default "3.18" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
default "3.17" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
default "3.16" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
default "3.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
default "3.14" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
default "3.13" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
default "3.12" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
default "3.11" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11
default "3.10" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
default "3.9" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
default "3.8" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8
default "3.7" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7
default "3.6" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
default "3.5" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
default "3.4" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
default "3.3" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3
default "3.2" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
default "3.1" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
default "3.0" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
default "2.6"
config BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
bool
config BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
config BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
config BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
config BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
config BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
config BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
config BR2_TOOLCHAIN_GCC_AT_LEAST_5
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
config BR2_TOOLCHAIN_GCC_AT_LEAST_6
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_5
config BR2_TOOLCHAIN_GCC_AT_LEAST_7
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_6
config BR2_TOOLCHAIN_GCC_AT_LEAST_8
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_7
config BR2_TOOLCHAIN_GCC_AT_LEAST_9
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_8
config BR2_TOOLCHAIN_GCC_AT_LEAST_10
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_9
config BR2_TOOLCHAIN_GCC_AT_LEAST_11
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_10
config BR2_TOOLCHAIN_GCC_AT_LEAST_12
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_11
config BR2_TOOLCHAIN_GCC_AT_LEAST_13
bool
select BR2_TOOLCHAIN_GCC_AT_LEAST_12
# This order guarantees that the highest version is set, as kconfig
# stops affecting a value on the first matching default.
config BR2_TOOLCHAIN_GCC_AT_LEAST
string
default "13" if BR2_TOOLCHAIN_GCC_AT_LEAST_13
default "12" if BR2_TOOLCHAIN_GCC_AT_LEAST_12
default "11" if BR2_TOOLCHAIN_GCC_AT_LEAST_11
default "10" if BR2_TOOLCHAIN_GCC_AT_LEAST_10
default "9" if BR2_TOOLCHAIN_GCC_AT_LEAST_9
default "8" if BR2_TOOLCHAIN_GCC_AT_LEAST_8
default "7" if BR2_TOOLCHAIN_GCC_AT_LEAST_7
default "6" if BR2_TOOLCHAIN_GCC_AT_LEAST_6
default "5" if BR2_TOOLCHAIN_GCC_AT_LEAST_5
default "4.9" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
default "4.8" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
default "4.7" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
default "4.6" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
default "4.5" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
default "4.4" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
default "4.3" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
config BR2_TOOLCHAIN_HAS_MNAN_OPTION
bool
default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
config BR2_TOOLCHAIN_HAS_SYNC_1
bool
default y
depends on !BR2_m68k_cf
depends on !BR2_microblaze
depends on !BR2_sparc
depends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT)
config BR2_TOOLCHAIN_HAS_SYNC_2
bool
default y if BR2_TOOLCHAIN_HAS_SYNC_1
config BR2_TOOLCHAIN_HAS_SYNC_4
bool
default y
depends on !BR2_m68k_cf
depends on !BR2_sparc
depends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT)
# The availability of __sync for 8-byte types on ARM is somewhat
# complicated:
#
# - It appeared in gcc starting with gcc 4.7.
#
# - On ARMv7, there is no problem, it can be directly implemented in
# userspace.
#
# - On < ARMv7, it requires help from the kernel. Unfortunately, the
# libgcc code implementing 8-byte __sync with the help from the
# kernel calls __write() when a failure occurs, which is a function
# internal to glibc, not available in uClibc and musl. This means
# that the 8-byte __sync operations are not available on < ARMv7
# with uClibc and musl. This problem was fixed as part of gcc
# PR68059, which was backported to the gcc 5 branch, but isn't yet
# part of any gcc 5.x release.
#
config BR2_TOOLCHAIN_ARM_HAS_SYNC_8
bool
default y
depends on BR2_arm || BR2_armeb
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_ARM_CPU_ARMV7A
# 8-byte intrinsics available on most x86 CPUs, except a few old ones
config BR2_TOOLCHAIN_X86_HAS_SYNC_8
bool
default y
depends on BR2_i386
depends on !BR2_x86_i486
depends on !BR2_x86_c3
depends on !BR2_x86_winchip_c6
depends on !BR2_x86_winchip2
# 8-byte intrinsics available:
# - On all 64 bits architecture
# - On a certain combinations of ARM platforms
# - On certain x86 32 bits CPUs
config BR2_TOOLCHAIN_HAS_SYNC_8
bool
default y if BR2_ARCH_IS_64
default y if BR2_TOOLCHAIN_ARM_HAS_SYNC_8
default y if BR2_TOOLCHAIN_X86_HAS_SYNC_8
# libatomic is available since gcc 4.8, when thread support is enabled.
# However, the gcc logic in libatomic/configure.tgt does not recognize
# "uclinux" as a valid OS part of the target tuple, and therefore it
# does not build libatomic. The "uclinux" part of the tuple is used by
# Buildroot when BR2_BINFMT_FLAT=y. This broken logic has only been
# fixed for arm since gcc 10.1.0.
config BR2_TOOLCHAIN_HAS_LIBATOMIC
bool
default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
depends on BR2_TOOLCHAIN_HAS_THREADS
depends on BR2_BINFMT_ELF || \
(BR2_BINFMT_FLAT && BR2_arm && \
BR2_TOOLCHAIN_GCC_AT_LEAST_10)
# __atomic intrinsics are available:
# - with gcc 4.8, either through built-ins or libatomic, on all
# architectures. Since we don't want to separate the cases where
# libatomic is needed vs. not needed, we simplify thing and only
# support situations where libatomic is available, even if on some
# architectures libatomic is not strictly needed as all __atomic
# intrinsics might be built-in. The only case where libatomic is
# missing entirely is when the toolchain does not have support for
# threads. However, a package that does not need threads but still
# uses atomics is quite a corner case, which does not warrant the
# added complexity.
# - with gcc 4.7, libatomic did not exist, so only built-ins are
# available. This means that __atomic can only be used in a subset
# of the architectures
config BR2_TOOLCHAIN_HAS_ATOMIC
bool
default y if BR2_TOOLCHAIN_HAS_LIBATOMIC
default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_arm
default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_armeb
default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_xtensa
default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_ARCH_IS_64
# - libquadmath is not needed/available on all architectures (but gcc
# correctly handles this already).
# - At least, libquadmath is available on:
# - i*86
# - x86_64
# - PowerPC with vector scalar (VSX) instruction set
# - When available, libquadmath requires wchar support.
config BR2_TOOLCHAIN_HAS_LIBQUADMATH
bool
default y if BR2_i386 || BR2_x86_64
default y if BR2_POWERPC_CPU_HAS_VSX
comment "Bare metal toolchain"
config BR2_TOOLCHAIN_BARE_METAL_BUILDROOT
bool "Build a bare metal toolchain"
select BR2_PACKAGE_NEWLIB_BARE_METAL
help
Select if you need a bare-metal toolchain for building
platform specific firmware images.
source "toolchain/toolchain-bare-metal-buildroot/Config.in"
endmenu

View File

@ -0,0 +1,556 @@
# This Makefile fragment declares toolchain related helper functions.
# The copy_toolchain_lib_root function copies a toolchain library and
# its symbolic links from the sysroot directory to the target
# directory. Note that this function is used both by the external
# toolchain logic, and the glibc package, so care must be taken when
# changing this function.
#
# $1: library name pattern (can include glob wildcards)
#
copy_toolchain_lib_root = \
LIBPATTERN="$(strip $1)"; \
LIBPATHS=`find $(STAGING_DIR)/ -name "$${LIBPATTERN}" 2>/dev/null` ; \
for LIBPATH in $${LIBPATHS} ; do \
while true ; do \
LIBNAME=`basename $${LIBPATH}`; \
DESTDIR=`echo $${LIBPATH} | sed "s,^$(STAGING_DIR)/,," | xargs dirname` ; \
mkdir -p $(TARGET_DIR)/$${DESTDIR}; \
rm -fr $(TARGET_DIR)/$${DESTDIR}/$${LIBNAME}; \
if test -h $${LIBPATH} ; then \
cp -d $${LIBPATH} $(TARGET_DIR)/$${DESTDIR}/$${LIBNAME}; \
OLD_LIBPATH="$${LIBPATH}"; \
LIBPATH="`readlink -f $${LIBPATH}`"; \
if [ "$${LIBPATH}" = "" ]; then \
echo "LIBPATH empty after trying to resolve symlink $${OLD_LIBPATH}" 1>&2; \
exit 1; \
fi; \
elif test -f $${LIBPATH}; then \
$(INSTALL) -D -m0755 $${LIBPATH} $(TARGET_DIR)/$${DESTDIR}/$${LIBNAME}; \
break ; \
else \
exit -1; \
fi; \
done; \
done
#
# Copy the full external toolchain sysroot directory to the staging
# dir. The operation of this function is rendered a little bit
# complicated by the support for multilib toolchains.
#
# We start by copying etc, 'lib', sbin, usr and usr/'lib' from the
# sysroot of the selected architecture variant (as pointed to by
# ARCH_SYSROOT_DIR). This allows to import into the staging directory
# the C library and companion libraries for the correct architecture
# variant. 'lib' may not be literally 'lib' but could be something else,
# e.g. lib32-fp (as determined by ARCH_LIB_DIR) and we only want to copy
# that lib directory and no other. When copying usr, we therefore need
# to be extra careful not to include usr/lib* but we _do_ want to
# include usr/libexec.
# We are selective in the directories we copy since other directories
# might exist for other architecture variants (on Codesourcery
# toolchain, the sysroot for the default architecture variant contains
# the armv4t and thumb2 subdirectories, which are the sysroot for the
# corresponding architecture variants), and we don't want to import
# them.
#
# If ARCH_LIB_DIR is not a singular directory component, e.g.
# 'lib32/octeon2', then symbolic links in ARCH_LIB_DIR and
# usr/ARCH_LIB_DIR may be broken because Buildroot will flatten the
# directory structure (e.g. lib32/octeon2/foo is actually stored in
# lib/foo). This is only relevant for links that contain one or more ../
# components, as links to the current directory are always fine.
# We need to fix the broken links by removing the right amount of ../
# dots from the link destination.
# Once the link destination is valid again, it can be simplified to
# remove the dependency on intermediate directory symlinks.
#
# It is possible that ARCH_LIB_DIR does not contain the dynamic loader
# (ld*.so or similar) because it (or the main symlink to it) normally
# resides in /lib while ARCH_LIB_DIR may be something else (e.g. lib64,
# lib/<tuple>, ...). Therefore, copy the dynamic loader separately.
#
# Then, if the selected architecture variant is not the default one
# (i.e, if SYSROOT_DIR != ARCH_SYSROOT_DIR), then we :
#
# * Import the header files from the default architecture
# variant. Header files are typically shared between the sysroots
# for the different architecture variants. If we use the
# non-default one, header files were not copied by the previous
# step, so we copy them here from the sysroot of the default
# architecture variant.
#
# * Create a symbolic link that matches the name of the subdirectory
# for the architecture variant in the original sysroot. This is
# required as the compiler will by default look in
# sysroot_dir/arch_variant/ for libraries and headers, when the
# non-default architecture variant is used. Without this, the
# compiler fails to find libraries and headers.
#
# Some toolchains (i.e Linaro binary toolchains) store support
# libraries (libstdc++, libgcc_s) outside of the sysroot, so we simply
# copy all the libraries from the "support lib directory" into our
# sysroot.
#
# Note that the 'locale' directories are not copied. They are huge
# (400+MB) in CodeSourcery toolchains, and they are not really useful.
#
# $1: main sysroot directory of the toolchain
# $2: arch specific sysroot directory of the toolchain
# $3: arch specific subdirectory in the sysroot
# $4: directory of libraries ('lib', 'lib32' or 'lib64')
# $5: support lib directories (for toolchains storing libgcc_s,
# libstdc++ and other gcc support libraries outside of the
# sysroot)
copy_toolchain_sysroot = \
SYSROOT_DIR="$(strip $1)"; \
ARCH_SYSROOT_DIR="$(strip $2)"; \
ARCH_SUBDIR="$(strip $3)"; \
ARCH_LIB_DIR="$(strip $4)" ; \
SUPPORT_LIB_DIR="$(strip $5)" ; \
for i in etc $${ARCH_LIB_DIR} sbin usr usr/$${ARCH_LIB_DIR}; do \
if [ ! -d $${ARCH_SYSROOT_DIR}/$$i ] ; then \
continue ; \
fi ; \
if [ "$$i" = "usr" ]; then \
rsync -au --chmod=u=rwX,go=rX --exclude 'locale/' \
--include '/libexec*/' --exclude '/lib*/' \
$${ARCH_SYSROOT_DIR}/$$i/ $(STAGING_DIR)/$$i/ ; \
else \
rsync -au --chmod=u=rwX,go=rX --exclude 'locale/' \
$${ARCH_SYSROOT_DIR}/$$i/ $(STAGING_DIR)/$$i/ ; \
fi ; \
done ; \
for link in $$(find $(STAGING_DIR) -type l); do \
target=$$(readlink $${link}) ; \
if [ "$${target}" == "$${target$(SHARP_SIGN)/}" ] ; then \
continue ; \
fi ; \
relpath="$(call relpath_prefix,$${target$(SHARP_SIGN)/})" ; \
echo "Fixing symlink $${link} from $${target} to $${relpath}$${target$(SHARP_SIGN)/}" ; \
ln -sf $${relpath}$${target$(SHARP_SIGN)/} $${link} ; \
done ; \
relpath="$(call relpath_prefix,$${ARCH_LIB_DIR})" ; \
if [ "$${relpath}" != "" ]; then \
for i in $$(find -H $(STAGING_DIR)/$${ARCH_LIB_DIR} $(STAGING_DIR)/usr/$${ARCH_LIB_DIR} -type l -xtype l); do \
LINKTARGET=`readlink $$i` ; \
NEWLINKTARGET=$${LINKTARGET\#$$relpath} ; \
ln -sf $${NEWLINKTARGET} $$i ; \
$(call simplify_symlink,$$i,$(STAGING_DIR)) ; \
done ; \
fi ; \
if [[ ! $$(find $(STAGING_DIR)/lib -name 'ld*.so.*' -print -quit) ]]; then \
find $${ARCH_SYSROOT_DIR}/lib -name 'ld*.so.*' -print0 | xargs -0 -I % cp % $(STAGING_DIR)/lib/; \
fi ; \
if [ `readlink -f $${SYSROOT_DIR}` != `readlink -f $${ARCH_SYSROOT_DIR}` ] ; then \
if [ ! -d $${ARCH_SYSROOT_DIR}/usr/include ] ; then \
cp -a $${SYSROOT_DIR}/usr/include $(STAGING_DIR)/usr ; \
fi ; \
mkdir -p `dirname $(STAGING_DIR)/$${ARCH_SUBDIR}` ; \
relpath="$(call relpath_prefix,$${ARCH_SUBDIR})./" ; \
ln -s $${relpath} $(STAGING_DIR)/$${ARCH_SUBDIR} ; \
echo "Symlinking $(STAGING_DIR)/$${ARCH_SUBDIR} -> $${relpath}" ; \
fi ; \
if test -n "$${SUPPORT_LIB_DIR}" ; then \
cp -a $${SUPPORT_LIB_DIR}/* $(STAGING_DIR)/lib/ ; \
fi ; \
find $(STAGING_DIR) -type d -print0 | xargs -0 chmod 755
#
# Check the specified kernel headers version actually matches the
# version in the toolchain.
#
# $1: build directory
# $2: sysroot directory
# $3: kernel version string, in the form: X.Y
# $4: test to do for the latest kernel version, 'strict' or 'loose'
# always 'strict' if this is not the latest version.
#
check_kernel_headers_version = \
if ! support/scripts/check-kernel-headers.sh $(1) $(2) $(3) \
$(if $(BR2_TOOLCHAIN_HEADERS_LATEST),$(4),strict); \
then \
exit 1; \
fi
#
# Check the specific gcc version actually matches the version in the
# toolchain
#
# $1: path to gcc
# $2: expected gcc version
#
check_gcc_version = \
expected_version="$(strip $2)" ; \
if [ -z "$${expected_version}" ]; then \
exit 0 ; \
fi; \
real_version=`$(1) -dumpversion` ; \
if [[ ! "$${real_version}." =~ ^$${expected_version}\. ]] ; then \
printf "Incorrect selection of gcc version: expected %s.x, got %s\n" \
"$${expected_version}" "$${real_version}" ; \
exit 1 ; \
fi
#
# Check the availability of a particular glibc feature. This function
# is used to check toolchain options that are always supported by
# glibc, so we simply check that the corresponding option is properly
# enabled.
#
# $1: Buildroot option name
# $2: feature description
#
check_glibc_feature = \
if [ "$($(1))" != "y" ] ; then \
echo "$(2) available in C library, please enable $(1)" ; \
exit 1 ; \
fi
#
# Check the availability of RPC support in a glibc toolchain
#
# $1: sysroot directory
#
check_glibc_rpc_feature = \
IS_IN_LIBC=`test -f $(1)/usr/include/rpc/rpc.h && echo y` ; \
if [ "$(BR2_TOOLCHAIN_HAS_NATIVE_RPC)" != "y" -a "$${IS_IN_LIBC}" = "y" ] ; then \
echo "RPC support available in C library, please enable BR2_TOOLCHAIN_EXTERNAL_INET_RPC" ; \
exit 1 ; \
fi ; \
if [ "$(BR2_TOOLCHAIN_HAS_NATIVE_RPC)" = "y" -a "$${IS_IN_LIBC}" != "y" ] ; then \
echo "RPC support not available in C library, please disable BR2_TOOLCHAIN_EXTERNAL_INET_RPC" ; \
exit 1 ; \
fi
#
# Check the correctness of a glibc external toolchain configuration.
# 1. Check that the C library selected in Buildroot matches the one
# of the external toolchain
# 2. Check that all the C library-related features are enabled in the
# config, since glibc always supports all of them
#
# $1: sysroot directory
#
check_glibc = \
SYSROOT_DIR="$(strip $1)"; \
if test `find -L $${SYSROOT_DIR}/ -maxdepth 2 -name 'ld-linux*.so.*' -o -name 'ld.so.*' -o -name 'ld64.so.*' | wc -l` -eq 0 ; then \
echo "Incorrect selection of the C library"; \
exit -1; \
fi; \
$(call check_glibc_feature,BR2_USE_MMU,MMU support) ;\
$(call check_glibc_rpc_feature,$${SYSROOT_DIR})
#
# Check that the selected C library really is musl
#
# $1: cross-gcc path
# $2: cross-readelf path
check_musl = \
__CROSS_CC=$(strip $1) ; \
libc_a_path=`$${__CROSS_CC} -print-file-name=libc.a` ; \
if ! strings $${libc_a_path} | grep -q MUSL_LOCPATH ; then \
echo "Incorrect selection of the C library" ; \
exit -1; \
fi
#
# Check the conformity of Buildroot configuration with regard to the
# uClibc configuration of the external toolchain, for a particular
# feature.
#
# If 'Buildroot option name' ($2) is empty it means the uClibc option
# is mandatory.
#
# $1: uClibc macro name
# $2: Buildroot option name
# $3: uClibc config file
# $4: feature description
#
check_uclibc_feature = \
IS_IN_LIBC=`grep -q "\#define $(1) 1" $(3) && echo y` ; \
if [ -z "$(2)" ] ; then \
if [ "$${IS_IN_LIBC}" != "y" ] ; then \
echo "$(4) not available in C library, toolchain unsuitable for Buildroot" ; \
exit 1 ; \
fi ; \
else \
if [ "$($(2))" != "y" -a "$${IS_IN_LIBC}" = "y" ] ; then \
echo "$(4) available in C library, please enable $(2)" ; \
exit 1 ; \
fi ; \
if [ "$($(2))" = "y" -a "$${IS_IN_LIBC}" != "y" ] ; then \
echo "$(4) not available in C library, please disable $(2)" ; \
exit 1 ; \
fi ; \
fi
#
# Check the correctness of a uclibc external toolchain configuration
# 1. Check that the C library selected in Buildroot matches the one
# of the external toolchain
# 2. Check that the features enabled in the Buildroot configuration
# match the features available in the uClibc of the external
# toolchain
#
# $1: sysroot directory
#
check_uclibc = \
SYSROOT_DIR="$(strip $1)"; \
if ! test -f $${SYSROOT_DIR}/usr/include/bits/uClibc_config.h ; then \
echo "Incorrect selection of the C library"; \
exit -1; \
fi; \
UCLIBC_CONFIG_FILE=$${SYSROOT_DIR}/usr/include/bits/uClibc_config.h ; \
$(call check_uclibc_feature,__ARCH_USE_MMU__,BR2_USE_MMU,$${UCLIBC_CONFIG_FILE},MMU support) ;\
$(call check_uclibc_feature,__UCLIBC_HAS_LFS__,,$${UCLIBC_CONFIG_FILE},Large file support) ;\
$(call check_uclibc_feature,__UCLIBC_HAS_IPV6__,,$${UCLIBC_CONFIG_FILE},IPv6 support) ;\
$(call check_uclibc_feature,__UCLIBC_HAS_RPC__,BR2_TOOLCHAIN_HAS_NATIVE_RPC,$${UCLIBC_CONFIG_FILE},RPC support) ;\
$(call check_uclibc_feature,__UCLIBC_HAS_XLOCALE__,BR2_ENABLE_LOCALE,$${UCLIBC_CONFIG_FILE},Locale support) ;\
$(call check_uclibc_feature,__UCLIBC_HAS_WCHAR__,BR2_USE_WCHAR,$${UCLIBC_CONFIG_FILE},Wide char support) ;\
$(call check_uclibc_feature,__UCLIBC_HAS_THREADS__,BR2_TOOLCHAIN_HAS_THREADS,$${UCLIBC_CONFIG_FILE},Thread support) ;\
$(call check_uclibc_feature,__PTHREADS_DEBUG_SUPPORT__,BR2_TOOLCHAIN_HAS_THREADS_DEBUG,$${UCLIBC_CONFIG_FILE},Thread debugging support) ;\
$(call check_uclibc_feature,__UCLIBC_HAS_THREADS_NATIVE__,BR2_TOOLCHAIN_HAS_THREADS_NPTL,$${UCLIBC_CONFIG_FILE},NPTL thread support)
#
# Check that the Buildroot configuration of the ABI matches the
# configuration of the external toolchain.
#
# $1: cross-gcc path
# $2: cross-readelf path
#
check_arm_abi = \
__CROSS_CC=$(strip $1) ; \
EXT_TOOLCHAIN_TARGET=`LANG=C $${__CROSS_CC} -v 2>&1 | grep ^Target | cut -f2 -d ' '` ; \
if ! echo $${EXT_TOOLCHAIN_TARGET} | grep -qE 'eabi(hf)?$$' ; then \
echo "External toolchain uses the unsuported OABI" ; \
exit 1 ; \
fi ; \
if ! echo 'int main(void) {}' | $${__CROSS_CC} -x c -o $(BUILD_DIR)/.br-toolchain-test.tmp - ; then \
rm -f $(BUILD_DIR)/.br-toolchain-test.tmp*; \
abistr_$(BR2_ARM_EABI)='EABI'; \
abistr_$(BR2_ARM_EABIHF)='EABIhf'; \
echo "Incorrect ABI setting: $${abistr_y} selected, but toolchain is incompatible"; \
exit 1 ; \
fi ; \
rm -f $(BUILD_DIR)/.br-toolchain-test.tmp*
#
# Check that the external toolchain supports C++
#
# $1: cross-g++ path
#
check_cplusplus = \
__CROSS_CXX=$(strip $1) ; \
__HAS_CXX=`$${__CROSS_CXX} -v > /dev/null 2>&1 && echo y`; \
if [ "$${__HAS_CXX}" != "y" -a "$(BR2_INSTALL_LIBSTDCPP)" = y ] ; then \
echo "C++ support is selected but is not available in external toolchain" ; \
exit 1 ; \
elif [ "$${__HAS_CXX}" = "y" -a "$(BR2_INSTALL_LIBSTDCPP)" != y ] ; then \
echo "C++ support is not selected but is available in external toolchain" ; \
exit 1 ; \
fi \
#
#
# Check that the external toolchain supports D language
#
# $1: cross-gdc path
#
check_dlang = \
__CROSS_GDC=$(strip $1) ; \
__o=$(BUILD_DIR)/.br-toolchain-test-dlang.tmp ; \
__HAS_DLANG=`printf 'import std.stdio;\nvoid main() { writeln("Hello World!"); }\n' | \
$${__CROSS_GDC} -x d -o $${__o} - >/dev/null 2>&1 && echo y`; \
rm -f $${__o}* ; \
if [ "$${__HAS_DLANG}" != "y" -a "$(BR2_TOOLCHAIN_HAS_DLANG)" = y ] ; then \
echo "D language support is selected but is not available in external toolchain" ; \
exit 1 ; \
elif [ "$${__HAS_DLANG}" = "y" -a "$(BR2_TOOLCHAIN_HAS_DLANG)" != y ] ; then \
echo "D language support is not selected but is available in external toolchain" ; \
exit 1 ; \
fi \
#
#
# Check that the external toolchain supports Fortran
#
# $1: cross-gfortran path
#
check_fortran = \
__CROSS_FC=$(strip $1) ; \
__o=$(BUILD_DIR)/.br-toolchain-test-fortran.tmp ; \
__HAS_FORTRAN=`printf 'program hello\n\tprint *, "Hello Fortran!\\\n"\nend program hello\n' | \
$${__CROSS_FC} -x f95 -ffree-form -o $${__o} - 2>/dev/null && echo y`; \
rm -f $${__o}* ; \
if [ "$${__HAS_FORTRAN}" != "y" -a "$(BR2_TOOLCHAIN_HAS_FORTRAN)" = y ] ; then \
echo "Fortran support is selected but is not available in external toolchain" ; \
exit 1 ; \
elif [ "$${__HAS_FORTRAN}" = "y" -a "$(BR2_TOOLCHAIN_HAS_FORTRAN)" != y ] ; then \
echo "Fortran support is not selected but is available in external toolchain" ; \
exit 1 ; \
fi \
#
#
# Check that the external toolchain supports OpenMP
#
# $1: cross-gcc path
#
check_openmp = \
__CROSS_CC=$(strip $1) ; \
__o=$(BUILD_DIR)/.br-toolchain-test-openmp.tmp ; \
__HAS_OPENMP=`printf '\#include <omp.h>\nint main(void) { return omp_get_thread_num(); }' | \
$${__CROSS_CC} -fopenmp -x c -o $${__o} - >/dev/null 2>&1 && echo y` ; \
rm -f $${__o}* ; \
if [ "$${__HAS_OPENMP}" != "y" -a "$(BR2_TOOLCHAIN_HAS_OPENMP)" = y ] ; then \
echo "OpenMP support is selected but is not available in external toolchain"; \
exit 1 ; \
elif [ "$${__HAS_OPENMP}" = "y" -a "$(BR2_TOOLCHAIN_HAS_OPENMP)" != y ] ; then \
echo "OpenMP support is not selected but is available in external toolchain"; \
exit 1 ; \
fi \
#
# Check that the cross-compiler given in the configuration exists
#
# $1: cross-gcc path
#
check_cross_compiler_exists = \
__CROSS_CC=$(strip $1) ; \
$${__CROSS_CC} -v > /dev/null 2>&1 ; \
if test $$? -ne 0 ; then \
echo "Cannot execute cross-compiler '$${__CROSS_CC}'" ; \
exit 1 ; \
fi
#
# Check for toolchains known not to work with Buildroot.
# - For the Angstrom toolchains, we check by looking at the vendor part of
# the host tuple.
# - Exclude distro-class toolchains which are not relocatable.
# - Exclude broken toolchains which return "libc.a" with -print-file-name.
# - Exclude toolchains used with wrong toolchain cflags or broken toolchains
# which return "libc.a" with -print-file-name and toolchain cflags.
# - Exclude toolchains which doesn't support --sysroot option.
#
# $1: cross-gcc path
# $1: toolchain cflags
#
check_unusable_toolchain = \
__CROSS_CC=$(strip $1) ; \
__TOOLCHAIN_CFLAGS=$(strip $2) ; \
vendor=`$${__CROSS_CC} -dumpmachine | cut -f2 -d'-'` ; \
if test "$${vendor}" = "angstrom" ; then \
echo "Angstrom toolchains are not pure toolchains: they contain" ; \
echo "many other libraries than just the C library, which makes" ; \
echo "them unsuitable as external toolchains for build systems" ; \
echo "such as Buildroot." ; \
exit 1 ; \
fi; \
with_sysroot=`$${__CROSS_CC} -v 2>&1 |sed -r -e '/.* --with-sysroot=([^[:space:]]+)[[:space:]].*/!d; s//\1/'`; \
if test "$${with_sysroot}" = "/" ; then \
echo "Distribution toolchains are unsuitable for use by Buildroot," ; \
echo "as they were configured in a way that makes them non-relocatable,"; \
echo "and contain a lot of pre-built libraries that would conflict with"; \
echo "the ones Buildroot wants to build."; \
exit 1; \
fi; \
libc_a_path=`$${__CROSS_CC} -print-file-name=libc.a` ; \
if test "$${libc_a_path}" = "libc.a" ; then \
echo "Unable to detect the toolchain sysroot, Buildroot cannot use this toolchain." ; \
exit 1 ; \
fi ; \
libc_a_archsysroot_path=`$${__CROSS_CC} $${__TOOLCHAIN_CFLAGS} -print-file-name=libc.a` ; \
if test "$${libc_a_archsysroot_path}" = "libc.a" ; then \
echo "Unable to detect the toolchain architecture sysroot." ; \
echo "Please check the Target Architecture Variant selected, the toolchains may not support it." ; \
echo "Buildroot cannot use this toolchain." ; \
exit 1 ; \
fi; \
sysroot_dir="$(call toolchain_find_sysroot,$${__CROSS_CC})" ; \
if test -z "$${sysroot_dir}" ; then \
echo "External toolchain doesn't support --sysroot. Cannot use." ; \
exit 1 ; \
fi
#
# Check if the toolchain has SSP (stack smashing protector) support
#
# $1: cross-gcc path
# $2: gcc ssp option
#
check_toolchain_ssp = \
__CROSS_CC=$(strip $1) ; \
__HAS_SSP=`echo 'int main(){}' | $${__CROSS_CC} -Werror -fstack-protector -x c - -o $(BUILD_DIR)/.br-toolchain-test.tmp >/dev/null 2>&1 && echo y` ; \
if [ "$(BR2_TOOLCHAIN_HAS_SSP)" != "y" -a "$${__HAS_SSP}" = "y" ] ; then \
echo "SSP support available in this toolchain, please enable BR2_TOOLCHAIN_EXTERNAL_HAS_SSP" ; \
exit 1 ; \
fi ; \
if [ "$(BR2_TOOLCHAIN_HAS_SSP)" = "y" -a "$${__HAS_SSP}" != "y" ] ; then \
echo "SSP support not available in this toolchain, please disable BR2_TOOLCHAIN_EXTERNAL_HAS_SSP" ; \
exit 1 ; \
fi ; \
__SSP_OPTION=$(2); \
if [ -n "$${__SSP_OPTION}" ] ; then \
if ! echo 'int main(){}' | $${__CROSS_CC} -Werror $${__SSP_OPTION} -x c - -o $(BUILD_DIR)/.br-toolchain-test.tmp >/dev/null 2>&1 ; then \
echo "SSP option $${__SSP_OPTION} not available in this toolchain, please select another SSP level" ; \
exit 1 ; \
fi; \
fi; \
rm -f $(BUILD_DIR)/.br-toolchain-test.tmp*
#
# Generate gdbinit file for use with Buildroot
#
gen_gdbinit_file = \
mkdir -p $(STAGING_DIR)/usr/share/buildroot/ ; \
echo "add-auto-load-safe-path $(STAGING_DIR)" > $(STAGING_DIR)/usr/share/buildroot/gdbinit ; \
echo "set sysroot $(STAGING_DIR)" >> $(STAGING_DIR)/usr/share/buildroot/gdbinit
# Given a path, determine the relative prefix (../) needed to return to the
# root level. Note that the last component is treated as a file component; use a
# trailing slash to force treating it as a directory. Examples:
# relpath_prefix(lib32) = ""
# relpath_prefix(lib32/octeon2) = "../"
# relpath_prefix(lib32/octeon2/) = "../../"
#
# $1: input path
define relpath_prefix
$$( \
prefix="" ; \
nbslashs=`printf $1 | sed 's%[^/]%%g' | wc -c` ; \
for slash in `seq 1 $${nbslashs}` ; do \
prefix=$${prefix}"../" ; \
done ; \
printf "$$prefix" ; \
)
endef
# Replace the destination of a symbolic link with a simpler version
# For example,
# usr/lib/libfoo.so -> ../../lib32/libfoo.so.1
# becomes
# usr/lib/libfoo.so -> ../../lib/libfoo.so.1
# since 'lib32' is a symlink to 'lib'.
#
# Likewise,
# usr/lib/octeon2/libbar.so -> ../../../lib32/octeon2/libbar.so.1
# becomes
# usr/lib/octeon2/libbar.so -> ../../lib/libbar.so.1
# assuming lib32->lib and lib/octeon2->lib.
#
# $1: symlink
# $2: base path
define simplify_symlink
( \
FULL_SRC="$$(readlink -f $$(dirname $1))/$$(basename $1)" ; \
FULL_DEST="$$(readlink -f $1)" ; \
FULL_BASE="$$(readlink -f $2)" ; \
REL_SRC="$${FULL_SRC#$${FULL_BASE}/}" ; \
REL_DEST="$${FULL_DEST#$${FULL_BASE}/}" ; \
DOTS="$(call relpath_prefix,$${REL_SRC})" ; \
ln -sf "$${DOTS}$${REL_DEST}" "$${FULL_SRC}" ; \
)
endef

View File

@ -0,0 +1,11 @@
if BR2_TOOLCHAIN_BARE_METAL_BUILDROOT
config BR2_TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH
string "architecture tuple"
help
This option allows to define the architecture tuple for the
bare-metal toolchain.
source "package/newlib-bare-metal/Config.in"
endif # BR2_TOOLCHAIN_BARE_METAL_BUILDROOT

View File

@ -0,0 +1,12 @@
################################################################################
#
# toolchain-bare-metal-buildroot
#
################################################################################
TOOLCHAIN_BARE_METAL_BUILDROOT_DEPENDENCIES = newlib-bare-metal
TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH_TUPLE = $(call qstrip,$(BR2_TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH))
TOOLCHAIN_BARE_METAL_BUILDROOT_SYSROOT = $(HOST_DIR)/$(TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH_TUPLE)/sysroot
TOOLCHAIN_BARE_METAL_BUILDROOT_ADD_TOOLCHAIN_DEPENDENCY = NO
$(eval $(virtual-package))

View File

@ -0,0 +1,115 @@
# Config entries for internal toolchain backend
if BR2_TOOLCHAIN_BUILDROOT
comment "Toolchain Buildroot Options"
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.
choice
prompt "C library"
default BR2_TOOLCHAIN_BUILDROOT_GLIBC
config BR2_TOOLCHAIN_BUILDROOT_UCLIBC
bool "uClibc-ng"
depends on BR2_PACKAGE_UCLIBC_SUPPORTS
select BR2_TOOLCHAIN_USES_UCLIBC
help
This option selects uClibc-ng as the C library for the
cross-compilation toolchain.
http://uclibc-ng.org
config BR2_TOOLCHAIN_BUILDROOT_GLIBC
bool "glibc"
depends on BR2_PACKAGE_GLIBC_SUPPORTS
select BR2_TOOLCHAIN_USES_GLIBC
help
This option selects glibc as the C library for the
cross-compilation toolchain.
http://www.gnu.org/software/libc/
comment "glibc needs a toolchain w/ kernel headers >= 3.2"
depends on BR2_PACKAGE_GLIBC_ARCH_SUPPORTS
depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
# 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
# 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
comment "glibc on RISC-V 64-bit needs a toolchain w/ headers >= 5.0"
depends on BR2_RISCV_64
depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0
comment "glibc on RISC-V 32-bit needs a toolchain w/ headers >= 5.4"
depends on BR2_RISCV_32
depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4
comment "glibc on ARC needs a toolchain w/ headers >= 5.1"
depends on BR2_arc
depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1
comment "glibc on or1k needs a toolchain w/ headers >= 5.4"
depends on BR2_or1k
depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4
config BR2_TOOLCHAIN_BUILDROOT_MUSL
bool "musl"
depends on BR2_PACKAGE_MUSL_SUPPORTS
select BR2_TOOLCHAIN_USES_MUSL
help
This option selects musl as the C library for the
cross-compilation toolchain.
https://www.musl-libc.org/
config BR2_TOOLCHAIN_BUILDROOT_NONE
bool "none"
depends on !BR2_PACKAGE_UCLIBC_SUPPORTS && \
!BR2_PACKAGE_GLIBC_SUPPORTS && \
!BR2_PACKAGE_MUSL_SUPPORTS
help
This option is visible if no C library is available for the
currently selected configuration. If you select this option,
the build will refuse to start as Buildroot needs a C
library to build a toolchain. Change your configuration
settings to make sure one of the C libraries is selected.
endchoice
config BR2_TOOLCHAIN_BUILDROOT_LIBC
string
default "uclibc" if BR2_TOOLCHAIN_BUILDROOT_UCLIBC
default "glibc" if BR2_TOOLCHAIN_BUILDROOT_GLIBC
default "musl" if BR2_TOOLCHAIN_BUILDROOT_MUSL
source "package/linux-headers/Config.in.host"
source "package/linux-headers/Config.in"
source "package/musl/Config.in"
source "package/uclibc/Config.in"
source "package/glibc/Config.in"
source "package/binutils/Config.in.host"
source "package/gcc/Config.in.host"
source "package/gcc/Config.in"
endif

View File

@ -0,0 +1,20 @@
################################################################################
#
# toolchain-buildroot
#
################################################################################
BR_LIBC = $(call qstrip,$(BR2_TOOLCHAIN_BUILDROOT_LIBC))
# Triggering the build of the gcc-final will automatically do the
# build of binutils, uClibc, kernel headers and all the intermediate
# gcc steps.
TOOLCHAIN_BUILDROOT_DEPENDENCIES = gcc-final
TOOLCHAIN_BUILDROOT_ADD_TOOLCHAIN_DEPENDENCY = NO
# Not really a virtual package, but we use the virtual package infra here so
# both the build log and build directory look nicer (toolchain-buildroot-virtual
# instead of toolchain-buildroot-undefined)
$(eval $(virtual-package))

View File

@ -0,0 +1,152 @@
if BR2_TOOLCHAIN_EXTERNAL
comment "Toolchain External Options"
choice
prompt "Toolchain"
# Kept toolchains sorted by architecture in order to use some toolchain
# as default choice
# Aarch64 (use ARM toolchain by default)
source "toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in"
source "toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in"
# Aarch64 big-endian
source "toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in"
source "toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in"
# ARC
source "toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in"
# ARM (use ARM toolchain by default)
source "toolchain/toolchain-external/toolchain-external-arm-arm/Config.in"
source "toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in"
# ARM big-endian
source "toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in"
# MIPS
source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in"
# NIOSII
source "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in"
# Bootlin toolchains, available for virtually all architectures
source "toolchain/toolchain-external/toolchain-external-bootlin/Config.in"
# Kept last, so it remains the non-default choice, unless there isn't
# any available toolchain profile for the currently selected
# architecture, but before toolchains from br2-external trees.
source "toolchain/toolchain-external/toolchain-external-custom/Config.in"
# Toolchains from br2-external trees, if any
source "$BR2_BASE_DIR/.br2-external.in.toolchains"
endchoice
choice
prompt "Toolchain origin"
# Keep compatibility with old defconfig files that are using
# custom toolchains, and which are therefore assuming that
# "preinstalled" in the default choice.
default BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED if BR2_TOOLCHAIN_EXTERNAL_CUSTOM
config BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD
bool "Toolchain to be downloaded and installed"
help
Select this option if you want Buildroot to download and
install the toolchain. If you have selected a custom
toolchain, specify the URL in BR2_TOOLCHAIN_EXTERNAL_URL.
config BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED
bool "Pre-installed toolchain"
help
Select this option if you want to use a pre-installed
toolchain. Specify the path to this toolchain in
BR2_TOOLCHAIN_EXTERNAL_PATH.
endchoice
config BR2_TOOLCHAIN_EXTERNAL_PATH
string "Toolchain path"
default ""
depends on BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED
help
Path to where the external toolchain is installed. The
compiler itself is expected to be in the "bin" subdirectory
of this path.
If empty, the compiler will be searched in $PATH.
config BR2_TOOLCHAIN_EXTERNAL_GLIBC
bool
select BR2_TOOLCHAIN_USES_GLIBC
config BR2_TOOLCHAIN_EXTERNAL_UCLIBC
bool
select BR2_TOOLCHAIN_USES_UCLIBC
config BR2_TOOLCHAIN_EXTERNAL_MUSL
bool
select BR2_TOOLCHAIN_USES_MUSL
# Compatibility headers: cdefs.h, queue.h
select BR2_PACKAGE_MUSL_COMPAT_HEADERS
# Make sure the virtual-package infra checks the provider
config BR2_PACKAGE_HAS_TOOLCHAIN_EXTERNAL
bool
default y
config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
string
config BR2_TOOLCHAIN_EXTERNAL_PREFIX
string
# Kept toolchains sorted as in the choice above
# The toolchain Config.in.options must define
# BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL and BR2_TOOLCHAIN_EXTERNAL_PREFIX
# Aarch64
source "toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in.options"
source "toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in.options"
# Aarch64 big-endian
source "toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in.options"
source "toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in.options"
# ARC
source "toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in.options"
# ARM
source "toolchain/toolchain-external/toolchain-external-arm-arm/Config.in.options"
source "toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in.options"
# ARM big-endian
source "toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.options"
# MIPS
source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options"
# NIOSII
source "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options"
# Bootlin toolchains
source "toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options"
# Custom toolchains
source "toolchain/toolchain-external/toolchain-external-custom/Config.in.options"
config BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER
bool
config BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY
bool "Copy gdb server to the Target"
depends on BR2_TOOLCHAIN_EXTERNAL
depends on !BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER
help
Copy the gdbserver provided by the external toolchain to the
target.
endif # BR2_TOOLCHAIN_EXTERNAL

View File

@ -0,0 +1,624 @@
################################################################################
# External toolchain package infrastructure
#
# This package infrastructure implements the support for external
# toolchains, i.e toolchains that are available pre-built, ready to
# use. Such toolchain may either be readily available on the Web
# (Linaro, Sourcery CodeBench, from processor vendors) or may be built
# with tools like Crosstool-NG or Buildroot itself. So far, we have
# tested this with:
#
# * Toolchains generated by Crosstool-NG
# * Toolchains generated by Buildroot
# * Toolchains provided by Linaro for the ARM and AArch64
# architectures
# * Sourcery CodeBench toolchains (from Mentor Graphics) for the ARM,
# MIPS, PowerPC, x86_64 and NIOS 2 architectures. For the MIPS
# toolchain, the -muclibc variant isn't supported yet, only the
# default glibc-based variant is.
# * Synopsys DesignWare toolchains for ARC cores
#
# The basic principle is the following
#
# 1. If the toolchain is not pre-installed, download and extract it
# in $(TOOLCHAIN_EXTERNAL_INSTALL_DIR). Otherwise,
# $(TOOLCHAIN_EXTERNAL_INSTALL_DIR) points to were the toolchain has
# already been installed by the user.
#
# 2. For all external toolchains, perform some checks on the
# conformity between the toolchain configuration described in the
# Buildroot menuconfig system, and the real configuration of the
# external toolchain. This is for example important to make sure that
# the Buildroot configuration system knows whether the toolchain
# supports RPC, IPv6, locales, large files, etc. Unfortunately, these
# things cannot be detected automatically, since the value of these
# options (such as BR2_TOOLCHAIN_HAS_NATIVE_RPC) are needed at
# configuration time because these options are used as dependencies
# for other options. And at configuration time, we are not able to
# retrieve the external toolchain configuration.
#
# 3. Copy the libraries needed at runtime to the target directory,
# $(TARGET_DIR). Obviously, things such as the C library, the dynamic
# loader and a few other utility libraries are needed if dynamic
# applications are to be executed on the target system.
#
# 4. Copy the libraries and headers to the staging directory. This
# will allow all further calls to gcc to be made using --sysroot
# $(STAGING_DIR), which greatly simplifies the compilation of the
# packages when using external toolchains. So in the end, only the
# cross-compiler binaries remains external, all libraries and headers
# are imported into the Buildroot tree.
#
# 5. Build a toolchain wrapper which executes the external toolchain
# with a number of arguments (sysroot/march/mtune/..) hardcoded,
# so we're sure the correct configuration is always used and the
# toolchain behaves similar to an internal toolchain.
# This toolchain wrapper and symlinks are installed into
# $(HOST_DIR)/bin like for the internal toolchains, and the rest
# of Buildroot is handled identical for the 2 toolchain types.
################################################################################
#
# Definitions of where the toolchain can be found
#
TOOLCHAIN_EXTERNAL_PREFIX = $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PREFIX))
TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR = $(HOST_DIR)/opt/ext-toolchain
ifeq ($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y)
TOOLCHAIN_EXTERNAL_INSTALL_DIR = $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR)
else
TOOLCHAIN_EXTERNAL_INSTALL_DIR = $(abspath $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PATH)))
endif
ifeq ($(TOOLCHAIN_EXTERNAL_INSTALL_DIR),)
ifneq ($(TOOLCHAIN_EXTERNAL_PREFIX),)
# if no path set, figure it out from path
TOOLCHAIN_EXTERNAL_BIN := $(dir $(shell which $(TOOLCHAIN_EXTERNAL_PREFIX)-gcc))
endif
else
TOOLCHAIN_EXTERNAL_REL_BIN_PATH = $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_REL_BIN_PATH))
ifeq ($(TOOLCHAIN_EXTERNAL_REL_BIN_PATH),)
TOOLCHAIN_EXTERNAL_REL_BIN_PATH = bin
endif
TOOLCHAIN_EXTERNAL_BIN = $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/$(TOOLCHAIN_EXTERNAL_REL_BIN_PATH)
endif
# If this is a buildroot toolchain, it already has a wrapper which we want to
# bypass. Since this is only evaluated after it has been extracted, we can use
# $(wildcard ...) here.
TOOLCHAIN_EXTERNAL_SUFFIX = \
$(if $(wildcard $(TOOLCHAIN_EXTERNAL_BIN)/*.br_real),.br_real)
TOOLCHAIN_EXTERNAL_CROSS = $(TOOLCHAIN_EXTERNAL_BIN)/$(TOOLCHAIN_EXTERNAL_PREFIX)-
TOOLCHAIN_EXTERNAL_CC = $(TOOLCHAIN_EXTERNAL_CROSS)gcc$(TOOLCHAIN_EXTERNAL_SUFFIX)
TOOLCHAIN_EXTERNAL_CXX = $(TOOLCHAIN_EXTERNAL_CROSS)g++$(TOOLCHAIN_EXTERNAL_SUFFIX)
TOOLCHAIN_EXTERNAL_GDC = $(TOOLCHAIN_EXTERNAL_CROSS)gdc$(TOOLCHAIN_EXTERNAL_SUFFIX)
TOOLCHAIN_EXTERNAL_FC = $(TOOLCHAIN_EXTERNAL_CROSS)gfortran$(TOOLCHAIN_EXTERNAL_SUFFIX)
TOOLCHAIN_EXTERNAL_READELF = $(TOOLCHAIN_EXTERNAL_CROSS)readelf
# Normal handling of downloaded toolchain tarball extraction.
ifeq ($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y)
# As a regular package, the toolchain gets extracted in $(@D), but
# since it's actually a fairly special package, we need it to be moved
# into TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR.
define TOOLCHAIN_EXTERNAL_MOVE
rm -rf $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR)
mkdir -p $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR)
mv $(@D)/* $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR)/
endef
endif
#
# Definitions of the list of libraries that should be copied to the target.
#
TOOLCHAIN_EXTERNAL_LIBS += ld*.so.* libgcc_s.so.* libatomic.so.*
ifneq ($(BR2_SSP_NONE),y)
TOOLCHAIN_EXTERNAL_LIBS += libssp.so.*
endif
ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC)$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC),y)
TOOLCHAIN_EXTERNAL_LIBS += libc.so.* libcrypt.so.* libdl.so.* libm.so.* libnsl.so.* libresolv.so.* librt.so.* libutil.so.*
ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
TOOLCHAIN_EXTERNAL_LIBS += libpthread.so.*
ifneq ($(BR2_PACKAGE_GDB)$(BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY),)
TOOLCHAIN_EXTERNAL_LIBS += libthread_db.so.*
endif # gdbserver
endif # ! no threads
endif
ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC),y)
TOOLCHAIN_EXTERNAL_LIBS += libnss_files.so.* libnss_dns.so.* libmvec.so.* libanl.so.*
endif
ifeq ($(BR2_TOOLCHAIN_EXTERNAL_MUSL),y)
TOOLCHAIN_EXTERNAL_LIBS += libc.so
endif
ifeq ($(BR2_INSTALL_LIBSTDCPP),y)
TOOLCHAIN_EXTERNAL_LIBS += libstdc++.so.*
endif
ifeq ($(BR2_TOOLCHAIN_HAS_FORTRAN),y)
TOOLCHAIN_EXTERNAL_LIBS += libgfortran.so.*
# fortran needs quadmath on x86 and x86_64
ifeq ($(BR2_TOOLCHAIN_HAS_LIBQUADMATH),y)
TOOLCHAIN_EXTERNAL_LIBS += libquadmath.so*
endif
endif
ifeq ($(BR2_TOOLCHAIN_HAS_OPENMP),y)
TOOLCHAIN_EXTERNAL_LIBS += libgomp.so.*
endif
ifeq ($(BR2_TOOLCHAIN_HAS_DLANG),y)
TOOLCHAIN_EXTERNAL_LIBS += libgdruntime.so* libgphobos.so*
endif
TOOLCHAIN_EXTERNAL_LIBS += $(addsuffix .so*,$(call qstrip,$(BR2_TOOLCHAIN_EXTRA_LIBS)))
#
# Definition of the CFLAGS to use with the external toolchain, as well as the
# common toolchain wrapper build arguments
#
# march/mtune/floating point mode needs to be passed to the external toolchain
# to select the right multilib variant
ifeq ($(BR2_x86_64),y)
TOOLCHAIN_EXTERNAL_CFLAGS += -m64
TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_64
endif
ifneq ($(GCC_TARGET_ARCH),)
TOOLCHAIN_EXTERNAL_CFLAGS += -march=$(GCC_TARGET_ARCH)
TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_ARCH='"$(GCC_TARGET_ARCH)"'
endif
ifneq ($(GCC_TARGET_CPU),)
TOOLCHAIN_EXTERNAL_CFLAGS += -mcpu=$(GCC_TARGET_CPU)
TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_CPU='"$(GCC_TARGET_CPU)"'
endif
ifneq ($(GCC_TARGET_ABI),)
TOOLCHAIN_EXTERNAL_CFLAGS += -mabi=$(GCC_TARGET_ABI)
TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_ABI='"$(GCC_TARGET_ABI)"'
endif
ifeq ($(BR2_TOOLCHAIN_HAS_MNAN_OPTION),y)
ifneq ($(GCC_TARGET_NAN),)
TOOLCHAIN_EXTERNAL_CFLAGS += -mnan=$(GCC_TARGET_NAN)
TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_NAN='"$(GCC_TARGET_NAN)"'
endif
endif
ifneq ($(GCC_TARGET_FP32_MODE),)
TOOLCHAIN_EXTERNAL_CFLAGS += -mfp$(GCC_TARGET_FP32_MODE)
TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_FP32_MODE='"$(GCC_TARGET_FP32_MODE)"'
endif
ifneq ($(GCC_TARGET_FPU),)
TOOLCHAIN_EXTERNAL_CFLAGS += -mfpu=$(GCC_TARGET_FPU)
TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_FPU='"$(GCC_TARGET_FPU)"'
endif
ifneq ($(GCC_TARGET_FLOAT_ABI),)
TOOLCHAIN_EXTERNAL_CFLAGS += -mfloat-abi=$(GCC_TARGET_FLOAT_ABI)
TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_FLOAT_ABI='"$(GCC_TARGET_FLOAT_ABI)"'
endif
ifneq ($(GCC_TARGET_MODE),)
TOOLCHAIN_EXTERNAL_CFLAGS += -m$(GCC_TARGET_MODE)
TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_MODE='"$(GCC_TARGET_MODE)"'
endif
ifeq ($(BR2_BINFMT_FLAT),y)
TOOLCHAIN_EXTERNAL_CFLAGS += -Wl,-elf2flt
TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_BINFMT_FLAT
endif
ifeq ($(BR2_mipsel)$(BR2_mips64el),y)
TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_MIPS_TARGET_LITTLE_ENDIAN
TOOLCHAIN_EXTERNAL_CFLAGS += -EL
endif
ifeq ($(BR2_mips)$(BR2_mips64),y)
TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_MIPS_TARGET_BIG_ENDIAN
TOOLCHAIN_EXTERNAL_CFLAGS += -EB
endif
ifeq ($(BR2_arceb),y)
TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_ARC_TARGET_BIG_ENDIAN
TOOLCHAIN_EXTERNAL_CFLAGS += -EB
endif
TOOLCHAIN_EXTERNAL_CFLAGS += $(call qstrip,$(BR2_TARGET_OPTIMIZATION))
ifeq ($(BR2_SOFT_FLOAT),y)
TOOLCHAIN_EXTERNAL_CFLAGS += -msoft-float
TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_SOFTFLOAT=1
endif
TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += \
-DBR_CROSS_PATH_SUFFIX='"$(TOOLCHAIN_EXTERNAL_SUFFIX)"'
ifeq ($(filter $(HOST_DIR)/%,$(TOOLCHAIN_EXTERNAL_BIN)),)
# TOOLCHAIN_EXTERNAL_BIN points outside HOST_DIR => absolute path
TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += \
-DBR_CROSS_PATH_ABS='"$(TOOLCHAIN_EXTERNAL_BIN)"'
else
# TOOLCHAIN_EXTERNAL_BIN points inside HOST_DIR => relative path
TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += \
-DBR_CROSS_PATH_REL='"$(TOOLCHAIN_EXTERNAL_BIN:$(HOST_DIR)/%=%)"'
endif
#
# The following functions creates the symbolic links needed to get the
# cross-compilation tools visible in $(HOST_DIR)/bin. Some of
# links are done directly to the corresponding tool in the external
# toolchain installation directory, while some other links are done to
# the toolchain wrapper (preprocessor, C, C++ and Fortran compiler)
#
# We skip gdb symlink when we are building our own gdb to prevent two
# gdb's in $(HOST_DIR)/bin.
#
# The LTO support in gcc creates wrappers for ar, ranlib and nm which load
# the lto plugin. These wrappers are called *-gcc-ar, *-gcc-ranlib, and
# *-gcc-nm and should be used instead of the real programs when -flto is
# used. However, we should not add the toolchain wrapper for them, and they
# match the *cc-* pattern. Therefore, an additional case is added for *-ar,
# *-ranlib and *-nm.
define TOOLCHAIN_EXTERNAL_INSTALL_WRAPPER
$(Q)cd $(HOST_DIR)/bin; \
for i in $(TOOLCHAIN_EXTERNAL_CROSS)*; do \
base=$${i##*/}; \
case "$$base" in \
*-ar|*-ranlib|*-nm) \
ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%..%') .; \
;; \
*cc|*cc-*|*++|*++-*|*cpp|*-gfortran|*-gdc) \
ln -sf toolchain-wrapper $$base; \
;; \
*gdb|*gdbtui) \
if test "$(BR2_PACKAGE_HOST_GDB)" != "y"; then \
ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%..%') .; \
fi \
;; \
*) \
ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%..%') .; \
;; \
esac; \
done
endef
# Various utility functions used by the external toolchain package
# infrastructure. Those functions are mainly responsible for:
#
# - installation the toolchain libraries to $(TARGET_DIR)
# - copying the toolchain sysroot to $(STAGING_DIR)
# - installing a gdbinit file
#
# Details about sysroot directory selection.
#
# To find the sysroot directory, we use the trick of looking for the
# 'libc.a' file with the -print-file-name gcc option, and then
# mangling the path to find the base directory of the sysroot.
#
# Note that we do not use the -print-sysroot option, because it is
# only available since gcc 4.4.x, and we only recently dropped support
# for 4.2.x and 4.3.x.
#
# When doing this, we don't pass any option to gcc that could select a
# multilib variant (such as -march) as we want the "main" sysroot,
# which contains all variants of the C library in the case of multilib
# toolchains. We use the TARGET_CC_NO_SYSROOT variable, which is the
# path of the cross-compiler, without the --sysroot=$(STAGING_DIR),
# since what we want to find is the location of the original toolchain
# sysroot. This "main" sysroot directory is stored in SYSROOT_DIR.
#
# Then, multilib toolchains are a little bit more complicated, since
# they in fact have multiple sysroots, one for each variant supported
# by the toolchain. So we need to find the particular sysroot we're
# interested in.
#
# To do so, we ask the compiler where its sysroot is by passing all
# flags (including -march and al.), except the --sysroot flag since we
# want to the compiler to tell us where its original sysroot
# is. ARCH_SUBDIR will contain the subdirectory, in the main
# SYSROOT_DIR, that corresponds to the selected architecture
# variant. ARCH_SYSROOT_DIR will contain the full path to this
# location.
#
# One might wonder why we don't just bother with ARCH_SYSROOT_DIR. The
# fact is that in multilib toolchains, the header files are often only
# present in the main sysroot, and only the libraries are available in
# each variant-specific sysroot directory.
# toolchain_find_sysroot returns the sysroot location for the given
# compiler + flags. We need to handle cases where libc.a is in:
#
# - lib/
# - usr/lib/
# - lib32/
# - lib64/
# - lib32-fp/ (Cavium toolchain)
# - lib64-fp/ (Cavium toolchain)
# - usr/lib/<tuple>/ (Linaro toolchain)
#
# And variations on these.
define toolchain_find_sysroot
$$(printf $(call toolchain_find_libc_a,$(1)) | sed -r -e 's:/(usr/)?lib(32|64)?([^/]*)?/([^/]*/)?libc\.a:/:')
endef
# Returns the lib subdirectory for the given compiler + flags (i.e
# typically lib32 or lib64 for some toolchains)
define toolchain_find_libdir
$$(printf $(call toolchain_find_libc_a,$(1)) | sed -r -e 's:.*/(usr/)?(lib(32|64)?([^/]*)?(/[^/]*)?)/libc.a:\2:')
endef
# Returns the location of the libc.a file for the given compiler + flags
define toolchain_find_libc_a
$$(readlink -f $$(LANG=C $(1) -print-file-name=libc.a))
endef
# Integration of the toolchain into Buildroot: find the main sysroot
# and the variant-specific sysroot, then copy the needed libraries to
# the $(TARGET_DIR) and copy the whole sysroot (libraries and headers)
# to $(STAGING_DIR).
#
# Variables are defined as follows:
#
# SYSROOT_DIR: the main sysroot directory, deduced from the location of
# the libc.a file in the default multilib variant, by
# removing the usr/lib[32|64]/libc.a part of the path.
# Ex: /x-tools/mips-2011.03/mips-linux-gnu/libc/
#
# ARCH_SYSROOT_DIR: the sysroot of the selected multilib variant,
# deduced from the location of the libc.a file in the
# selected multilib variant (taking into account the
# CFLAGS), by removing usr/lib[32|64]/libc.a at the end
# of the path.
# Ex: /x-tools/mips-2011.03/mips-linux-gnu/libc/mips16/soft-float/el/
#
# ARCH_LIB_DIR: 'lib', 'lib32' or 'lib64' depending on where libraries
# are stored. Deduced from the location of the libc.a file
# in the selected multilib variant, by looking at
# usr/lib??/libc.a.
# Ex: lib
#
# ARCH_SUBDIR: the relative location of the sysroot of the selected
# multilib variant compared to the main sysroot.
# Ex: mips16/soft-float/el
#
# SUPPORT_LIB_DIR: some toolchains, such as recent Linaro toolchains,
# store GCC support libraries (libstdc++,
# libgcc_s, etc.) outside of the sysroot. In
# this case, SUPPORT_LIB_DIR is set to a
# non-empty value, and points to the directory
# where these support libraries are
# available. Those libraries will be copied to
# our sysroot, and the directory will also be
# considered when searching libraries for copy
# to the target filesystem.
#
# Please be very careful to check the major toolchain sources:
# Buildroot, Crosstool-NG, CodeSourcery and Linaro
# before doing any modification on the below logic.
ifeq ($(BR2_STATIC_LIBS),)
define TOOLCHAIN_EXTERNAL_INSTALL_TARGET_LIBS
$(Q)$(call MESSAGE,"Copying external toolchain libraries to target...")
$(Q)for libpattern in $(TOOLCHAIN_EXTERNAL_LIBS); do \
$(call copy_toolchain_lib_root,$$libpattern); \
done
endef
endif
ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY),y)
define TOOLCHAIN_EXTERNAL_INSTALL_TARGET_GDBSERVER
$(Q)$(call MESSAGE,"Copying gdbserver")
$(Q)ARCH_SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \
ARCH_LIB_DIR="$(call toolchain_find_libdir,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \
gdbserver_found=0 ; \
for d in $${ARCH_SYSROOT_DIR}/usr \
$${ARCH_SYSROOT_DIR}/../debug-root/usr \
$${ARCH_SYSROOT_DIR}/usr/$${ARCH_LIB_DIR} \
$(TOOLCHAIN_EXTERNAL_INSTALL_DIR); do \
if test -f $${d}/bin/gdbserver ; then \
install -m 0755 -D $${d}/bin/gdbserver $(TARGET_DIR)/usr/bin/gdbserver ; \
gdbserver_found=1 ; \
break ; \
fi ; \
done ; \
if [ $${gdbserver_found} -eq 0 ] ; then \
echo "Could not find gdbserver in external toolchain" ; \
exit 1 ; \
fi
endef
endif
define TOOLCHAIN_EXTERNAL_INSTALL_SYSROOT_LIBS
$(Q)SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC))" ; \
ARCH_SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \
ARCH_LIB_DIR="$(call toolchain_find_libdir,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \
SUPPORT_LIB_DIR="" ; \
if test `find $${ARCH_SYSROOT_DIR} -name 'libstdc++.a' | wc -l` -eq 0 ; then \
LIBSTDCPP_A_LOCATION=$$(LANG=C $(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS) -print-file-name=libstdc++.a) ; \
if [ -e "$${LIBSTDCPP_A_LOCATION}" ]; then \
SUPPORT_LIB_DIR=`readlink -f $${LIBSTDCPP_A_LOCATION} | sed -r -e 's:libstdc\+\+\.a::'` ; \
fi ; \
fi ; \
if [ "$${SYSROOT_DIR}" == "$${ARCH_SYSROOT_DIR}" ] ; then \
ARCH_SUBDIR="" ; \
elif [ "`dirname $${ARCH_SYSROOT_DIR}`" = "`dirname $${SYSROOT_DIR}`" ] ; then \
SYSROOT_DIR_DIRNAME=`dirname $${SYSROOT_DIR}`/ ; \
ARCH_SUBDIR=`echo $${ARCH_SYSROOT_DIR} | sed -r -e "s:^$${SYSROOT_DIR_DIRNAME}(.*)/$$:\1:"` ; \
else \
ARCH_SUBDIR=`echo $${ARCH_SYSROOT_DIR} | sed -r -e "s:^$${SYSROOT_DIR}(.*)/$$:\1:"` ; \
fi ; \
$(call MESSAGE,"Copying external toolchain sysroot to staging...") ; \
$(call copy_toolchain_sysroot,$${SYSROOT_DIR},$${ARCH_SYSROOT_DIR},$${ARCH_SUBDIR},$${ARCH_LIB_DIR},$${SUPPORT_LIB_DIR})
endef
# Create a symlink from (usr/)$(ARCH_LIB_DIR) to lib.
# Note: the skeleton package additionally creates lib32->lib or lib64->lib
# (as appropriate)
#
# $1: destination directory (TARGET_DIR / STAGING_DIR)
create_lib_symlinks = \
$(Q)DESTDIR="$(strip $1)" ; \
ARCH_LIB_DIR="$(call toolchain_find_libdir,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \
if [ ! -e "$${DESTDIR}/$${ARCH_LIB_DIR}" -a ! -e "$${DESTDIR}/usr/$${ARCH_LIB_DIR}" ]; then \
relpath="$(call relpath_prefix,$${ARCH_LIB_DIR})" ; \
ln -snf $${relpath}lib "$${DESTDIR}/$${ARCH_LIB_DIR}" ; \
ln -snf $${relpath}lib "$${DESTDIR}/usr/$${ARCH_LIB_DIR}" ; \
fi
define TOOLCHAIN_EXTERNAL_CREATE_STAGING_LIB_SYMLINK
$(call create_lib_symlinks,$(STAGING_DIR))
endef
define TOOLCHAIN_EXTERNAL_CREATE_TARGET_LIB_SYMLINK
$(call create_lib_symlinks,$(TARGET_DIR))
endef
#
# Generate gdbinit file for use with Buildroot
#
define TOOLCHAIN_EXTERNAL_INSTALL_GDBINIT
$(Q)if test -f $(TARGET_CROSS)gdb ; then \
$(call MESSAGE,"Installing gdbinit"); \
$(gen_gdbinit_file); \
fi
endef
# GCC installs a libstdcxx-...so-gdb.py file that gdb will load automatically,
# but it contains hardcoded paths referring to the location where the (external)
# toolchain was built. Fix up these paths so that the pretty printers can be
# loaded automatically.
# By default, the pretty printers are installed in
# $(datadir)/gcc-$(gcc_version)/python but this could have been overwritten with
# the gcc configure option: --with-python-dir. We thus have to search the
# correct path first.
define TOOLCHAIN_EXTERNAL_FIXUP_PRETTY_PRINTER_LOADER
$(Q)loadfiles=$$(find $(STAGING_DIR) -name 'libstdc++.so*-gdb.py' 2>/dev/null); \
pythondir=$$(find $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR) -path '*/libstdcxx/__init__.py' 2>/dev/null | sed 's%/libstdcxx/__init__.py%%' | head -n1); \
if [ -n "$$loadfiles" ] && [ -n "$$pythondir" ]; then \
echo "Fixing up hardcoded paths in GDB pretty-printer auto-load file(s) for libstdcxx: $$loadfiles"; \
sed -ri \
-e 's%^libdir\s*=.*%libdir = "$(STAGING_DIR)/lib"%' \
-e "s%^pythondir\s*=.*%pythondir = '$$pythondir'%" \
$$loadfiles; \
fi
endef
# uClibc-ng dynamic loader is called ld-uClibc.so.1, but gcc is not
# patched specifically for uClibc-ng, so it continues to generate
# binaries that expect the dynamic loader to be named ld-uClibc.so.0,
# like with the original uClibc. Therefore, we create an additional
# symbolic link to make uClibc-ng systems work properly.
define TOOLCHAIN_EXTERNAL_FIXUP_UCLIBCNG_LDSO
$(Q)if test -e $(TARGET_DIR)/lib/ld-uClibc.so.1; then \
ln -sf ld-uClibc.so.1 $(TARGET_DIR)/lib/ld-uClibc.so.0 ; \
fi
$(Q)if test -e $(TARGET_DIR)/lib/ld64-uClibc.so.1; then \
ln -sf ld64-uClibc.so.1 $(TARGET_DIR)/lib/ld64-uClibc.so.0 ; \
fi
endef
define TOOLCHAIN_EXTERNAL_INSTALL_TARGET_LDD
$(Q)if test -f $(STAGING_DIR)/usr/bin/ldd ; then \
$(INSTALL) -D $(STAGING_DIR)/usr/bin/ldd $(TARGET_DIR)/usr/bin/ldd ; \
$(SED) 's:.*/bin/bash:#!/bin/sh:' $(TARGET_DIR)/usr/bin/ldd ; \
fi
endef
################################################################################
# inner-toolchain-external-package -- defines the generic installation rules
# for external toolchain packages
#
# argument 1 is the lowercase package name
# argument 2 is the uppercase package name, including a HOST_ prefix
# for host packages
# argument 3 is the uppercase package name, without the HOST_ prefix
# for host packages
# argument 4 is the type (target or host)
################################################################################
define inner-toolchain-external-package
$(2)_INSTALL_STAGING = YES
$(2)_ADD_TOOLCHAIN_DEPENDENCY = NO
# In fact, we don't need to download the toolchain, since it is already
# available on the system, so force the site and source to be empty so
# that nothing will be downloaded/extracted.
ifeq ($$(BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED),y)
$(2)_SITE =
$(2)_SOURCE =
endif
ifeq ($$(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y)
$(2)_EXCLUDES = usr/lib/locale/*
$(2)_POST_EXTRACT_HOOKS += \
TOOLCHAIN_EXTERNAL_MOVE
endif
# Checks for an already installed toolchain: check the toolchain
# location, check that it is usable, and then verify that it
# matches the configuration provided in Buildroot: ABI, C++ support,
# kernel headers version, type of C library and all C library features.
define $(2)_CONFIGURE_CMDS
$$(Q)$$(call check_cross_compiler_exists,$$(TOOLCHAIN_EXTERNAL_CC))
$$(Q)$$(call check_unusable_toolchain,$$(TOOLCHAIN_EXTERNAL_CC),"$$(TOOLCHAIN_EXTERNAL_CFLAGS)")
$$(Q)SYSROOT_DIR="$$(call toolchain_find_sysroot,$$(TOOLCHAIN_EXTERNAL_CC))" ; \
$$(call check_kernel_headers_version,\
$$(BUILD_DIR),\
$$(call toolchain_find_sysroot,$$(TOOLCHAIN_EXTERNAL_CC)),\
$$(call qstrip,$$(BR2_TOOLCHAIN_HEADERS_AT_LEAST)),\
$$(if $$(BR2_TOOLCHAIN_EXTERNAL_CUSTOM),loose,strict)); \
$$(call check_gcc_version,$$(TOOLCHAIN_EXTERNAL_CC),\
$$(call qstrip,$$(BR2_TOOLCHAIN_GCC_AT_LEAST))); \
if test "$$(BR2_arm)" = "y" ; then \
$$(call check_arm_abi,\
"$$(TOOLCHAIN_EXTERNAL_CC) $$(TOOLCHAIN_EXTERNAL_CFLAGS)") ; \
fi ; \
$$(call check_cplusplus,$$(TOOLCHAIN_EXTERNAL_CXX)) ; \
$$(call check_dlang,$$(TOOLCHAIN_EXTERNAL_GDC)) ; \
$$(call check_fortran,$$(TOOLCHAIN_EXTERNAL_FC)) ; \
$$(call check_openmp,$$(TOOLCHAIN_EXTERNAL_CC)) ; \
if test "$$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC)" = "y" ; then \
$$(call check_uclibc,$$$${SYSROOT_DIR}) ; \
elif test "$$(BR2_TOOLCHAIN_EXTERNAL_MUSL)" = "y" ; then \
$$(call check_musl,\
"$$(TOOLCHAIN_EXTERNAL_CC) $$(TOOLCHAIN_EXTERNAL_CFLAGS)") ; \
else \
$$(call check_glibc,$$$${SYSROOT_DIR}) ; \
fi
$$(Q)$$(call check_toolchain_ssp,$$(TOOLCHAIN_EXTERNAL_CC),$(BR2_SSP_OPTION))
endef
$(2)_TOOLCHAIN_WRAPPER_ARGS += $$(TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS)
$(2)_BUILD_CMDS = $$(TOOLCHAIN_WRAPPER_BUILD)
define $(2)_INSTALL_STAGING_CMDS
$$(TOOLCHAIN_WRAPPER_INSTALL)
$$(TOOLCHAIN_EXTERNAL_CREATE_STAGING_LIB_SYMLINK)
$$(TOOLCHAIN_EXTERNAL_INSTALL_SYSROOT_LIBS)
$$(TOOLCHAIN_EXTERNAL_INSTALL_WRAPPER)
$$(TOOLCHAIN_EXTERNAL_INSTALL_GDBINIT)
$$(TOOLCHAIN_EXTERNAL_FIXUP_PRETTY_PRINTER_LOADER)
endef
# Even though we're installing things in both the staging, the host
# and the target directory, we do everything within the
# install-staging step, arbitrarily.
define $(2)_INSTALL_TARGET_CMDS
$$(TOOLCHAIN_EXTERNAL_CREATE_TARGET_LIB_SYMLINK)
$$(TOOLCHAIN_EXTERNAL_INSTALL_TARGET_LIBS)
$$(TOOLCHAIN_EXTERNAL_INSTALL_TARGET_GDBSERVER)
$$(TOOLCHAIN_EXTERNAL_FIXUP_UCLIBCNG_LDSO)
$$(TOOLCHAIN_EXTERNAL_INSTALL_TARGET_LDD)
endef
# Call the generic package infrastructure to generate the necessary
# make targets
$(call inner-generic-package,$(1),$(2),$(3),$(4))
endef
toolchain-external-package = $(call inner-toolchain-external-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target)

View File

@ -0,0 +1,19 @@
config BR2_TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE
bool "Arm AArch64 BE 13.2.rel1"
depends on BR2_aarch64_be
depends on BR2_HOSTARCH = "x86_64"
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13
select BR2_TOOLCHAIN_EXTERNAL_GLIBC
select BR2_TOOLCHAIN_HAS_SSP
select BR2_INSTALL_LIBSTDCPP
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20
select BR2_TOOLCHAIN_GCC_AT_LEAST_13
select BR2_TOOLCHAIN_HAS_FORTRAN
select BR2_TOOLCHAIN_HAS_OPENMP
help
Arm toolchain for the AArch64 Big Endian architecture.
This is the same toolchain that was previously distributed by
Linaro.
https://developer.arm.com/open-source/gnu-toolchain

View File

@ -0,0 +1,9 @@
if BR2_TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE
config BR2_TOOLCHAIN_EXTERNAL_PREFIX
default "aarch64_be-none-linux-gnu"
config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
default "toolchain-external-arm-aarch64-be"
endif

View File

@ -0,0 +1,2 @@
# From https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x86_64-aarch64_be-none-linux-gnu.tar.xz.sha256asc
sha256 fe864b2b15127f58867a171cfcd639318609e734fbc8b78bb40258312a21a097 arm-gnu-toolchain-13.2.rel1-x86_64-aarch64_be-none-linux-gnu.tar.xz

View File

@ -0,0 +1,12 @@
################################################################################
#
# toolchain-external-arm-aarch64-be
#
################################################################################
TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE_VERSION = 13.2.rel1
TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE_SITE = https://developer.arm.com/-/media/Files/downloads/gnu/$(TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE_VERSION)/binrel
TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE_SOURCE = arm-gnu-toolchain-$(TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE_VERSION)-x86_64-aarch64_be-none-linux-gnu.tar.xz
$(eval $(toolchain-external-package))

View File

@ -0,0 +1,19 @@
config BR2_TOOLCHAIN_EXTERNAL_ARM_AARCH64
bool "Arm AArch64 13.2.rel1"
depends on BR2_aarch64
depends on BR2_HOSTARCH = "x86_64"
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13
select BR2_TOOLCHAIN_EXTERNAL_GLIBC
select BR2_TOOLCHAIN_HAS_SSP
select BR2_INSTALL_LIBSTDCPP
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20
select BR2_TOOLCHAIN_GCC_AT_LEAST_13
select BR2_TOOLCHAIN_HAS_FORTRAN
select BR2_TOOLCHAIN_HAS_OPENMP
help
Arm toolchain for the AArch64 architecture.
This is the same toolchain that was previously distributed by
Linaro.
https://developer.arm.com/open-source/gnu-toolchain

View File

@ -0,0 +1,9 @@
if BR2_TOOLCHAIN_EXTERNAL_ARM_AARCH64
config BR2_TOOLCHAIN_EXTERNAL_PREFIX
default "aarch64-none-linux-gnu"
config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
default "toolchain-external-arm-aarch64"
endif

View File

@ -0,0 +1,2 @@
# From https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x86_64-aarch64-none-linux-gnu.tar.xz.sha256asc
sha256 12fcdf13a7430655229b20438a49e8566e26551ba08759922cdaf4695b0d4e23 arm-gnu-toolchain-13.2.rel1-x86_64-aarch64-none-linux-gnu.tar.xz

View File

@ -0,0 +1,12 @@
################################################################################
#
# toolchain-external-arm-aarch64
#
################################################################################
TOOLCHAIN_EXTERNAL_ARM_AARCH64_VERSION = 13.2.rel1
TOOLCHAIN_EXTERNAL_ARM_AARCH64_SITE = https://developer.arm.com/-/media/Files/downloads/gnu/$(TOOLCHAIN_EXTERNAL_ARM_AARCH64_VERSION)/binrel
TOOLCHAIN_EXTERNAL_ARM_AARCH64_SOURCE = arm-gnu-toolchain-$(TOOLCHAIN_EXTERNAL_ARM_AARCH64_VERSION)-x86_64-aarch64-none-linux-gnu.tar.xz
$(eval $(toolchain-external-package))

View File

@ -0,0 +1,30 @@
comment "Arm toolchains available for Cortex-A with NEON + EABIhf"
depends on BR2_arm
depends on !BR2_ARM_CPU_ARMV7A || !BR2_ARM_EABIHF || !BR2_ARM_CPU_HAS_NEON
config BR2_TOOLCHAIN_EXTERNAL_ARM_ARM
bool "Arm ARM 13.2.rel1"
depends on BR2_arm
depends on BR2_ARM_CPU_ARMV7A || BR2_ARM_CPU_ARMV8A
depends on BR2_ARM_CPU_HAS_NEON
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "aarch64"
depends on BR2_ARM_EABIHF
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13
select BR2_TOOLCHAIN_EXTERNAL_GLIBC
select BR2_TOOLCHAIN_HAS_SSP
select BR2_INSTALL_LIBSTDCPP
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20
select BR2_TOOLCHAIN_GCC_AT_LEAST_13
select BR2_TOOLCHAIN_HAS_FORTRAN
select BR2_TOOLCHAIN_HAS_OPENMP
help
Arm toolchain for the ARM architecture. It uses GCC 13.2,
GDB 13, glibc 2.38, Binutils 2.41. It generates code
that runs on all Cortex-A profile devices. The code
generated uses the hard floating point calling convention,
and uses the NEON FPU instructions.
This is the same toolchain that was previously distributed by
Linaro.
https://developer.arm.com/open-source/gnu-toolchain

View File

@ -0,0 +1,9 @@
if BR2_TOOLCHAIN_EXTERNAL_ARM_ARM
config BR2_TOOLCHAIN_EXTERNAL_PREFIX
default "arm-none-linux-gnueabihf"
config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
default "toolchain-external-arm-arm"
endif

View File

@ -0,0 +1,4 @@
# From https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz.sha256asc
sha256 df0f4927a67d1fd366ff81e40bd8c385a9324fbdde60437a512d106215f257b3 arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz
# From https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-aarch64-arm-none-linux-gnueabihf.tar.xz.sha256asc
sha256 8ad384bb328bccc44396d85c8f8113b7b8c5e11bcfef322e77cda3ebe7baadb5 arm-gnu-toolchain-13.2.rel1-aarch64-arm-none-linux-gnueabihf.tar.xz

View File

@ -0,0 +1,12 @@
################################################################################
#
# toolchain-external-arm-arm
#
################################################################################
TOOLCHAIN_EXTERNAL_ARM_ARM_VERSION = 13.2.rel1
TOOLCHAIN_EXTERNAL_ARM_ARM_SITE = https://developer.arm.com/-/media/Files/downloads/gnu/$(TOOLCHAIN_EXTERNAL_ARM_ARM_VERSION)/binrel
TOOLCHAIN_EXTERNAL_ARM_ARM_SOURCE = arm-gnu-toolchain-$(TOOLCHAIN_EXTERNAL_ARM_ARM_VERSION)-$(HOSTARCH)-arm-none-linux-gnueabihf.tar.xz
$(eval $(toolchain-external-package))

View File

@ -0,0 +1,9 @@
config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN
bool "Bootlin toolchains"
depends on BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCH_SUPPORTS
depends on BR2_HOSTARCH = "x86_64"
help
Bootlin toolchains are built using Buildroot for a large
number of architectures and C libraries configurations.
https://toolchains.bootlin.com

View File

@ -0,0 +1,428 @@
# This file was auto-generated by support/scripts/gen-bootlin-toolchains
# Do not edit
# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--glibc--bleeding-edge-2023.11-1.sha256
sha256 9d4c3a45e5f781060b81779ba116b2118805f214c3b1042ce8ecde5c4aeb12c3 aarch64--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--glibc--stable-2023.11-1.sha256
sha256 5b1fde169c9ed678ee75a729286531a291c6ce5ee9d8a8b598b3abbef35c05f2 aarch64--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--musl--bleeding-edge-2023.11-1.sha256
sha256 f63c27eabff2b3e733ad132866a5301d90a9068f2b83ff5d36e907bd958951dc aarch64--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--musl--stable-2023.11-1.sha256
sha256 3554391a9ae82cc1fe35a6ab0c9efa34a5bac5474b6d527474997256e148c297 aarch64--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--uclibc--bleeding-edge-2023.11-1.sha256
sha256 02100c2670b441bcd54481bf731215e0d7c9be671407fe15678a9ad03b5056d5 aarch64--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--uclibc--stable-2023.11-1.sha256
sha256 82fe36e1c02f9662bd3ad59267ba3ae850d67e9e09a1d229ec3f25b691da0065 aarch64--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs/aarch64be--glibc--bleeding-edge-2023.11-1.sha256
sha256 0594958f0e4822adcd5dcdddc6feec3a23d37afd2dc86c80edd7cef5094c02cf aarch64be--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs/aarch64be--glibc--stable-2023.11-1.sha256
sha256 f622cacaed216dac40461653329dde6f4391f9339ea4b848118f7eff92018b5a aarch64be--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs/aarch64be--musl--bleeding-edge-2023.11-1.sha256
sha256 c495eb4bf875934502e36005499bc28a47b3762b199dcfff57516ce70fe1c0a6 aarch64be--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs/aarch64be--musl--stable-2023.11-1.sha256
sha256 72016bafd0e0b70c05f5b3f71302b8cd6cd3fce54b4dd9acfb3fb6560af9f30f aarch64be--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs/aarch64be--uclibc--bleeding-edge-2023.11-1.sha256
sha256 f956f0aec2e6e46cab1e92f0cd7b0fa691eb4202b087758e668d6bcfe773532e aarch64be--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs/aarch64be--uclibc--stable-2023.11-1.sha256
sha256 39fb6f1d32ad9baa664832d5633d04e2991898a173a4133ed73a36ccbae33f9f aarch64be--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-750d/tarballs/arcle-750d--uclibc--bleeding-edge-2023.11-1.sha256
sha256 b2a39fc18a3c2b3e10c61ce862fb1c90d53e38ccb21323a7f808ed4004c89d0c arcle-750d--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-750d/tarballs/arcle-750d--uclibc--stable-2023.11-1.sha256
sha256 1be435efc78ee2ca8d97ba64e45c21f669a3d6f8bad7850f921fdac249e93472 arcle-750d--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-hs38/tarballs/arcle-hs38--glibc--bleeding-edge-2023.11-1.sha256
sha256 ede78dd37096f3b13ef6797059c7be5d771ffb2361cfeb97be4ce46f90c69309 arcle-hs38--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-hs38/tarballs/arcle-hs38--glibc--stable-2023.11-1.sha256
sha256 91c048fb79152969253a3bb96a9cd77c79c2ba5a3081d2da7cf103069661e303 arcle-hs38--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-hs38/tarballs/arcle-hs38--uclibc--bleeding-edge-2023.11-1.sha256
sha256 970c5176001abac9746f21922b56f9628c8bb1bef8596a5badba1efb05decf33 arcle-hs38--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-hs38/tarballs/arcle-hs38--uclibc--stable-2023.11-1.sha256
sha256 b6c98633c33fe0ce5d7ba03c0a9bb55ab9a0ded69f3ed3d3813a5c133aa4e3ca arcle-hs38--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--glibc--bleeding-edge-2023.11-1.sha256
sha256 80b67f939e5cbd1d2fa13fe063fd5d8aca1f5a702adf010547d8904864fe2209 armv5-eabi--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--glibc--stable-2023.11-1.sha256
sha256 06837abc0a4bd7f163d2c1697d1e3d13f4d37f486c3a827f259fe7d3219c9a22 armv5-eabi--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--musl--bleeding-edge-2023.11-1.sha256
sha256 10f67c422fc926c38824e3606e955a37373ca5f337aecd06998e65803379ac3c armv5-eabi--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--musl--stable-2023.11-1.sha256
sha256 c6bd48c4341bc496fdb37dbda2caef5d2bba69d764aab3c317eaf20554474a38 armv5-eabi--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--uclibc--bleeding-edge-2023.11-1.sha256
sha256 95f17ecd4de11130b818146fb236ca30d0a0e86eba55bd18b1264d16f45020ff armv5-eabi--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--uclibc--stable-2023.11-1.sha256
sha256 4ec295deb930584a3da8baab7b23438180195d8bddf03fe9a93ca08ce4bd4a22 armv5-eabi--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs/armv6-eabihf--glibc--bleeding-edge-2023.11-1.sha256
sha256 8f1ef62275d34c556e4cbe14af429fac250132d2191f4ff86c77f8395edf9e4a armv6-eabihf--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs/armv6-eabihf--glibc--stable-2023.11-1.sha256
sha256 dc71ac978e3e9ec25832decf8490472b3a0998c8d2214468f20bf546ab833ee2 armv6-eabihf--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs/armv6-eabihf--musl--bleeding-edge-2023.11-1.sha256
sha256 48cd51a76e8068c78312ed022d31d12831d9ae8da4d0f23f76429c8f9760663f armv6-eabihf--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs/armv6-eabihf--musl--stable-2023.11-1.sha256
sha256 3620458bb0fe685d78b0c6645aae547b16df0e7966f4d66d672500c96aafd787 armv6-eabihf--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs/armv6-eabihf--uclibc--bleeding-edge-2023.11-1.sha256
sha256 3aee5156a27adb30311a3878fa8028fa103dfad08dda4f417087c5b2f271aee9 armv6-eabihf--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs/armv6-eabihf--uclibc--stable-2023.11-1.sha256
sha256 07df70ed0812549bb4e8b8ff930e6a5ce0952e00a19b534223b469728412bf29 armv6-eabihf--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--glibc--bleeding-edge-2023.11-1.sha256
sha256 609ac558671aa69e1200dc27204136efbef4bbc6dd98f4b77f24717e38797a77 armv7-eabihf--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--glibc--stable-2023.11-1.sha256
sha256 d0a575b156e5c481dbe079cd3e292fb8eefed39392a90cdde871e7b9e77fd420 armv7-eabihf--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--musl--bleeding-edge-2023.11-1.sha256
sha256 fcc4421b04ede8996d350a3517890c48ba200a9102787ddd288f2c5037b3de4c armv7-eabihf--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--musl--stable-2023.11-1.sha256
sha256 c01a2b2a762b0e19a7847f4877ba5b35d90bd7e23704956dfe575e8113a1ad7a armv7-eabihf--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--uclibc--bleeding-edge-2023.11-1.sha256
sha256 ded310ccbe78d411f9e027d7b8e4029746b86aa0d66a7151dcf50f49ebcbf85b armv7-eabihf--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--uclibc--stable-2023.11-1.sha256
sha256 39fcb1928454392112f0a5168b2e284d3564a24dff116efdcb71c67b672682ca armv7-eabihf--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armebv7-eabihf/tarballs/armebv7-eabihf--glibc--bleeding-edge-2023.11-1.sha256
sha256 d16d65752cc6ea0f81661aac23322cd48fb3b5608bb30588667d8191fecf8fab armebv7-eabihf--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armebv7-eabihf/tarballs/armebv7-eabihf--glibc--stable-2023.11-1.sha256
sha256 8294077f6be32fc4a3a76d8802d179e30a35bcf104ac90e6bdfe1d51827e11a9 armebv7-eabihf--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armebv7-eabihf/tarballs/armebv7-eabihf--musl--bleeding-edge-2023.11-1.sha256
sha256 a6c478cf6916d82589628d35d1317415bcd6f86455facc1453f8cffdf524092d armebv7-eabihf--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armebv7-eabihf/tarballs/armebv7-eabihf--musl--stable-2023.11-1.sha256
sha256 cb316d86590f49c29fe1a99988d8a71001a6b76cf996a7c0c15b648b017899f8 armebv7-eabihf--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armebv7-eabihf/tarballs/armebv7-eabihf--uclibc--bleeding-edge-2023.11-1.sha256
sha256 f88e930fdb895aaf9edf5d168c57a8672e46900f326e9c3c2146b81c2a3807b6 armebv7-eabihf--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armebv7-eabihf/tarballs/armebv7-eabihf--uclibc--stable-2023.11-1.sha256
sha256 fc20f9c0e9551b2d5e0ffd1154aa8d282589503c8e239b049fc719974f338e76 armebv7-eabihf--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7m/tarballs/armv7m--uclibc--bleeding-edge-2023.11-1.sha256
sha256 ffacf7a1e9d376a487e5d2fb0788a3f2a37d9da3b8daab5cdecc0a502cc0cd37 armv7m--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7m/tarballs/armv7m--uclibc--stable-2023.11-1.sha256
sha256 3baeaa139d8263477baaa51da8ad2e5e8129c71bf0a7b956543b3c4f7a40b36a armv7m--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-68xxx/tarballs/m68k-68xxx--glibc--bleeding-edge-2023.11-1.sha256
sha256 f7a41da2a2765d67ee3184df876741a459c6f85024dcc7434bd10f27451f6ecd m68k-68xxx--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-68xxx/tarballs/m68k-68xxx--glibc--stable-2023.11-1.sha256
sha256 79b120e67b7f17a1f265f5a5685b602ee3755f32047c657d837e9fc5c9ac7afa m68k-68xxx--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-68xxx/tarballs/m68k-68xxx--musl--bleeding-edge-2023.11-1.sha256
sha256 20c700a7c16b7fec587cd2b2269875ee53d33f1141e29900c53c5855f59acf9e m68k-68xxx--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-68xxx/tarballs/m68k-68xxx--musl--stable-2023.11-1.sha256
sha256 83ce067a39a6c6e5b1771b6ccfc2e7028bb479b8bcb28694ad96b5595767ac4d m68k-68xxx--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-68xxx/tarballs/m68k-68xxx--uclibc--bleeding-edge-2023.11-1.sha256
sha256 8c9d1628519b233c8377d9a6906c31ea08a2df73ec72f5b368b23318aeea8dbc m68k-68xxx--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-68xxx/tarballs/m68k-68xxx--uclibc--stable-2023.11-1.sha256
sha256 17bec666be6c4d7d796055fa04c180dd41dc8f85898e1177c36585642fbb1496 m68k-68xxx--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-coldfire/tarballs/m68k-coldfire--uclibc--bleeding-edge-2023.11-1.sha256
sha256 3bf997d9333430de431811c09b7b47551b134b70a6bce7f93aea86b39efd75fc m68k-coldfire--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-coldfire/tarballs/m68k-coldfire--uclibc--stable-2023.11-1.sha256
sha256 87e6f40abe2a17eca8c60b3fa15dab7c2f6cbda34a2bc79f5228d71927337158 m68k-coldfire--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs/microblazebe--glibc--bleeding-edge-2023.11-1.sha256
sha256 d05a6bdd547ca1b8f72a64989af3fa46db2ec054d319310dc3219a2414f11e67 microblazebe--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs/microblazebe--glibc--stable-2023.11-1.sha256
sha256 cdb5de2bd88c0ec95f24d56550b47eb256e74f10f7e579da4bcb486d0198d138 microblazebe--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs/microblazebe--musl--bleeding-edge-2023.11-1.sha256
sha256 55c14a3b40036029aedad93e64e7e33f590808608eb446cc641e6bf28b4bea58 microblazebe--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs/microblazebe--musl--stable-2023.11-1.sha256
sha256 93fe4e169b35e84dbd55e1ac97722b0f685e88701171ee4af24e89f54aa647ff microblazebe--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs/microblazebe--uclibc--bleeding-edge-2023.11-1.sha256
sha256 ebbafd02b80bbd65c79644aba48da3ef471fe43c89e7c257b57c881048f35033 microblazebe--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs/microblazebe--uclibc--stable-2023.11-1.sha256
sha256 cee44f3c1f87dfaac941df61a27ab854e1e0898978d484214782369b5a324029 microblazebe--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs/microblazeel--glibc--bleeding-edge-2023.11-1.sha256
sha256 04f90560bb9bf8905ac2f5ca7b3d9484fcb29b25e296612cc28a9d6551c3363c microblazeel--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs/microblazeel--glibc--stable-2023.11-1.sha256
sha256 d3ab9b6ef87c793c236b599e93e39df001faeb4f8f402fb496e4f456a4aa709a microblazeel--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs/microblazeel--musl--bleeding-edge-2023.11-1.sha256
sha256 bf539dda6f5793c8d5b64add457f72bac4aa41c27369e67c79079ef683c653d3 microblazeel--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs/microblazeel--musl--stable-2023.11-1.sha256
sha256 2f2018e378a0f6c7075766239217b268fd45a0103ac5af5143869ca49db3cb56 microblazeel--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs/microblazeel--uclibc--bleeding-edge-2023.11-1.sha256
sha256 24c1687ae24ad115129261ba34be831d65e5aae4f0f1536fd5df7ed9c1e53da6 microblazeel--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs/microblazeel--uclibc--stable-2023.11-1.sha256
sha256 40c25f81998bf10e73f9a8f5934d8c8028adfb1ff8436abd8e8ecccdc25ad82d microblazeel--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs/mips32--glibc--bleeding-edge-2023.11-1.sha256
sha256 fb7fb26666b9d8d2cac1aadb18f2cb7819b8b3a1ec26800b12594791bfa72604 mips32--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs/mips32--glibc--stable-2023.11-1.sha256
sha256 062d5df972b7b628337fdecba84cbe2b33f9c863e59c9702556ef252e7b44750 mips32--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs/mips32--musl--bleeding-edge-2023.11-1.sha256
sha256 91b6680324773afad77a211acf1357cd06526faa860943267fdb0ffa61a845f0 mips32--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs/mips32--musl--stable-2023.11-1.sha256
sha256 c0053f5475d960a7a1a2872ebddaf7f054aa55337dd2d6c4e81c25758244a75f mips32--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs/mips32--uclibc--bleeding-edge-2023.11-1.sha256
sha256 66edf00bd30bb1ac0885aeb891679f2e2ba33910d99e7cd85bab4400ffc014f3 mips32--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs/mips32--uclibc--stable-2023.11-1.sha256
sha256 5f4f81dbc9b7faff25dc4e3223562d5f064cf31e628eec7902b3b00c66153ed1 mips32--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs/mips32el--glibc--bleeding-edge-2023.11-1.sha256
sha256 90afdb045301503974a7337822645c975766b1749472a4b98de8251737e97434 mips32el--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs/mips32el--glibc--stable-2023.11-1.sha256
sha256 60fc28d1521dfeefbfedb20776eeadec5b9bade7a55d0ea0c901766f722da3bd mips32el--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs/mips32el--musl--bleeding-edge-2023.11-1.sha256
sha256 b22b3eb247529eb320f2d5d1cec0b903c2509ef11b16ca77715f62bba0d687b0 mips32el--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs/mips32el--musl--stable-2023.11-1.sha256
sha256 a76bdda55776c0b1a546ef20652b78134b96bdefa4f8cc792eb46d913df9138b mips32el--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs/mips32el--uclibc--bleeding-edge-2023.11-1.sha256
sha256 4106d5a4c45b6200cfaccb78a61344120d2e4610cea5e14168a9ab7a50e869c3 mips32el--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs/mips32el--uclibc--stable-2023.11-1.sha256
sha256 9aa9b2d99778ae8848ba629690cda55a9fee4175016b551c7726995a57b80478 mips32el--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs/mips32r5el--glibc--bleeding-edge-2023.11-1.sha256
sha256 c50c257de4ed262fb2a82b3eaa973d927d3a36506214918e4b7a9c4b208f5622 mips32r5el--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs/mips32r5el--glibc--stable-2023.11-1.sha256
sha256 58a7b63b8a957d99146218aaa28bdf5d01bd64cb6e97c50592f6bbe09b0d76a0 mips32r5el--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs/mips32r5el--musl--bleeding-edge-2023.11-1.sha256
sha256 3ad2cef7e834c565a9cb9ccfb3576c87ecbc7f0a7d460b071cecfeb6b867704e mips32r5el--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs/mips32r5el--musl--stable-2023.11-1.sha256
sha256 571abc2312dae8b4e49effbd0e81bdf48523427512f5a24744c0c4d3d6a9af35 mips32r5el--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs/mips32r5el--uclibc--bleeding-edge-2023.11-1.sha256
sha256 047296dbb1a33a98ec7b4b7ef7e34fca97cb44d86f7f1e6832bb0490471263b4 mips32r5el--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs/mips32r5el--uclibc--stable-2023.11-1.sha256
sha256 7c92a47bd9e22445ec4bde739866f5ab75dfacac8a73d687165774c5a124b7cf mips32r5el--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs/mips32r6el--glibc--bleeding-edge-2023.11-1.sha256
sha256 114c1b6cfc6b0eae974fb1141b40ec4fc49f10c398fd345845afbcc34a345e22 mips32r6el--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs/mips32r6el--glibc--stable-2023.11-1.sha256
sha256 6dd4457db666b58707f5e2d36d5c3045506f6f90d8f754d6321fa6758be3aa0e mips32r6el--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs/mips32r6el--musl--bleeding-edge-2023.11-1.sha256
sha256 d1e03c69e1365582c2ab8962a4279c0f83753dc95b754d9deec96aa18eec54ce mips32r6el--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs/mips32r6el--musl--stable-2023.11-1.sha256
sha256 35d831a96647305ed674e5127e1f8dc6fc4b14d3f94aa867ef47eeef8c0becb6 mips32r6el--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs/mips32r6el--uclibc--bleeding-edge-2023.11-1.sha256
sha256 22e09f0d9c69a4dbe3bc0602579fff19dc3820d92aed73b202714a8728b4d0d6 mips32r6el--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs/mips32r6el--uclibc--stable-2023.11-1.sha256
sha256 383c82e3c0accba7b0b5b1c3bfd5e4ee4521932f525823a95724aa3ff796d0be mips32r6el--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs/mips64-n32--glibc--bleeding-edge-2023.11-1.sha256
sha256 dd43c76fa9d5b0894582912cf3c1a562e0b8f401910952aadcec856c209b055c mips64-n32--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs/mips64-n32--glibc--stable-2023.11-1.sha256
sha256 e17670f46efcac70105bd360573fcee3b9e2410a688806ec90f6012a419b88d2 mips64-n32--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs/mips64-n32--musl--bleeding-edge-2023.11-1.sha256
sha256 bf442bd32f0a7cb0fe0e2ea229f08bd65af6f471478599aa0b80ab484186a56f mips64-n32--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs/mips64-n32--musl--stable-2023.11-1.sha256
sha256 a7c733e4695d9851bb70d03b40e84ae75383bffd20894293718f24a6284bd071 mips64-n32--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs/mips64-n32--uclibc--bleeding-edge-2023.11-1.sha256
sha256 10b53c93acb9a8cb29137156dc859fd10ccb8a2edee12fbd70e11658fd0c3643 mips64-n32--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs/mips64-n32--uclibc--stable-2023.11-1.sha256
sha256 e6fe6d734c2c2044b48413d19b75af3dd8b9e8d470f29c98001ab1d833d7c5bf mips64-n32--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs/mips64el-n32--glibc--bleeding-edge-2023.11-1.sha256
sha256 d3f022b9a550a4c132b7b569ffee1450ba9aa3821b937df9acb4a5a50e9c0404 mips64el-n32--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs/mips64el-n32--glibc--stable-2023.11-1.sha256
sha256 e2d1a56763c8680f458f66962749b14992985721fb63621dd3907096205fdf5b mips64el-n32--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs/mips64el-n32--musl--bleeding-edge-2023.11-1.sha256
sha256 688a5749fad712ca241f64be4b6e96cbfab98dbd528eb0e6c477f2d466215b2a mips64el-n32--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs/mips64el-n32--musl--stable-2023.11-1.sha256
sha256 c108ccfd651d89af088777b5cc1aebb6a2be24107875c93c00af94da3edcec53 mips64el-n32--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs/mips64el-n32--uclibc--bleeding-edge-2023.11-1.sha256
sha256 c0fe0e58eff17318fd7783b85d9b7586dfa67cea60d7ff0b245af07e55a8334a mips64el-n32--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs/mips64el-n32--uclibc--stable-2023.11-1.sha256
sha256 66f8c87c8649a32c597863791cfec8c44c1edc0a3438dc6919fd164541318fc0 mips64el-n32--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs/mips64r6el-n32--glibc--bleeding-edge-2023.11-1.sha256
sha256 10b1215c32c441d004c0020c3512ff23447da89fe0a24e86de35590fa8ea74d3 mips64r6el-n32--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs/mips64r6el-n32--glibc--stable-2023.11-1.sha256
sha256 30aa25c3bcbd085d8bd22a1055f083e9bf7d37dcf91847651dda802d1ee99295 mips64r6el-n32--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs/mips64r6el-n32--musl--bleeding-edge-2023.11-1.sha256
sha256 ba6a72fdb04b5b4741ad5562a7baf881b83bdad245cdc5cc7ba2b2f1fc481dae mips64r6el-n32--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs/mips64r6el-n32--musl--stable-2023.11-1.sha256
sha256 7efe8e663f909e382bfa1035c231051757c3d66a79640864db3b2182b6d122ca mips64r6el-n32--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs/mips64r6el-n32--uclibc--bleeding-edge-2023.11-1.sha256
sha256 d259f6b0b78da1296106b070630cc08f7d346af4b57d15f348b53a3a531e4e23 mips64r6el-n32--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs/mips64r6el-n32--uclibc--stable-2023.11-1.sha256
sha256 f55e95fb54c7d71274f5050941925c11d180fe7e98c0f0d1b91e8b36672e235e mips64r6el-n32--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/nios2/tarballs/nios2--glibc--bleeding-edge-2023.11-1.sha256
sha256 aef966d00fde3297115ac0ae52226b61f8d8f89efc46c15ebf796d8d9a64b951 nios2--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/nios2/tarballs/nios2--glibc--stable-2023.11-1.sha256
sha256 d9d6137443055c1e7ae086ab746ab1246d0772aec85db61b04e0fcc0acdf655e nios2--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs/openrisc--glibc--bleeding-edge-2023.11-1.sha256
sha256 cd9489ab73dbcf7a2f915b4c75021c22d43cb4bd3c8a2bd95f324040a2d548c1 openrisc--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs/openrisc--glibc--stable-2023.11-1.sha256
sha256 35eb515b554a8dcb60cae731aba49b9588cfec379f434d106de9a971015d7cf1 openrisc--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs/openrisc--musl--bleeding-edge-2023.11-1.sha256
sha256 7efab1b6d4ef49f0c4be87992567a510f7147a0e131bbfc7f88c06ac399048ff openrisc--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs/openrisc--musl--stable-2023.11-1.sha256
sha256 2ece0d83ae58072d8ca22043b19f1121ecefadd456ca4d33737696c667307a47 openrisc--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs/openrisc--uclibc--bleeding-edge-2023.11-1.sha256
sha256 04e0941036df0478c809c9bda56d2425ccaf48665c311de6605a8b050107665a openrisc--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs/openrisc--uclibc--stable-2023.11-1.sha256
sha256 a83587690bef62c3d45458db20efb101b41c55695da2f38fdb2998e4b3ccadc9 openrisc--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--glibc--bleeding-edge-2023.11-1.sha256
sha256 78aca713c2aaf75b176a5334cf3af8387037bcce5960d8638f728feb90c84d84 powerpc-440fp--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--glibc--stable-2023.11-1.sha256
sha256 12760035aa457b31b58eefb1b4c0b76b87021b8fddee721c390a536adcc308aa powerpc-440fp--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--musl--bleeding-edge-2023.11-1.sha256
sha256 49ae0f78dd343c5b40b2d732b58d34f1203e3e50f13b767d160c98efeda404f4 powerpc-440fp--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--musl--stable-2023.11-1.sha256
sha256 9bfd63773d1cd8e1cf6f83c12dbe0ecf9759df2858da46cc3dac2bfb4c8a7c67 powerpc-440fp--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--uclibc--bleeding-edge-2023.11-1.sha256
sha256 b7f5407567e636c6efc765f4a1e32cb64a166c6a863b9ac42589f8834e4ed6d8 powerpc-440fp--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--uclibc--stable-2023.11-1.sha256
sha256 e60268e6826db3574cf2bc74c53daa92db2dd48de2884f3c25be41656bd4e5ef powerpc-440fp--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs/powerpc-e300c3--glibc--bleeding-edge-2023.11-1.sha256
sha256 0b5d51e7b5d991025d934a30711f07cfe482ad3ccccdb4608638eec0910f0d7b powerpc-e300c3--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs/powerpc-e300c3--glibc--stable-2023.11-1.sha256
sha256 cafdd55bd0f82aaef09203eeee1a7294f6cf8cf6b4cc669f8a5cdd01e897d4e7 powerpc-e300c3--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs/powerpc-e300c3--musl--bleeding-edge-2023.11-1.sha256
sha256 9ddec25bccd33ccbabdfa3140a7f1b7283ff2443e83ef5f3be12e95b9a256d7f powerpc-e300c3--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs/powerpc-e300c3--musl--stable-2023.11-1.sha256
sha256 fcf15c1bb605abb906b7f6b7d2d5ba1a16de9b2eb03ae4d57d8b4480ce295371 powerpc-e300c3--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs/powerpc-e300c3--uclibc--bleeding-edge-2023.11-1.sha256
sha256 db57a356f63111d7c615cb1f1095f6193c453709facd41c3d492a423f5ff5070 powerpc-e300c3--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs/powerpc-e300c3--uclibc--stable-2023.11-1.sha256
sha256 e27984bbee08d4f1a794ce90e1b78e68ee8750403666452525e7360655d99f32 powerpc-e300c3--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--glibc--bleeding-edge-2023.11-1.sha256
sha256 07b26929d9f2a8d0225a1df4b4f01497e475478c4f5d5465a810585dd4b44a4a powerpc-e500mc--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--glibc--stable-2023.11-1.sha256
sha256 e0b50deb4ffba15fcead9ecea75a6f4af6feca6012a60ddd76591874a47e5338 powerpc-e500mc--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--musl--bleeding-edge-2023.11-1.sha256
sha256 89302d5660e58e68fdf75d238ead582c586d26c0aa717bb5cd3d1f024420c400 powerpc-e500mc--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--musl--stable-2023.11-1.sha256
sha256 59274e8641885915e226083f4474606f17600cc09e8a097129e9e04ee29a672a powerpc-e500mc--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--uclibc--bleeding-edge-2023.11-1.sha256
sha256 5f9db756eeb6d8c76574a578f823368a78e437204534d071fed63fe967156dd6 powerpc-e500mc--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--uclibc--stable-2023.11-1.sha256
sha256 7b6921f004698556681aa26ea0091931b5bd71bf0a785ff947d5b02c86d77f37 powerpc-e500mc--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e5500/tarballs/powerpc64-e5500--glibc--bleeding-edge-2023.11-1.sha256
sha256 814de1a235c805ec6a0035cf8633e5a31fdcec93a3aaaabf44cb0ca23eaa1d93 powerpc64-e5500--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e5500/tarballs/powerpc64-e5500--glibc--stable-2023.11-1.sha256
sha256 3e55842372cfb4ac35ccfb4a1cf1ccc1a207eaa27fa0c8d32641cda07316b93b powerpc64-e5500--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e6500/tarballs/powerpc64-e6500--glibc--bleeding-edge-2023.11-1.sha256
sha256 1e4e9684763822079cc3df10b290510cb4241706f287835ec1a07ec309d2b8a7 powerpc64-e6500--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e6500/tarballs/powerpc64-e6500--glibc--stable-2023.11-1.sha256
sha256 ef93463f56824079cc4cc849892004d9d06316011c51063d6c88838369065717 powerpc64-e6500--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e6500/tarballs/powerpc64-e6500--musl--bleeding-edge-2023.11-1.sha256
sha256 facb722bb19e7bf837a65a3ff15d4d80918dc36fe3a3f87a760d759f616d1d91 powerpc64-e6500--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e6500/tarballs/powerpc64-e6500--musl--stable-2023.11-1.sha256
sha256 fff880e6fc09efe3d5aaaa6a561fb6af3885dbeae8a73b1981c072196c3abc4a powerpc64-e6500--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs/powerpc64-power8--glibc--bleeding-edge-2023.11-1.sha256
sha256 d8c135613d6d75d9974c3da437628bea05d93c7db3a86bc092979621621cb773 powerpc64-power8--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs/powerpc64-power8--glibc--stable-2023.11-1.sha256
sha256 cd74cbce020c82966bdf2d4a1cb3de682043939c6dd3ad211d45ddfe56edcaaa powerpc64-power8--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs/powerpc64-power8--musl--bleeding-edge-2023.11-1.sha256
sha256 6dbcdd017bbb21179f47e17298b3de78a44d6991f51f57b584f30bb76817c76f powerpc64-power8--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs/powerpc64-power8--musl--stable-2023.11-1.sha256
sha256 f8496ecc9019cabb3fc1515da26a051abae4cc60c530619f0bef5d82c56f8a7a powerpc64-power8--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs/powerpc64le-power8--glibc--bleeding-edge-2023.11-1.sha256
sha256 04effeaf9d9e1961fe65f54015b92e329ce2cbe6c66af10b21519d0cd06a7236 powerpc64le-power8--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs/powerpc64le-power8--glibc--stable-2023.11-1.sha256
sha256 606f82f3b218791f4411082ff7f6c7ab6e8955b5a3537f0f61646b9594402458 powerpc64le-power8--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs/powerpc64le-power8--musl--bleeding-edge-2023.11-1.sha256
sha256 79ae7450434e969643018e4ddb249716c9c631a2a39937b5cd183393477d5410 powerpc64le-power8--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs/powerpc64le-power8--musl--stable-2023.11-1.sha256
sha256 c9402692c883f5512b966fe517038d9b30b93de328dd5dd2e7af20d25e4509ca powerpc64le-power8--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv32-ilp32d/tarballs/riscv32-ilp32d--glibc--bleeding-edge-2023.11-1.sha256
sha256 19bd2ecfd1f7a56795ed1807ddadbbe3d0807fc19bb95625ca5a126810bd3fc4 riscv32-ilp32d--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs/riscv64-lp64d--glibc--bleeding-edge-2023.11-1.sha256
sha256 7a53268f429109ee416df5ed6ef47b1a2d88d7760371aabaf8f4f24481dfb89e riscv64-lp64d--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs/riscv64-lp64d--glibc--stable-2023.11-1.sha256
sha256 80e84af7ebed4e8e52fc2d17994f7bcb2e7bdc069e2d1f1c4656977cd73d9d5d riscv64-lp64d--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs/riscv64-lp64d--musl--bleeding-edge-2023.11-1.sha256
sha256 023dadabe58ff6079b27ebfde9495440180dc473b8c5da2c55e95ce68e095c15 riscv64-lp64d--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs/riscv64-lp64d--musl--stable-2023.11-1.sha256
sha256 09522ec60b13766090acaa715402cb11edaa39217642fbd7315fbe37b6032275 riscv64-lp64d--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs/riscv64-lp64d--uclibc--bleeding-edge-2023.11-1.sha256
sha256 fcfa3624eb6024b55c264ec87790265beab393cfc8f867afda8954e4c3b744c4 riscv64-lp64d--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs/riscv64-lp64d--uclibc--stable-2023.11-1.sha256
sha256 aebb6034d3512e3c29337c368dcf4a1e58756c725032d814047a3635178cb5ad riscv64-lp64d--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/s390x-z13/tarballs/s390x-z13--glibc--bleeding-edge-2023.11-1.sha256
sha256 716031aaa6b2d566b0c9abf3992f1b7dabc845eb81934ec97ce0ff37157c9269 s390x-z13--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/s390x-z13/tarballs/s390x-z13--glibc--stable-2023.11-1.sha256
sha256 4ff3c21eb060c9df2e795fab18fa267300a581ba3fa55e62084e9233c386515f s390x-z13--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs/sh-sh4--glibc--bleeding-edge-2023.11-1.sha256
sha256 96b9082e3ee2b7c7b8170fa8d93f50629d170f4dfc345978327ed562d0efe42b sh-sh4--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs/sh-sh4--glibc--stable-2023.11-1.sha256
sha256 e957c0854780cb48b0fcb54eddf9ef40ed496b8fb3d0c905f9c36dd8263f3cf0 sh-sh4--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs/sh-sh4--musl--bleeding-edge-2023.11-1.sha256
sha256 57e28d5a164fdcaed5a6cfd1225e346e873d4e48f8f1ced8153af0c8669bd081 sh-sh4--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs/sh-sh4--musl--stable-2023.11-1.sha256
sha256 b6847ac7355ad469d752799ffa08df4eef2a7ba49974242e1cefa9d9720bc894 sh-sh4--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs/sh-sh4--uclibc--bleeding-edge-2023.11-1.sha256
sha256 ee15660db075af19c7e768da73c6f57336b4201bd397e20fdd0357630fdf4e40 sh-sh4--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs/sh-sh4--uclibc--stable-2023.11-1.sha256
sha256 8d0e0f3a54cb5b601d7c9c093138ba537e11f400a3e44ee0b10d28b96f9704fb sh-sh4--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4aeb/tarballs/sh-sh4aeb--glibc--bleeding-edge-2023.11-1.sha256
sha256 760b5970d4c9b82bd6d469a142713bc70564a83d86123b1c5ae1fb0ccf9711d7 sh-sh4aeb--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4aeb/tarballs/sh-sh4aeb--glibc--stable-2023.11-1.sha256
sha256 e734eeba730881e1135abb94797ece8865b924ff31c918df93fcfbf21dddba7d sh-sh4aeb--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4aeb/tarballs/sh-sh4aeb--musl--bleeding-edge-2023.11-1.sha256
sha256 d2a7024ca6869117118e136c8577d11c954acfd4aa71112f431be0c76fffea2f sh-sh4aeb--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4aeb/tarballs/sh-sh4aeb--musl--stable-2023.11-1.sha256
sha256 3e48605bbf9407f9625cc367b55ab35f20a308cb44c69e85583b2fe10c9c604d sh-sh4aeb--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sparc64/tarballs/sparc64--glibc--bleeding-edge-2023.11-1.sha256
sha256 8ee180782f8094d90e28e4977ea018094363d0678c1d149838098bedcab4aa71 sparc64--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sparc64/tarballs/sparc64--glibc--stable-2023.11-1.sha256
sha256 78eeafc8c9b28dbf5a90d2f8ebc4e1a0623147e5f4bdbcd29b32d6ee760c9d1b sparc64--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sparcv8/tarballs/sparcv8--uclibc--bleeding-edge-2022.08-2.sha256
sha256 ccd4110fa574d2323f038394c0603245384002fbe906204db36fe200c9c8f886 sparcv8--uclibc--bleeding-edge-2022.08-2.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sparcv8/tarballs/sparcv8--uclibc--stable-2022.08-1.sha256
sha256 da3b9f0a936401cbd3cc305b86d3611531391354cc0226a0eeb3ce4ddcc7b7dc sparcv8--uclibc--stable-2022.08-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64/tarballs/x86-64--glibc--bleeding-edge-2023.11-1.sha256
sha256 c97b280a36ae4411ec97717b2c67622912ef436efa55a31f888187492d4e5e4b x86-64--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64/tarballs/x86-64--glibc--stable-2023.11-1.sha256
sha256 e3c0ef1618df3a3100a8a167066e7b19fdd25ee2c4285cf2cfe3ef34f0456867 x86-64--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64/tarballs/x86-64--musl--bleeding-edge-2023.11-1.sha256
sha256 b362a4b12a19e2baa3590386a531d8b65abad0d323aba317aea5146da13b8659 x86-64--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64/tarballs/x86-64--musl--stable-2023.11-1.sha256
sha256 d1df97230234a52c60e53fa7d1a6f14721295b8b49f40801c0e3ca1017b5bee3 x86-64--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64/tarballs/x86-64--uclibc--bleeding-edge-2023.11-1.sha256
sha256 e32b885a41257dd5809f99d6d165994da3d1ce9efe2051f5c223a8243aaa37d9 x86-64--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64/tarballs/x86-64--uclibc--stable-2023.11-1.sha256
sha256 1b77c4238b3e1958472094f46f866cfe7eab6c25d728db8c3ece8121e2095035 x86-64--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v2/tarballs/x86-64-v2--glibc--bleeding-edge-2023.11-1.sha256
sha256 6b8cc256ccc35777b4d5b6a2baaa2d9a4cbb48f4e111860d20b310f983cf00e0 x86-64-v2--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v2/tarballs/x86-64-v2--glibc--stable-2023.11-1.sha256
sha256 45b1749ac5473f4ef629a32dcc423419b608c9cb80840b49501afb8af008c381 x86-64-v2--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v2/tarballs/x86-64-v2--musl--bleeding-edge-2023.11-1.sha256
sha256 ef2e717b55f34ad320c532a21782c308fdff5a462b413af868f52543dee043cf x86-64-v2--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v2/tarballs/x86-64-v2--musl--stable-2023.11-1.sha256
sha256 ae070e245dfc0bf882b6dcc4ad6c080b11f0b8d2f235f65c0cc1069a06f5e4a0 x86-64-v2--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v2/tarballs/x86-64-v2--uclibc--bleeding-edge-2023.11-1.sha256
sha256 530f31ce5f8d002eb7e044f61b49e242d1e15a182e7e09ccf9f64080e6a28ac9 x86-64-v2--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v2/tarballs/x86-64-v2--uclibc--stable-2023.11-1.sha256
sha256 a11189869ca3636abd12691758ab08dd41ef54c3cdcf936a141d48c4f2903237 x86-64-v2--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v3/tarballs/x86-64-v3--glibc--bleeding-edge-2023.11-1.sha256
sha256 49031a3567c018a94d8158f8f5767d3438da21c8ad493c90c641d11e55f44d81 x86-64-v3--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v3/tarballs/x86-64-v3--glibc--stable-2023.11-1.sha256
sha256 19376ffd5187f2c96d99a9f12d15ae51c8bf351d25a7186e379fae815feedd22 x86-64-v3--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v3/tarballs/x86-64-v3--musl--bleeding-edge-2023.11-1.sha256
sha256 6817017e68cb3d8e09eb048ccd70ee66e5cd72e49fb77806825614802a62077e x86-64-v3--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v3/tarballs/x86-64-v3--musl--stable-2023.11-1.sha256
sha256 05f73caedf28c257d66e4365b9e496069bdc1294bfa1b9697e64a380d63eaf99 x86-64-v3--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v3/tarballs/x86-64-v3--uclibc--bleeding-edge-2023.11-1.sha256
sha256 45ee398da5195584062e573eed27a660d99a10e8f129c6fb27b2d6b418a05bae x86-64-v3--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v3/tarballs/x86-64-v3--uclibc--stable-2023.11-1.sha256
sha256 9848d205bcbdba3fd2e1c61cdd5d33ed03f842639d4f4e0a0057c410811bed79 x86-64-v3--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v4/tarballs/x86-64-v4--glibc--bleeding-edge-2023.11-1.sha256
sha256 d57fc66d8ae7e7aedf543bf4993fa36be68aeb1020c30d32d26d0fad8952db63 x86-64-v4--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v4/tarballs/x86-64-v4--glibc--stable-2023.11-1.sha256
sha256 095220c834fb1c1a796e6db7847c9dc191fedca6ae731708a9864f1c0ec0f752 x86-64-v4--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v4/tarballs/x86-64-v4--musl--bleeding-edge-2023.11-1.sha256
sha256 50757334efcabf2d35083498df04a945cb7e3730dd3893cc478832a02d21147b x86-64-v4--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v4/tarballs/x86-64-v4--musl--stable-2023.11-1.sha256
sha256 437516c415eacd377946df6167196dd4337da030f304d8c81b5b6889317b136c x86-64-v4--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v4/tarballs/x86-64-v4--uclibc--bleeding-edge-2023.11-1.sha256
sha256 f6e25121564440796a9cb196bf9de87e1ed51456d508deb8b061ab4727971ff6 x86-64-v4--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v4/tarballs/x86-64-v4--uclibc--stable-2023.11-1.sha256
sha256 a35e650c422e64939c8d4578b39fce5c73995688420e51aa6c0f553ba97ba838 x86-64-v4--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--glibc--bleeding-edge-2023.11-1.sha256
sha256 00e1992817c73d2df99f188240e244442f3d50a2a9a994d95ade453916c16ac3 x86-64-core-i7--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--glibc--stable-2023.11-1.sha256
sha256 a3cd2806008fd2bd75bee34d098003ef2cfb06665d15e92d305617d4e021b74e x86-64-core-i7--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--musl--bleeding-edge-2023.11-1.sha256
sha256 cf084bdf1f62c35996dc922d9c794a08d53ff0d71e888a0bbc4717431aa7c2c6 x86-64-core-i7--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--musl--stable-2023.11-1.sha256
sha256 38a7be51cdeb738f7d724ba3efe207fddab523c8b128bbbb33f9b7a56d0e70f1 x86-64-core-i7--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--uclibc--bleeding-edge-2023.11-1.sha256
sha256 4f08c426b0ebb88a1e66831db780168c5716e319e905b8d41c5f5dba1e98d543 x86-64-core-i7--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--uclibc--stable-2023.11-1.sha256
sha256 92ee30927596669f133982681010edaaf63100fde41ffea6a778aae367b2ca86 x86-64-core-i7--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs/x86-core2--glibc--bleeding-edge-2023.11-1.sha256
sha256 76135ed57c361ac9c3722ff8db64332cffa77669b7051469eb3ef169df790bb6 x86-core2--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs/x86-core2--glibc--stable-2023.11-1.sha256
sha256 adde0a7579bd8c7c6b4dd7af2997a6841a541d1e94426d2ad7ebdbb26105b536 x86-core2--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs/x86-core2--musl--bleeding-edge-2023.11-1.sha256
sha256 26206a934621b95ccf5380fe3f69e2218a9531a850dd05f9cdee5cc66e23963e x86-core2--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs/x86-core2--musl--stable-2023.11-1.sha256
sha256 7202c3eb1f71ebbef5db2b042ba7e803574ccf66987c406f3711d98878dbbe24 x86-core2--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs/x86-core2--uclibc--bleeding-edge-2023.11-1.sha256
sha256 4d73fbe36e86263679a4d5f7331977657cf793fe1ef337ffb6492aedf9d86e1b x86-core2--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs/x86-core2--uclibc--stable-2023.11-1.sha256
sha256 825c95bf3f28a950f90f9f8827c3ee4536729285603ff53611ae260c4beb2ce8 x86-core2--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--glibc--bleeding-edge-2023.11-1.sha256
sha256 007266510779d041524cc1fce4eac2af1ffe38db50d2221cbe09a519c61190c3 x86-i686--glibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--glibc--stable-2023.11-1.sha256
sha256 13afd0f9b7fd7e3c1c598b294494e23ddacb39df23e30a999fbadff31a97c514 x86-i686--glibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--musl--bleeding-edge-2023.11-1.sha256
sha256 02c465b5612607931c9f0f7eec0239b0ecebab2af3cef79c28993c7ce7f5b079 x86-i686--musl--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--musl--stable-2023.11-1.sha256
sha256 5d0a0abd6f6227622b217183ab06bcdf63fd6834bcb2a2335666bbb734f3fb11 x86-i686--musl--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--uclibc--bleeding-edge-2023.11-1.sha256
sha256 6a40f5bb22f1fb1de6cc6986f31afdfbef5c5c866f3a3a387e1dfc567ed98b8e x86-i686--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--uclibc--stable-2023.11-1.sha256
sha256 c23e32f9616df27a1b8f77700d7b988c55dce6443598907ceface720c6e960a3 x86-i686--uclibc--stable-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/xtensa-lx60/tarballs/xtensa-lx60--uclibc--bleeding-edge-2023.11-1.sha256
sha256 9434e3522601c9b494bd223fa04376b9b489db47e823266b124f5b7a3b97486c xtensa-lx60--uclibc--bleeding-edge-2023.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/xtensa-lx60/tarballs/xtensa-lx60--uclibc--stable-2023.11-1.sha256
sha256 aa28cb17b03d7fa29c8911a8f9c7b26c2d90c222b1b0a1c727ecc5533b14023e xtensa-lx60--uclibc--stable-2023.11-1.tar.bz2

View File

@ -0,0 +1,94 @@
config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS
bool "Sourcery CodeBench MIPS 2016.05"
depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
depends on BR2_MIPS_CPU_MIPS32R2 || BR2_MIPS_CPU_MIPS64R2
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_6
# Unsupported MIPS cores
depends on !BR2_mips_interaptiv
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
depends on !BR2_MIPS_NABI32
select BR2_TOOLCHAIN_EXTERNAL_GLIBC
select BR2_TOOLCHAIN_HAS_SSP
select BR2_TOOLCHAIN_HAS_NATIVE_RPC
select BR2_TOOLCHAIN_HAS_OPENMP
select BR2_INSTALL_LIBSTDCPP
select BR2_HOSTARCH_NEEDS_IA32_LIBS
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
select BR2_TOOLCHAIN_GCC_AT_LEAST_5
help
Sourcery CodeBench toolchain for the MIPS architecture, from
Mentor Graphics. It uses gcc 5.3, binutils 2.25.51, glibc
2.23, uClibc 0.9.30 and gdb 7.10.50, kernel headers 4.4.1. It
has support for the following variants:
- MIPS32r2 - Big-Endian, 2008 NaN, O32
Select MIPS (big endian) core
Disable BR2_SOFT_FLOAT
Set BR2_TARGET_OPTIMIZATION to -mnan=2008
- MIPS32r2 - Big-Endian, O32
Select MIPS (big endian) core
Disable BR2_SOFT_FLOAT
- MIPS32r2 - Big-Endian, O32, MIPS16
Select MIPS (big endian) core
Disable BR2_SOFT_FLOAT
Set BR2_TARGET_OPTIMIZATION to -mips16
- MIPS32r2 - Big-Endian, Soft-Float, O32
Select MIPS (big endian) core
Select BR2_SOFT_FLOAT
- MIPS32r2 - Big-Endian, Soft-Float, O32, MIPS16
Select MIPS (big endian) core
Select BR2_SOFT_FLOAT
Set BR2_TARGET_OPTIMIZATION to -mips16
- MIPS32r2 - Little-Endian, 2008 NaN, O32
Select MIPS (little endian) core
Disable BR2_SOFT_FLOAT
Set BR2_TARGET_OPTIMIZATION to -mnan=2008
- MIPS32r2 - Little-Endian, O32
Select MIPS (little endian) core
Disable BR2_SOFT_FLOAT
- MIPS32r2 - Little-Endian, O32, MIPS16
Select MIPS (little endian) core
Disable BR2_SOFT_FLOAT
Set BR2_TARGET_OPTIMIZATION to -mips16
- MIPS32r2 - Little-Endian, Soft-Float, O32
Select MIPS (little endian) core
Select BR2_SOFT_FLOAT
- MIPS32r2 - Little-Endian, Soft-Float, O32, MIPS16
Select MIPS (little endian) core
Select BR2_SOFT_FLOAT
Set BR2_TARGET_OPTIMIZATION to -mips16
- MIPS32r2 - Little-Endian, Soft-Float, O32, microMIPS
Select MIPS (little endian) core
Select BR2_SOFT_FLOAT
Set BR2_TARGET_OPTIMIZATION to -mmicromips
- MIPS32r2 - uClibc, Big-Endian, 2008 NaN, O32
Not usable in Buildroot yet.
- MIPS32r2 - uClibc, Big-Endian, O32
Not usable in Buildroot yet.
- MIPS32r2 - uClibc, Big-Endian, Soft-Float, O32
Not usable in Buildroot yet.
- MIPS32r2 - uClibc, Little-Endian, 2008 NaN, O32
Not usable in Buildroot yet.
- MIPS32r2 - uClibc, Little-Endian, O32
Not usable in Buildroot yet.
- MIPS32r2 - uClibc, Little-Endian, Soft-Float, O32
Not usable in Buildroot yet.
- MIPS64r2 - Big-Endian, N64
Select MIPS64 (big endian) core
Select the n64 ABI
Disable BR2_SOFT_FLOAT
- MIPS64r2 - Big-Endian, Soft-Float, N64
Select MIPS64 (big endian) core
Select the n64 ABI
Select BR2_SOFT_FLOAT
- MIPS64r2 - Little-Endian, N64
Select MIPS64 (little endian) core
Select the n64 ABI
Disable BR2_SOFT_FLOAT
- MIPS64r2 - Little-Endian, Soft-Float, N64
Select MIPS64 (little endian) core
Select the n64 ABI
Select BR2_SOFT_FLOAT
comment "Sourcery CodeBench toolchains are only available for MIPS/MIPS64 o32 and n64"
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_6
depends on BR2_MIPS_NABI32

View File

@ -0,0 +1,9 @@
if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS
config BR2_TOOLCHAIN_EXTERNAL_PREFIX
default "mips-linux-gnu"
config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
default "toolchain-external-codesourcery-mips"
endif

View File

@ -0,0 +1,3 @@
# Locally computed
sha256 d354447c4c5160439dafd5464fa3a0266dd41e79f973477238e4f0215a6b5397 mips-2016.05-8-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2
sha256 2658e55d5b71bba25d6f77e868e18b200ea5f75c8add7ed3a9266e716d9adfff mips-2016.05-8-mips-linux-gnu.src.tar.bz2

View File

@ -0,0 +1,13 @@
################################################################################
#
# toolchain-external-codesourcery-mips
#
################################################################################
TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_VERSION = 2016.05-8
TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_SITE = https://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX)
TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_SOURCE = mips-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2
TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_ACTUAL_SOURCE_TARBALL = mips-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2
$(eval $(toolchain-external-package))

View File

@ -0,0 +1,16 @@
config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII
bool "Sourcery CodeBench Nios-II 2018.05"
depends on BR2_nios2
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
select BR2_TOOLCHAIN_EXTERNAL_GLIBC
select BR2_TOOLCHAIN_HAS_SSP
select BR2_TOOLCHAIN_HAS_NATIVE_RPC
select BR2_INSTALL_LIBSTDCPP
select BR2_HOSTARCH_NEEDS_IA32_LIBS
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15
select BR2_TOOLCHAIN_GCC_AT_LEAST_7
help
Sourcery CodeBench toolchain for the Nios-II architecture,
from Mentor Graphics. It uses gcc 7.3, binutils 2.28,
glibc 2.27, gdb 8.0.1 and kernel headers 4.15.5.

View File

@ -0,0 +1,9 @@
if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII
config BR2_TOOLCHAIN_EXTERNAL_PREFIX
default "nios2-linux-gnu"
config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
default "toolchain-external-codesourcery-niosII"
endif

View File

@ -0,0 +1,6 @@
# From https://sourcery.mentor.com/GNUToolchain/release3374
md5 4f536b3b9b4e00f483e82e304c0a27ae sourceryg++-2018.05-5-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2
md5 be42ab83da2e8db7b73dc890c2549570 sourceryg++-2018.05-5-nios2-linux-gnu.src.tar.bz2
# Locally calculated
sha256 c19afb432b5b23f8d5d639831d3a423a3ea3c9cc62e0015020d20ea2eb36dd1b sourceryg++-2018.05-5-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2
sha256 d73a6364106dd62352711f932d3be8e97fdaaa548995678b5d38d9f21e22437a sourceryg++-2018.05-5-nios2-linux-gnu.src.tar.bz2

View File

@ -0,0 +1,13 @@
################################################################################
#
# toolchain-external-codesourcery-niosII
#
################################################################################
TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION = 2018.05-5
TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_SITE = https://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX)
TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_SOURCE = sourceryg++-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2
TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_ACTUAL_SOURCE_TARBALL = sourceryg++-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2
$(eval $(toolchain-external-package))

View File

@ -0,0 +1,5 @@
config BR2_TOOLCHAIN_EXTERNAL_CUSTOM
bool "Custom toolchain"
help
Use this option to use a custom toolchain pre-installed on
your system.

View File

@ -0,0 +1,591 @@
if BR2_TOOLCHAIN_EXTERNAL_CUSTOM
config BR2_TOOLCHAIN_EXTERNAL_PREFIX
default BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX
config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
default "toolchain-external-custom"
config BR2_TOOLCHAIN_EXTERNAL_URL
string "Toolchain URL"
depends on BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD
help
URL of the custom toolchain tarball to download and install.
config BR2_TOOLCHAIN_EXTERNAL_REL_BIN_PATH
string "Toolchain relative binary path"
default "bin"
depends on BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD
help
Path to where the binaries (e.g. the compiler) can be found,
relative to the downloaded toolchain root directory. The
default is "bin" and is correct for most toolchains.
config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX
string "Toolchain prefix"
default "$(ARCH)-linux"
help
Component name prefix used by your external toolchain.
Typically, this is the target tuple, e.g. something that
looks like: $(ARCH)-unknown-linux-gnu.
If unsure, look at the "bin" directory of your toolchain and
note the part of component name before the last dash, i.e. if
you call the toolchain's gcc as $(ARCH)-unknown-linux-gnu-gcc,
the prefix is $(ARCH)-unknown-linux-gnu.
Note that Buildroot toolchains have shorter aliases that look
like $(ARCH)-linux, as symlinks to the full-tuple components,
so you can leave this option at default value if you use them
as external toolchain.
choice
bool "External toolchain gcc version"
help
Set to the gcc version that is used by your external
toolchain.
config BR2_TOOLCHAIN_EXTERNAL_GCC_13
bool "13.x"
select BR2_TOOLCHAIN_GCC_AT_LEAST_13
config BR2_TOOLCHAIN_EXTERNAL_GCC_12
bool "12.x"
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13
select BR2_TOOLCHAIN_GCC_AT_LEAST_12
config BR2_TOOLCHAIN_EXTERNAL_GCC_11
bool "11.x"
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_12
select BR2_TOOLCHAIN_GCC_AT_LEAST_11
config BR2_TOOLCHAIN_EXTERNAL_GCC_10
bool "10.x"
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_11
select BR2_TOOLCHAIN_GCC_AT_LEAST_10
config BR2_TOOLCHAIN_EXTERNAL_GCC_9
bool "9.x"
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_10
select BR2_TOOLCHAIN_GCC_AT_LEAST_9
config BR2_TOOLCHAIN_EXTERNAL_GCC_8
bool "8.x"
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_9
select BR2_TOOLCHAIN_GCC_AT_LEAST_8
config BR2_TOOLCHAIN_EXTERNAL_GCC_7
bool "7.x"
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8
select BR2_TOOLCHAIN_GCC_AT_LEAST_7
config BR2_TOOLCHAIN_EXTERNAL_GCC_6
bool "6.x"
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_7
select BR2_TOOLCHAIN_GCC_AT_LEAST_6
config BR2_TOOLCHAIN_EXTERNAL_GCC_5
bool "5.x"
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_6
select BR2_TOOLCHAIN_GCC_AT_LEAST_5
config BR2_TOOLCHAIN_EXTERNAL_GCC_4_9
bool "4.9.x"
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_5
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
config BR2_TOOLCHAIN_EXTERNAL_GCC_4_8
bool "4.8.x"
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
config BR2_TOOLCHAIN_EXTERNAL_GCC_4_7
bool "4.7.x"
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
config BR2_TOOLCHAIN_EXTERNAL_GCC_4_6
bool "4.6.x"
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
config BR2_TOOLCHAIN_EXTERNAL_GCC_4_5
bool "4.5.x"
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
config BR2_TOOLCHAIN_EXTERNAL_GCC_4_4
bool "4.4.x"
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
config BR2_TOOLCHAIN_EXTERNAL_GCC_4_3
bool "4.3.x"
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
config BR2_TOOLCHAIN_EXTERNAL_GCC_OLD
bool "older"
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8
help
Use this option if your GCC version is older than any of the
above.
Note that the Buildroot community doesn't do any testing with
such old toolchains. Some packages may fail to build in
surprising ways, or the generated root filesystem may not
work at all. Use such old toolchains at your own risk.
endchoice
comment "GCC older than 4.8 is not tested by Buildroot. Use at your own risk."
depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
choice
bool "External toolchain kernel headers series"
default BR2_TOOLCHAIN_EXTERNAL_HEADERS_REALLY_OLD
help
Set to the kernel headers version that were used to build
this external toolchain.
This is used to hide/show some packages that have strict
requirements on the version of kernel headers.
If unsure what version your toolchain is using, you can look
at the value of LINUX_VERSION_CODE in linux/version.h in your
toolchain. The Linux version is M.m.p, with:
M = ( LINUX_VERSION_CODE >> 16 ) & 0xFF
m = ( LINUX_VERSION_CODE >> 8 ) & 0xFF
p = ( LINUX_VERSION_CODE >> 0 ) & 0xFF
If your toolchain uses headers newer than the latest version
in the choice, then select the latest version.
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_6_6
bool "6.6.x or later"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_6
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_6_5
bool "6.5.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_5
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_6_4
bool "6.4.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_4
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_6_3
bool "6.3.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_3
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_6_2
bool "6.2.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_2
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_6_1
bool "6.1.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_1
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_6_0
bool "6.0.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_0
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_19
bool "5.19.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_19
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_18
bool "5.18.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_18
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_17
bool "5.17.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_17
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_16
bool "5.16.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_16
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_15
bool "5.15.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_14
bool "5.14.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_13
bool "5.13.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_12
bool "5.12.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_11
bool "5.11"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_10
bool "5.10.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_9
bool "5.9.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_8
bool "5.8.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_7
bool "5.7.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_6
bool "5.6.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_5
bool "5.5.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_4
bool "5.4.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_3
bool "5.3.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_2
bool "5.2.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_1
bool "5.1.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_0
bool "5.0.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_20
bool "4.20.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_19
bool "4.19.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_18
bool "4.18.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_17
bool "4.17.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16
bool "4.16.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_15
bool "4.15.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_14
bool "4.14.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13
bool "4.13.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_12
bool "4.12.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_11
bool "4.11.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10
bool "4.10.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_9
bool "4.9.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_8
bool "4.8.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_7
bool "4.7.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_6
bool "4.6.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_5
bool "4.5.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_4
bool "4.4.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_3
bool "4.3.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_2
bool "4.2.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1
bool "4.1.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_0
bool "4.0.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_19
bool "3.19.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_18
bool "3.18.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_17
bool "3.17.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_16
bool "3.16.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_15
bool "3.15.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_14
bool "3.14.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_13
bool "3.13.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_12
bool "3.12.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_11
bool "3.11.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10
bool "3.10.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_9
bool "3.9.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_8
bool "3.8.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_7
bool "3.7.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_6
bool "3.6.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_5
bool "3.5.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_4
bool "3.4.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_3
bool "3.3.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_2
bool "3.2.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_1
bool "3.1.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_0
bool "3.0.x"
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
config BR2_TOOLCHAIN_EXTERNAL_HEADERS_REALLY_OLD
bool "2.6.x"
endchoice
comment "Kernel headers older than 3.13 is not tested by Buildroot. Use at your own risk."
depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
choice
prompt "External toolchain C library"
default BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
bool "uClibc/uClibc-ng"
select BR2_TOOLCHAIN_EXTERNAL_UCLIBC
help
Select this option if your external toolchain uses the
uClibc (available from http://www.uclibc.org/)
or uClibc-ng (available from http://www.uclibc-ng.org)
C library.
config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC
bool "glibc"
select BR2_TOOLCHAIN_EXTERNAL_GLIBC
help
Select this option if your external toolchain uses the GNU C
library (available from https://www.gnu.org/software/libc/).
config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL
bool "musl (experimental)"
select BR2_TOOLCHAIN_EXTERNAL_MUSL
help
Select this option if your external toolchain uses the
'musl' C library, available from http://www.musl-libc.org/.
endchoice
if BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
config BR2_TOOLCHAIN_EXTERNAL_WCHAR
bool "Toolchain has WCHAR support?"
select BR2_USE_WCHAR
help
Select this option if your external toolchain supports
WCHAR. If you don't know, leave the default value, Buildroot
will tell you if it's correct or not.
config BR2_TOOLCHAIN_EXTERNAL_LOCALE
bool "Toolchain has locale support?"
select BR2_TOOLCHAIN_EXTERNAL_WCHAR
select BR2_ENABLE_LOCALE
help
Select this option if your external toolchain has locale
support. If you don't know, leave the default value,
Buildroot will tell you if it's correct or not.
config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS
bool "Toolchain has threads support?"
default y
select BR2_TOOLCHAIN_HAS_THREADS
help
Select this option if your external toolchain has thread
support. If you don't know, leave the default value,
Buildroot will tell you if it's correct or not.
if BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS
config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG
bool "Toolchain has threads debugging support?"
default y
select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
help
Select this option if your external toolchain has thread
debugging support. If you don't know, leave the default
value, Buildroot will tell you if it's correct or not.
config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL
bool "Toolchain has NPTL threads support?"
default y
select BR2_TOOLCHAIN_HAS_THREADS_NPTL
help
Select this option if your external toolchain uses the NPTL
(Native Posix Thread Library) implementation of Posix
threads. If you don't know, leave the default value,
Buildroot will tell you if it's correct or not.
endif # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS
endif # BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
config BR2_TOOLCHAIN_EXTERNAL_HAS_SSP
bool "Toolchain has SSP support?"
default y if BR2_TOOLCHAIN_EXTERNAL_GLIBC
default y if BR2_TOOLCHAIN_EXTERNAL_MUSL
select BR2_TOOLCHAIN_HAS_SSP
help
Select this option if your external toolchain has Stack
Smashing Protection support enabled. If you don't know,
leave the default value, Buildroot will tell you if it's
correct or not.
config BR2_TOOLCHAIN_EXTERNAL_HAS_SSP_STRONG
bool "Toolchain has SSP strong support?"
default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 && BR2_TOOLCHAIN_EXTERNAL_GLIBC
default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 && BR2_TOOLCHAIN_EXTERNAL_MUSL
depends on BR2_TOOLCHAIN_EXTERNAL_HAS_SSP
select BR2_TOOLCHAIN_HAS_SSP_STRONG
help
Select this option if your external toolchain has strong
Stack Smashing Protection support enabled. If you don't
know, leave the default value, Buildroot will tell you if
it's correct or not.
config BR2_TOOLCHAIN_EXTERNAL_INET_RPC
bool "Toolchain has RPC support?"
default y if BR2_TOOLCHAIN_EXTERNAL_GLIBC
depends on !BR2_TOOLCHAIN_EXTERNAL_MUSL
select BR2_TOOLCHAIN_HAS_NATIVE_RPC
help
Select this option if your external toolchain supports
RPC. If you don't know, leave the default value, Buildroot
will tell you if it's correct or not.
config BR2_TOOLCHAIN_EXTERNAL_CXX
bool "Toolchain has C++ support?"
select BR2_INSTALL_LIBSTDCPP
help
Select this option if your external toolchain has C++
support. If you don't know, leave the default value,
Buildroot will tell you if it's correct or not.
config BR2_TOOLCHAIN_EXTERNAL_DLANG
bool "Toolchain has D support?"
select BR2_TOOLCHAIN_HAS_DLANG
help
Select this option if your external toolchain has D
support.
config BR2_TOOLCHAIN_EXTERNAL_FORTRAN
bool "Toolchain has Fortran support?"
select BR2_TOOLCHAIN_HAS_FORTRAN
help
Select this option if your external toolchain has Fortran
support. If you don't know, leave the default value,
Buildroot will tell you if it's correct or not.
config BR2_TOOLCHAIN_EXTERNAL_OPENMP
bool "Toolchain has OpenMP support?"
select BR2_TOOLCHAIN_HAS_OPENMP
help
Select this option if your external toolchain has OpenMP
support. If you don't know, leave the default value,
Buildroot will tell you if it's correct or not.
endif

View File

@ -0,0 +1,20 @@
################################################################################
#
# toolchain-external-custom
#
################################################################################
TOOLCHAIN_EXTERNAL_CUSTOM_SITE = $(patsubst %/,%,$(dir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL))))
TOOLCHAIN_EXTERNAL_CUSTOM_SOURCE = $(notdir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))
ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CUSTOM),y)
# We can't check hashes for custom downloaded toolchains
BR_NO_CHECK_HASH_FOR += $(TOOLCHAIN_EXTERNAL_SOURCE)
ifeq ($(BR_BUILDING)$(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),yy)
ifeq ($(TOOLCHAIN_EXTERNAL_CUSTOM_SOURCE),)
$(error No external toolchain url set, check your BR2_TOOLCHAIN_EXTERNAL_URL setting)
endif
endif
endif
$(eval $(toolchain-external-package))

View File

@ -0,0 +1,16 @@
config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE
bool "Linaro AArch64 BE 2018.05"
depends on BR2_aarch64_be
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8
select BR2_TOOLCHAIN_EXTERNAL_GLIBC
select BR2_TOOLCHAIN_HAS_SSP
select BR2_INSTALL_LIBSTDCPP
select BR2_TOOLCHAIN_HAS_NATIVE_RPC
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10
select BR2_TOOLCHAIN_GCC_AT_LEAST_7
select BR2_TOOLCHAIN_HAS_FORTRAN
select BR2_TOOLCHAIN_HAS_OPENMP
help
Toolchain for the AArch64 Big Endian architecture, from
http://www.linaro.org/engineering/armv8/

View File

@ -0,0 +1,9 @@
if BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE
config BR2_TOOLCHAIN_EXTERNAL_PREFIX
default "aarch64_be-linux-gnu"
config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
default "toolchain-external-linaro-aarch64-be"
endif

View File

@ -0,0 +1,3 @@
# Locally calculated
sha256 412da19c1d1bff0f3172bc19fd2c024207d8d716dbe7a8dad4bf9e3d6b71d149 gcc-linaro-7.3.1-2018.05-i686_aarch64_be-linux-gnu.tar.xz
sha256 277c1483f8dbd6007c945ffeb706fa1ba1da8ec1c397cf5cf1e29c25081426e5 gcc-linaro-7.3.1-2018.05-x86_64_aarch64_be-linux-gnu.tar.xz

View File

@ -0,0 +1,16 @@
################################################################################
#
# toolchain-external-linaro-aarch64-be
#
################################################################################
TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE_VERSION = 2018.05
TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE_SITE = https://releases.linaro.org/components/toolchain/binaries/7.3-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE_VERSION)/aarch64_be-linux-gnu
ifeq ($(HOSTARCH),x86)
TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE_SOURCE = gcc-linaro-7.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE_VERSION)-i686_aarch64_be-linux-gnu.tar.xz
else
TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE_SOURCE = gcc-linaro-7.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE_VERSION)-x86_64_aarch64_be-linux-gnu.tar.xz
endif
$(eval $(toolchain-external-package))

View File

@ -0,0 +1,16 @@
config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64
bool "Linaro AArch64 2018.05"
depends on BR2_aarch64
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8
select BR2_TOOLCHAIN_EXTERNAL_GLIBC
select BR2_TOOLCHAIN_HAS_SSP
select BR2_INSTALL_LIBSTDCPP
select BR2_TOOLCHAIN_HAS_NATIVE_RPC
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10
select BR2_TOOLCHAIN_GCC_AT_LEAST_7
select BR2_TOOLCHAIN_HAS_FORTRAN
select BR2_TOOLCHAIN_HAS_OPENMP
help
Toolchain for the AArch64 architecture, from
http://www.linaro.org/engineering/armv8/

View File

@ -0,0 +1,9 @@
if BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64
config BR2_TOOLCHAIN_EXTERNAL_PREFIX
default "aarch64-linux-gnu"
config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
default "toolchain-external-linaro-aarch64"
endif

View File

@ -0,0 +1,3 @@
# Locally calculated
sha256 466b801a60491ae1e2ce9952e0615cf04cf611596c6ffd5bfe8a89ef5be47e03 gcc-linaro-7.3.1-2018.05-i686_aarch64-linux-gnu.tar.xz
sha256 73eed74e593e2267504efbcf3678918bb22409ab7afa3dc7c135d2c6790c2345 gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz

View File

@ -0,0 +1,16 @@
################################################################################
#
# toolchain-external-linaro-aarch64
#
################################################################################
TOOLCHAIN_EXTERNAL_LINARO_AARCH64_VERSION = 2018.05
TOOLCHAIN_EXTERNAL_LINARO_AARCH64_SITE = https://releases.linaro.org/components/toolchain/binaries/7.3-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_VERSION)/aarch64-linux-gnu
ifeq ($(HOSTARCH),x86)
TOOLCHAIN_EXTERNAL_LINARO_AARCH64_SOURCE = gcc-linaro-7.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_VERSION)-i686_aarch64-linux-gnu.tar.xz
else
TOOLCHAIN_EXTERNAL_LINARO_AARCH64_SOURCE = gcc-linaro-7.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_VERSION)-x86_64_aarch64-linux-gnu.tar.xz
endif
$(eval $(toolchain-external-package))

View File

@ -0,0 +1,27 @@
comment "Linaro toolchains available for Cortex-A + EABIhf"
depends on BR2_arm
depends on !BR2_ARM_CPU_ARMV7A || !BR2_ARM_EABIHF
config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM
bool "Linaro ARM 2018.05"
depends on BR2_arm
depends on BR2_ARM_CPU_ARMV7A || BR2_ARM_CPU_ARMV8A
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
depends on BR2_ARM_EABIHF
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8
select BR2_TOOLCHAIN_EXTERNAL_GLIBC
select BR2_TOOLCHAIN_HAS_SSP
select BR2_TOOLCHAIN_HAS_NATIVE_RPC
select BR2_INSTALL_LIBSTDCPP
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10
select BR2_TOOLCHAIN_GCC_AT_LEAST_7
select BR2_TOOLCHAIN_HAS_FORTRAN
select BR2_TOOLCHAIN_HAS_OPENMP
help
Linaro toolchain for the ARM architecture. It uses Linaro
GCC 2018.05 (based on gcc 7.3.1), Linaro GDB 2018.05 (based on
GDB 8.1), glibc 2.25, Binutils 2018.05 (based on 2.28). It
generates code that runs on all Cortex-A profile devices,
but tuned for the Cortex-A9. The code generated is Thumb 2,
with the hard floating point calling convention, and uses
the VFPv3-D16 FPU instructions.

View File

@ -0,0 +1,9 @@
if BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM
config BR2_TOOLCHAIN_EXTERNAL_PREFIX
default "arm-linux-gnueabihf"
config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
default "toolchain-external-linaro-arm"
endif

View File

@ -0,0 +1,3 @@
# Locally calculated
sha256 0613b5be14eb7d50a772bbd72069c428558e6e53fa5fce7201d75a13a475ffff gcc-linaro-7.3.1-2018.05-i686_arm-linux-gnueabihf.tar.xz
sha256 7248bf105d0d468887a9b8a7120bb281ac8ad0223d9cb3d00dc7c2d498485d91 gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz

View File

@ -0,0 +1,16 @@
################################################################################
#
# toolchain-external-linaro-arm
#
################################################################################
TOOLCHAIN_EXTERNAL_LINARO_ARM_VERSION = 2018.05
TOOLCHAIN_EXTERNAL_LINARO_ARM_SITE = https://releases.linaro.org/components/toolchain/binaries/7.3-$(TOOLCHAIN_EXTERNAL_LINARO_ARM_VERSION)/arm-linux-gnueabihf
ifeq ($(HOSTARCH),x86)
TOOLCHAIN_EXTERNAL_LINARO_ARM_SOURCE = gcc-linaro-7.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_ARM_VERSION)-i686_arm-linux-gnueabihf.tar.xz
else
TOOLCHAIN_EXTERNAL_LINARO_ARM_SOURCE = gcc-linaro-7.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_ARM_VERSION)-x86_64_arm-linux-gnueabihf.tar.xz
endif
$(eval $(toolchain-external-package))

View File

@ -0,0 +1,26 @@
comment "Linaro toolchains available for Cortex-A + EABIhf"
depends on BR2_armeb
depends on !BR2_ARM_CPU_ARMV7A || !BR2_ARM_EABIHF
config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB
bool "Linaro armeb 2018.05"
depends on BR2_armeb
depends on BR2_ARM_CPU_ARMV7A || BR2_ARM_CPU_ARMV8A
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
depends on BR2_ARM_EABIHF
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8
select BR2_TOOLCHAIN_EXTERNAL_GLIBC
select BR2_TOOLCHAIN_HAS_SSP
select BR2_TOOLCHAIN_HAS_NATIVE_RPC
select BR2_TOOLCHAIN_HAS_OPENMP
select BR2_INSTALL_LIBSTDCPP
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10
select BR2_TOOLCHAIN_GCC_AT_LEAST_7
help
Linaro toolchain for the ARM big endian architecture. It
uses Linaro GCC 2018.05 (based on gcc 7.3.1), Linaro GDB
2018.05 (based on GDB 8.1), glibc 2.25, Binutils 2018.05
(based on 2.28). It generates code that runs on all Cortex-A
profile devices, but tuned for the Cortex-A9. The code
generated is Thumb 2, with the hard floating point calling
convention, and uses the VFPv3-D16 FPU instructions.

View File

@ -0,0 +1,9 @@
if BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB
config BR2_TOOLCHAIN_EXTERNAL_PREFIX
default "armeb-linux-gnueabihf"
config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
default "toolchain-external-linaro-armeb"
endif

View File

@ -0,0 +1,3 @@
# Locally calculated
sha256 60bf9924a0c039c94deb85cb9b129d0f28b28eadbb1fb3f7e2e227679cc43fc9 gcc-linaro-7.3.1-2018.05-i686_armeb-linux-gnueabihf.tar.xz
sha256 c1bbd598b78458d6b7ea1c971fddf736c00d57890c7131fdafd4e789289c42f9 gcc-linaro-7.3.1-2018.05-x86_64_armeb-linux-gnueabihf.tar.xz

View File

@ -0,0 +1,17 @@
################################################################################
#
# toolchain-external-linaro-armeb
#
################################################################################
TOOLCHAIN_EXTERNAL_LINARO_ARMEB_VERSION = 2018.05
TOOLCHAIN_EXTERNAL_LINARO_ARMEB_SITE = https://releases.linaro.org/components/toolchain/binaries/7.3-$(TOOLCHAIN_EXTERNAL_LINARO_ARMEB_VERSION)/armeb-linux-gnueabihf
ifeq ($(HOSTARCH),x86)
TOOLCHAIN_EXTERNAL_LINARO_ARMEB_SOURCE = gcc-linaro-7.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_ARMEB_VERSION)-i686_armeb-linux-gnueabihf.tar.xz
else
TOOLCHAIN_EXTERNAL_LINARO_ARMEB_SOURCE = gcc-linaro-7.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_ARMEB_VERSION)-x86_64_armeb-linux-gnueabihf.tar.xz
endif
$(eval $(toolchain-external-package))

View File

@ -0,0 +1,17 @@
config BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC
bool "Synopsys ARC 2019.09 toolchain"
depends on BR2_arc
depends on BR2_HOSTARCH = "x86_64"
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_10
select BR2_TOOLCHAIN_EXTERNAL_UCLIBC
select BR2_INSTALL_LIBSTDCPP
select BR2_USE_WCHAR
select BR2_TOOLCHAIN_HAS_THREADS
select BR2_TOOLCHAIN_HAS_THREADS_NPTL
select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
select BR2_TOOLCHAIN_HAS_SSP
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15
select BR2_TOOLCHAIN_GCC_AT_LEAST_9
help
Toolchain for the ARC cores, from
https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases

View File

@ -0,0 +1,10 @@
if BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC
config BR2_TOOLCHAIN_EXTERNAL_PREFIX
default "arc-linux" if BR2_arcle
default "arceb-linux" if BR2_arceb
config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
default "toolchain-external-synopsys-arc"
endif

View File

@ -0,0 +1,5 @@
# From https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/tag/arc-2019.09-release
sha256 f7cbf68ef251943db7baf63535e0ec98dafbdf5d925017b4e1d4fc64d9b38a26 arc_gnu_2019.09_prebuilt_uclibc_le_arc700_linux_install.tar.gz
sha256 ac09f0a21f9d50146a5e542f4a6abc93e5a1dcb0a1372cb5c3ba86bbefaaec7d arc_gnu_2019.09_prebuilt_uclibc_be_arc700_linux_install.tar.gz
sha256 245ca49fe8ea2456617541b18bb96e52e6c0dc619f00e293fcaad519fc436c35 arc_gnu_2019.09_prebuilt_uclibc_le_archs_linux_install.tar.gz
sha256 6f039a0158c03af398ada31fae96009e47f0d7b7f7d52e12eb419492fc3f27e7 arc_gnu_2019.09_prebuilt_uclibc_be_archs_linux_install.tar.gz

View File

@ -0,0 +1,24 @@
################################################################################
#
# toolchain-external-synopsys-arc
#
################################################################################
TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_VERSION = 2019.09
TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_SITE = https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/download/arc-$(TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_VERSION)-release
ifeq ($(BR2_arc750d)$(BR2_arc770d),y)
TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_CORE = arc700
else
TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_CORE = archs
endif
ifeq ($(BR2_arcle),y)
TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_ENDIANESS = le
else
TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_ENDIANESS = be
endif
TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_SOURCE = arc_gnu_$(TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_VERSION)_prebuilt_uclibc_$(TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_ENDIANESS)_$(TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_CORE)_linux_install.tar.gz
$(eval $(toolchain-external-package))

View File

@ -0,0 +1,28 @@
################################################################################
#
# toolchain-external
#
################################################################################
TOOLCHAIN_EXTERNAL_ADD_TOOLCHAIN_DEPENDENCY = NO
# musl does not provide an implementation for sys/queue.h or sys/cdefs.h.
# So, add the musl-compat-headers package that will install those files,
# into the staging directory:
# sys/queue.h: header from NetBSD
# sys/cdefs.h: minimalist header bundled in Buildroot
ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)
TOOLCHAIN_EXTERNAL_DEPENDENCIES += musl-compat-headers
endif
$(eval $(virtual-package))
# Ensure the external-toolchain package has a prefix defined.
# This comes after the virtual-package definition, which checks the provider.
ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y)
ifeq ($(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PREFIX)),)
$(error No prefix selected for external toolchain package $(BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL). Configuration error)
endif
endif
include $(sort $(wildcard toolchain/toolchain-external/*/*.mk))

View File

@ -0,0 +1,547 @@
/**
* Buildroot wrapper for toolchains. This simply executes the real toolchain
* with a number of arguments (sysroot/arch/..) hardcoded, to ensure the
* toolchain uses the correct configuration.
* The hardcoded path arguments are defined relative to the actual location
* of the binary.
*
* (C) 2011 Peter Korsgaard <jacmet@sunsite.dk>
* (C) 2011 Daniel Nyström <daniel.nystrom@timeterminal.se>
* (C) 2012 Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
* (C) 2013 Spenser Gilliland <spenser@gillilanding.com>
*
* This file is licensed under the terms of the GNU General Public License
* version 2. This program is licensed "as is" without any warranty of any
* kind, whether express or implied.
*/
#define _GNU_SOURCE
#include <stdio.h>
#include <string.h>
#include <limits.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <time.h>
#include <stdbool.h>
#ifdef BR_CCACHE
static char ccache_path[PATH_MAX];
#endif
static char path[PATH_MAX];
static char sysroot[PATH_MAX];
/* As would be defined by gcc:
* https://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html
* sizeof() on string literals includes the terminating \0. */
static char _time_[sizeof("-D__TIME__=\"HH:MM:SS\"")];
static char _date_[sizeof("-D__DATE__=\"MMM DD YYYY\"")];
/**
* GCC errors out with certain combinations of arguments (examples are
* -mfloat-abi={hard|soft} and -m{little|big}-endian), so we have to ensure
* that we only pass the predefined one to the real compiler if the inverse
* option isn't in the argument list.
* This specifies the worst case number of extra arguments we might pass
* Currently, we may have:
* -mfloat-abi=
* -march=
* -mcpu=
* -D__TIME__=
* -D__DATE__=
* -Wno-builtin-macro-redefined
* -Wl,-z,now
* -Wl,-z,relro
* -fPIE
* -pie
*/
#define EXCLUSIVE_ARGS 10
static char *predef_args[] = {
#ifdef BR_CCACHE
ccache_path,
#endif
path,
"--sysroot", sysroot,
#ifdef BR_ABI
"-mabi=" BR_ABI,
#endif
#ifdef BR_NAN
"-mnan=" BR_NAN,
#endif
#ifdef BR_FPU
"-mfpu=" BR_FPU,
#endif
#ifdef BR_SOFTFLOAT
"-msoft-float",
#endif /* BR_SOFTFLOAT */
#ifdef BR_MODE
"-m" BR_MODE,
#endif
#ifdef BR_64
"-m64",
#endif
#ifdef BR_OMIT_LOCK_PREFIX
"-Wa,-momit-lock-prefix=yes",
#endif
#ifdef BR_NO_FUSED_MADD
"-mno-fused-madd",
#endif
#ifdef BR_FP_CONTRACT_OFF
"-ffp-contract=off",
#endif
#ifdef BR_BINFMT_FLAT
"-Wl,-elf2flt",
#endif
#ifdef BR_MIPS_TARGET_LITTLE_ENDIAN
"-EL",
#endif
#if defined(BR_MIPS_TARGET_BIG_ENDIAN) || defined(BR_ARC_TARGET_BIG_ENDIAN)
"-EB",
#endif
#ifdef BR_ADDITIONAL_CFLAGS
BR_ADDITIONAL_CFLAGS
#endif
};
/* A {string,length} tuple, to avoid computing strlen() on constants.
* - str must be a \0-terminated string
* - len does not account for the terminating '\0'
*/
struct str_len_s {
const char *str;
size_t len;
};
/* Define a {string,length} tuple. Takes an unquoted constant string as
* parameter. sizeof() on a string literal includes the terminating \0,
* but we don't want to count it.
*/
#define STR_LEN(s) { #s, sizeof(#s)-1 }
/* List of paths considered unsafe for cross-compilation.
*
* An unsafe path is one that points to a directory with libraries or
* headers for the build machine, which are not suitable for the target.
*/
static const struct str_len_s unsafe_paths[] = {
STR_LEN(/lib),
STR_LEN(/usr/include),
STR_LEN(/usr/lib),
STR_LEN(/usr/local/include),
STR_LEN(/usr/local/lib),
STR_LEN(/usr/X11R6/include),
STR_LEN(/usr/X11R6/lib),
{ NULL, 0 },
};
/* Unsafe options are options that specify a potentialy unsafe path,
* that will be checked by check_unsafe_path(), below.
*/
static const struct str_len_s unsafe_opts[] = {
STR_LEN(-I),
STR_LEN(-idirafter),
STR_LEN(-iquote),
STR_LEN(-isystem),
STR_LEN(-L),
{ NULL, 0 },
};
/* Check if path is unsafe for cross-compilation. Unsafe paths are those
* pointing to the standard native include or library paths.
*
* We print the arguments leading to the failure. For some options, gcc
* accepts the path to be concatenated to the argument (e.g. -I/foo/bar)
* or separated (e.g. -I /foo/bar). In the first case, we need only print
* the argument as it already contains the path (arg_has_path), while in
* the second case we need to print both (!arg_has_path).
*/
static void check_unsafe_path(const char *arg,
const char *path,
int arg_has_path)
{
const struct str_len_s *p;
for (p=unsafe_paths; p->str; p++) {
if (strncmp(path, p->str, p->len))
continue;
fprintf(stderr,
"%s: ERROR: unsafe header/library path used in cross-compilation: '%s%s%s'\n",
program_invocation_short_name,
arg,
arg_has_path ? "" : "' '", /* close single-quote, space, open single-quote */
arg_has_path ? "" : path); /* so that arg and path are properly quoted. */
exit(1);
}
}
#ifdef BR_NEED_SOURCE_DATE_EPOCH
/* Returns false if SOURCE_DATE_EPOCH was not defined in the environment.
*
* Returns true if SOURCE_DATE_EPOCH is in the environment and represent
* a valid timestamp, in which case the timestamp is formatted into the
* global variables _date_ and _time_.
*
* Aborts if SOURCE_DATE_EPOCH was set in the environment but did not
* contain a valid timestamp.
*
* Valid values are defined in the spec:
* https://reproducible-builds.org/specs/source-date-epoch/
* but we further restrict them to be positive or null.
*/
bool parse_source_date_epoch_from_env(void)
{
char *epoch_env, *endptr;
time_t epoch;
struct tm epoch_tm;
if ((epoch_env = getenv("SOURCE_DATE_EPOCH")) == NULL)
return false;
errno = 0;
epoch = (time_t) strtoll(epoch_env, &endptr, 10);
/* We just need to test if it is incorrect, but we do not
* care why it is incorrect.
*/
if ((errno != 0) || !*epoch_env || *endptr || (epoch < 0)) {
fprintf(stderr, "%s: invalid SOURCE_DATE_EPOCH='%s'\n",
program_invocation_short_name,
epoch_env);
exit(1);
}
tzset(); /* For localtime_r(), below. */
if (localtime_r(&epoch, &epoch_tm) == NULL) {
fprintf(stderr, "%s: cannot parse SOURCE_DATE_EPOCH=%s\n",
program_invocation_short_name,
getenv("SOURCE_DATE_EPOCH"));
exit(1);
}
if (!strftime(_time_, sizeof(_time_), "-D__TIME__=\"%T\"", &epoch_tm)) {
fprintf(stderr, "%s: cannot set time from SOURCE_DATE_EPOCH=%s\n",
program_invocation_short_name,
getenv("SOURCE_DATE_EPOCH"));
exit(1);
}
if (!strftime(_date_, sizeof(_date_), "-D__DATE__=\"%b %e %Y\"", &epoch_tm)) {
fprintf(stderr, "%s: cannot set date from SOURCE_DATE_EPOCH=%s\n",
program_invocation_short_name,
getenv("SOURCE_DATE_EPOCH"));
exit(1);
}
return true;
}
#else
bool parse_source_date_epoch_from_env(void)
{
/* The compiler is recent enough to handle SOURCE_DATE_EPOCH itself
* so we do not need to do anything here.
*/
return false;
}
#endif
int main(int argc, char **argv)
{
char **args, **cur, **exec_args;
char *relbasedir, *absbasedir;
char *progpath = argv[0];
char *basename;
char *env_debug;
int ret, i, count = 0, debug = 0, found_shared = 0;
/* Debug the wrapper to see arguments it was called with.
* If environment variable BR2_DEBUG_WRAPPER is:
* unset, empty, or 0: do not trace
* set to 1 : trace all arguments on a single line
* set to 2 : trace one argument per line
*/
if ((env_debug = getenv("BR2_DEBUG_WRAPPER"))) {
debug = atoi(env_debug);
}
if (debug > 0) {
fprintf(stderr, "Toolchain wrapper was called with:");
for (i = 0; i < argc; i++)
fprintf(stderr, "%s'%s'",
(debug == 2) ? "\n " : " ", argv[i]);
fprintf(stderr, "\n");
}
/* Calculate the relative paths */
basename = strrchr(progpath, '/');
if (basename) {
*basename = '\0';
basename++;
relbasedir = malloc(strlen(progpath) + 7);
if (relbasedir == NULL) {
perror(__FILE__ ": malloc");
return 2;
}
sprintf(relbasedir, "%s/..", argv[0]);
absbasedir = realpath(relbasedir, NULL);
} else {
basename = progpath;
absbasedir = malloc(PATH_MAX + 1);
ret = readlink("/proc/self/exe", absbasedir, PATH_MAX);
if (ret < 0) {
perror(__FILE__ ": readlink");
return 2;
}
absbasedir[ret] = '\0';
for (i = ret; i > 0; i--) {
if (absbasedir[i] == '/') {
absbasedir[i] = '\0';
if (++count == 2)
break;
}
}
}
if (absbasedir == NULL) {
perror(__FILE__ ": realpath");
return 2;
}
/* Fill in the relative paths */
#ifdef BR_CROSS_PATH_REL
ret = snprintf(path, sizeof(path), "%s/" BR_CROSS_PATH_REL "/%s" BR_CROSS_PATH_SUFFIX, absbasedir, basename);
#elif defined(BR_CROSS_PATH_ABS)
ret = snprintf(path, sizeof(path), BR_CROSS_PATH_ABS "/%s" BR_CROSS_PATH_SUFFIX, basename);
#else
ret = snprintf(path, sizeof(path), "%s/bin/%s" BR_CROSS_PATH_SUFFIX, absbasedir, basename);
#endif
if (ret >= sizeof(path)) {
perror(__FILE__ ": overflow");
return 3;
}
#ifdef BR_CCACHE
ret = snprintf(ccache_path, sizeof(ccache_path), "%s/bin/ccache", absbasedir);
if (ret >= sizeof(ccache_path)) {
perror(__FILE__ ": overflow");
return 3;
}
#endif
ret = snprintf(sysroot, sizeof(sysroot), "%s/" BR_SYSROOT, absbasedir);
if (ret >= sizeof(sysroot)) {
perror(__FILE__ ": overflow");
return 3;
}
cur = args = malloc(sizeof(predef_args) +
(sizeof(char *) * (argc + EXCLUSIVE_ARGS)));
if (args == NULL) {
perror(__FILE__ ": malloc");
return 2;
}
/* start with predefined args */
memcpy(cur, predef_args, sizeof(predef_args));
cur += sizeof(predef_args) / sizeof(predef_args[0]);
#ifdef BR_FLOAT_ABI
/* add float abi if not overridden in args */
for (i = 1; i < argc; i++) {
if (!strncmp(argv[i], "-mfloat-abi=", strlen("-mfloat-abi=")) ||
!strcmp(argv[i], "-msoft-float") ||
!strcmp(argv[i], "-mhard-float"))
break;
}
if (i == argc)
*cur++ = "-mfloat-abi=" BR_FLOAT_ABI;
#endif
#ifdef BR_FP32_MODE
/* add fp32 mode if soft-float is not args or hard-float overrides soft-float */
int add_fp32_mode = 1;
for (i = 1; i < argc; i++) {
if (!strcmp(argv[i], "-msoft-float"))
add_fp32_mode = 0;
else if (!strcmp(argv[i], "-mhard-float"))
add_fp32_mode = 1;
}
if (add_fp32_mode == 1)
*cur++ = "-mfp" BR_FP32_MODE;
#endif
#if defined(BR_ARCH) || \
defined(BR_CPU)
/* Add our -march/cpu flags, but only if none of
* -march/mtune/mcpu are already specified on the commandline
*/
for (i = 1; i < argc; i++) {
if (!strncmp(argv[i], "-march=", strlen("-march=")) ||
!strncmp(argv[i], "-mtune=", strlen("-mtune=")) ||
!strncmp(argv[i], "-mcpu=", strlen("-mcpu=" )))
break;
}
if (i == argc) {
#ifdef BR_ARCH
*cur++ = "-march=" BR_ARCH;
#endif
#ifdef BR_CPU
*cur++ = "-mcpu=" BR_CPU;
#endif
}
#endif /* ARCH || CPU */
if (parse_source_date_epoch_from_env()) {
*cur++ = _time_;
*cur++ = _date_;
/* This has existed since gcc-4.4.0. */
*cur++ = "-Wno-builtin-macro-redefined";
}
#ifdef BR2_PIC_PIE
/* Patterned after Fedora/Gentoo hardening approaches.
* https://fedoraproject.org/wiki/Changes/Harden_All_Packages
* https://wiki.gentoo.org/wiki/Hardened/Toolchain#Position_Independent_Executables_.28PIEs.29
*
* A few checks are added to allow disabling of PIE
* 1) -fno-pie and -no-pie are used by other distros to disable PIE in
* cases where the compiler enables it by default. The logic below
* maintains that behavior.
* Ref: https://wiki.ubuntu.com/SecurityTeam/PIE
* 2) A check for -fno-PIE has been used in older Linux Kernel builds
* in a similar way to -fno-pie or -no-pie.
* 3) A check is added for Kernel and U-boot defines
* (-D__KERNEL__ and -D__UBOOT__).
*/
for (i = 1; i < argc; i++) {
/* Apply all incompatible link flag and disable checks first */
if (!strcmp(argv[i], "-r") ||
!strcmp(argv[i], "-Wl,-r") ||
!strcmp(argv[i], "-static") ||
!strcmp(argv[i], "-D__KERNEL__") ||
!strcmp(argv[i], "-D__UBOOT__") ||
!strcmp(argv[i], "-fno-pie") ||
!strcmp(argv[i], "-fno-PIE") ||
!strcmp(argv[i], "-no-pie"))
break;
/* Record that shared was present which disables -pie but don't
* break out of loop as a check needs to occur that possibly
* still allows -fPIE to be set
*/
if (!strcmp(argv[i], "-shared"))
found_shared = 1;
}
if (i == argc) {
/* Compile and link condition checking have been kept split
* between these two loops, as there maybe already are valid
* compile flags set for position independence. In that case
* the wrapper just adds the -pie for link.
*/
for (i = 1; i < argc; i++) {
if (!strcmp(argv[i], "-fpie") ||
!strcmp(argv[i], "-fPIE") ||
!strcmp(argv[i], "-fpic") ||
!strcmp(argv[i], "-fPIC"))
break;
}
/* Both args below can be set at compile/link time
* and are ignored correctly when not used
*/
if (i == argc)
*cur++ = "-fPIE";
if (!found_shared)
*cur++ = "-pie";
}
#endif
/* Are we building the Linux Kernel or U-Boot? */
for (i = 1; i < argc; i++) {
if (!strcmp(argv[i], "-D__KERNEL__") ||
!strcmp(argv[i], "-D__UBOOT__"))
break;
}
if (i == argc) {
/* https://wiki.gentoo.org/wiki/Hardened/Toolchain#Mark_Read-Only_Appropriate_Sections */
#ifdef BR2_RELRO_PARTIAL
*cur++ = "-Wl,-z,relro";
#endif
#ifdef BR2_RELRO_FULL
*cur++ = "-Wl,-z,now";
*cur++ = "-Wl,-z,relro";
#endif
}
/* Check for unsafe library and header paths */
for (i = 1; i < argc; i++) {
const struct str_len_s *opt;
for (opt=unsafe_opts; opt->str; opt++ ) {
/* Skip any non-unsafe option. */
if (strncmp(argv[i], opt->str, opt->len))
continue;
/* Handle both cases:
* - path is a separate argument,
* - path is concatenated with option.
*/
if (argv[i][opt->len] == '\0') {
i++;
if (i == argc)
break;
check_unsafe_path(argv[i-1], argv[i], 0);
} else
check_unsafe_path(argv[i], argv[i] + opt->len, 1);
}
}
/* append forward args */
memcpy(cur, &argv[1], sizeof(char *) * (argc - 1));
cur += argc - 1;
/* finish with NULL termination */
*cur = NULL;
exec_args = args;
#ifdef BR_CCACHE
/* If BR2_USE_CCACHE is set and its value is 1, enable ccache
* usage */
char *br_use_ccache = getenv("BR2_USE_CCACHE");
bool ccache_enabled = br_use_ccache && !strncmp(br_use_ccache, "1", strlen("1"));
if (ccache_enabled) {
#ifdef BR_CCACHE_HASH
/* Allow compilercheck to be overridden through the environment */
if (setenv("CCACHE_COMPILERCHECK", "string:" BR_CCACHE_HASH, 0)) {
perror(__FILE__ ": Failed to set CCACHE_COMPILERCHECK");
return 3;
}
#endif
#ifdef BR_CCACHE_BASEDIR
/* Allow compilercheck to be overridden through the environment */
if (setenv("CCACHE_BASEDIR", BR_CCACHE_BASEDIR, 0)) {
perror(__FILE__ ": Failed to set CCACHE_BASEDIR");
return 3;
}
#endif
} else
/* ccache is disabled, skip it */
exec_args++;
#endif
/* Debug the wrapper to see final arguments passed to the real compiler. */
if (debug > 0) {
fprintf(stderr, "Toolchain wrapper executing:");
#ifdef BR_CCACHE_HASH
if (ccache_enabled)
fprintf(stderr, "%sCCACHE_COMPILERCHECK='string:" BR_CCACHE_HASH "'",
(debug == 2) ? "\n " : " ");
#endif
#ifdef BR_CCACHE_BASEDIR
if (ccache_enabled)
fprintf(stderr, "%sCCACHE_BASEDIR='" BR_CCACHE_BASEDIR "'",
(debug == 2) ? "\n " : " ");
#endif
for (i = 0; exec_args[i]; i++)
fprintf(stderr, "%s'%s'",
(debug == 2) ? "\n " : " ", exec_args[i]);
fprintf(stderr, "\n");
}
if (execv(exec_args[0], exec_args))
perror(path);
free(args);
return 2;
}

View File

@ -0,0 +1,96 @@
################################################################################
#
# definition of the toolchain wrapper build commands
#
################################################################################
# We use --hash-style=both to increase the compatibility of the generated
# binary with older platforms, except for MIPS, where the only acceptable
# hash style is 'sysv'
ifeq ($(findstring mips,$(HOSTARCH)),mips)
TOOLCHAIN_WRAPPER_HASH_STYLE = sysv
else
TOOLCHAIN_WRAPPER_HASH_STYLE = both
endif
TOOLCHAIN_WRAPPER_ARGS = $($(PKG)_TOOLCHAIN_WRAPPER_ARGS)
TOOLCHAIN_WRAPPER_ARGS += -DBR_SYSROOT='"$(STAGING_SUBDIR)"'
TOOLCHAIN_WRAPPER_OPTS = \
$(ARCH_TOOLCHAIN_WRAPPER_OPTS) \
$(call qstrip,$(BR2_SSP_OPTION)) \
$(call qstrip,$(BR2_TARGET_OPTIMIZATION))
ifeq ($(BR2_REPRODUCIBLE),y)
TOOLCHAIN_WRAPPER_OPTS += -Wl,--build-id=none
ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_8),y)
TOOLCHAIN_WRAPPER_OPTS += -ffile-prefix-map=$(BASE_DIR)=buildroot
else
TOOLCHAIN_WRAPPER_OPTS += -fdebug-prefix-map=$(BASE_DIR)=buildroot
TOOLCHAIN_WRAPPER_OPTS += -D__FILE__=\"\" -D__BASE_FILE__=\"\" -Wno-builtin-macro-redefined
endif
ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_7),)
TOOLCHAIN_WRAPPER_OPTS += -DBR_NEED_SOURCE_DATE_EPOCH
endif
ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_6),)
TOOLCHAIN_WRAPPER_OPTS += -gno-record-gcc-switches
endif
endif
# Disable -ftree-loop-distribute-patterns on microblaze to
# workaround a compiler bug with gcc 10 and -O2, -Os or -O3.
# https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=5879ab5fafedc8f6f9bfe95a4cf8501b0df90edd
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97208
ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_10)$(BR2_microblaze),yy)
TOOLCHAIN_WRAPPER_OPTS += -fno-tree-loop-distribute-patterns
endif
# We create a list like '"-mfoo", "-mbar", "-mbarfoo"' so that each flag is a
# separate argument when used in execv() by the toolchain wrapper.
TOOLCHAIN_WRAPPER_ARGS += \
-DBR_ADDITIONAL_CFLAGS='$(foreach f,$(TOOLCHAIN_WRAPPER_OPTS),"$(f)"$(comma))'
ifeq ($(BR2_CCACHE),y)
TOOLCHAIN_WRAPPER_ARGS += -DBR_CCACHE
endif
ifeq ($(BR2_x86_x1000),y)
TOOLCHAIN_WRAPPER_ARGS += -DBR_OMIT_LOCK_PREFIX
endif
# Avoid FPU bug on XBurst CPUs
ifeq ($(BR2_mips_xburst),y)
# Before gcc 4.6, -mno-fused-madd was needed, after -ffp-contract is
# needed
ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_4_6),y)
TOOLCHAIN_WRAPPER_ARGS += -DBR_FP_CONTRACT_OFF
else
TOOLCHAIN_WRAPPER_ARGS += -DBR_NO_FUSED_MADD
endif
endif
ifeq ($(BR2_CCACHE_USE_BASEDIR),y)
TOOLCHAIN_WRAPPER_ARGS += -DBR_CCACHE_BASEDIR='"$(BASE_DIR)"'
endif
ifeq ($(BR2_PIC_PIE),y)
TOOLCHAIN_WRAPPER_ARGS += -DBR2_PIC_PIE
endif
ifeq ($(BR2_RELRO_PARTIAL),y)
TOOLCHAIN_WRAPPER_ARGS += -DBR2_RELRO_PARTIAL
else ifeq ($(BR2_RELRO_FULL),y)
TOOLCHAIN_WRAPPER_ARGS += -DBR2_RELRO_FULL
endif
define TOOLCHAIN_WRAPPER_BUILD
$(HOSTCC) $(HOST_CFLAGS) $(TOOLCHAIN_WRAPPER_ARGS) \
-s -Wl,--hash-style=$(TOOLCHAIN_WRAPPER_HASH_STYLE) \
toolchain/toolchain-wrapper.c \
-o $(@D)/toolchain-wrapper
endef
define TOOLCHAIN_WRAPPER_INSTALL
$(INSTALL) -D -m 0755 $(@D)/toolchain-wrapper \
$(HOST_DIR)/bin/toolchain-wrapper
endef

View File

@ -0,0 +1,55 @@
################################################################################
#
# toolchain-related customisation of the content of the target/ directory
#
################################################################################
# Those customisations are added to the TARGET_FINALIZE_HOOKS, to be applied
# just after all packages have been built.
# Install the gconv modules
ifeq ($(BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY),y)
TOOLCHAIN_GLIBC_GCONV_LIBS = $(call qstrip,$(BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_LIST))
define TOOLCHAIN_GLIBC_COPY_GCONV_LIBS
$(Q)found_gconv=no; \
for d in $(TOOLCHAIN_EXTERNAL_PREFIX) ''; do \
[ -d "$(STAGING_DIR)/usr/lib/$${d}/gconv" ] || continue; \
found_gconv=yes; \
break; \
done; \
if [ "$${found_gconv}" = "no" ]; then \
printf "Unable to find gconv modules\n" >&2; \
exit 1; \
fi; \
if [ -z "$(TOOLCHAIN_GLIBC_GCONV_LIBS)" ]; then \
$(INSTALL) -m 0644 -D $(STAGING_DIR)/usr/lib/$${d}/gconv/gconv-modules \
$(TARGET_DIR)/usr/lib/gconv/gconv-modules && \
$(INSTALL) -m 0644 $(STAGING_DIR)/usr/lib/$${d}/gconv/*.so \
$(TARGET_DIR)/usr/lib/gconv \
|| exit 1; \
if [ -d $(STAGING_DIR)/usr/lib/$${d}/gconv/gconv-modules.d ]; then \
cp -a $(STAGING_DIR)/usr/lib/$${d}/gconv/gconv-modules.d \
$(TARGET_DIR)/usr/lib/gconv/ || exit 1; \
fi; \
else \
for l in $(TOOLCHAIN_GLIBC_GCONV_LIBS); do \
$(INSTALL) -m 0644 -D $(STAGING_DIR)/usr/lib/$${d}/gconv/$${l}.so \
$(TARGET_DIR)/usr/lib/gconv/$${l}.so \
|| exit 1; \
$(TARGET_READELF) -d $(STAGING_DIR)/usr/lib/$${d}/gconv/$${l}.so |\
sort -u |\
sed -e '/.*(NEEDED).*\[\(.*\.so\)\]$$/!d; s//\1/;' |\
while read lib; do \
$(INSTALL) -m 0644 -D $(STAGING_DIR)/usr/lib/$${d}/gconv/$${lib} \
$(TARGET_DIR)/usr/lib/gconv/$${lib} \
|| exit 1; \
done; \
done; \
./support/scripts/expunge-gconv-modules \
$(STAGING_DIR)/usr/lib/$${d}/gconv \
"$(TOOLCHAIN_GLIBC_GCONV_LIBS)" \
>$(TARGET_DIR)/usr/lib/gconv/gconv-modules; \
fi
endef
TOOLCHAIN_TARGET_FINALIZE_HOOKS += TOOLCHAIN_GLIBC_COPY_GCONV_LIBS
endif

View File

@ -0,0 +1,53 @@
################################################################################
#
# toolchain
#
################################################################################
ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
TOOLCHAIN_DEPENDENCIES += toolchain-buildroot
else ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y)
TOOLCHAIN_DEPENDENCIES += toolchain-external
endif
TOOLCHAIN_ADD_TOOLCHAIN_DEPENDENCY = NO
TOOLCHAIN_INSTALL_STAGING = YES
# Apply a hack that Rick Felker suggested[1] to avoid conflicts between libc
# headers and kernel headers. This is needed for kernel headers older than
# 4.15. Kernel headers 4.15 and newer don't require __GLIBC__ to be defined.
#
# Augment the original suggestion with __USE_MISC since recent kernels
# (older than 4.15) require this glibc internal macro. Also, as musl defines
# IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO, add another macro to suppress
# them in the kernel header, and avoid macro/enum conflict.
#
# Kernel version 3.12 introduced the libc-compat.h header.
#
# [1] http://www.openwall.com/lists/musl/2015/10/08/2
ifeq ($(BR2_TOOLCHAIN_USES_MUSL)$(BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12):$(BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15),yy:)
define TOOLCHAIN_MUSL_KERNEL_HEADERS_COMPATIBILITY_HACK
$(SED) 's/^#if defined(__GLIBC__)$$/#if 1/' \
$(STAGING_DIR)/usr/include/linux/libc-compat.h
$(SED) '1s/^/#define __USE_MISC\n/' \
$(STAGING_DIR)/usr/include/linux/libc-compat.h
$(SED) '1s/^/#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 0\n/' \
$(STAGING_DIR)/usr/include/linux/libc-compat.h
endef
TOOLCHAIN_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_MUSL_KERNEL_HEADERS_COMPATIBILITY_HACK
endif
# Install default nsswitch.conf file if the skeleton doesn't provide it
ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y)
define TOOLCHAIN_GLIBC_COPY_NSSWITCH_FILE
@if [ ! -f "$(TARGET_DIR)/etc/nsswitch.conf" ]; then \
$(INSTALL) -D -m 0644 package/glibc/nsswitch.conf $(TARGET_DIR)/etc/nsswitch.conf ; \
fi
endef
TOOLCHAIN_POST_INSTALL_TARGET_HOOKS += TOOLCHAIN_GLIBC_COPY_NSSWITCH_FILE
endif
# Not really a virtual package, but we use the virtual package infra here so
# both the build log and build directory look nicer (toolchain-virtual instead
# of toolchain-undefined)
$(eval $(virtual-package))