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>
This commit is contained in:
parent
7c740bf9c5
commit
d2da85c396
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue