toolchain: allow side by side sysroot directories
PATCH v4 1/3 toolchain: allow side by side sysroot directories
Currently our toolchain infrastructure assumes that every toolchain has nested sysroot directories. However that's not true for all of them. The Codescape toolchains from Imagination Technologies use a side by side sysroot structure, for instance.
This patch allows our toolchain infrastructure to detect what kind of sysroot structure we have (nested or side by side) and performs the appropriate actions.
---
Changes v1 -> v4:
- This patch didn't exist before. It has been introduced in v4.
toolchain/helpers.mk | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-)
toolchain/helpers.mk +17 -11
@@ -142,18 +142,24 @@ copy_toolchain_sysroot = \ $${ARCH_SYSROOT_DIR}/$$i/ $(STAGING_DIR)/$$i/ ; \ fi ; \ done ; \ - 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}` ; \ + SYSROOT_DIR_CANON=`readlink -f $${SYSROOT_DIR}` ; \ + ARCH_SYSROOT_DIR_CANON=`readlink -f $${ARCH_SYSROOT_DIR}` ; \ + if [ $${SYSROOT_DIR_CANON} != $${ARCH_SYSROOT_DIR_CANON} ] ; then \ relpath="./" ; \ - nbslashs=`printf $${ARCH_SUBDIR} | sed 's%[^/]%%g' | wc -c` ; \ - for slash in `seq 1 $${nbslashs}` ; do \ - relpath=$${relpath}"../" ; \ - done ; \ - ln -s $${relpath} $(STAGING_DIR)/$${ARCH_SUBDIR} ; \ - echo "Symlinking $(STAGING_DIR)/$${ARCH_SUBDIR} -> $${relpath}" ; \ + if [ $${ARCH_SYSROOT_DIR_CANON:0:$${\#SYSROOT_DIR_CANON}} == $${SYSROOT_DIR_CANON} ] ; 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}` ; \ + nbslashs=`printf $${ARCH_SUBDIR} | sed 's%[^/]%%g' | wc -c` ; \ + for slash in `seq 1 $${nbslashs}` ; do \ + relpath=$${relpath}"../" ; \ + done ; \ + ln -s $${relpath} $(STAGING_DIR)/$${ARCH_SUBDIR} ; \ + echo "Symlinking $(STAGING_DIR)/$${ARCH_SUBDIR} -> $${relpath}" ; \ + elif [ `dirname $${ARCH_SYSROOT_DIR_CANON}` == `dirname $${SYSROOT_DIR_CANON}` ] ; then \ + ln -snf $${relpath} $(STAGING_DIR)/`basename $${ARCH_SYSROOT_DIR_CANON}` ; \ + fi ; \ fi ; \ if test -n "$${SUPPORT_LIB_DIR}" ; then \ cp -a $${SUPPORT_LIB_DIR}/* $(STAGING_DIR)/lib/ ; \
Signature · 1 line
2.4.10
PATCH v4 2/3 toolchain/external: add MIPS Codescape MTI GNU Linux toolchain
---
Changes v3 -> v4:
- Move the changes to helpers.mk into a separate patch.
Changes v2 -> v3:
- Drop the hook to create the link for the side by side sysroots in the toolchain-external.mk and create it in the helpers.mk. Also remove the unnecessary comment since the helpers.mk code doesn't assume a nested sysroot anymore.
toolchain/toolchain-external/Config.in | 52 ++++++++++++++++++++++ .../toolchain-external/toolchain-external.hash | 4 ++ toolchain/toolchain-external/toolchain-external.mk | 4 ++ 3 files changed, 60 insertions(+)
toolchain/toolchain-external/Config.in +52 -0
@@ -236,6 +236,57 @@ config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE_201109 This toolchain uses software-floating point. +config BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS201506 + bool "Codescape MTI GNU Linux Toolchain 2015.06" + depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on !BR2_MIPS_SOFT_FLOAT + depends on BR2_mips_32r2 || BR2_mips_64r2 + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + help + Codescape MTI GNU Linux Toolchain 2015.06 for the MIPS + architecture, from Imagination Technologies. It uses gcc + 4.9.2, binutils 2.24.90, glibc 2.20, gdb 7.9.1 and kernel + headers 4.0. It has support for the following variants: + - MIPS32r2 - Big-Endian, o32 + Select 'MIPS (big endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + - MIPS32r2 - Little-Endian, o32 + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + - MIPS32r2 - Big-Endian, 2008 NaN, o32 + Select 'MIPS (big endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + Set BR2_TARGET_OPTIMIZATION to '-mnan=2008' + - MIPS32r2 - Little-Endian, 2008 NaN, o32 + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + Set BR2_TARGET_OPTIMIZATION to '-mnan=2008' + - MIPS32r2 - Little-Endian, o32, microMIPS + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + Set BR2_TARGET_OPTIMIZATION to '-mmicromips' + - MIPS64r2 - Big-Endian, n32 + Select 'MIPS64 (big endian)' Target Architecture + Select 'mips 64r2' Target Architecture Variant + Select 'n32' Target ABI + - MIPS64r2 - Little-Endian, n32 + Select 'MIPS64 (little endian)' Target Architecture + Select 'mips 64r2' Target Architecture Variant + Select 'n32' Target ABI + - MIPS64r2 - Big-Endian, n64 + Select 'MIPS64 (big endian)' Target Architecture + Select 'mips 64r2' Target Architecture Variant + Select 'n64' Target ABI + - MIPS64r2 - Little-Endian, n64 + Select 'MIPS64 (little endian)' Target Architecture + Select 'mips 64r2' Target Architecture Variant + Select 'n64' Target ABI + config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201505 bool "Sourcery CodeBench MIPS 2015.05" depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
@@ -987,6 +1038,7 @@ config BR2_TOOLCHAIN_EXTERNAL_PREFIX default "arm-arago-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE_201109 default "aarch64-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64 default "aarch64-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64 + default "mips-mti-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS201506 default "mips-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201405 default "mips-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201411 default "mips-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201505
toolchain/toolchain-external/toolchain-external.hash +4 -0
@@ -56,6 +56,10 @@ sha256 24b86799a6c64380c740bf31a700b46e854fc0a821da2341e9868f0196c864de gcc-lin sha256 3954f496ab01de67241109e82abfaa9b7625fdab4f05e79e7902e9814a07b832 gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux.tar.xz sha256 b9137008744d9009877f662dbac7481d673cdcb1798e727e325a37c98a0f63da gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz +# Codescape toolchains from Imagination Technologies +# From: http://codescape-mips-sdk.imgtec.com/components/toolchain/2015.06-05/ +sha256 f2d12dde626b750987d37ba6c73c6e11839850add94b0d4e4cf77917c1b0944f Codescape.GNU.Tools.Package.2015.06-05.for.MIPS.MTI.Linux.CentOS-5.x86.tar.gz + # Synopsys DesignWare ARC toolchains sha256 1fa4ea2c8616623205f1c7beca02ea31b019099528a7433e5b020b0876b93bf3 arc_gnu_2014.12_prebuilt_uclibc_le_arc700_linux_install.tar.gz sha256 1080f07fcae2bfc176a3ea8d30b9ed8eaecab70fb786639d6ec70cae8322df10 arc_gnu_2014.12_prebuilt_uclibc_be_arc700_linux_install.tar.gz
toolchain/toolchain-external/toolchain-external.mk +4 -0
@@ -341,6 +341,10 @@ TOOLCHAIN_EXTERNAL_SITE = http://releases.linaro.org/components/toolchain/binari TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-5.1-2015.08-x86_64_armeb-linux-gnueabihf.tar.xz endif TOOLCHAIN_EXTERNAL_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_LINARO_ARMEBHF_SYMLINK +else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS201506),y) +TOOLCHAIN_EXTERNAL_SITE = http://codescape-mips-sdk.imgtec.com/components/toolchain/2015.06-05 +TOOLCHAIN_EXTERNAL_SOURCE = Codescape.GNU.Tools.Package.2015.06-05.for.MIPS.MTI.Linux.CentOS-5.x86.tar.gz +TOOLCHAIN_EXTERNAL_STRIP_COMPONENTS = 2 else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201405),y) TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/mips-linux-gnu TOOLCHAIN_EXTERNAL_SOURCE = mips-2014.05-27-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2
Signature · 1 line
2.4.10
PATCH v4 2/3 toolchain/external: add MIPS Codescape MTI GNU Linux toolchain
Hi Vicente,
Le 15/12/2015 17:21, Vicente Olivert Riera a ?crit :
Quoted 21 lines
Signed-off-by Vicente Olivert Riera <[email protected]>---
Changes v3 -> v4:
- Move the changes to helpers.mk into a separate patch.Changes v2 -> v3:
- Drop the hook to create the link for the side by side sysroots in the toolchain-external.mk and create it in the helpers.mk. Also remove the unnecessary comment since the helpers.mk code doesn't assume a nested sysroot anymore.toolchain/toolchain-external/Config.in | 52 ++++++++++++++++++++++ .../toolchain-external/toolchain-external.hash | 4 ++ toolchain/toolchain-external/toolchain-external.mk | 4 ++ 3 files changed, 60 insertions(+)toolchain/toolchain-external/Config.in +0
-0
toolchain/toolchain-external/Config.in config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE_201109 · line 239
Quoted 4 lines
toolchain/toolchain-external/Config.in +1
-0@@ -236,6 +236,57 @@ config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE_201109 This toolchain uses software-floating point. +config BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS201506
We recently removed the version number from Kconfig symbols. See:
http://elinux.org/index.php?title=Buildroot:DeveloperDaysELCE2015#Report
Also, the rest of the patch doesn't apply cleanly due to these changes. Can you send an updated version ? Thanks.
Same for patch 3/3.
Best regards,
Romain
Quoted 92 lines
toolchain/toolchain-external/Config.in +51
-0+ bool "Codescape MTI GNU Linux Toolchain 2015.06" + depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on !BR2_MIPS_SOFT_FLOAT + depends on BR2_mips_32r2 || BR2_mips_64r2 + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + help + Codescape MTI GNU Linux Toolchain 2015.06 for the MIPS + architecture, from Imagination Technologies. It uses gcc + 4.9.2, binutils 2.24.90, glibc 2.20, gdb 7.9.1 and kernel + headers 4.0. It has support for the following variants: + - MIPS32r2 - Big-Endian, o32 + Select 'MIPS (big endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + - MIPS32r2 - Little-Endian, o32 + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + - MIPS32r2 - Big-Endian, 2008 NaN, o32 + Select 'MIPS (big endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + Set BR2_TARGET_OPTIMIZATION to '-mnan=2008' + - MIPS32r2 - Little-Endian, 2008 NaN, o32 + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + Set BR2_TARGET_OPTIMIZATION to '-mnan=2008' + - MIPS32r2 - Little-Endian, o32, microMIPS + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + Set BR2_TARGET_OPTIMIZATION to '-mmicromips' + - MIPS64r2 - Big-Endian, n32 + Select 'MIPS64 (big endian)' Target Architecture + Select 'mips 64r2' Target Architecture Variant + Select 'n32' Target ABI + - MIPS64r2 - Little-Endian, n32 + Select 'MIPS64 (little endian)' Target Architecture + Select 'mips 64r2' Target Architecture Variant + Select 'n32' Target ABI + - MIPS64r2 - Big-Endian, n64 + Select 'MIPS64 (big endian)' Target Architecture + Select 'mips 64r2' Target Architecture Variant + Select 'n64' Target ABI + - MIPS64r2 - Little-Endian, n64 + Select 'MIPS64 (little endian)' Target Architecture + Select 'mips 64r2' Target Architecture Variant + Select 'n64' Target ABI + config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201505 bool "Sourcery CodeBench MIPS 2015.05" depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el@@ -987,6 +1038,7 @@ config BR2_TOOLCHAIN_EXTERNAL_PREFIX default "arm-arago-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE_201109 default "aarch64-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64 default "aarch64-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64 + default "mips-mti-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS201506 default "mips-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201405 default "mips-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201411 default "mips-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201505toolchain/toolchain-external/toolchain-external.hash +4
-0@@ -56,6 +56,10 @@ sha256 24b86799a6c64380c740bf31a700b46e854fc0a821da2341e9868f0196c864de gcc-lin sha256 3954f496ab01de67241109e82abfaa9b7625fdab4f05e79e7902e9814a07b832 gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux.tar.xz sha256 b9137008744d9009877f662dbac7481d673cdcb1798e727e325a37c98a0f63da gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz +# Codescape toolchains from Imagination Technologies +# From: http://codescape-mips-sdk.imgtec.com/components/toolchain/2015.06-05/ +sha256 f2d12dde626b750987d37ba6c73c6e11839850add94b0d4e4cf77917c1b0944f Codescape.GNU.Tools.Package.2015.06-05.for.MIPS.MTI.Linux.CentOS-5.x86.tar.gz + # Synopsys DesignWare ARC toolchains sha256 1fa4ea2c8616623205f1c7beca02ea31b019099528a7433e5b020b0876b93bf3 arc_gnu_2014.12_prebuilt_uclibc_le_arc700_linux_install.tar.gz sha256 1080f07fcae2bfc176a3ea8d30b9ed8eaecab70fb786639d6ec70cae8322df10 arc_gnu_2014.12_prebuilt_uclibc_be_arc700_linux_install.tar.gztoolchain/toolchain-external/toolchain-external.mk +4
-0@@ -341,6 +341,10 @@ TOOLCHAIN_EXTERNAL_SITE = http://releases.linaro.org/components/toolchain/binari TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-5.1-2015.08-x86_64_armeb-linux-gnueabihf.tar.xz endif TOOLCHAIN_EXTERNAL_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_LINARO_ARMEBHF_SYMLINK +else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS201506),y) +TOOLCHAIN_EXTERNAL_SITE = http://codescape-mips-sdk.imgtec.com/components/toolchain/2015.06-05 +TOOLCHAIN_EXTERNAL_SOURCE = Codescape.GNU.Tools.Package.2015.06-05.for.MIPS.MTI.Linux.CentOS-5.x86.tar.gz +TOOLCHAIN_EXTERNAL_STRIP_COMPONENTS = 2 else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201405),y) TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/mips-linux-gnu TOOLCHAIN_EXTERNAL_SOURCE = mips-2014.05-27-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2
PATCH v4 2/3 toolchain/external: add MIPS Codescape MTI GNU Linux toolchain
In reply to Vicente Olivert RieraVicente,
Quoted 4 lines · Vicente Olivert Riera
Signed-off-by Vicente Olivert Riera <[email protected]>---
Changes v3 -> v4:
- Move the changes to helpers.mk into a separate patch.
I've applied patches 2 and 3 to add the two MIPS Codescape toolchains, after rebasing on top of master, and removing the version number of the Config.in options.
Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH v4 2/3 toolchain/external: add MIPS Codescape MTI GNU Linux toolchain
Hi Thomas,
Quoted 11 lines · Thomas Petazzoni
Vicente,
Quoted 4 lines · Vicente Olivert Riera
Signed-off-by Vicente Olivert Riera <[email protected]>---
Changes v3 -> v4:
- Move the changes to helpers.mk into a separate patch.I've applied patches 2 and 3 to add the two MIPS Codescape toolchains, after rebasing on top of master, and removing the version number of the Config.in options.
Yeah, the patches were sent when we were supporting different versions of the same toolchain, so the version number was necessary. But now that we only support one version of each one is no longer necessary to have the version number in the name.
Thanks!
Vincent.
Quoted 5 lines
Thanks!
Thomas
PATCH v4 3/3 toolchain/external: add MIPS Codescape IMG GNU Linux toolchain
In reply to Vicente Olivert Riera---
Changes v3 -> v4:
- No changes.
Changes v2 -> v3:
- Remove the hook to create the sysroot link. This is automatically done in the helpers.mk. Due to that, the explanation in the commit log about reusing the hook is no longer valid, so drop it.
toolchain/toolchain-external/Config.in | 44 ++++++++++++++++++++++ .../toolchain-external/toolchain-external.hash | 1 + toolchain/toolchain-external/toolchain-external.mk | 4 ++ 3 files changed, 49 insertions(+)
toolchain/toolchain-external/Config.in +44 -0
@@ -287,6 +287,49 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS201506 Select 'mips 64r2' Target Architecture Variant Select 'n64' Target ABI +config BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS201506 + bool "Codescape IMG GNU Linux Toolchain 2015.06" + depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on !BR2_MIPS_SOFT_FLOAT + depends on BR2_mips_32r6 || BR2_mips_64r6 + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + help + Codescape IMG GNU Linux Toolchain 2015.06 for the MIPS + architecture, from Imagination Technologies. It uses gcc + 4.9.2, binutils 2.24.90, glibc 2.20, gdb 7.9.1 and kernel + headers 4.0. It has support for the following variants: + - MIPS32r6 - Big-Endian, o32 + Select 'MIPS (big endian)' Target Architecture + Select 'mips 32r6' Target Architecture Variant + - MIPS32r6 - Little-Endian, o32 + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r6' Target Architecture Variant + - MIPS32r6 - Little-Endian, o32, microMIPS + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r6' Target Architecture Variant + Set BR2_TARGET_OPTIMIZATION to '-mmicromips' + - MIPS64r6 - Big-Endian, n32 + Select 'MIPS64 (big endian)' Target Architecture + Select 'mips 64r6' Target Architecture Variant + Select 'n32' Target ABI + - MIPS64r6 - Little-Endian, n32 + Select 'MIPS64 (little endian)' Target Architecture + Select 'mips 64r6' Target Architecture Variant + Select 'n32' Target ABI + - MIPS64r6 - Big-Endian, n64 + Select 'MIPS64 (big endian)' Target Architecture + Select 'mips 64r6' Target Architecture Variant + Select 'n64' Target ABI + - MIPS64r6 - Little-Endian, n64 + Select 'MIPS64 (little endian)' Target Architecture + Select 'mips 64r6' Target Architecture Variant + Select 'n64' Target ABI + config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201505 bool "Sourcery CodeBench MIPS 2015.05" depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
@@ -1039,6 +1082,7 @@ config BR2_TOOLCHAIN_EXTERNAL_PREFIX default "aarch64-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64 default "aarch64-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64 default "mips-mti-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS201506 + default "mips-img-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS201506 default "mips-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201405 default "mips-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201411 default "mips-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201505
toolchain/toolchain-external/toolchain-external.hash +1 -0
@@ -59,6 +59,7 @@ sha256 b9137008744d9009877f662dbac7481d673cdcb1798e727e325a37c98a0f63da gcc-lin # Codescape toolchains from Imagination Technologies # From: http://codescape-mips-sdk.imgtec.com/components/toolchain/2015.06-05/ sha256 f2d12dde626b750987d37ba6c73c6e11839850add94b0d4e4cf77917c1b0944f Codescape.GNU.Tools.Package.2015.06-05.for.MIPS.MTI.Linux.CentOS-5.x86.tar.gz +sha256 545923cf40101b5de6b1e0fdf124aceba7ab27daf6c755aecf01d2c886715409 Codescape.GNU.Tools.Package.2015.06-05.for.MIPS.IMG.Linux.CentOS-5.x86.tar.gz # Synopsys DesignWare ARC toolchains sha256 1fa4ea2c8616623205f1c7beca02ea31b019099528a7433e5b020b0876b93bf3 arc_gnu_2014.12_prebuilt_uclibc_le_arc700_linux_install.tar.gz
toolchain/toolchain-external/toolchain-external.mk +4 -0
@@ -345,6 +345,10 @@ else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS201506),y) TOOLCHAIN_EXTERNAL_SITE = http://codescape-mips-sdk.imgtec.com/components/toolchain/2015.06-05 TOOLCHAIN_EXTERNAL_SOURCE = Codescape.GNU.Tools.Package.2015.06-05.for.MIPS.MTI.Linux.CentOS-5.x86.tar.gz TOOLCHAIN_EXTERNAL_STRIP_COMPONENTS = 2 +else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS201506),y) +TOOLCHAIN_EXTERNAL_SITE = http://codescape-mips-sdk.imgtec.com/components/toolchain/2015.06-05 +TOOLCHAIN_EXTERNAL_SOURCE = Codescape.GNU.Tools.Package.2015.06-05.for.MIPS.IMG.Linux.CentOS-5.x86.tar.gz +TOOLCHAIN_EXTERNAL_STRIP_COMPONENTS = 2 else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201405),y) TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/mips-linux-gnu TOOLCHAIN_EXTERNAL_SOURCE = mips-2014.05-27-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2
Signature · 1 line
2.4.10
PATCH v4 1/3 toolchain: allow side by side sysroot directories
In reply to Vicente Olivert RieraHi Vicente,
Le 15/12/2015 17:21, Vicente Olivert Riera a ?crit :
Quoted 43 lines
Currently our toolchain infrastructure assumes that every toolchain has nested sysroot directories. However that's not true for all of them. The Codescape toolchains from Imagination Technologies use a side by side sysroot structure, for instance.
This patch allows our toolchain infrastructure to detect what kind of sysroot structure we have (nested or side by side) and performs the appropriate actions.
Signed-off-by Vicente Olivert Riera <[email protected]>---
Changes v1 -> v4:
- This patch didn't exist before. It has been introduced in v4.toolchain/helpers.mk | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-)toolchain/helpers.mk +6
-11@@ -142,18 +142,24 @@ copy_toolchain_sysroot = \ $${ARCH_SYSROOT_DIR}/$$i/ $(STAGING_DIR)/$$i/ ; \ fi ; \ done ; \ - 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}` ; \ + SYSROOT_DIR_CANON=`readlink -f $${SYSROOT_DIR}` ; \ + ARCH_SYSROOT_DIR_CANON=`readlink -f $${ARCH_SYSROOT_DIR}` ; \ + if [ $${SYSROOT_DIR_CANON} != $${ARCH_SYSROOT_DIR_CANON} ] ; then \ relpath="./" ; \ - nbslashs=`printf $${ARCH_SUBDIR} | sed 's%[^/]%%g' | wc -c` ; \ - for slash in `seq 1 $${nbslashs}` ; do \ - relpath=$${relpath}"../" ; \ - done ; \ - ln -s $${relpath} $(STAGING_DIR)/$${ARCH_SUBDIR} ; \ - echo "Symlinking $(STAGING_DIR)/$${ARCH_SUBDIR} -> $${relpath}" ; \ + if [ $${ARCH_SYSROOT_DIR_CANON:0:$${\#SYSROOT_DIR_CANON}} == $${SYSROOT_DIR_CANON} ] ; then \ + if [ ! -d $${ARCH_SYSROOT_DIR}/usr/include ] ; then \ + cp -a $${SYSROOT_DIR}/usr/include $(STAGING_DIR)/usr ; \
toolchain/helpers.mk copy_toolchain_sysroot = \ · line 161
Quoted 10 lines
toolchain/helpers.mk +10
-0+ fi ; \ + mkdir -p `dirname $(STAGING_DIR)/$${ARCH_SUBDIR}` ; \ + nbslashs=`printf $${ARCH_SUBDIR} | sed 's%[^/]%%g' | wc -c` ; \ + for slash in `seq 1 $${nbslashs}` ; do \ + relpath=$${relpath}"../" ; \ + done ; \ + ln -s $${relpath} $(STAGING_DIR)/$${ARCH_SUBDIR} ; \ + echo "Symlinking $(STAGING_DIR)/$${ARCH_SUBDIR} -> $${relpath}" ; \ + elif [ `dirname $${ARCH_SYSROOT_DIR_CANON}` == `dirname $${SYSROOT_DIR_CANON}` ] ; then \ + ln -snf $${relpath} $(STAGING_DIR)/`basename $${ARCH_SYSROOT_DIR_CANON}` ; \
Maybe you want the echo a message like we do for nested sysroot toolchains ? Something like:
echo "Symlinking $(STAGING_DIR)/basename $${ARCH_SYSROOT_DIR_CANON} -> $${relpath}" ; \
Otherwise it look ok.
Best regards,
Romain
Quoted 5 lines
toolchain/helpers.mk +1
-0+ fi ; \ fi ; \ if test -n "$${SUPPORT_LIB_DIR}" ; then \ cp -a $${SUPPORT_LIB_DIR}/* $(STAGING_DIR)/lib/ ; \