[Mod] First commit

This commit is contained in:
2022-10-31 22:18:58 +08:00
commit 1c8a3d9709
13090 changed files with 526733 additions and 0 deletions

834
toolchain/Config.in Normal file
View File

@ -0,0 +1,834 @@
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_HAS_UCONTEXT
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
# 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_sh4
# 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=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
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
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
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 "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
# 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 "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. Also, libatomic doesn't recognize "uclinux" as a valid OS
# part of the tuple, and is therefore not build on uclinux targets,
# which is why BR2_BINFMT_FLAT configurations are excluded.
config BR2_TOOLCHAIN_HAS_LIBATOMIC
bool
default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 && \
!BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64 && \
BR2_TOOLCHAIN_HAS_THREADS && \
!BR2_BINFMT_FLAT
# __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
endmenu

531
toolchain/helpers.mk Normal file
View File

@ -0,0 +1,531 @@
# 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}; \
LIBPATH="`readlink -f $${LIBPATH}`"; \
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_LOCALE__,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) ; \
$${__CROSS_CXX} -v > /dev/null 2>&1 ; \
if test $$? -ne 0 ; then \
echo "C++ support is selected but is not 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 ; \
printf 'import std.stdio;\nvoid main() { writeln("Hello World!"); }\n' | \
$${__CROSS_GDC} -x d -o $${__o} - ; \
if test $$? -ne 0 ; then \
rm -f $${__o}* ; \
echo "D language support is selected but is not available in external toolchain" ; \
exit 1 ; \
fi ; \
rm -f $${__o}* \
#
#
# 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 ; \
printf 'program hello\n\tprint *, "Hello Fortran!\\n"\nend program hello\n' | \
$${__CROSS_FC} -x f95 -o $${__o} - ; \
if test $$? -ne 0 ; then \
rm -f $${__o}* ; \
echo "Fortran support is selected but is not available in external toolchain" ; \
exit 1 ; \
fi ; \
rm -f $${__o}* \
#
#
# 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 ; \
printf '\#include <omp.h>\nint main(void) { return omp_get_thread_num(); }' | \
$${__CROSS_CC} -fopenmp -x c -o $${__o} - ; \
if test $$? -ne 0 ; then \
rm -f $${__o}* ; \
echo "OpenMP support is selected but is not available in external toolchain"; \
exit 1 ; \
fi ; \
rm -f $${__o}* \
#
# 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 which doesn't support --sysroot option.
#
# $1: cross-gcc path
#
check_unusable_toolchain = \
__CROSS_CC=$(strip $1) ; \
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 ; \
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 'void 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 'void 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,99 @@
# 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_UCLIBC
default BR2_TOOLCHAIN_BUILDROOT_GLIBC if BR2_powerpc64
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 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/
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"
endif

View File

@ -0,0 +1,17 @@
################################################################################
#
# toolchain-buildroot
#
################################################################################
BR_LIBC = $(call qstrip,$(BR2_TOOLCHAIN_BUILDROOT_LIBC))
# Triggering the build of the host-gcc-final will automatically do the
# build of binutils, uClibc, kernel headers and all the intermediate
# gcc steps.
TOOLCHAIN_BUILDROOT_DEPENDENCIES = host-gcc-final
TOOLCHAIN_BUILDROOT_ADD_TOOLCHAIN_DEPENDENCY = NO
$(eval $(virtual-package))

View File

