[Buildroot] [PATCH v2 05/23] toolchain-external-blackfin-uclinux: new package
Yann E. MORIN
yann.morin.1998 at free.fr
Sun Oct 30 16:47:52 UTC 2016
Romain, All,
On 2016-10-29 14:08 +0200, Romain Naour spake thusly:
> From: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
>
> This commit adds a new package for the Analog Devices external
> toolchain for the Blackfin architecture. As of this commit, the code
> is currently not used, but it will be used as soon as the external
> toolchain infrastructure gets introduced in a future commit.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
> Signed-off-by: Romain Naour <romain.naour at gmail.com>
> ---
> .../toolchain-external-blackfin-uclinux/Config.in | 17 ++++++++++
> .../Config.in.options | 6 ++++
> .../toolchain-external-blackfin-uclinux.hash | 3 ++
> .../toolchain-external-blackfin-uclinux.mk | 36 ++++++++++++++++++++++
> 4 files changed, 62 insertions(+)
> create mode 100644 toolchain/toolchain-external/toolchain-external-blackfin-uclinux/Config.in
> create mode 100644 toolchain/toolchain-external/toolchain-external-blackfin-uclinux/Config.in.options
> create mode 100644 toolchain/toolchain-external/toolchain-external-blackfin-uclinux/toolchain-external-blackfin-uclinux.hash
> create mode 100644 toolchain/toolchain-external/toolchain-external-blackfin-uclinux/toolchain-external-blackfin-uclinux.mk
>
> diff --git a/toolchain/toolchain-external/toolchain-external-blackfin-uclinux/Config.in b/toolchain/toolchain-external/toolchain-external-blackfin-uclinux/Config.in
> new file mode 100644
> index 0000000..8b299e8
> --- /dev/null
> +++ b/toolchain/toolchain-external/toolchain-external-blackfin-uclinux/Config.in
> @@ -0,0 +1,17 @@
> +config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX
> + bool "Blackfin.uclinux.org 2014R1"
> + depends on BR2_bfin
> + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
> + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC
> + select BR2_INSTALL_LIBSTDCPP
> + select BR2_TOOLCHAIN_HAS_NATIVE_RPC
> + select BR2_USE_WCHAR
> + select BR2_TOOLCHAIN_HAS_THREADS
> + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
> + select BR2_HOSTARCH_NEEDS_IA32_LIBS
> + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
> + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
> + select BR2_TOOLCHAIN_HAS_FORTRAN
> + help
> + Toolchain for the Blackfin architecture, from
> + http://blackfin.uclinux.org.
> diff --git a/toolchain/toolchain-external/toolchain-external-blackfin-uclinux/Config.in.options b/toolchain/toolchain-external/toolchain-external-blackfin-uclinux/Config.in.options
> new file mode 100644
> index 0000000..a13cbba
> --- /dev/null
> +++ b/toolchain/toolchain-external/toolchain-external-blackfin-uclinux/Config.in.options
> @@ -0,0 +1,6 @@
> +if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX
> +
> +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
> + default "toolchain-external-blackfin-uclinux"
This make-it-a-provider-of-a-not-yet-existing-virtual-pakage makes me
really chill... :-/
But see [*] below...
> +endif
> diff --git a/toolchain/toolchain-external/toolchain-external-blackfin-uclinux/toolchain-external-blackfin-uclinux.hash b/toolchain/toolchain-external/toolchain-external-blackfin-uclinux/toolchain-external-blackfin-uclinux.hash
> new file mode 100644
> index 0000000..b320d94
> --- /dev/null
> +++ b/toolchain/toolchain-external/toolchain-external-blackfin-uclinux/toolchain-external-blackfin-uclinux.hash
> @@ -0,0 +1,3 @@
> +# Locally calculated
> +sha256 e424e90d8481d942a40266d78d1488726561fed3ec38403094f98055e61889d0 blackfin-toolchain-2014R1-RC2.i386.tar.bz2
> +sha256 c65b1b4b918d5185349d62a3b7bf43b4b21e1175c52598ec047ca56b3f11d857 blackfin-toolchain-uclibc-full-2014R1-RC2.i386.tar.bz2
> diff --git a/toolchain/toolchain-external/toolchain-external-blackfin-uclinux/toolchain-external-blackfin-uclinux.mk b/toolchain/toolchain-external/toolchain-external-blackfin-uclinux/toolchain-external-blackfin-uclinux.mk
> new file mode 100644
> index 0000000..0c3eb9b
> --- /dev/null
> +++ b/toolchain/toolchain-external/toolchain-external-blackfin-uclinux/toolchain-external-blackfin-uclinux.mk
> @@ -0,0 +1,36 @@
> +################################################################################
> +#
> +# toolchain-external-blackfin-uclinux
> +#
> +################################################################################
> +
> +TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_VERSION = 2014R1-RC2
> +
> +ifeq ($(BR2_BINFMT_FLAT),y)
> +TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_SUBDIR = bfin-uclinux
> +TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_PREFIX = bfin-uclinux
> +else
> +TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_SUBDIR = bfin-linux-uclibc
> +TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_PREFIX = bfin-linux-uclibc
> +endif
> +
> +TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_VERSION_MAJOR = $(firstword $(subst -, ,$(TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_VERSION)))
> +
> +TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_SITE = http://downloads.sourceforge.net/project/adi-toolchain/$(TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_VERSION_MAJOR)/$(TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_VERSION)/i386
> +TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_SOURCE = blackfin-toolchain-$(TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_VERSION).i386.tar.bz2
> +TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_EXTRA_DOWNLOADS = blackfin-toolchain-uclibc-full-$(TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_VERSION).i386.tar.bz2
> +
> +TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_STRIP_COMPONENTS = 3
> +
> +# Special handling for Blackfin toolchain, because of the split in two
> +# tarballs, and the organization of tarball contents. The tarballs
> +# contain ./opt/uClinux/{bfin-uclinux,bfin-linux-uclibc} directories,
> +# which themselves contain the toolchain. This is why we strip more
> +# components than usual.
> +define TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_UCLIBC_EXTRA_EXTRACT
> + $(call suitable-extractor,$(TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_EXTRA_DOWNLOADS)) $(DL_DIR)/$(TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_EXTRA_DOWNLOADS) | \
> + $(TAR) --strip-components=3 -C $(@D) $(TAR_OPTIONS) -
> +endef
> +TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_POST_EXTRACT_HOOKS += TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_UCLIBC_EXTRA_EXTRACT
> +
> +$(eval $(toolchain-external-package))
[*] Ditto: this use-a-not-yet-existing-infra is not nice.
I think you could very well:
1- introduce an empty infra that does nothing at all, except it does
exist;
2- introduce the virtual package. It would not kick any dependency
until much later, but it would exist.
3- add the per pre-built toolchain packages liek you did
4- implement the new infra
5- turn toolchain/toolchain-external/toolchain-external.mk from a
generic package to a virtual package
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
More information about the buildroot
mailing list