toolchain helpers: introduce function relpath_prefix
authorThomas De Schampheleire <thomas.de_schampheleire@nokia.com>
Tue, 7 Feb 2017 21:56:42 +0000 (22:56 +0100)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Wed, 5 Apr 2017 19:27:33 +0000 (21:27 +0200)
The helper function copy_toolchain_sysroot has some logic to transform a
path into a number of '../' components based on the depth of that path.

As this same logic will be needed in another place in a subsequent patch,
extract it into a separate helper relpath_prefix.

Signed-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
toolchain/helpers.mk

index 719c42087e68c7e483118522e8177f44b82f191d..21db9d7f0c4c3e7720e95efed1993f6a7f92567a 100644 (file)
@@ -122,11 +122,7 @@ copy_toolchain_sysroot = \
                        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 ; \
+               relpath="$(call relpath_prefix,$${ARCH_SUBDIR})./" ; \
                ln -s $${relpath} $(STAGING_DIR)/$${ARCH_SUBDIR} ; \
                echo "Symlinking $(STAGING_DIR)/$${ARCH_SUBDIR} -> $${relpath}" ; \
        fi ; \
@@ -419,3 +415,22 @@ check_toolchain_ssp = \
 gen_gdbinit_file = \
        mkdir -p $(STAGING_DIR)/usr/share/buildroot/ ; \
        echo "set sysroot $(STAGING_DIR)" > $(STAGING_DIR)/usr/share/buildroot/gdbinit
+
+# Given a path, determine the relative prefix (../) needed to return to the
+# root level. Note that the last component is treated as a file component; use a
+# trailing slash to force treating it as a directory. Examples:
+#     relpath_prefix(lib32) = ""
+#     relpath_prefix(lib32/octeon2) = "../"
+#     relpath_prefix(lib32/octeon2/) = "../../"
+#
+# $1: input path
+define relpath_prefix
+$$( \
+       prefix="" ; \
+       nbslashs=`printf $1 | sed 's%[^/]%%g' | wc -c` ; \
+       for slash in `seq 1 $${nbslashs}` ; do \
+               prefix=$${prefix}"../" ; \
+       done ; \
+       printf "$$prefix" ; \
+)
+endef