@ -0,0 +1,160 @@
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"
source "toolchain/toolchain-external/toolchain-external-codesourcery-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"
source "toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in"
# ARM big-endian
source "toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in"
# MIPS (use codesourcery toolchain by default)
source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in"
source "toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in"
source "toolchain/toolchain-external/toolchain-external-codescape-mti-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"
source "toolchain/toolchain-external/toolchain-external-codesourcery-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"
source "toolchain/toolchain-external/toolchain-external-codesourcery-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"
source "toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options"
source "toolchain/toolchain-external/toolchain-external-codescape-mti-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,632 @@
################################################################################
# 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))
$$(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 ; \
if test "$$(BR2_INSTALL_LIBSTDCPP)" = "y" ; then \
$$(call check_cplusplus,$$(TOOLCHAIN_EXTERNAL_CXX)) ; \
fi ; \
if test "$$(BR2_TOOLCHAIN_HAS_DLANG)" = "y" ; then \
$$(call check_dlang,$$(TOOLCHAIN_EXTERNAL_GDC)) ; \
fi ; \
if test "$$(BR2_TOOLCHAIN_HAS_FORTRAN)" = "y" ; then \
$$(call check_fortran,$$(TOOLCHAIN_EXTERNAL_FC)) ; \
fi ; \
if test "$$(BR2_TOOLCHAIN_HAS_OPENMP)" = "y" ; then \
$$(call check_openmp,$$(TOOLCHAIN_EXTERNAL_CC)) ; \
fi ; \
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,18 @@
config BR2_TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE
bool "Arm AArch64 BE 2021.07"
depends on BR2_aarch64_be
depends on BR2_HOSTARCH = "x86_64"
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_10
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,4 @@
# From https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-aarch64_be-none-linux-gnu.tar.xz.asc
md5 54cbaef7db7eb3de27732500f9da9c6f gcc-arm-10.3-2021.07-x86_64-aarch64_be-none-linux-gnu.tar.xz
# locally calculated
sha256 63c34cac07ceadd74620ea87f27af1aa6a6f55c20a5bc116af21a59ddb6b6a6a gcc-arm-10.3-2021.07-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 = 2021.07
TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE_SITE = https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-$(TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE_VERSION)/binrel
TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE_SOURCE = gcc-arm-10.3-$(TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE_VERSION)-x86_64-aarch64_be-none-linux-gnu.tar.xz
$(eval $(toolchain-external-package))

View File

@ -0,0 +1,18 @@
config BR2_TOOLCHAIN_EXTERNAL_ARM_AARCH64
bool "Arm AArch64 2021.07"
depends on BR2_aarch64
depends on BR2_HOSTARCH = "x86_64"
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_10
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,4 @@
# From https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz.asc
md5 07bbe2b5277b75ba36a924e9136366a4 gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz
# locally calculated
sha256 1e33d53dea59c8de823bbdfe0798280bdcd138636c7060da9d77a97ded095a84 gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz

View File

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

View File

@ -0,0 +1,29 @@
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 2021.07"
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
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_10
select BR2_TOOLCHAIN_HAS_FORTRAN
select BR2_TOOLCHAIN_HAS_OPENMP
help
Arm toolchain for the ARM architecture. It uses GCC 10.3,
GDB 10.2, glibc 2.33, Binutils 2.36.1. 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,7 @@
# From https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf.tar.xz.asc
md5 87ec580b290df2febc7c476f59484635 gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf.tar.xz
# From https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-aarch64-arm-none-linux-gnueabihf.tar.xz.asc
md5 0f1c5c90f5c62e1d1066f75fb3e51e21 gcc-arm-10.3-2021.07-aarch64-arm-none-linux-gnueabihf.tar.xz
# locally calculated
sha256 aa074fa8371a4f73fecbd16bd62c8b1945f23289e26414794f130d6ccdf8e39c gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf.tar.xz
sha256 fccd7af76988da2b077f939eb2a78baa9935810918d2bf3f837bc74f52efa825 gcc-arm-10.3-2021.07-aarch64-arm-none-linux-gnueabihf.tar.xz

View File

@ -0,0 +1,12 @@
################################################################################
#
# toolchain-external-arm-arm
#
################################################################################
TOOLCHAIN_EXTERNAL_ARM_ARM_VERSION = 2021.07
TOOLCHAIN_EXTERNAL_ARM_ARM_SITE = https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-$(TOOLCHAIN_EXTERNAL_ARM_ARM_VERSION)/binrel
TOOLCHAIN_EXTERNAL_ARM_ARM_SOURCE = gcc-arm-10.3-$(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

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,394 @@
# 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-2021.11-1.sha256
sha256 55b90e0e844ac02a7fc3352be42b7cb9bb3ec582c23649dbb77e05c60eb84434 aarch64--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--glibc--stable-2021.11-1.sha256
sha256 dec070196608124fa14c3f192364c5b5b057d7f34651ad58ebb8fc87959c97f7 aarch64--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--musl--bleeding-edge-2021.11-1.sha256
sha256 c56f51c518eca9e614cc639ffb99719531c1022275045a43dfcdf79a142ba4dc aarch64--musl--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--musl--stable-2021.11-1.sha256
sha256 6919b4cf04b8c5628a2a93bcf4b05e1143ab15dfb4bc2acde02a2e3c075bf041 aarch64--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--uclibc--bleeding-edge-2021.11-1.sha256
sha256 9ba30538bb38a3ee4db5289469fd0a539ba248b00da4e1b1b6f5c3724c20deef aarch64--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--uclibc--stable-2021.11-1.sha256
sha256 ec629adb0acd80d56b00f35e9fe823571bdcdb72072c7fc2d50607b3882c1f98 aarch64--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs/aarch64be--glibc--bleeding-edge-2021.11-1.sha256
sha256 8d610107f7bea8957d71dca45bb84368c74e01da786a113d1089b72ee79ca095 aarch64be--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs/aarch64be--glibc--stable-2021.11-1.sha256
sha256 6327121b67799ea967882cba746d25cf6a274a061f283d5c1b2818a651da0c9a aarch64be--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs/aarch64be--uclibc--bleeding-edge-2021.11-1.sha256
sha256 809d448f3f54fd9a4b01440acc697c022f3f0107e1bf0e9de3ee454a57be99e4 aarch64be--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs/aarch64be--uclibc--stable-2021.11-1.sha256
sha256 08898011a5f12bf3fa0646a794bb63422fa24d20eb79d01665b2f91aa65f75aa aarch64be--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-750d/tarballs/arcle-750d--uclibc--bleeding-edge-2021.11-1.sha256
sha256 088b03942306b572db93025eae703086ddbfe9886e14544cf68ecd9dfa0ad4b4 arcle-750d--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-750d/tarballs/arcle-750d--uclibc--stable-2021.11-1.sha256
sha256 6a7454aa1559ef304dfa55361763167848eb6d47539be31b24c7cf6723f581fd arcle-750d--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-hs38/tarballs/arcle-hs38--glibc--bleeding-edge-2021.11-1.sha256
sha256 e2a35602cf3a518e16681184c5ac095693dbc1d3edd1ae219da2dfff0cce7d67 arcle-hs38--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-hs38/tarballs/arcle-hs38--glibc--stable-2021.11-3.sha256
sha256 c7c00e3dcdb5123098cea365cfcf261e36adcf816bdd62e4e1ad661e1145f084 arcle-hs38--glibc--stable-2021.11-3.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-hs38/tarballs/arcle-hs38--uclibc--bleeding-edge-2021.11-1.sha256
sha256 552b2387ed8129fd205d3387ca508f816d1a67b90dd1d5ea16ff4872c5129fd9 arcle-hs38--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-hs38/tarballs/arcle-hs38--uclibc--stable-2021.11-1.sha256
sha256 85ea258031a8c304dce0a660c18e67ec415a032f0d9f2c4080f04a47efb44c48 arcle-hs38--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--glibc--bleeding-edge-2021.11-1.sha256
sha256 72a1964f1ba61d730b6be3b178bb4bc24de191a2ad8ada36e067d57011aae1a4 armv5-eabi--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--glibc--stable-2021.11-1.sha256
sha256 22de590c491057d2f974b315055b357511319227c6084cccb1532e30c829687c armv5-eabi--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--musl--bleeding-edge-2021.11-1.sha256
sha256 4906e6b454c1f9b2041d617df7e253f96288050f9760859868d60857e6bab924 armv5-eabi--musl--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--musl--stable-2021.11-1.sha256
sha256 2201fa9ce6d1226dafaf060cc568029d853af158b2ab182dcb8c7956bd993408 armv5-eabi--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--uclibc--bleeding-edge-2021.11-1.sha256
sha256 0187e76a377a096f7228b243637224cbe0dca12f5736202f813473723c566ea3 armv5-eabi--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--uclibc--stable-2021.11-1.sha256
sha256 888e65c2a75d125422ef4d2c144e3fed37d9a00169a78b4613fac34e7f9349ce armv5-eabi--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs/armv6-eabihf--glibc--bleeding-edge-2021.11-1.sha256
sha256 c585b4129f60d3ae45c7b77fc6baf87f1c6a3d6d66b06059e1bf9f6e2fcf2899 armv6-eabihf--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs/armv6-eabihf--glibc--stable-2021.11-1.sha256
sha256 c40177a063aa7db47747cbf4f26254d63abee9e20d8d88210261b50f03b51b22 armv6-eabihf--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs/armv6-eabihf--musl--bleeding-edge-2021.11-1.sha256
sha256 d6114bbde0a308cf7057aa9c4f5641432c1e785d3decc650f64f5cb261370078 armv6-eabihf--musl--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs/armv6-eabihf--musl--stable-2021.11-1.sha256
sha256 41c463f2cd2984a2d53e5dee2e9a81b09c6cac2ba7b306766bdfc8f4865977bf armv6-eabihf--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs/armv6-eabihf--uclibc--bleeding-edge-2021.11-1.sha256
sha256 aca019db7e6167d5cf8d8ff68b10bad7d9dd7ae8784f991960754e8d027f424e armv6-eabihf--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs/armv6-eabihf--uclibc--stable-2021.11-1.sha256
sha256 e7e19796a2f0b0d839508a721506e148cb4383ed82dcc2ff4b3c0c496a4229f3 armv6-eabihf--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--glibc--bleeding-edge-2021.11-1.sha256
sha256 1d2b488d047d1a1694305613adb918167a36bf0857cd6bda3ce87a0e4c2b7f28 armv7-eabihf--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--glibc--stable-2021.11-1.sha256
sha256 6d10f356811429f1bddc23a174932c35127ab6c6f3b738b768f0c29c3bf92f10 armv7-eabihf--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--musl--bleeding-edge-2021.11-1.sha256
sha256 31a373fded82805ac4ddac7608c5075b2086999dcd46ce6ba33c432b24faffaf armv7-eabihf--musl--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--musl--stable-2021.11-1.sha256
sha256 767c99155f74d5620cfd59d0224df2f82dec7ce58be24d702081dca9793408a9 armv7-eabihf--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--uclibc--bleeding-edge-2021.11-1.sha256
sha256 8d6cea2dfec2205ead2e6476f664d81442228d3b1e3fb9b320a54c68706ab9a2 armv7-eabihf--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--uclibc--stable-2021.11-1.sha256
sha256 3f8b1101a7318e2a6260a6b1c916b9b3bc69e8fd866d9e88eb85d3a496ad5064 armv7-eabihf--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armebv7-eabihf/tarballs/armebv7-eabihf--glibc--bleeding-edge-2021.11-1.sha256
sha256 1f7c0485d07718ed8b99288b5e2ec825d6931c92d7db8c880892682f7d717a40 armebv7-eabihf--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armebv7-eabihf/tarballs/armebv7-eabihf--glibc--stable-2021.11-1.sha256
sha256 bfc67cd580e357cf390cb3590fa89e738818af11ae9167e263178304c1656ccb armebv7-eabihf--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armebv7-eabihf/tarballs/armebv7-eabihf--musl--bleeding-edge-2021.11-1.sha256
sha256 488ec97dbbd37c5431c60b0bf6485948ba026ca5097e9e258f4847fbccaa0181 armebv7-eabihf--musl--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armebv7-eabihf/tarballs/armebv7-eabihf--musl--stable-2021.11-1.sha256
sha256 2a8d0752eaa480eff29b274e88c20e13ad41059f213991769b14684f219d7e12 armebv7-eabihf--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armebv7-eabihf/tarballs/armebv7-eabihf--uclibc--bleeding-edge-2021.11-1.sha256
sha256 a9665d2792bf9219c4a7153879d681b5f12c48e47b48969b1a87443b7ed9f26f armebv7-eabihf--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armebv7-eabihf/tarballs/armebv7-eabihf--uclibc--stable-2021.11-1.sha256
sha256 84c7a58351ec618a48a5b357777c48dbbfd52dc48983ebf988a29483693bacbf armebv7-eabihf--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7m/tarballs/armv7m--uclibc--bleeding-edge-2021.11-1.sha256
sha256 392215b53d8c03ca501481f6cfaa720676cf5a67ad1f25647f5a096398f57b28 armv7m--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7m/tarballs/armv7m--uclibc--stable-2021.11-1.sha256
sha256 2fca1ac4e767f8ce182a92c74f7b1e4866e7b74b447a2e4c62176379421bedbe armv7m--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-68xxx/tarballs/m68k-68xxx--uclibc--bleeding-edge-2021.11-1.sha256
sha256 2b694fb4397421504e805a71db182efd55b25fa6403ecf225cddd4a8212903b0 m68k-68xxx--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-68xxx/tarballs/m68k-68xxx--uclibc--stable-2021.11-1.sha256
sha256 9b3afcd370cbe4912f730696d89ca5f8d26581992c80bdff027b2dd6a8910899 m68k-68xxx--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-coldfire/tarballs/m68k-coldfire--uclibc--bleeding-edge-2021.11-1.sha256
sha256 0e6743d8679cfe197223e011a2e1e064a213f6032d2f4b0d922b9124fe981d84 m68k-coldfire--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-coldfire/tarballs/m68k-coldfire--uclibc--stable-2021.11-1.sha256
sha256 27ed1e76826a8824d72ef702d3a770544757a0d297c9992eb623012f1d9b387c m68k-coldfire--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs/microblazebe--glibc--bleeding-edge-2021.11-1.sha256
sha256 1512dde9d646c4c34e5a637d5d6b3be777e199e3f16340ed26e8f0b085cdbdf0 microblazebe--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs/microblazebe--glibc--stable-2021.11-1.sha256
sha256 c853fe33b9454d3e31951ef99c53b6a6ad09f2458cf79ad4b1680c125a011899 microblazebe--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs/microblazebe--musl--bleeding-edge-2021.11-1.sha256
sha256 65d6486dd8fd8c6a0aad44346d77a8d4f2473230b967ac7fa12e639603e9f007 microblazebe--musl--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs/microblazebe--musl--stable-2021.11-1.sha256
sha256 5195575b4bd178dbdc8080e728fa485df13ede62ae684cdda131c1d55e655b11 microblazebe--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs/microblazebe--uclibc--bleeding-edge-2021.11-1.sha256
sha256 c0d8bf9ce99eada90be299e7d448b9cc578005d26b80205788a639c587071a36 microblazebe--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs/microblazebe--uclibc--stable-2021.11-1.sha256
sha256 2de12511a0a9b8369f769ccd0ecf32939948b95079e0fd57d3ea390ad4c4ff43 microblazebe--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs/microblazeel--glibc--bleeding-edge-2021.11-1.sha256
sha256 fa871c5a4fc700f5a7d9e04ddda271d69395066afea98df2de2bba78826b461e microblazeel--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs/microblazeel--glibc--stable-2021.11-1.sha256
sha256 f7c64f142f970cd084ffa0e14bc3ac957db921e559eb036cb0f098d2f187328b microblazeel--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs/microblazeel--musl--bleeding-edge-2021.11-1.sha256
sha256 6978582d587f89fd02d11e89f1b0eee320ad45c42a51ec4fca8fc24b69f65c46 microblazeel--musl--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs/microblazeel--musl--stable-2021.11-1.sha256
sha256 4bd56f3fa100b71174888fc4da1f710ed2f56433edc570ba435f2ffdfc3bcc49 microblazeel--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs/microblazeel--uclibc--bleeding-edge-2021.11-1.sha256
sha256 ee3cf68bb5680b44087aa8e805f74397fb34283ce9ad4d7a303f777e2242b796 microblazeel--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs/microblazeel--uclibc--stable-2021.11-1.sha256
sha256 61a33972e3a282c5334717eef0922a3617c881dd3c28a0aed7dfaf69df8493c8 microblazeel--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs/mips32--glibc--bleeding-edge-2021.11-1.sha256
sha256 b4b28cc187dbcd6d55e3c00a1b4a08cf68797946c284a48f30be2f659756b2d7 mips32--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs/mips32--glibc--stable-2021.11-1.sha256
sha256 42c6d72edd35249cda113796aa776556f8e8aa285fa8e511d2784a65c4df71d6 mips32--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs/mips32--musl--bleeding-edge-2021.11-1.sha256
sha256 7609a3d3601e9aaf8c08f68f1d70539858f17229ca4985842d290e8c35e1b7e3 mips32--musl--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs/mips32--musl--stable-2021.11-1.sha256
sha256 999faca83c3490662ba5ae855935dd9bde270d11d234294cd6c9cc9ca0bfe17c mips32--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs/mips32--uclibc--bleeding-edge-2021.11-1.sha256
sha256 58240ac30e5bbec4cb07d92ad4250693cd4f4c9761e6e9602e3cbe0d9077ea4e mips32--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs/mips32--uclibc--stable-2021.11-1.sha256
sha256 e010dd9fca694f658af457e473831ec9a22da7262ed9f460fee1bf30081d4a1a mips32--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs/mips32el--glibc--bleeding-edge-2021.11-1.sha256
sha256 6167ef7286741551ccb53ffb62e45611fc258e62cd1880418a2cf94051a51e05 mips32el--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs/mips32el--glibc--stable-2021.11-1.sha256
sha256 018e3393e1ba50444ae0a05db05a295553b3af224afdf20b52f9d271f1ec91a4 mips32el--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs/mips32el--musl--bleeding-edge-2021.11-1.sha256
sha256 66f7991de789d4a9ea0206e4f1c7e380521778b771295315af8e98984a1a2b1d mips32el--musl--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs/mips32el--musl--stable-2021.11-1.sha256
sha256 381ec343ffde3c905addfe27e5ae737b4709142d5949c327f783c26d0acd05d1 mips32el--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs/mips32el--uclibc--bleeding-edge-2021.11-1.sha256
sha256 ce6e49762e54ba4a2a6477d14dd6f37b3d6d116905150a80cd4ed2afeaec2633 mips32el--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs/mips32el--uclibc--stable-2021.11-1.sha256
sha256 18baf32f742acd9c9eab78eca040f265194bb10589d6e8bccb964ccd8a22307a mips32el--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs/mips32r5el--glibc--bleeding-edge-2021.11-1.sha256
sha256 5524925d82e1c28cbc272d94e8b9f40603d623875d09989a862fda7b88e5f163 mips32r5el--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs/mips32r5el--glibc--stable-2021.11-1.sha256
sha256 5911d789152f922adbf99d231f3267c0e7aec8942b73a759a44d1410ed6d6493 mips32r5el--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs/mips32r5el--musl--bleeding-edge-2021.11-1.sha256
sha256 a599b59ab19aa10d841fbf50f58fdf2a09263a3cdcb01499225f259ef5615be1 mips32r5el--musl--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs/mips32r5el--musl--stable-2021.11-1.sha256
sha256 5ea65771ca522b77f3cc39f12ef09eda59d9e4743dc7057067f73e86983107c2 mips32r5el--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs/mips32r5el--uclibc--bleeding-edge-2021.11-1.sha256
sha256 84bef9c460f2abf00fa5c18f850a9d9e4fdf9e7d593a1ad5f7b6efe34dfcf037 mips32r5el--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs/mips32r5el--uclibc--stable-2021.11-1.sha256
sha256 48b058d3057a611eb3d09b3a206bc38e449f0ea0cd7c8ebf2ee99da9182d0707 mips32r5el--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs/mips32r6el--glibc--bleeding-edge-2021.11-1.sha256
sha256 161ec4ca6dad1b5d3e79880e30c7f618e24fc1c8dbfcbaec50db02ac73c111af mips32r6el--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs/mips32r6el--glibc--stable-2021.11-1.sha256
sha256 c50ba26a9fad62180dc4816cfa6451f82ba3ea9c9f069899874c012a5472fa77 mips32r6el--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs/mips32r6el--musl--bleeding-edge-2021.11-1.sha256
sha256 81637b0ddfda0ed02bd549fda70efddbcabe6ad943156311d034f3b8a8bce086 mips32r6el--musl--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs/mips32r6el--musl--stable-2021.11-1.sha256
sha256 d858e9b2a7d826f23cd6432e5c1cad2f4f98447682cdcf7df1430daabfbf49c0 mips32r6el--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs/mips32r6el--uclibc--bleeding-edge-2021.11-1.sha256
sha256 40b78cbfb757b328f5b0a861c6ed1e4f716784bdc2d5e6eba9d2dcad5057002c mips32r6el--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs/mips32r6el--uclibc--stable-2021.11-1.sha256
sha256 e39de078f5f713ab385e5f008e181062265e6a3979904263d283f90304146014 mips32r6el--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs/mips64-n32--glibc--bleeding-edge-2021.11-1.sha256
sha256 d8543128dc7a115fdee418dfee954d65cb0fb60aae161222fc03177a190bfef1 mips64-n32--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs/mips64-n32--glibc--stable-2021.11-1.sha256
sha256 8d5c891bb2eecccf1f9c51095d266c899dae4dd7e75ef19ff6c66c8e4602919c mips64-n32--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs/mips64-n32--musl--bleeding-edge-2021.11-1.sha256
sha256 7cf2177c2e41651a25676a9d1c96bbe8c254f94db920a1b3a7aa5708b17b1ef1 mips64-n32--musl--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs/mips64-n32--musl--stable-2021.11-1.sha256
sha256 ac997df9a0f82f0ce60ac904ce75245741fa432c4d85c8e8ae88c35296dfaa99 mips64-n32--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs/mips64-n32--uclibc--bleeding-edge-2021.11-1.sha256
sha256 e5119b684b078fd0c3bf7f7eb09ab31dff666cbbbc3d91118ae912e197ca3852 mips64-n32--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs/mips64-n32--uclibc--stable-2021.11-1.sha256
sha256 8f5c1293e789eb04ab3f0bcb415c6ee0ef5ae26cd77354374984752548ac4e2c mips64-n32--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs/mips64el-n32--glibc--bleeding-edge-2021.11-1.sha256
sha256 d1063f99d389f0065b8db5331597969450f1f813265ddf9205215fec5500997c mips64el-n32--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs/mips64el-n32--glibc--stable-2021.11-1.sha256
sha256 73bbd84905e1fd094f7426f64e01f6058f21409218306b80e94bd2ad0aaa8ad3 mips64el-n32--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs/mips64el-n32--musl--bleeding-edge-2021.11-1.sha256
sha256 a0a48faf217468e9eb1dd820d16ced1caa8f00706e9f48cb1e64899963f3bcba mips64el-n32--musl--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs/mips64el-n32--musl--stable-2021.11-1.sha256
sha256 c9c895ea09900ec5c63931af0716cf12f48f7c9826629ac48c4cee4e596af5ee mips64el-n32--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs/mips64el-n32--uclibc--bleeding-edge-2021.11-1.sha256
sha256 5d3573faab6757efd4e2a78e2c1361d3e8e7b821fd385d016fbe71c56d9cc1d2 mips64el-n32--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs/mips64el-n32--uclibc--stable-2021.11-1.sha256
sha256 cd95e539cbb343c3e57c9f2d7d786ea2b0b58009f1b87a4b48eb9d4bb73a205a mips64el-n32--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs/mips64r6el-n32--glibc--bleeding-edge-2021.11-1.sha256
sha256 7b551725f9e6f5eefc56ad67b5daa10812d4895842ec5986eeb93a79455e4762 mips64r6el-n32--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs/mips64r6el-n32--glibc--stable-2021.11-1.sha256
sha256 c575274871f30d019c121947e0f65973475e16baf621f235c54bfc292353d5d0 mips64r6el-n32--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs/mips64r6el-n32--musl--bleeding-edge-2021.11-1.sha256
sha256 2b85466873cf847b62b5c66198cc01002890a7a41e5cc9262b4906dcef640ead mips64r6el-n32--musl--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs/mips64r6el-n32--musl--stable-2021.11-1.sha256
sha256 4210ca4ded17fdeb7cc7a5cf0d7d4676161d711f70708ca50be62ce397687672 mips64r6el-n32--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs/mips64r6el-n32--uclibc--bleeding-edge-2021.11-1.sha256
sha256 de1a1cff7c02d804aa949b813d92c3d55a33e47602bd538bac6deaa155c93c6d mips64r6el-n32--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs/mips64r6el-n32--uclibc--stable-2021.11-1.sha256
sha256 30d82c7ca41a0df9931a29a46ed881f21a889e9e59baf04e820c6679be87a7fb mips64r6el-n32--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/nios2/tarballs/nios2--glibc--bleeding-edge-2021.11-1.sha256
sha256 5c2dc11062f4817e81a328b12ab30be486b7e68c7c876eb45fffca72332a8804 nios2--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/nios2/tarballs/nios2--glibc--stable-2021.11-1.sha256
sha256 f6f37f1e551edda0251ece8d906ed720bd8ec45da9d4b3e1d13721bdc9ef2882 nios2--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs/openrisc--musl--bleeding-edge-2021.11-5.sha256
sha256 03f46c8fdded0002a2a04749bcf86136ec26a841654bf9fdc14575cc510739c6 openrisc--musl--bleeding-edge-2021.11-5.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs/openrisc--musl--stable-2021.11-5.sha256
sha256 409e4a7473125e7de7c8b0e6bc1cb971d53e63ac057e9a19102e4ce1467f442a openrisc--musl--stable-2021.11-5.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs/openrisc--uclibc--bleeding-edge-2021.11-5.sha256
sha256 9028d4e526f9e805b021791443805541a179eaf2e47a2af4dfbefb2021e44e9f openrisc--uclibc--bleeding-edge-2021.11-5.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs/openrisc--uclibc--stable-2021.11-5.sha256
sha256 f07d8e465f7e94e55330cfb55bbaf9fc27e4bb7b688271ead60a15aec3dbbf76 openrisc--uclibc--stable-2021.11-5.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--glibc--bleeding-edge-2021.11-1.sha256
sha256 53afdbe1e48d0c60d560db8d17042a99288661fe10eebbfcfec4e56a6c2ca594 powerpc-440fp--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--glibc--stable-2021.11-1.sha256
sha256 d7fc756c954184cfc4e6118e0e0ac33613916973f6af4aafaa162959662aea96 powerpc-440fp--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--musl--bleeding-edge-2021.11-1.sha256
sha256 094bad002682608cfc7b095a35c3d495cad793ec0f15a7c035a11eae69d0211e powerpc-440fp--musl--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--musl--stable-2021.11-1.sha256
sha256 187226d9c427e91bae57058060950cfbd61fb89993edf42386a2c4281ca681ba powerpc-440fp--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--uclibc--bleeding-edge-2021.11-1.sha256
sha256 6c5d3ef56effad9bea791ee814f108929e967eb88a992d21b7d9f9d8d51a048a powerpc-440fp--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--uclibc--stable-2021.11-1.sha256
sha256 9a9663674fc2af69b403bfacc5c9d6c0d7ea7c7aa4b93c928bfd79bfb634b828 powerpc-440fp--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs/powerpc-e300c3--glibc--bleeding-edge-2021.11-1.sha256
sha256 89164ef2be5f5eb5f0de9d8d821d76a1e69c963529bc450a1caf61944665f929 powerpc-e300c3--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs/powerpc-e300c3--glibc--stable-2021.11-1.sha256
sha256 1665004c81e0dfe1c8aa15a691232537c27a4343d80f8c035f83623b65d99ae3 powerpc-e300c3--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs/powerpc-e300c3--musl--bleeding-edge-2021.11-1.sha256
sha256 6bbb7d8416708754debc216f122366d7cc25b9372b59e16590f2d942fc727cee powerpc-e300c3--musl--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs/powerpc-e300c3--musl--stable-2021.11-1.sha256
sha256 e97a52ed0d2f617f869e055d076c62e0698cdffd17e8b5945d0285f98cb57de2 powerpc-e300c3--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs/powerpc-e300c3--uclibc--bleeding-edge-2021.11-1.sha256
sha256 9b886501833b6785bdbfff90e3d7b191eca4e59fea0c039c772c43825032fb86 powerpc-e300c3--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs/powerpc-e300c3--uclibc--stable-2021.11-1.sha256
sha256 31fc2c3b1f2878eb71766c7c0d8b88cdd4c1b2b66e34237917557df818e1c4e0 powerpc-e300c3--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--glibc--bleeding-edge-2021.11-1.sha256
sha256 a2505f7d2968c5324747653da2b367fde7c86c68fcfcb2051c07b27fc0726988 powerpc-e500mc--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--glibc--stable-2021.11-1.sha256
sha256 f9a86eee7817042d26aeda8473c23d7da22920ace233e7ad8714cc87409767ca powerpc-e500mc--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--musl--bleeding-edge-2021.11-1.sha256
sha256 0f58c7a792de85703c715100dc8fde2575acd4f41523dbcf2ca920611f8e38f3 powerpc-e500mc--musl--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--musl--stable-2021.11-1.sha256
sha256 367219213274c0b291855354f5cf2f59a915cf0d9538db9236d7829423a79c92 powerpc-e500mc--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--uclibc--bleeding-edge-2021.11-1.sha256
sha256 0c9616694108bcc879fdbd804b6ec42b17101bddea2a9426f023f625c3def39b powerpc-e500mc--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--uclibc--stable-2021.11-1.sha256
sha256 5a6e8489e39ddd73d413926c1d00b7cb214e5a083bdea6bf7fbcd5b4a3b82d47 powerpc-e500mc--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e5500/tarballs/powerpc64-e5500--glibc--bleeding-edge-2021.11-1.sha256
sha256 62c53dd85d6172a1d13833d2303561a6e943d73836faa3be0eb5c8d937ae3bf1 powerpc64-e5500--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e5500/tarballs/powerpc64-e5500--glibc--stable-2021.11-1.sha256
sha256 4c8c2884ed5f42155508ffb5c62343312427904f469ce003bfb6b547075cd4aa powerpc64-e5500--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e6500/tarballs/powerpc64-e6500--glibc--bleeding-edge-2021.11-1.sha256
sha256 62845f66f9b29c001e85b86557b953b2275fd1ecbf681500521b8386d8df1ed6 powerpc64-e6500--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e6500/tarballs/powerpc64-e6500--glibc--stable-2021.11-1.sha256
sha256 054d3793f1c8c42ff9310163d4eb45ce09be7654f01221ff28914bc28950f832 powerpc64-e6500--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e6500/tarballs/powerpc64-e6500--musl--bleeding-edge-2021.11-1.sha256
sha256 21452d9a1e4a5fe980054c0367f00f640ff0f6af4f0443469c340106f902c9c6 powerpc64-e6500--musl--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e6500/tarballs/powerpc64-e6500--musl--stable-2021.11-1.sha256
sha256 015285c7313ffd6c25984db3df003a703868758919f59e8d0b9b45cd494e54cd powerpc64-e6500--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs/powerpc64-power8--glibc--bleeding-edge-2021.11-2.sha256
sha256 19618e538bd170e3ed458a1ff9593ca169078eb9a990cbab0af635aed622429e powerpc64-power8--glibc--bleeding-edge-2021.11-2.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs/powerpc64-power8--glibc--stable-2021.11-1.sha256
sha256 7b35b694e79b4829e5f2fdb2bd1570035619f665be2a73d0568e4c1f4b6ce56d powerpc64-power8--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs/powerpc64-power8--musl--bleeding-edge-2021.11-2.sha256
sha256 6f5a6674bbe028bcf2cb6820a57b53e06b06ab4b7359397b77fada3ef06635b5 powerpc64-power8--musl--bleeding-edge-2021.11-2.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs/powerpc64-power8--musl--stable-2021.11-1.sha256
sha256 9dff16b6af51f0492093f08e4d7571b787afa37e059ea1105ded18a7fa7baa88 powerpc64-power8--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs/powerpc64le-power8--glibc--bleeding-edge-2021.11-2.sha256
sha256 624b2bb3763e3bd085b69c39cb9a1574d60dbb29780469c2b171bba564c3d1d3 powerpc64le-power8--glibc--bleeding-edge-2021.11-2.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs/powerpc64le-power8--glibc--stable-2021.11-1.sha256
sha256 04473768185c3a1848f4f323380dc7caffa13d1e1bcb49317cebf090917fee2a powerpc64le-power8--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs/powerpc64le-power8--musl--bleeding-edge-2021.11-2.sha256
sha256 e81d0b3c9128cd0069dc8bcfbf512e395175e4c4f0a9ed500a3d7b15a76f8e65 powerpc64le-power8--musl--bleeding-edge-2021.11-2.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs/powerpc64le-power8--musl--stable-2021.11-1.sha256
sha256 09dafac6313ad49731de6d93ef2f1c2806a6a78127d0441adcee76a7a256f4e3 powerpc64le-power8--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv32-ilp32d/tarballs/riscv32-ilp32d--glibc--bleeding-edge-2021.11-1.sha256
sha256 63defd144fdb1d40712316e2c3acd37275d6407b52d70efcd36e7f7129b4a0d0 riscv32-ilp32d--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs/riscv64-lp64d--glibc--bleeding-edge-2021.11-1.sha256
sha256 13984509df102d452f64fbe576e9240920bc677838c2380e57fad8236fca70bc riscv64-lp64d--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs/riscv64-lp64d--glibc--stable-2021.11-1.sha256
sha256 70fe7d9fc74220b08b2ae0d3527641f4b938a1e4eb6bb305b2ac68fa76f2d6a4 riscv64-lp64d--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs/riscv64-lp64d--musl--bleeding-edge-2021.11-1.sha256
sha256 0ba18be42bc1aac9992384c86efeb83cb55215eab565f71cef340f61a1fec420 riscv64-lp64d--musl--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs/riscv64-lp64d--musl--stable-2021.11-1.sha256
sha256 42ca8024547e51e6126e3c9e711d80815aa4b2997900dfc8af4b9514105e8b78 riscv64-lp64d--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs/riscv64-lp64d--uclibc--bleeding-edge-2021.11-1.sha256
sha256 02dd9fe4a024f84c7f73b7155640066017c7d18dd90c4da6efe6f0e66d24f75c riscv64-lp64d--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64-lp64d/tarballs/riscv64-lp64d--uclibc--stable-2021.11-1.sha256
sha256 01f061e1b3d106d25614ae5bd64df3a3588bc960caa3bbad14b50f718a558f41 riscv64-lp64d--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/s390x-z13/tarballs/s390x-z13--glibc--bleeding-edge-2021.11-1.sha256
sha256 d8e657ba00929007e938c7fc398fb5aee8abeceea3ad1cd304c05e7f47d9ef30 s390x-z13--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/s390x-z13/tarballs/s390x-z13--glibc--stable-2021.11-1.sha256
sha256 04d8c28bc1af09a949cfe76991379fef4b0876448192625a22c028c7daf92e3f s390x-z13--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs/sh-sh4--glibc--bleeding-edge-2021.11-1.sha256
sha256 64c14617fb95b1eeb50564d1e0ccbf73fa73e5e58aea6b192549fc7127e4bd5c sh-sh4--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs/sh-sh4--glibc--stable-2021.11-1.sha256
sha256 702125cce2aaee4025cc4eb07614fe51a4e56498e8d0b2b8a5863d31840829e0 sh-sh4--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs/sh-sh4--musl--bleeding-edge-2021.11-1.sha256
sha256 37fefd46ded9067cb836f067073c4df501265e86d887ff91015087747a5613d4 sh-sh4--musl--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs/sh-sh4--musl--stable-2021.11-1.sha256
sha256 7f77aefe39c1dc9bfe1fe637c7c957fba19898d0b04db4ba7a0b76bb97ed72e9 sh-sh4--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs/sh-sh4--uclibc--bleeding-edge-2021.11-1.sha256
sha256 3285ac52a681a951d7d080d6645f3d02451de644582928d71469813e95bd928f sh-sh4--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs/sh-sh4--uclibc--stable-2021.11-1.sha256
sha256 841c400d303021311895bf61fa7d16292ef19cf021ea06c091a424f43294f6a5 sh-sh4--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4aeb/tarballs/sh-sh4aeb--glibc--bleeding-edge-2021.11-1.sha256
sha256 b1ebde33ada33d1006046c589891d96af902eefcea1d9e103ae738c9fe26c36f sh-sh4aeb--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4aeb/tarballs/sh-sh4aeb--glibc--stable-2021.11-1.sha256
sha256 3afebc93a72af85a31c6d096b5939c60bb87939b051c6cddc52e1e540714267a sh-sh4aeb--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4aeb/tarballs/sh-sh4aeb--musl--bleeding-edge-2021.11-1.sha256
sha256 c9216bd579ac3f0fa7d0efb9e1892f5d34eba10ee183d03fc87ca17c4b8eb6d4 sh-sh4aeb--musl--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4aeb/tarballs/sh-sh4aeb--musl--stable-2021.11-1.sha256
sha256 1e58aaab9d77019df71777a3c9a2457f691355a6a7aed6b9897921e38571117a sh-sh4aeb--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sparc64/tarballs/sparc64--glibc--bleeding-edge-2021.11-1.sha256
sha256 0b83bb7f3ce7b67a5c359c95c695398054d13903259014147d4c99e2884e1377 sparc64--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sparc64/tarballs/sparc64--glibc--stable-2021.11-1.sha256
sha256 0ef307f6c91733ee82ce65801768013f7e6220b605f4e152158cb55b4f983582 sparc64--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sparcv8/tarballs/sparcv8--uclibc--bleeding-edge-2021.11-3.sha256
sha256 3c85420becb7caa84a9a229483f3f2d7158eb66817acdfa5d5700c3a05436cba sparcv8--uclibc--bleeding-edge-2021.11-3.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/sparcv8/tarballs/sparcv8--uclibc--stable-2021.11-1.sha256
sha256 f6d35e33338b26e71403b4c6d3944ab561f2a6e9b801ab33fbb401b4722044dd sparcv8--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64/tarballs/x86-64--glibc--bleeding-edge-2021.11-5.sha256
sha256 024fd8edc91b9bfd643f8cf94e3f3ff2a6457aea654d10ef3516db8c3d94d5f5 x86-64--glibc--bleeding-edge-2021.11-5.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64/tarballs/x86-64--glibc--stable-2021.11-5.sha256
sha256 6fe812add925493ea0841365f1fb7ca17fd9224bab61a731063f7f12f3a621b0 x86-64--glibc--stable-2021.11-5.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64/tarballs/x86-64--musl--bleeding-edge-2021.11-5.sha256
sha256 468e6b73146595923fe87980a30adb54cd78f4c1e2f228e1a2c9bb705ea4243d x86-64--musl--bleeding-edge-2021.11-5.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64/tarballs/x86-64--musl--stable-2021.11-5.sha256
sha256 2943617f6537ca195a66fb9db4a801a5dd1c108741c400d530d558d06908dd75 x86-64--musl--stable-2021.11-5.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64/tarballs/x86-64--uclibc--bleeding-edge-2021.11-5.sha256
sha256 4aa8b8e2806d6fc87ba64ccec0a59b8a2fb5d157cda006d893e3f2264b7f0f10 x86-64--uclibc--bleeding-edge-2021.11-5.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64/tarballs/x86-64--uclibc--stable-2021.11-5.sha256
sha256 e68fd1b23f4a5c5132f2122e4012c17eb24e5179b2ff45bb793a27ac30dd454f x86-64--uclibc--stable-2021.11-5.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v2/tarballs/x86-64-v2--glibc--bleeding-edge-2021.11-5.sha256
sha256 af20cf98ce937f298e0958e16793bb4c7b08236bc69ab11574a4266cccc3823d x86-64-v2--glibc--bleeding-edge-2021.11-5.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v2/tarballs/x86-64-v2--musl--bleeding-edge-2021.11-5.sha256
sha256 17add21a0337d2f7d0d79d1f21db88098c3474920d71f902be46e8995eb86d35 x86-64-v2--musl--bleeding-edge-2021.11-5.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v2/tarballs/x86-64-v2--uclibc--bleeding-edge-2021.11-5.sha256
sha256 b3ef49012af9fc9c2c8a44b0a20722be69b518cec5db06e48480291fc28aefe0 x86-64-v2--uclibc--bleeding-edge-2021.11-5.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v3/tarballs/x86-64-v3--glibc--bleeding-edge-2021.11-5.sha256
sha256 244d4afab02b9c54c76385657d26798515331d7d4fa90928315366f31b9cc39e x86-64-v3--glibc--bleeding-edge-2021.11-5.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v3/tarballs/x86-64-v3--musl--bleeding-edge-2021.11-5.sha256
sha256 551cff1b6425e2a6ced7b7ad032fba49b43ed095faae38d1842260ac0b5d6dbf x86-64-v3--musl--bleeding-edge-2021.11-5.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v3/tarballs/x86-64-v3--uclibc--bleeding-edge-2021.11-5.sha256
sha256 30188f50adef711b55ac1d5be7218e0d6ee4200ddb8660e4d4971a9cefe22f91 x86-64-v3--uclibc--bleeding-edge-2021.11-5.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v4/tarballs/x86-64-v4--glibc--bleeding-edge-2021.11-5.sha256
sha256 0cd2de7c4103aa8cf47b72dc71146eb3bf7742a18d56c93128340ab3f4175804 x86-64-v4--glibc--bleeding-edge-2021.11-5.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v4/tarballs/x86-64-v4--musl--bleeding-edge-2021.11-5.sha256
sha256 e159da16459e0f0d06a9a7467d5121202ab95e2fa6bf8abffdc0008c72fe9b07 x86-64-v4--musl--bleeding-edge-2021.11-5.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-v4/tarballs/x86-64-v4--uclibc--bleeding-edge-2021.11-5.sha256
sha256 984f011d170d3e46322ae4a110c86ebf995598d877f410201b3fb3d86e25dac2 x86-64-v4--uclibc--bleeding-edge-2021.11-5.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--glibc--bleeding-edge-2021.11-1.sha256
sha256 a3dbfcd3347a72ca344ae77882f929615776ea9b1b058eeea0a0915e7db89b69 x86-64-core-i7--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--glibc--stable-2021.11-1.sha256
sha256 3d443bb0bc6d16982824952a02dcb8b7d10c258b4e0debb47708fb9a02573951 x86-64-core-i7--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--musl--bleeding-edge-2021.11-1.sha256
sha256 c724f0a8338c57e65479844eeb1725ffce2157a195067601e8893c0f781d2a86 x86-64-core-i7--musl--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--musl--stable-2021.11-1.sha256
sha256 008aa485ad85deda4af41f6ab162ee33be96c2f479e93a03dd9ee360fbf461b1 x86-64-core-i7--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--uclibc--bleeding-edge-2021.11-1.sha256
sha256 99ac2c1fb6bd819222578d4d3c2d3043d3f08f48a988fe7a56ecb2dc44950ebb x86-64-core-i7--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--uclibc--stable-2021.11-1.sha256
sha256 f7224ebf557f96b3854c4760f0d561f33f02e71586e6c5b958fdb686ecf5a058 x86-64-core-i7--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs/x86-core2--glibc--bleeding-edge-2021.11-1.sha256
sha256 51a7aa03b16fca52a6ac88c7272a727a56a120fb1a03edaff7da741471dffa63 x86-core2--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs/x86-core2--glibc--stable-2021.11-1.sha256
sha256 6afb13f10694756f2c7b69e0e5fdd416d3c446d2d630ed9a707797613c38fb15 x86-core2--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs/x86-core2--musl--bleeding-edge-2021.11-1.sha256
sha256 b779acc67eff7ae349a1ecb6d092576131537ce4d92530447d6483e3b7320186 x86-core2--musl--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs/x86-core2--musl--stable-2021.11-1.sha256
sha256 9f79cd4443386b9611d917506bcb6fd9d844e7934905a7368827441644ae7821 x86-core2--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs/x86-core2--uclibc--bleeding-edge-2021.11-1.sha256
sha256 1a3803d19a6d65a943dab7c4cfb29f37e1c96b1155bdd6c04e5fc609c135b970 x86-core2--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs/x86-core2--uclibc--stable-2021.11-1.sha256
sha256 235be5851ccdbf579163a0d57b4caba48c63c808f7a08e6476f56c3537636520 x86-core2--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--glibc--bleeding-edge-2021.11-1.sha256
sha256 bb21d6fdb83ef1603346c27572a0622a890633d4fc1ab28bf0aa387a44c8dfee x86-i686--glibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--glibc--stable-2021.11-1.sha256
sha256 9deb1c61a3196114ba1996c0cbe4c4135af9e82f1a0f9111084c86badee3ff30 x86-i686--glibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--musl--bleeding-edge-2021.11-1.sha256
sha256 313e4bbd8a19fc927b2d9d059cfacdb89cb41213d34158cac2ba00b071468273 x86-i686--musl--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--musl--stable-2021.11-1.sha256
sha256 fa6cd3e2aa25287e03070eba526983a902d8622ad148b57027acf85d690eaf27 x86-i686--musl--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--uclibc--bleeding-edge-2021.11-1.sha256
sha256 4ee09d8c4524e6e6f19db07ed49f8e43a60e806bc57134f9ac2477d41c98340e x86-i686--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--uclibc--stable-2021.11-1.sha256
sha256 d15cfe391474ea19e6a468c011955027581c6a16953380baf3c5718ad42fc45d x86-i686--uclibc--stable-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/xtensa-lx60/tarballs/xtensa-lx60--uclibc--bleeding-edge-2021.11-1.sha256
sha256 469450c734051b9dfb7021532a5ec6fb35b3cf79a95613836e654c3e666b4150 xtensa-lx60--uclibc--bleeding-edge-2021.11-1.tar.bz2
# From https://toolchains.bootlin.com/downloads/releases/toolchains/xtensa-lx60/tarballs/xtensa-lx60--uclibc--stable-2021.11-1.sha256
sha256 2fd9dc2d1ec8a167ae3c353682bc4d166f25a7db1c1b889e3058bc644bd3f92c xtensa-lx60--uclibc--stable-2021.11-1.tar.bz2

View File

@ -0,0 +1,65 @@
config BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS
bool "Codescape IMG GNU Linux Toolchain 2018.09"
depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_7
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
depends on BR2_MIPS_CPU_MIPS32R6 || (BR2_MIPS_CPU_MIPS64R6 && !BR2_MIPS_SOFT_FLOAT)
select BR2_TOOLCHAIN_EXTERNAL_GLIBC
select BR2_INSTALL_LIBSTDCPP
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
select BR2_TOOLCHAIN_GCC_AT_LEAST_6
select BR2_TOOLCHAIN_HAS_FORTRAN
select BR2_TOOLCHAIN_HAS_OPENMP
help
Codescape IMG GNU Linux Toolchain 2018.09 for the MIPS
architecture, from MIPS Tech LLC. It uses gcc 6.3.0,
binutils 2.28.51, glibc 2.20, gdb 7.9.1 and kernel headers
4.7. It has support for the following variants:
- MIPS32r6 - Big-Endian, Hard-Float, 2008 NaN, o32 ABI
Select 'MIPS (big endian)' Target Architecture
Select 'mips 32r6' Target Architecture Variant
Disable 'Use soft-float'
- MIPS32r6 - Big-Endian, Soft-Float, 2008 NaN, o32 ABI
Select 'MIPS (big endian)' Target Architecture
Select 'mips 32r6' Target Architecture Variant
Enable 'Use soft-float'
- MIPS32r6 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI
Select 'MIPS (little endian)' Target Architecture
Select 'mips 32r6' Target Architecture Variant
Disable 'Use soft-float'
- MIPS32r6 - Little-Endian, Soft-Float, 2008 NaN, o32 ABI
Select 'MIPS (little endian)' Target Architecture
Select 'mips 32r6' Target Architecture Variant
Enable 'Use soft-float'
- MIPS32r6 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI,
microMIPS
Select 'MIPS (little endian)' Target Architecture
Select 'mips 32r6' Target Architecture Variant
Disable 'Use soft-float'
Set BR2_TARGET_OPTIMIZATION to '-mmicromips'
- MIPS32r6 - Little-Endian, Soft-Float, 2008 NaN, o32 ABI,
microMIPS
Select 'MIPS (little endian)' Target Architecture
Select 'mips 32r6' Target Architecture Variant
Enable 'Use soft-float'
Set BR2_TARGET_OPTIMIZATION to '-mmicromips'
- MIPS64r6 - Big-Endian, Hard-Float, 2008 NaN, n32 ABI
Select 'MIPS64 (big endian)' Target Architecture
Select 'mips 64r6' Target Architecture Variant
Select 'n32' Target ABI
Disable 'Use soft-float'
- MIPS64r6 - Little-Endian, Hard-Float, 2008 NaN, n32 ABI
Select 'MIPS64 (little endian)' Target Architecture
Select 'mips 64r6' Target Architecture Variant
Select 'n32' Target ABI
Disable 'Use soft-float'
- MIPS64r6 - Big-Endian, Hard-Float, 2008 NaN, n64 ABI
Select 'MIPS64 (big endian)' Target Architecture
Select 'mips 64r6' Target Architecture Variant
Select 'n64' Target ABI
Disable 'Use soft-float'
- MIPS64r6 - Little-Endian, Hard-Float, 2008 NaN, n64 ABI
Select 'MIPS64 (little endian)' Target Architecture
Select 'mips 64r6' Target Architecture Variant
Select 'n64' Target ABI
Disable 'Use soft-float'

View File

@ -0,0 +1,9 @@
if BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS
config BR2_TOOLCHAIN_EXTERNAL_PREFIX
default "mips-img-linux-gnu"
config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
default "toolchain-external-codescape-img-mips"
endif

View File

@ -0,0 +1,4 @@
# Codescape toolchains from MIPS Tech LLC
# From: https://codescape.mips.com/components/toolchain/nanomips/2018.09-02/downloads.html
sha256 ac035f3b6a8767522977963d8e1490520d58bccca7956f4503a1eefff6492b71 Codescape.GNU.Tools.Package.2018.09-02.for.MIPS.IMG.Linux.CentOS-6.x86.tar.gz
sha256 09280f4fcbb993607905bf9a43bf5f3db2beed85726f0675b8453e19a9ddc429 Codescape.GNU.Tools.Package.2018.09-02.for.MIPS.IMG.Linux.CentOS-6.x86_64.tar.gz

View File

@ -0,0 +1,51 @@
################################################################################
#
# toolchain-external-codescape-img-mips
#
################################################################################
TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_VERSION = 2018.09-02
TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_SITE = https://codescape.mips.com/components/toolchain/$(TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_VERSION)
TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_STRIP_COMPONENTS = 2
ifeq ($(HOSTARCH),x86)
TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_SOURCE = Codescape.GNU.Tools.Package.$(TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_VERSION).for.MIPS.IMG.Linux.CentOS-6.x86.tar.gz
else
TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_SOURCE = Codescape.GNU.Tools.Package.$(TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_VERSION).for.MIPS.IMG.Linux.CentOS-6.x86_64.tar.gz
endif
# Special fixup for Codescape MIPS toolchains, that have bin-<abi> and
# sbin-<abi> directories. We create symlinks bin -> bin-<abi> and sbin
# -> sbin-<abi> so that the rest of Buildroot can find the toolchain
# tools in the appropriate location.
ifeq ($(BR2_MIPS_OABI32),y)
TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_BIN_DIR_SUFFIX = o32
else ifeq ($(BR2_MIPS_NABI32),y)
TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_BIN_DIR_SUFFIX = n32
else ifeq ($(BR2_MIPS_NABI64),y)
TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_BIN_DIR_SUFFIX = n64
endif
define TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_STAGING_FIXUPS
rmdir $(STAGING_DIR)/usr/bin $(STAGING_DIR)/usr/sbin
ln -sf bin-$(TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_BIN_DIR_SUFFIX) $(STAGING_DIR)/usr/bin
ln -sf sbin-$(TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_BIN_DIR_SUFFIX) $(STAGING_DIR)/usr/sbin
endef
# The Codescape toolchain uses a sysroot layout that places them
# side-by-side instead of nested like multilibs. A symlink is needed
# much like for the nested sysroots which are handled in
# copy_toolchain_sysroot but there is not enough information in there
# to determine whether the sysroot layout was nested or side-by-side.
# Add the symlink here for now.
define TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_SYMLINK
$(Q)ARCH_SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))"; \
ARCH_SUBDIR=`basename $${ARCH_SYSROOT_DIR}`; \
ln -snf . $(STAGING_DIR)/$${ARCH_SUBDIR}
endef
TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_POST_INSTALL_STAGING_HOOKS += \
TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_STAGING_FIXUPS \
TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_SYMLINK
$(eval $(toolchain-external-package))

