[OpenWrt-Devel] [PATCH 1/3] toolchain: add support of ARC architecture

Alexey Brodkin Alexey.Brodkin at synopsys.com
Wed Sep 2 15:58:44 EDT 2015


Hi Jonas,

On Wed, 2015-09-02 at 10:08 +0200, Jonas Gorski wrote:
> Hi,
> 
> On Thu, Aug 27, 2015 at 1:03 PM, Alexey Brodkin
> <Alexey.Brodkin at synopsys.com> wrote:
> > This includes binutils, gcc, gdb and uClibc-ng.
> > 
> > Latest release of ARC gcc (as of today it is "arc-2015.06")
> > is based on upstream gcc 4.8.4.
> > 
> > Sources are available on GitHub, see:
> > https://github.com/foss-for-synopsys-dwc-arc-processors/gcc
> > 
> > Latest release of ARC binutils (as of today it is "arc-2015.06")
> > is based on upstream binutils 2.23.
> > 
> > Sources are available on GitHub, see:
> > https://github.com/foss-for-synopsys-dwc-arc-processors/binutils-gdb/releases/tag/arc-2015.06
> > 
> > Latest release of ARC GDB (as of today this is "arc-2015.06-gdb")
> > is based on upstream gdb 7.9.1.
> > 
> > Sources are available on GitHub, see:
> > https://github.com/foss-for-synopsys-dwc-arc-processors/binutils-gdb/releases/tag/arc-2015.06-gdb
> > 

[snip]

> > diff --git a/toolchain/binutils/Config.in b/toolchain/binutils/Config.in
> > index 8d91223..0f670f1 100644
> > --- a/toolchain/binutils/Config.in
> > +++ b/toolchain/binutils/Config.in
> > @@ -2,13 +2,19 @@
> > 
> >  choice
> >         prompt "Binutils Version" if TOOLCHAINOPTS
> > -       default BINUTILS_VERSION_LINARO
> > +       default BINUTILS_VERSION_ARC if arc
> > +       default BINUTILS_VERSION_LINARO if !arc
> >         help
> >           Select the version of binutils you wish to use.
> > 
> >         config BINUTILS_VERSION_LINARO
> > +               depends on !arc
> >                 bool "Linaro binutils 2.24"
> > 
> > +       config BINUTILS_VERSION_ARC
> > +               depends on arc
> > +               bool "ARC binutils 2015.06"
> > +
> >  endchoice
> > 
> >  config EXTRA_BINUTILS_CONFIG_OPTIONS
> > @@ -21,5 +27,5 @@ config EXTRA_BINUTILS_CONFIG_OPTIONS
> >  config BINUTILS_VERSION
> >         string
> >         prompt "Binutils Version" if (TOOLCHAINOPTS && NULL)
> > -       default "linaro"          if BINUTILS_VERSION_LINARO
> > -       default "linaro"
> > +       default "linaro"          if BINUTILS_VERSION_LINARO || (!TOOLCHAINOPTS && !arc)
> > +       default "arc"             if BINUTILS_VERSION_ARC || (!TOOLCHAINOPTS && arc)
> 
> One of BINUTILS_VERSION_ARC and BINUTILS_VERSION_LINARO will always be
> set regardless of TOOLCHAINOPTS being set, so you can drop the || ( )
> part.

Well that's not entirely correct.
If TOOLCHAIN is not set then BINUTILS_VERSION_xxx won't be set as well.
In other words following construction will lead to missing BINUTILS_VERSION
in .config:
------------------------>8------------------------
default "linaro"          if BINUTILS_VERSION_LINARO || (!TOOLCHAINOPTS && !arc)
default "arc"             if BINUTILS_VERSION_ARC || (!TOOLCHAINOPTS && arc)
------------------------>8------------------------

Following construction will work:
------------------------>8------------------------
default "linaro"          if !arc
default "arc"             if arc
------------------------>8------------------------

But then this thing "prompt "Binutils Version" if TOOLCHAINOPTS" makes no sense
because we force set ARC binutils for ARC and Linaro binutils for anything else.

Well even now that prompt is useless because it doesn't allow to choose anything
except Linaro :)


> > diff --git a/toolchain/binutils/Makefile b/toolchain/binutils/Makefile
> > index 0276512..d420802 100644
> > --- a/toolchain/binutils/Makefile
> > +++ b/toolchain/binutils/Makefile
> > @@ -10,11 +10,20 @@ PKG_NAME:=binutils
> >  PKG_VERSION:=$(call qstrip,$(CONFIG_BINUTILS_VERSION))
> >  BIN_VERSION:=$(PKG_VERSION)
> > 
> > -PKG_SOURCE_URL:=https://releases.linaro.org/14.09/components/toolchain/binutils-linaro/
> > -PKG_REV:=2.24.0-2014.09
> > -PKG_SOURCE:=$(PKG_NAME)-linaro-$(PKG_REV).tar.xz
> > -PKG_MD5SUM:=8f9b2b2e049d59b1b86ce9657802a353
> > -BINUTILS_DIR:=$(PKG_NAME)-linaro-$(PKG_REV)
> > +ifeq ($(findstring arc, $(CONFIG_BINUTILS_VERSION)),arc)
> 
> Any reason why ifeq($(CONFIG_BINUTILS_VERSION),arc) directly doesn't work?

Well it's possible to do that this way but it requires quotes word we're comparing to.
So following string will work:
------------------------>8------------------------
ifeq ($(CONFIG_BINUTILS_VERSION),"arc")
------------------------>8------------------------

That's because version we set in Config in is quoted as well.

Still if we do search of "arc" substring it will work even if we change binutils
version string to match gcc's pattern like "arc-2015.06" etc.
So I wanted to implement a sort of universal approach.

If you think that explanation above makes not much sense I will
rework it.

> >  config GCC_VERSION_4_8_LINARO
> > -       default y if (!TOOLCHAINOPTS && !TARGET_octeon)
> > +       default y if (!TOOLCHAINOPTS && !(TARGET_octeon || arc))
> >         bool
> > 
> >  config GCC_VERSION_4_9_LINARO
> >         bool
> > 
> > +config GCC_VERSION_4_8_ARC
> > +       default y if (!TOOLCHAINOPTS && arc)
> > +       bool
> > +
> >  config GCC_VERSION
> >         string
> >         default "4.6.3"     if GCC_VERSION_4_6_3
> > @@ -16,6 +20,7 @@ config GCC_VERSION
> >         default "4.6-linaro"    if GCC_VERSION_4_6_LINARO
> >         default "4.8-linaro"    if GCC_VERSION_4_8_LINARO
> >         default "4.9-linaro"    if GCC_VERSION_4_9_LINARO
> > +       default "arc-2015.06"   if GCC_VERSION_4_8_ARC
> 
> Can we call this "4.8-arc" just like the others?

I'm afraid not. Because we use that name later to reconstruct the a name
of the tarball, see:
------------------------>8------------------------
PKG_SOURCE:=$(PKG_NAME)-$(GCC_VERSION).tar.gz
------------------------>8------------------------

And our tarball name is "gcc-arc-2015.06.tar.gz".

-Alexey
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list