[Buildroot] [PATCH v2] toolchain-external: Commonize /lib/<tuple> symlinks
Arnout Vandecappelle
arnout at mind.be
Wed Mar 30 20:39:19 UTC 2016
Hi Matthew,
It's a bit nitpicking, but I have one more change to request...
On 03/28/16 19:36, Matthew Fornero wrote:
> From: Matthew Fornero <mfornero at mathworks.com>
>
> Commonize the creation of symlinks from {/usr}/lib to
> {/usr}/lib/<tuple>.
>
> These were originally defined on a per-toolchain basis for the Linaro
> toolchains, but there is currently no support for creating symlinks
> for custom toolchains that may have been based on Linaro (or older
> versions of the Linaro toolchain).
>
> Add common code for all supported Linaro toolchains and add a new
> config option, BR2_TOOLCHAIN_EXTERNAL_PREFIX_SYMLINK to enable custom
> toolchains to enable the symbolic link creation.
>
> Signed-off-by: Matthew Fornero <mfornero at mathworks.com>
> ---
> v2: Cleanup as suggested by Arnout Vandecappelle
> ---
> toolchain/toolchain-external/Config.in | 14 +++++++++++
> toolchain/toolchain-external/toolchain-external.mk | 26 ++++++--------------
> 2 files changed, 22 insertions(+), 18 deletions(-)
>
> diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in
> index ff759a0..2badbb7 100644
> --- a/toolchain/toolchain-external/Config.in
> +++ b/toolchain/toolchain-external/Config.in
> @@ -745,6 +745,13 @@ config BR2_TOOLCHAIN_EXTERNAL_PREFIX
> default BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX \
> if BR2_TOOLCHAIN_EXTERNAL_CUSTOM
>
> +config BR2_TOOLCHAIN_EXTERNAL_NEEDS_PREFIX_SYMLINK
> + bool
> + default y if BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM
> + default y if BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64
> + default y if BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB
> + default y if BR2_TOOLCHAIN_EXTERNAL_PREFIX_SYMLINK
The logic should be reverted here: it's the individual toolchains that "know"
that they need a symlink, it shouldn't be the NEEDS_PREFIX_SYMLINK that "knows"
which toolchains need it. IOW, remove all the 'default y' here, and add "select
BR2_TOOLCHAIN_EXTERNAL_NEEDS_PREFIX_SYMLINK" to each of the toolchains.
> +
> config BR2_TOOLCHAIN_EXTERNAL_GLIBC
> bool
> select BR2_TOOLCHAIN_USES_GLIBC
> @@ -1055,6 +1062,13 @@ config BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS
> here, separated by spaces. They will be copied to the
> target's /lib directory.
>
> +config BR2_TOOLCHAIN_EXTERNAL_PREFIX_SYMLINK
> + bool "Symlink /lib/<tuple>"
So
select BR2_TOOLCHAIN_EXTERNAL_NEEDS_PREFIX_SYMLINK
here.
Regards,
Arnout
> + help
> + Select this option if your external toolchain needs a symlink
> + from the /lib directory to the /lib/<tuple> directory. This is
> + may be required if your toolchain is based on one from Linaro.
> +
> endif # BR2_TOOLCHAIN_EXTERNAL_CUSTOM
>
> config BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY
> diff --git a/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk
> index 37e1a2e..66cf449 100644
> --- a/toolchain/toolchain-external/toolchain-external.mk
> +++ b/toolchain/toolchain-external/toolchain-external.mk
> @@ -244,23 +244,16 @@ ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)
> TOOLCHAIN_EXTERNAL_DEPENDENCIES += netbsd-queue
> endif
>
> -# The Linaro ARMhf toolchain expects the libraries in
> -# {/usr,}/lib/arm-linux-gnueabihf, but Buildroot copies them to
> +# Some toolchains, such as Linaro, expect the libraries in
> +# {/usr,}/lib/<tuple>, but Buildroot copies them to
> # {/usr,}/lib, so we need to create a symbolic link.
> -define TOOLCHAIN_EXTERNAL_LINARO_ARMHF_SYMLINK
> - ln -snf . $(TARGET_DIR)/lib/arm-linux-gnueabihf
> - ln -snf . $(TARGET_DIR)/usr/lib/arm-linux-gnueabihf
> -endef
> -
> -define TOOLCHAIN_EXTERNAL_LINARO_ARMEBHF_SYMLINK
> - ln -snf . $(TARGET_DIR)/lib/armeb-linux-gnueabihf
> - ln -snf . $(TARGET_DIR)/usr/lib/armeb-linux-gnueabihf
> -endef
> -
> -define TOOLCHAIN_EXTERNAL_LINARO_AARCH64_SYMLINK
> - ln -snf . $(TARGET_DIR)/lib/aarch64-linux-gnu
> - ln -snf . $(TARGET_DIR)/usr/lib/aarch64-linux-gnu
> +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_NEEDS_PREFIX_SYMLINK),y)
> +define TOOLCHAIN_EXTERNAL_PREFIX_SYMLINK
> + ln -snf . $(TARGET_DIR)/lib/$(TOOLCHAIN_EXTERNAL_PREFIX)
> + ln -snf . $(TARGET_DIR)/usr/lib/$(TOOLCHAIN_EXTERNAL_PREFIX)
> endef
> +TOOLCHAIN_EXTERNAL_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_PREFIX_SYMLINK
> +endif
>
> # Special handling for Blackfin toolchain, because of the split in two
> # tarballs, and the organization of tarball contents. The tarballs
> @@ -298,7 +291,6 @@ ifeq ($(HOSTARCH),x86)
> TOOLCHAIN_EXTERNAL_SITE = https://releases.linaro.org/14.09/components/toolchain/binaries
> TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz
> TOOLCHAIN_EXTERNAL_ACTUAL_SOURCE_TARBALL = gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_src.tar.bz2
> -TOOLCHAIN_EXTERNAL_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_LINARO_ARMHF_SYMLINK
> else
> TOOLCHAIN_EXTERNAL_SITE = https://releases.linaro.org/components/toolchain/binaries/5.2-2015.11-2/arm-linux-gnueabihf
> TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-5.2-2015.11-2-x86_64_arm-linux-gnueabihf.tar.xz
> @@ -308,7 +300,6 @@ ifeq ($(HOSTARCH),x86)
> TOOLCHAIN_EXTERNAL_SITE = https://releases.linaro.org/14.09/components/toolchain/binaries
> TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-armeb-linux-gnueabihf-4.9-2014.09_linux.tar.xz
> TOOLCHAIN_EXTERNAL_ACTUAL_SOURCE_TARBALL = gcc-linaro-armeb-linux-gnueabihf-4.9-2014.09_src.tar.bz2
> -TOOLCHAIN_EXTERNAL_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_LINARO_ARMEBHF_SYMLINK
> else
> TOOLCHAIN_EXTERNAL_SITE = https://releases.linaro.org/components/toolchain/binaries/5.2-2015.11-2/armeb-linux-gnueabihf
> TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-5.2-2015.11-2-x86_64_armeb-linux-gnueabihf.tar.xz
> @@ -353,7 +344,6 @@ ifeq ($(HOSTARCH),x86)
> TOOLCHAIN_EXTERNAL_SITE = https://releases.linaro.org/14.09/components/toolchain/binaries
> TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux.tar.xz
> TOOLCHAIN_EXTERNAL_ACTUAL_SOURCE_TARBALL = gcc-linaro-aarch64-linux-gnu-4.9-2014.09_src.tar.bz2
> -TOOLCHAIN_EXTERNAL_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_LINARO_AARCH64_SYMLINK
> else
> TOOLCHAIN_EXTERNAL_SITE = https://releases.linaro.org/components/toolchain/binaries/5.2-2015.11-2/aarch64-linux-gnu
> TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-5.2-2015.11-2-x86_64_aarch64-linux-gnu.tar.xz
>
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286500
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
More information about the buildroot
mailing list