View File

@ -0,0 +1,76 @@
config BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS
bool "Codescape MTI GNU Linux Toolchain 2018.09"
depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_7
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
depends on BR2_MIPS_CPU_MIPS32R2 || (BR2_MIPS_CPU_MIPS64R2 && !BR2_MIPS_SOFT_FLOAT) || \
BR2_MIPS_CPU_MIPS32R5 || (BR2_MIPS_CPU_MIPS64R5 && !BR2_MIPS_SOFT_FLOAT)
select BR2_TOOLCHAIN_EXTERNAL_GLIBC
select BR2_INSTALL_LIBSTDCPP
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
select BR2_TOOLCHAIN_GCC_AT_LEAST_6
select BR2_TOOLCHAIN_HAS_FORTRAN
select BR2_TOOLCHAIN_HAS_OPENMP
help
Codescape MTI GNU Linux Toolchain 2018.09 for the MIPS
architecture, from MIPS Tech LLC. It uses gcc 6.3.0,
binutils 2.28.51, glibc 2.20, gdb 7.9.1 and kernel headers
4.7. It has support for the following variants:
- MIPS32r2 - Big-Endian, Hard-Float, Legacy NaN, o32 ABI
Select 'MIPS (big endian)' Target Architecture
Select 'mips 32r2' Target Architecture Variant
Disable 'Use soft-float'
- MIPS32r2 - Big-Endian, Hard-Float, 2008 NaN, o32 ABI
Select 'MIPS (big endian)' Target Architecture
Select 'mips 32r2' Target Architecture Variant
Disable 'Use soft-float'
Set BR2_TARGET_OPTIMIZATION to '-mnan=2008'
- MIPS32r2 - Big-Endian, Soft-Float, Legacy NaN, o32 ABI
Select 'MIPS (big endian)' Target Architecture
Select 'mips 32r2' Target Architecture Variant
Enable 'Use soft-float'
- MIPS32r2 - Little-Endian, Hard-Float, Legacy NaN, o32 ABI
Select 'MIPS (little endian)' Target Architecture
Select 'mips 32r2' Target Architecture Variant
Disable 'Use soft-float'
- MIPS32r2 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI
Select 'MIPS (little endian)' Target Architecture
Select 'mips 32r2' Target Architecture Variant
Disable 'Use soft-float'
Set BR2_TARGET_OPTIMIZATION to '-mnan=2008'
- MIPS32r2 - Little-Endian, Soft-Float, Legacy NaN, o32 ABI
Select 'MIPS (little endian)' Target Architecture
Select 'mips 32r2' Target Architecture Variant
Enable 'Use soft-float'
- MIPS32r2 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI,
microMIPS
Select 'MIPS (little endian)' Target Architecture
Select 'mips 32r2' Target Architecture Variant
Enable 'Use soft-float'
Set BR2_TARGET_OPTIMIZATION to '-mmicromips'
- MIPS32r2 - Little-Endian, Soft-Float, Legacy NaN, o32 ABI,
microMIPS
Select 'MIPS (little endian)' Target Architecture
Select 'mips 32r2' Target Architecture Variant
Disable 'Use soft-float'
Set BR2_TARGET_OPTIMIZATION to '-mmicromips'
- MIPS64r2 - Big-Endian, Hard-Float, Legacy NaN, n32 ABI
Select 'MIPS64 (big endian)' Target Architecture
Select 'mips 64r2' Target Architecture Variant
Select 'n32' Target ABI
Disable 'Use soft-float'
- MIPS64r2 - Little-Endian, Hard-Float, Legacy NaN, n32 ABI
Select 'MIPS64 (little endian)' Target Architecture
Select 'mips 64r2' Target Architecture Variant
Select 'n32' Target ABI
Disable 'Use soft-float'
- MIPS64r2 - Big-Endian, Hard-Float, Legacy NaN, n64 ABI
Select 'MIPS64 (big endian)' Target Architecture
Select 'mips 64r2' Target Architecture Variant
Select 'n64' Target ABI
Disable 'Use soft-float'
- MIPS64r2 - Little-Endian, Hard-Float, Legacy NaN, n64 ABI
Select 'MIPS64 (little endian)' Target Architecture
Select 'mips 64r2' Target Architecture Variant
Select 'n64' Target ABI
Disable 'Use soft-float'

