Support multilib variants in sub-subdirectories
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Sat, 31 Dec 2011 11:02:52 +0000 (12:02 +0100)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Thu, 1 Mar 2012 19:26:36 +0000 (20:26 +0100)
commit50ac5f9a573d3918cc5257a30a7c85db7841ac42
tree2d0c90a69d96f377f0238db865b1e50bed74d453
parent0729b544b3f943f238042d8169ccb8e2f6c88a95
Support multilib variants in sub-subdirectories

When an external toolchain has multiple variants organized in
sub-directories, Buildroot only copies the selected sysroot and not
all sysroots. In order to make this work, Buildroot creates a symbolic
link of the name of the original selected sysroot to the main sysroot
to trick the compiler so that it finds its libraries at the expected
location.

I.e, if the toolchain as the following organization (example take on
the ARM CodeSourcery toolchain) :

     .      for ARMv5T
     armv4   for ARMv4T
     thumb2  for ARMv7-A/Thumb

and ARMv4T is selected, then Buildroot will copy the contents of
armv4t/ from the toolchain into its $(STAGING_DIR) and then create a
$(STAGING_DIR)/armv4t symbolic link to $(STAGING_DIR).

However, our logic to do so only works when there was one directory
level for multilib sysroots. But in the MIPS CodeSourcery toolchain
there are multiple levels. For example, the MIPS16 soft-float
little-endian sysroot variant is in mips16/soft-float/el/ compared to
the main sysroot.

This patch improves our logic to support this case. The logic is a bit
more complicated as we don't want to create a symbolic link to an
absolute path, but a symbolic link to a relative path, because we want
the host/ directory to be relocatable.

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