[v2] binutils: Allow upstream 2.29 to be chosen for ARC

Message ID 20171110163726.2463-1-abrodkin@synopsys.com
State Accepted
Headers show
Series
  • [v2] binutils: Allow upstream 2.29 to be chosen for ARC
Related show

Commit Message

Alexey Brodkin Nov. 10, 2017, 4:37 p.m.
As of today quite a lot of ARC stuff got merged in upsream
such that we may finally use upstream realease for building
and even running Linux kernel and rootfs built with vanilla
binutils.

Essentially upstream release is still a bit behind our
GitHub-based releases but let's try to use vanilla version
and if we're lucky enough with just a small set of back-ported patches
we'll be able to use vanilla release(s) for everything in Buildroot.

Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Cc: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Peter Korsgaard <peter@korsgaard.com>
---

Changes v1->v2:

 * Use positive logic on selection of ARC tools in binutils.mk (Arnout)

 package/binutils/Config.in.host | 11 ++++++++---
 package/binutils/binutils.mk    |  2 +-
 2 files changed, 9 insertions(+), 4 deletions(-)

Comments

Thomas Petazzoni Nov. 29, 2017, 10:37 p.m. | #1
Hello,

On Fri, 10 Nov 2017 19:37:26 +0300, Alexey Brodkin wrote:
> As of today quite a lot of ARC stuff got merged in upsream
> such that we may finally use upstream realease for building
> and even running Linux kernel and rootfs built with vanilla
> binutils.
> 
> Essentially upstream release is still a bit behind our
> GitHub-based releases but let's try to use vanilla version
> and if we're lucky enough with just a small set of back-ported patches
> we'll be able to use vanilla release(s) for everything in Buildroot.
> 
> Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
> Cc: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Cc: Peter Korsgaard <peter@korsgaard.com>

Thanks, I've applied to next, but I had to do a change to avoid a build
failure. See below.


> diff --git a/package/binutils/binutils.mk b/package/binutils/binutils.mk
> index d2bf5b9..e802952 100644
> --- a/package/binutils/binutils.mk
> +++ b/package/binutils/binutils.mk
> @@ -15,7 +15,7 @@ BINUTILS_VERSION = 2.28.1
>  endif
>  endif # BINUTILS_VERSION
>  
> -ifeq ($(BR2_arc),y)
> +ifeq ($(BR2_BINUTILS_VERSION_ARC),y)

The symbol BR2_BINUTILS_VERSION_ARC doesn't exist when you're using an
external toolchain. Still, the target variant of binutils can be built,
and in this case, on ARC, the Synopsys version is used. From
binutils.mk:

ifeq ($(BINUTILS_VERSION),)
ifeq ($(BR2_arc),y)
BINUTILS_VERSION = arc-2017.09-release
else
BINUTILS_VERSION = 2.28.1
endif
endif # BINUTILS_VERSION

So, instead of testing BR2_BINUTILS_VERSION_ARC, I've changed to:

ifeq ($(BINUTILS_VERSION),arc-2017.09-release)

BINUTILS_VERSION is either defined by BR2_BINUTILS_VERSION from
package/binutils/Config.in.host (when a cross-binutils is built for an
internal toolchain) *or* it is defined from binutils.mk when building a
target binutils in an external toolchain context.

Thanks!

Thomas

Patch

diff --git a/package/binutils/Config.in.host b/package/binutils/Config.in.host
index 95144c8..4a2992a 100644
--- a/package/binutils/Config.in.host
+++ b/package/binutils/Config.in.host
@@ -2,8 +2,8 @@  comment "Binutils Options"
 
 choice
 	prompt "Binutils Version"
-	default BR2_BINUTILS_VERSION_2_28_X
-	depends on !BR2_arc
+	default BR2_BINUTILS_VERSION_2_28_X if !BR2_arc
+	default BR2_BINUTILS_VERSION_ARC if BR2_arc
 	help
 	  Select the version of binutils you wish to use.
 
@@ -11,18 +11,23 @@  config BR2_BINUTILS_VERSION_2_27_X
 	bool "binutils 2.27"
 	# binutils 2.27 triggers a bug in elf2flt on ARM/noMMU
 	depends on !(BR2_arm && !BR2_USE_MMU)
+	depends on !BR2_arc
 
 config BR2_BINUTILS_VERSION_2_28_X
 	bool "binutils 2.28.1"
+	depends on !BR2_arc
 
 config BR2_BINUTILS_VERSION_2_29_X
 	bool "binutils 2.29.1"
 
+config BR2_BINUTILS_VERSION_ARC
+	bool "binutils arc (2.29)"
+	depends on BR2_arc
 endchoice
 
 config BR2_BINUTILS_VERSION
 	string
-	default "arc-2017.09-release"	if BR2_arc
+	default "arc-2017.09-release"	if BR2_BINUTILS_VERSION_ARC
 	default "2.27"		if BR2_BINUTILS_VERSION_2_27_X
 	default "2.28.1"	if BR2_BINUTILS_VERSION_2_28_X
 	default "2.29.1"	if BR2_BINUTILS_VERSION_2_29_X
diff --git a/package/binutils/binutils.mk b/package/binutils/binutils.mk
index d2bf5b9..e802952 100644
--- a/package/binutils/binutils.mk
+++ b/package/binutils/binutils.mk
@@ -15,7 +15,7 @@  BINUTILS_VERSION = 2.28.1
 endif
 endif # BINUTILS_VERSION
 
-ifeq ($(BR2_arc),y)
+ifeq ($(BR2_BINUTILS_VERSION_ARC),y)
 BINUTILS_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,binutils-gdb,$(BINUTILS_VERSION))
 BINUTILS_SOURCE = binutils-$(BINUTILS_VERSION).tar.gz
 BINUTILS_FROM_GIT = y