View File

@ -0,0 +1,9 @@
if BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS
config BR2_TOOLCHAIN_EXTERNAL_PREFIX
default "mips-mti-linux-gnu"
config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
default "toolchain-external-codescape-mti-mips"
endif

View File

@ -0,0 +1,4 @@
# Codescape toolchains from MIPS Tech LLC
# From: https://codescape.mips.com/components/toolchain/nanomips/2018.09-02/downloads.html
sha256 c883a404fd7ea5718e2249a530802e223381f2be52265f88e9b1ce7035c232f3 Codescape.GNU.Tools.Package.2018.09-02.for.MIPS.MTI.Linux.CentOS-6.x86.tar.gz
sha256 d6310a970b0a8a19ad8e0a2b3ead8c38ee90d0e284a9b2511200ce447f460d2c Codescape.GNU.Tools.Package.2018.09-02.for.MIPS.MTI.Linux.CentOS-6.x86_64.tar.gz

View File

@ -0,0 +1,51 @@
################################################################################
#
# toolchain-external-codescape-mti-mips
#
################################################################################
TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_VERSION = 2018.09-02
TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_SITE = https://codescape.mips.com/components/toolchain/$(TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_VERSION)
TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_STRIP_COMPONENTS = 2
ifeq ($(HOSTARCH),x86)
TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_SOURCE = Codescape.GNU.Tools.Package.$(TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_VERSION).for.MIPS.MTI.Linux.CentOS-6.x86.tar.gz
else
TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_SOURCE = Codescape.GNU.Tools.Package.$(TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_VERSION).for.MIPS.MTI.Linux.CentOS-6.x86_64.tar.gz
endif
# Special fixup for Codescape MIPS toolchains, that have bin-<abi> and
# sbin-<abi> directories. We create symlinks bin -> bin-<abi> and sbin
# -> sbin-<abi> so that the rest of Buildroot can find the toolchain
# tools in the appropriate location.
ifeq ($(BR2_MIPS_OABI32),y)
TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_BIN_DIR_SUFFIX = o32
else ifeq ($(BR2_MIPS_NABI32),y)
TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_BIN_DIR_SUFFIX = n32
else ifeq ($(BR2_MIPS_NABI64),y)
TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_BIN_DIR_SUFFIX = n64
endif
define TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_STAGING_FIXUPS
rmdir $(STAGING_DIR)/usr/bin $(STAGING_DIR)/usr/sbin
ln -sf bin-$(TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_BIN_DIR_SUFFIX) $(STAGING_DIR)/usr/bin
ln -sf sbin-$(TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_BIN_DIR_SUFFIX) $(STAGING_DIR)/usr/sbin
endef
# The Codescape toolchain uses a sysroot layout that places them
# side-by-side instead of nested like multilibs. A symlink is needed
# much like for the nested sysroots which are handled in
# copy_toolchain_sysroot but there is not enough information in there
# to determine whether the sysroot layout was nested or side-by-side.
# Add the symlink here for now.
define TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_SYMLINK
$(Q)ARCH_SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))"; \
ARCH_SUBDIR=`basename $${ARCH_SYSROOT_DIR}`; \
ln -snf . $(STAGING_DIR)/$${ARCH_SUBDIR}
endef
TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_POST_INSTALL_STAGING_HOOKS += \
TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_STAGING_FIXUPS \
TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_SYMLINK
$(eval $(toolchain-external-package))

