This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See crosstool-NG for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: scripts: add support for overriding the arch name in the tuple


On Mon, Jan 21, 2013 at 12:30:18AM +0100, Yann E. MORIN wrote:
> Willy, All,
> 
> On Sunday 20 January 2013 Willy Tarreau wrote:
> > it sometimes happens that I need to build toolchains for several variants
> > of a CPU and I want to have the variant name in the arch tuple. In fact,
> > this is very similar to what is done with i386/i486/i586/i686, all of them
> > being variants of the x86 arch family.
> > 
> > On arm, we commonly see armv5/armv6/armv7 and with v7 there are two common
> > cpus which are cortex a8 and a9.
> > 
> > So I'm used to build my toolchains with a prefix which is 'armv5te',
> > 'armv7a8', 'armv7a9' etc...
> > 
> > For this I wrote the small patch below for ct-ng-1.15.3, which still works
> > with 1.17.0.
> > 
> > On one of my machines, the toolchain directory looks like this, which is
> > quite convenient to use :
> > 
> >   arm-gcc43_glibc29-linux-gnueabi/
> >   arm-gcc44_glibc29-linux-gnueabi/
> >   arm-gcc45_glibc29-linux-gnueabi/
> >   armv7a8-gcc43_glibc29-linux-gnueabi/
> >   armv7a9-gcc44_glibc29-linux-gnueabi/
> >   armv7a9-gcc47_glibc29-linux-gnueabi/
> >   armv7a9-gcc47_glibc29-linux-gnueabihf/
> 
> How do you managfed to have a '*-gnueabihf' with crosstool-NG?
> Last I tested, gcc broke because it did not recognise it as an EABI
> variant, and would not include the EABI file in gcc/config/arm/ .

In fact only the directory has the extension name. "ls" caught it while
it was building but it's not usable for me. Sorry for the confusion.

> Even with a bit of patching, I ended up in a few hiccups here and there,
> so that's why ct-ng does not set the tuple to '*-gnueabihf' for now for
> ARM hard-float ABI.

Indeed, I've read some of your posts on the subject. I'm going to move
the "hf" into the cpu part on the left, because most scripts check for
"arm*-<anything>" thanks to the many variants that exist.

> >   i386-gcc34_glibc23-linux-gnu/
> >   x86_64-gcc34_glibc23-linux-gnu/
> > 
> > Hoping someone finds the patch useful.
> 
> A few comments:
>   - missing SoB line

Sorry, I just attached this old patch and didn't think about it being
used as a commit e-mail.

>   - provide a more terse commit-log, eg something like:
>     ---8<---
>     arch: provide a arch-override for the tuple
> 
>     For some architectures, it is legit to have an alternate value in the
>     'architecture' part of the tuple. For example:
>         armv5te-*
>         armv7a8-*
> 
>     Besides, some packages expect the tuple to reflect the arch variant
>     (eg. openMPI) to detect the variant's capabilities (eg. atomic
>     primitives).
> 
>     We already have this for x86 (i[3456]86-*), but it is not possible
>     for other archs.
> 
>     This patch provides an overide mechanism
> 
>     Signed-off-by: You you@there
>     ---8<---

Do you want me to repost the whole mail or are you OK with me just adding
my SOB here, since you rebuilt the whole commit message above ?

    =>  Signed-off-by: Willy Tarreau <w@1wt.eu>
    
> > diff -urN ./config/target.in ./config/target.in
> > --- ./config/target.in.orig	2012-07-17 22:39:55.000000000 +0200
> > +++ ./config/target.in	2012-07-27 12:02:08.682588639 +0200
> > @@ -5,6 +5,17 @@
> >  config ARCH
> >      string
> >  
> > +config ARCH_OVERRIDE
> > +    string
> > +    prompt "Arch name to use in the resulting tuple instead of ${CT_ARCH}"
> > +    help
> > +      Some architectures have multiple variants and being able to specify
> > +      the variant instead of the arch is quite convenient. This is commonly
> > +      seen for instance when "armv5tel-" is used as a prefix instead of the
> > +      more generic "arm-", or with "alphaev6-" instead of "alpha-".
> > +
> > +      If you're not sure about what this is, leave it blank.
> > +
> 
> I think we should not allow the user to completely overide the arch-part.
> We should just allow for appending to the arch-part. This would be added
> to the default tuple, and would not create symlinks as the two other
> options currently do, so it would be possible to install more than one
> toolchain in the same place, as the default tuples would all be different
> (maybe that's what I did not completely explain during our private
> exchange).
> 
> Thus, CT_TARGET_ARCH_SUFFIX="v5te" would give a tuple starting with
> "armv5te-".
> 
> IMHO, giving the user the ability to completely overide the arch-part is
> opening the door to complete mayhem. I'm a bit uneasy with that.

Well, I thought about it differently. The x86 mess is a good example of
something where the very first chars are replaced. The CPUs are not named
x86_i386 but just i386 for example. I don't know if other archs are used
to have completely different names in their tuple for small variants of
the CPU. For example, I don't know if there will be any intent to force
names between arm* and aarch64* (just an example).

I would say that using an ARCH_SUFFIX as you suggest satisfies my needs
*at the moment*. I'm just not certain it's the case for everyone :-/
Maybe someone else has any opinion on this based on another experience ?

Regards,
Willy


--
For unsubscribe information see http://sourceware.org/lists.html#faq


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]