summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVicente Olivert Riera <Vincent.Riera@imgtec.com>2016-10-27 16:33:42 +0100
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>2016-10-28 14:28:49 +0200
commitd2da85c396ba6aad88a698ade4b0ccd8c6c9e8e2 (patch)
tree780a725e75ac22f908ec9d45c90c455a67b3c493
parent7c740bf9c5937cc93746ac0300cb33b8aeb6abf6 (diff)
downloadbuildroot-d2da85c396ba6aad88a698ade4b0ccd8c6c9e8e2.tar.gz
buildroot-d2da85c396ba6aad88a698ade4b0ccd8c6c9e8e2.zip
toolchain-external.mk: fix ARCH_SUBDIR calculation
ARCH_SUBDIR is computed based on the value of ARCH_SYSROOT_DIR and SYSROOT_DIR. For nested toolchains ARCH_SYSROOT_DIR is a subdir of SYSROOT_DIR, so a sed command like this one... sed -r -e "s:^${SYSROOT_DIR}(.*)/$:\1:" ...basically removes the leading SYSROOT_DIR part from ARCH_SYSROOT_DIR. But, for side-by-side sysroot toolchains ARCH_SYSROOT_DIR and SYSROOT_DIR are at the same level, so the above sed command doesn't make any effect. This patch therefore improves the calculation of ARCH_SUBDIR to clearly handle the three possible cases: - There is a single sysroot, or the selected architecture sysroot is the main one (i.e SYSROOT_DIR == ARCH_SYSROOT_DIR). In this case, ARCH_SUBDIR is empty. - There are side-by-side sysroots, such as SYSROOT_DIR=.../sysroot/mips-r2-hard/ and ARCH_SYSROOT_DIR=.../sysroot/mipsel-r2-hard/. - The arch-sysroot is nested, such as SYSROOT_DIR=.../sysroot and ARCH_SYSROOT_DIR=.../sysroot/armv4t/ Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> [Thomas: improve the logic to handle the SYSROOT_DIR==ARCH_SYSROOT_DIR case.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-rw-r--r--toolchain/toolchain-external/toolchain-external.mk9
1 files changed, 8 insertions, 1 deletions
diff --git a/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk
index f7c6a1969d..b7a36bea12 100644
--- a/toolchain/toolchain-external/toolchain-external.mk
+++ b/toolchain/toolchain-external/toolchain-external.mk
@@ -665,7 +665,14 @@ define TOOLCHAIN_EXTERNAL_INSTALL_SYSROOT_LIBS
SUPPORT_LIB_DIR=`readlink -f $${LIBSTDCPP_A_LOCATION} | sed -r -e 's:libstdc\+\+\.a::'` ; \
fi ; \
fi ; \
- ARCH_SUBDIR=`echo $${ARCH_SYSROOT_DIR} | sed -r -e "s:^$${SYSROOT_DIR}(.*)/$$:\1:"` ; \
+ 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
OpenPOWER on IntegriCloud