View File

@ -0,0 +1,19 @@
config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64
bool "CodeSourcery AArch64 2014.11"
depends on BR2_aarch64
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_5
# a57/a53 and a72/a53 appeared in gcc-6 or were broken before
depends on !BR2_cortex_a57_a53 && !BR2_cortex_a72_a53
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
select BR2_TOOLCHAIN_EXTERNAL_GLIBC
select BR2_TOOLCHAIN_HAS_SSP
select BR2_INSTALL_LIBSTDCPP
select BR2_HOSTARCH_NEEDS_IA32_LIBS
select BR2_TOOLCHAIN_HAS_NATIVE_RPC
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
help
Sourcery CodeBench toolchain for the AArch64 architecture,
from Mentor Graphics. It uses gcc 4.9.1, binutils
2.24.51.20140217, glibc 2.20, gdb 7.7.50 and kernel headers
3.16.2.

View File

@ -0,0 +1,9 @@
if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64
config BR2_TOOLCHAIN_EXTERNAL_PREFIX
default "aarch64-amd-linux-gnu"
config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
default "toolchain-external-codesourcery-aarch64"
endif

View File

@ -0,0 +1,3 @@
# Locally calculated
sha256 405aada821146755c5f2df566375c2a682456d6b8451ee47b88cf1a52b093676 aarch64-amd-2014.11-95-aarch64-amd-linux-gnu-i686-pc-linux-gnu.tar.bz2
sha256 3f50dd6ee433eb5b6992a1071b988e50379a738f54f58722bc60081613764716 aarch64-amd-2014.11-95-aarch64-amd-linux-gnu.src.tar.bz2

