[PATCH] Get rid of the ARM variant choice in the menuconfig, take 2

Yann E. MORIN yann.morin.1998 at anciens.enib.fr
Thu Apr 9 17:12:19 UTC 2009


Khem, Mike,
All,

On Thursday 09 April 2009 10:23:18 Khem Raj wrote:
> I think we could get the features like mtune and march out and let
> users specify them but IMO I see some value in leave the others in
> bundle to form the support that a particular variant has which is
> not generic. e.g. cortex-m3 case.
> then we do not have to add a new variant just because its using a
> different mtune march value.

The idea is really to rely on the user to correctly set up the compiler,
so that it uses:

- the correct instructions set, and mode (eg. arm/thumb)
  --> gcc/configure --with-{arch,cpu,tune,mode}=foobar

- the correct ABI: EABI, OABI, iwmmxt
  --> EABI/OABI: derived by gcc/configure from --target=...
      arm*-{gnu,uclibc} is OABI, and arm*-{,uclibc}gnueabi is EABI.
  --> iwmmxt: gcc/configure --with-abi=iwmmxt

- the correct endianness
  --> derived by gcc/configure from --target=...
      arm-* is little, while armeb-* is big

- and so on...

I don't know (yet!) of any such option that can't be selected at gcc's
configure time.

So either we are (try to be) as exhautive as possible, or we rely as
much as possible on the compiler to be correctly set up.

That's what I understood from Mike's post:
http://lists.busybox.net/pipermail/uclibc/2009-April/042263.html
quote
  i dont think we should keep enabling lazy people.  either the right
  options are selected by gcc in their toolchain, or they should manually
  add the -mcpu or whatever flags to their extra cflags.  extending this
  crap in our build system is a waste of time.
/quote

Of course, I'm all for criticisms, and I built the patch just for that.

> > doesnt gcc already expose BX support via defines in the toolchain ?  
> I don't think so. You have to synthesize it like arm glibc port does
> #if (!defined (__ARM_ARCH_2__) && !defined (__ARM_ARCH_3__) \
>      && !defined (__ARM_ARCH_3M__) && !defined (__ARM_ARCH_4__))
> # define __USE_BX__
> #endif

Which would go in a header file, and be readily available to any file.

And from what I understand (but I may be wrong), you should *not* use BX
if interworking is disabled. No interworking => do *not* switch back and
forth between ARM and Thumb.

> > then we could get rid of the USE_BX build option completely.

That is the idea, but is not quite as simple as the two others were.

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +0/33 662376056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| --==< ^_^ >==-- `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
`------------------------------^-------^------------------^--------------------'



More information about the uClibc mailing list