diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk index b3510b6e0b..108fdaa748 100644 --- a/toolchain/helpers.mk +++ b/toolchain/helpers.mk @@ -50,22 +50,10 @@ copy_toolchain_lib_root = \ # corresponding architecture variants), and we don't want to import # them. # -# Then, we need to support two types of multilib toolchains: +# Then, if the selected architecture variant is not the default one +# (i.e, if SYSROOT_DIR != ARCH_SYSROOT_DIR), then we : # -# - The toolchains that have nested sysroots: a main sysroot, and -# then additional sysroots available as subdirectories of the main -# one. This is for example used by Sourcery CodeBench toolchains. -# -# - The toolchains that have side-by-side sysroots. Each sysroot is a -# complete one, they simply leave one next to each other. This is -# for example used by MIPS Codescape toolchains. -# -# So, we first detect if the selected architecture variant is not the -# default one (i.e, if SYSROOT_DIR != ARCH_SYSROOT_DIR). -# -# If we are in the situation of a nested sysroot, we: -# -# * If needed, import the header files from the default architecture +# * 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 @@ -79,14 +67,10 @@ copy_toolchain_lib_root = \ # non-default architecture variant is used. Without this, the # compiler fails to find libraries and headers. # -# If we are in the situation of a side-by-side sysroot, we: -# -# * Create a symbolic link -# -# Finally, 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. +# 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. @@ -111,25 +95,18 @@ copy_toolchain_sysroot = \ $${ARCH_SYSROOT_DIR}/$$i/ $(STAGING_DIR)/$$i/ ; \ fi ; \ done ; \ - 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="./" ; \ - 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}` ; \ - echo "Symlinking $(STAGING_DIR)/`basename $${ARCH_SYSROOT_DIR_CANON}` -> $${relpath}" ; \ + 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="./" ; \ + 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}" ; \ fi ; \ if test -n "$${SUPPORT_LIB_DIR}" ; then \ cp -a $${SUPPORT_LIB_DIR}/* $(STAGING_DIR)/lib/ ; \