View File

@ -0,0 +1,12 @@
################################################################################
#
# toolchain-external-codesourcery-aarch64
#
################################################################################
TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_SITE = https://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX)
TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_VERSION = 2014.11-95
TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_SOURCE = aarch64-amd-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2
TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_ACTUAL_SOURCE_TARBALL = aarch64-amd-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2
$(eval $(toolchain-external-package))

View File

@ -0,0 +1,35 @@
config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM
bool "Sourcery CodeBench ARM 2014.05"
depends on BR2_arm
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
depends on BR2_ARM_EABI
# Unsupported ARM cores
depends on !BR2_cortex_a12 && !BR2_cortex_a17 && !BR2_ARM_CPU_ARMV8A
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_3_13
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
help
Sourcery CodeBench toolchain for the ARM architecture, from
Mentor Graphics. It uses gcc 4.8.3, binutils 2.24.51, glibc
2.18 and gdb 7.7.50, kernel headers 3.13. It has support
for the following variants:
- ARMv5TE, little endian, soft-float, glibc
Select ARM926T, ARM10T, XScale or another ARMv5 core
Select BR2_SOFT_FLOAT
- ARMv4T, little endian, soft-float, glibc
Select ARM720T, ARM920T, ARM922T or another ARMv4 core
Select BR2_SOFT_FLOAT
- ARMv7-A, Thumb 2, little endian, soft-float, glibc
Select Cortex-A8, Cortex-A9 or another ARMv7-A core
Select BR2_SOFT_FLOAT
Set BR2_TARGET_OPTIMIZATION to -mthumb
comment "Sourcery CodeBench toolchains available for the EABI ABI"
depends on BR2_arm
depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9
depends on !BR2_ARM_EABI

