arch: add support for mips32r6 and mips64r6 variants
- Add support for mips32r6 and mips64r6 target architecture variants - Disable unsupported gcc versions - Disable unsupported binutils versions - Disable unsupported external toolchains - Disable unsuported C libraries - Add a hook in order to make glibc compile for MIPS R6. [Thomas: slightly tweak the glibc hack explanation, to make it hopefully clearer.] Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
parent
3ec38bab0f
commit
99122d6780
@ -6,8 +6,8 @@ choice
|
|||||||
help
|
help
|
||||||
Specific CPU variant to use
|
Specific CPU variant to use
|
||||||
|
|
||||||
64bit cabable: 64, 64r2
|
64bit cabable: 64, 64r2, 64r6
|
||||||
non-64bit capable: 32, 32r2
|
non-64bit capable: 32, 32r2, 32r6
|
||||||
|
|
||||||
config BR2_mips_32
|
config BR2_mips_32
|
||||||
bool "mips 32"
|
bool "mips 32"
|
||||||
@ -15,12 +15,18 @@ config BR2_mips_32
|
|||||||
config BR2_mips_32r2
|
config BR2_mips_32r2
|
||||||
bool "mips 32r2"
|
bool "mips 32r2"
|
||||||
depends on !BR2_ARCH_IS_64
|
depends on !BR2_ARCH_IS_64
|
||||||
|
config BR2_mips_32r6
|
||||||
|
bool "mips 32r6"
|
||||||
|
depends on !BR2_ARCH_IS_64
|
||||||
config BR2_mips_64
|
config BR2_mips_64
|
||||||
bool "mips 64"
|
bool "mips 64"
|
||||||
depends on BR2_ARCH_IS_64
|
depends on BR2_ARCH_IS_64
|
||||||
config BR2_mips_64r2
|
config BR2_mips_64r2
|
||||||
bool "mips 64r2"
|
bool "mips 64r2"
|
||||||
depends on BR2_ARCH_IS_64
|
depends on BR2_ARCH_IS_64
|
||||||
|
config BR2_mips_64r6
|
||||||
|
bool "mips 64r6"
|
||||||
|
depends on BR2_ARCH_IS_64
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
|
|
||||||
@ -67,8 +73,10 @@ config BR2_ARCH_HAS_ATOMICS
|
|||||||
config BR2_GCC_TARGET_ARCH
|
config BR2_GCC_TARGET_ARCH
|
||||||
default "mips32" if BR2_mips_32
|
default "mips32" if BR2_mips_32
|
||||||
default "mips32r2" if BR2_mips_32r2
|
default "mips32r2" if BR2_mips_32r2
|
||||||
|
default "mips32r6" if BR2_mips_32r6
|
||||||
default "mips64" if BR2_mips_64
|
default "mips64" if BR2_mips_64
|
||||||
default "mips64r2" if BR2_mips_64r2
|
default "mips64r2" if BR2_mips_64r2
|
||||||
|
default "mips64r6" if BR2_mips_64r6
|
||||||
|
|
||||||
config BR2_MIPS_OABI32
|
config BR2_MIPS_OABI32
|
||||||
bool
|
bool
|
||||||
|
@ -10,11 +10,15 @@ choice
|
|||||||
config BR2_BINUTILS_VERSION_2_23_X
|
config BR2_BINUTILS_VERSION_2_23_X
|
||||||
depends on !BR2_aarch64 && !BR2_microblaze && \
|
depends on !BR2_aarch64 && !BR2_microblaze && \
|
||||||
!BR2_powerpc64le && !BR2_nios2
|
!BR2_powerpc64le && !BR2_nios2
|
||||||
|
# Unsupported for MIPS R6
|
||||||
|
depends on !BR2_mips_32r6 && !BR2_mips_64r6
|
||||||
bool "binutils 2.23.2"
|
bool "binutils 2.23.2"
|
||||||
|
|
||||||
config BR2_BINUTILS_VERSION_2_24_X
|
config BR2_BINUTILS_VERSION_2_24_X
|
||||||
# supported, but broken on Nios-II and powerpc64le
|
# supported, but broken on Nios-II and powerpc64le
|
||||||
depends on !BR2_nios2 && !BR2_powerpc64le
|
depends on !BR2_nios2 && !BR2_powerpc64le
|
||||||
|
# Unsupported for MIPS R6
|
||||||
|
depends on !BR2_mips_32r6 && !BR2_mips_64r6
|
||||||
bool "binutils 2.24"
|
bool "binutils 2.24"
|
||||||
|
|
||||||
config BR2_BINUTILS_VERSION_2_25_X
|
config BR2_BINUTILS_VERSION_2_25_X
|
||||||
|
@ -31,6 +31,8 @@ choice
|
|||||||
depends on !BR2_x86_corei7 && !BR2_x86_jaguar && !BR2_x86_steamroller
|
depends on !BR2_x86_corei7 && !BR2_x86_jaguar && !BR2_x86_steamroller
|
||||||
# ARM EABIhf support appeared in gcc 4.6
|
# ARM EABIhf support appeared in gcc 4.6
|
||||||
depends on !BR2_ARM_EABIHF
|
depends on !BR2_ARM_EABIHF
|
||||||
|
# Unsupported for MIPS R6
|
||||||
|
depends on !BR2_mips_32r6 && !BR2_mips_64r6
|
||||||
# musl patches only for gcc 4.7+
|
# musl patches only for gcc 4.7+
|
||||||
depends on !BR2_TOOLCHAIN_BUILDROOT_MUSL
|
depends on !BR2_TOOLCHAIN_BUILDROOT_MUSL
|
||||||
select BR2_GCC_NEEDS_MPC
|
select BR2_GCC_NEEDS_MPC
|
||||||
@ -50,6 +52,8 @@ choice
|
|||||||
depends on !BR2_sparc_leon3
|
depends on !BR2_sparc_leon3
|
||||||
# Broken or unsupported x86 cores
|
# Broken or unsupported x86 cores
|
||||||
depends on !BR2_x86_jaguar && !BR2_x86_steamroller
|
depends on !BR2_x86_jaguar && !BR2_x86_steamroller
|
||||||
|
# Unsupported for MIPS R6
|
||||||
|
depends on !BR2_mips_32r6 && !BR2_mips_64r6
|
||||||
select BR2_GCC_NEEDS_MPC
|
select BR2_GCC_NEEDS_MPC
|
||||||
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
|
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
|
||||||
|
|
||||||
@ -64,6 +68,8 @@ choice
|
|||||||
depends on !BR2_powerpc_power8
|
depends on !BR2_powerpc_power8
|
||||||
# gcc-4.8.x + binutils-2.25 is broken for MIPS
|
# gcc-4.8.x + binutils-2.25 is broken for MIPS
|
||||||
depends on !((BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el) && BR2_BINUTILS_VERSION_2_25_X)
|
depends on !((BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el) && BR2_BINUTILS_VERSION_2_25_X)
|
||||||
|
# Unsupported for MIPS R6
|
||||||
|
depends on !BR2_mips_32r6 && !BR2_mips_64r6
|
||||||
select BR2_GCC_NEEDS_MPC
|
select BR2_GCC_NEEDS_MPC
|
||||||
select BR2_GCC_SUPPORTS_GRAPHITE
|
select BR2_GCC_SUPPORTS_GRAPHITE
|
||||||
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
|
select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
|
||||||
@ -80,6 +86,8 @@ choice
|
|||||||
bool "gcc 4.9.x"
|
bool "gcc 4.9.x"
|
||||||
# Broken or unsupported architectures
|
# Broken or unsupported architectures
|
||||||
depends on !BR2_arc
|
depends on !BR2_arc
|
||||||
|
# Unsupported for MIPS R6
|
||||||
|
depends on !BR2_mips_32r6 && !BR2_mips_64r6
|
||||||
# PR60102 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60102
|
# PR60102 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60102
|
||||||
select BR2_GCC_NEEDS_MPC
|
select BR2_GCC_NEEDS_MPC
|
||||||
select BR2_GCC_SUPPORTS_GRAPHITE
|
select BR2_GCC_SUPPORTS_GRAPHITE
|
||||||
|
@ -121,4 +121,34 @@ define GLIBC_INSTALL_TARGET_CMDS
|
|||||||
done
|
done
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
# MIPS R6 requires to have NaN2008 support which is currently not
|
||||||
|
# supported by the Linux kernel. In order to prevent building the
|
||||||
|
# glibc against kernels not having NaN2008 support on platforms that
|
||||||
|
# requires it, glibc currently checks for an (inexisting) 10.0.0
|
||||||
|
# kernel headers version.
|
||||||
|
#
|
||||||
|
# Since in practice the kernel support for NaN2008 is not really
|
||||||
|
# required for things to work properly, we adjust the glibc check to
|
||||||
|
# make it believe that NaN2008 support was added in the kernel
|
||||||
|
# starting from version 4.0.0.
|
||||||
|
#
|
||||||
|
# In general the compatibility issues introduced by mis-matched NaN
|
||||||
|
# encodings will not cause a problem as signalling NaNs are rarely used
|
||||||
|
# in average code. For MIPS R6 there isn't actually any compatibility
|
||||||
|
# issue as the hardware is always NaN2008 and software is always
|
||||||
|
# NaN2008. The problem only comes from when older MIPS code is linked in
|
||||||
|
# via a DSO and multiple NaN encodings are introduced. Since Buildroot
|
||||||
|
# is intended to have all code built from source then this scenario is
|
||||||
|
# highly unlikely. The failure mode, if it ever occurs, would be either
|
||||||
|
# that a signalling NaN fails to raise an invalid operation exception or
|
||||||
|
# (more likely) an ordinary NaN raises an invalid operation exception.
|
||||||
|
ifeq ($(BR2_mips_32r6)$(BR2_mips_64r6),y)
|
||||||
|
define GLIBC_FIX_MIPS_R6
|
||||||
|
$(SED) 's#10.0.0#4.0.0#' \
|
||||||
|
$(@D)/sysdeps/unix/sysv/linux/mips/configure \
|
||||||
|
$(@D)/sysdeps/unix/sysv/linux/mips/configure.ac
|
||||||
|
endef
|
||||||
|
GLIBC_POST_EXTRACT_HOOKS += GLIBC_FIX_MIPS_R6
|
||||||
|
endif
|
||||||
|
|
||||||
$(eval $(autotools-package))
|
$(eval $(autotools-package))
|
||||||
|
@ -34,6 +34,8 @@ config BR2_TOOLCHAIN_BUILDROOT_UCLIBC
|
|||||||
BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el || \
|
BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el || \
|
||||||
BR2_powerpc || BR2_sh2a || BR2_sh4 || BR2_sh4eb || \
|
BR2_powerpc || BR2_sh2a || BR2_sh4 || BR2_sh4eb || \
|
||||||
BR2_sparc || BR2_xtensa || BR2_x86_64
|
BR2_sparc || BR2_xtensa || BR2_x86_64
|
||||||
|
# Unsupported for MIPS R6
|
||||||
|
depends on !BR2_mips_32r6 && !BR2_mips_64r6
|
||||||
help
|
help
|
||||||
This option selects uClibc as the C library for the
|
This option selects uClibc as the C library for the
|
||||||
cross-compilation toolchain.
|
cross-compilation toolchain.
|
||||||
@ -90,6 +92,8 @@ config BR2_TOOLCHAIN_BUILDROOT_MUSL
|
|||||||
BR2_microblaze || BR2_mips || BR2_mipsel || BR2_powerpc || \
|
BR2_microblaze || BR2_mips || BR2_mipsel || BR2_powerpc || \
|
||||||
BR2_sh || BR2_x86_64
|
BR2_sh || BR2_x86_64
|
||||||
depends on !BR2_powerpc_SPE # not supported, build breaks
|
depends on !BR2_powerpc_SPE # not supported, build breaks
|
||||||
|
# Unsupported for MIPS R6
|
||||||
|
depends on !BR2_mips_32r6 && !BR2_mips_64r6
|
||||||
select BR2_TOOLCHAIN_USES_MUSL
|
select BR2_TOOLCHAIN_USES_MUSL
|
||||||
help
|
help
|
||||||
This option selects musl as the C library for the
|
This option selects musl as the C library for the
|
||||||
|
@ -196,6 +196,8 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201505
|
|||||||
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
|
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
|
||||||
depends on !BR2_MIPS_NABI32
|
depends on !BR2_MIPS_NABI32
|
||||||
depends on !BR2_STATIC_LIBS
|
depends on !BR2_STATIC_LIBS
|
||||||
|
# Unsupported for MIPS R6
|
||||||
|
depends on !BR2_mips_32r6 && !BR2_mips_64r6
|
||||||
select BR2_TOOLCHAIN_EXTERNAL_GLIBC
|
select BR2_TOOLCHAIN_EXTERNAL_GLIBC
|
||||||
select BR2_TOOLCHAIN_HAS_NATIVE_RPC
|
select BR2_TOOLCHAIN_HAS_NATIVE_RPC
|
||||||
select BR2_INSTALL_LIBSTDCPP
|
select BR2_INSTALL_LIBSTDCPP
|
||||||
@ -282,6 +284,8 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201411
|
|||||||
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
|
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
|
||||||
depends on !BR2_MIPS_NABI32
|
depends on !BR2_MIPS_NABI32
|
||||||
depends on !BR2_STATIC_LIBS
|
depends on !BR2_STATIC_LIBS
|
||||||
|
# Unsupported for MIPS R6
|
||||||
|
depends on !BR2_mips_32r6 && !BR2_mips_64r6
|
||||||
select BR2_TOOLCHAIN_EXTERNAL_GLIBC
|
select BR2_TOOLCHAIN_EXTERNAL_GLIBC
|
||||||
select BR2_TOOLCHAIN_HAS_NATIVE_RPC
|
select BR2_TOOLCHAIN_HAS_NATIVE_RPC
|
||||||
select BR2_INSTALL_LIBSTDCPP
|
select BR2_INSTALL_LIBSTDCPP
|
||||||
@ -368,6 +372,8 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201405
|
|||||||
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
|
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
|
||||||
depends on !BR2_MIPS_NABI32
|
depends on !BR2_MIPS_NABI32
|
||||||
depends on !BR2_STATIC_LIBS
|
depends on !BR2_STATIC_LIBS
|
||||||
|
# Unsupported for MIPS R6
|
||||||
|
depends on !BR2_mips_32r6 && !BR2_mips_64r6
|
||||||
select BR2_TOOLCHAIN_EXTERNAL_GLIBC
|
select BR2_TOOLCHAIN_EXTERNAL_GLIBC
|
||||||
select BR2_TOOLCHAIN_HAS_NATIVE_RPC
|
select BR2_TOOLCHAIN_HAS_NATIVE_RPC
|
||||||
select BR2_INSTALL_LIBSTDCPP
|
select BR2_INSTALL_LIBSTDCPP
|
||||||
@ -824,6 +830,8 @@ config BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS
|
|||||||
(BR2_i386 && !BR2_x86_i386) || BR2_microblazebe || BR2_mips || \
|
(BR2_i386 && !BR2_x86_i386) || BR2_microblazebe || BR2_mips || \
|
||||||
BR2_mipsel || (BR2_powerpc && BR2_powerpc_CLASSIC) || BR2_x86_64
|
BR2_mipsel || (BR2_powerpc && BR2_powerpc_CLASSIC) || BR2_x86_64
|
||||||
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
|
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
|
||||||
|
# Unsupported for MIPS R6
|
||||||
|
depends on !BR2_mips_32r6 && !BR2_mips_64r6
|
||||||
select BR2_TOOLCHAIN_EXTERNAL_MUSL
|
select BR2_TOOLCHAIN_EXTERNAL_MUSL
|
||||||
select BR2_INSTALL_LIBSTDCPP
|
select BR2_INSTALL_LIBSTDCPP
|
||||||
select BR2_HOSTARCH_NEEDS_IA32_LIBS
|
select BR2_HOSTARCH_NEEDS_IA32_LIBS
|
||||||
|
Loading…
Reference in New Issue
Block a user