View File

@ -0,0 +1,9 @@
if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM
config BR2_TOOLCHAIN_EXTERNAL_PREFIX
default "arm-none-linux-gnueabi"
config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
default "toolchain-external-codesourcery-arm"
endif

View File

@ -0,0 +1,3 @@
# Locally calculated
sha256 39ee0e789034334ecc89af94e838e3a4815400ac5ff980f808f466b04778532e arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
sha256 e16a5b1e41d7ff1e74161f9405182001bc8d1360d89564e73911032e6966cc0d arm-2014.05-29-arm-none-linux-gnueabi.src.tar.bz2

View File

@ -0,0 +1,13 @@
################################################################################
#
# toolchain-external-codesourcery-arm
#
################################################################################
TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_VERSION = 2014.05-29
TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_SITE = https://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX)
TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_SOURCE = arm-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2
TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_ACTUAL_SOURCE_TARBALL = arm-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2
$(eval $(toolchain-external-package))

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,520 @@
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"
choice
bool "External toolchain gcc version"
help
Set to the gcc version that is used by your external
toolchain.
config BR2_TOOLCHAIN_EXTERNAL_GCC_12
bool "12.x"
select BR2_TOOLCHAIN_GCC_AT_LEAST_12
config BR2_TOOLCHAIN_EXTERNAL_GCC_11
bool "11.x"
select BR2_TOOLCHAIN_GCC_AT_LEAST_11
config BR2_TOOLCHAIN_EXTERNAL_GCC_10
bool "10.x"
select BR2_TOOLCHAIN_GCC_AT_LEAST_10
config BR2_TOOLCHAIN_EXTERNAL_GCC_9
bool "9.x"
select BR2_TOOLCHAIN_GCC_AT_LEAST_9
config BR2_TOOLCHAIN_EXTERNAL_GCC_8
bool "8.x"
select BR2_TOOLCHAIN_GCC_AT_LEAST_8
config BR2_TOOLCHAIN_EXTERNAL_GCC_7
bool "7.x"
select BR2_TOOLCHAIN_GCC_AT_LEAST_7
config BR2_TOOLCHAIN_EXTERNAL_GCC_6
bool "6.x"
select BR2_TOOLCHAIN_GCC_AT_LEAST_6
config BR2_TOOLCHAIN_EXTERNAL_GCC_5
bool "5.x"
select BR2_TOOLCHAIN_GCC_AT_LEAST_5
config BR2_TOOLCHAIN_EXTERNAL_GCC_4_9
bool "4.9.x"
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
config BR2_TOOLCHAIN_EXTERNAL_GCC_4_8
bool "4.8.x"
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
config BR2_TOOLCHAIN_EXTERNAL_GCC_4_7
bool "4.7.x"
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
config BR2_TOOLCHAIN_EXTERNAL_GCC_4_6
bool "4.6.x"
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
config BR2_TOOLCHAIN_EXTERNAL_GCC_4_5
bool "4.5.x"
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
config BR2_TOOLCHAIN_EXTERNAL_GCC_4_4
bool "4.4.x"
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
config BR2_TOOLCHAIN_EXTERNAL_GCC_4_3
bool "4.3.x"
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
config BR2_TOOLCHAIN_EXTERNAL_GCC_OLD
bool "older"
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_5_17
bool "5.17.x or later"
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,15 @@
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"
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,15 @@
config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64
bool "Linaro AArch64 2018.05"
depends on BR2_aarch64
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
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,26 @@
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
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,25 @@
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
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"
select BR2_TOOLCHAIN_EXTERNAL_UCLIBC
select BR2_INSTALL_LIBSTDCPP
select BR2_ENABLE_LOCALE
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,555 @@
/**
* 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).
*
* If paranoid, exit in error instead of just printing a warning.
*/
static void check_unsafe_path(const char *arg,
const char *path,
int paranoid,
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: %s: unsafe header/library path used in cross-compilation: '%s%s%s'\n",
program_invocation_short_name,
paranoid ? "ERROR" : "WARNING",
arg,
arg_has_path ? "" : "' '", /* close single-quote, space, open single-quote */
arg_has_path ? "" : path); /* so that arg and path are properly quoted. */
if (paranoid)
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;
char *paranoid_wrapper;
int paranoid;
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
}
paranoid_wrapper = getenv("BR_COMPILER_PARANOID_UNSAFE_PATH");
if (paranoid_wrapper && strlen(paranoid_wrapper) > 0)
paranoid = 1;
else
paranoid = 0;
/* 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], paranoid, 0);
} else
check_unsafe_path(argv[i], argv[i] + opt->len, paranoid, 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 not defined, or its value is not 1,
* skip the ccache call */
char *br_use_ccache = getenv("BR2_USE_CCACHE");
if (!br_use_ccache || strncmp(br_use_ccache, "1", strlen("1")))
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
fprintf(stderr, "%sCCACHE_COMPILERCHECK='string:" BR_CCACHE_HASH "'",
(debug == 2) ? "\n " : " ");
#endif
#ifdef BR_CCACHE_BASEDIR
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");
}
#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
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

50
toolchain/toolchain.mk Normal file
View File

@ -0,0 +1,50 @@
################################################################################
#
# 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; \
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 "$(TOOLCHAIN_GLIBC_GCONV_LIBS)" \
<$(STAGING_DIR)/usr/lib/$${d}/gconv/gconv-modules \
>$(TARGET_DIR)/usr/lib/gconv/gconv-modules; \
fi
endef
TOOLCHAIN_TARGET_FINALIZE_HOOKS += TOOLCHAIN_GLIBC_COPY_GCONV_LIBS
endif

View File

@ -0,0 +1,50 @@
################################################################################
#
# 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
$(eval $(virtual-package))