All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] Coldire: mcf52x2: Improve gcc version detection
@ 2009-03-19 14:32 Richard Retanubun
  2009-03-19 21:14 ` Wolfgang Denk
  0 siblings, 1 reply; 4+ messages in thread
From: Richard Retanubun @ 2009-03-19 14:32 UTC (permalink / raw)
  To: u-boot

 From 2cfa4b5789a6c01f6120663cc36ca751e2e5d172 Mon Sep 17 00:00:00 2001
From: Richard Retanubun <RichardRetanubun@RuggedCom.com>
Date: Wed, 18 Mar 2009 17:12:47 -0400
Subject: [PATCH] Improved gcc version detection for more optimized code.

This patch makes the gcc version detection more flexible.
gcc 4.2+ supports -mcpu option, which allows more optimized code.
Without this patch, building on gcc 4.3.3 breaks on:

start.S:144: Error: operands mismatch -- statement `movec %d0,%RAMBAR1' ignored

Author: Len Sorensen <lsorense@csclub.uwaterloo.ca>
---

Hi TC,

Incidentally, I am also trying to move to gcc 4.3.x (4.3.3), and just saw your
patch. Len Sorensen from my team suggested this detection scheme, similar to how
linux does it, I think. (this way you will still be ok if someone still uses gcc-4.0)

I don't have enough coldfire variants to test, so I can't testify to all of them,
but the MCF5270/1 compiles ok.

- Richard

  cpu/mcf52x2/config.mk |    6 ++++--
  1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/cpu/mcf52x2/config.mk b/cpu/mcf52x2/config.mk
index 8292736..c4726af 100644
--- a/cpu/mcf52x2/config.mk
+++ b/cpu/mcf52x2/config.mk
@@ -33,9 +33,11 @@ is5272:=$(shell grep CONFIG_M5272 $(TOPDIR)/include/$(cfg))
  is5275:=$(shell grep CONFIG_M5275 $(TOPDIR)/include/$(cfg))
  is5282:=$(shell grep CONFIG_M5282 $(TOPDIR)/include/$(cfg))

+# If gcc 4.2 or greater use -mcpu= otherwise use -m5307 on gcc 4.1 and older
+GCC_SUPPORTS_MCPU = $(shell if [ `echo __GNUC__ __GNUC_MINOR__ | $(CC) -E -xc - \
+	| tail -n 1 | sed -e 's/ /0/'` -gt 401 ];then echo yes; else echo no; fi)

-ifneq ($(findstring 4.1,$(shell $(CC) --version)),4.1)
-
+ifeq ($(GCC_SUPPORTS_MCPU),yes)
  ifneq (,$(findstring CONFIG_M5249,$(is5249)))
  PLATFORM_CPPFLAGS += -mcpu=5249
  endif
-- 
1.5.6.5

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [U-Boot] [PATCH] Coldire: mcf52x2: Improve gcc version detection
  2009-03-19 14:32 [U-Boot] [PATCH] Coldire: mcf52x2: Improve gcc version detection Richard Retanubun
@ 2009-03-19 21:14 ` Wolfgang Denk
  2009-03-20 13:27   ` Richard Retanubun
  0 siblings, 1 reply; 4+ messages in thread
From: Wolfgang Denk @ 2009-03-19 21:14 UTC (permalink / raw)
  To: u-boot

Dear Richard Retanubun,

In message <49C25764.8010804@RuggedCom.com> you wrote:
>
> --- a/cpu/mcf52x2/config.mk
> +++ b/cpu/mcf52x2/config.mk
> @@ -33,9 +33,11 @@ is5272:=$(shell grep CONFIG_M5272 $(TOPDIR)/include/$(cfg))
>   is5275:=$(shell grep CONFIG_M5275 $(TOPDIR)/include/$(cfg))
>   is5282:=$(shell grep CONFIG_M5282 $(TOPDIR)/include/$(cfg))
> 
> +# If gcc 4.2 or greater use -mcpu= otherwise use -m5307 on gcc 4.1 and older
> +GCC_SUPPORTS_MCPU = $(shell if [ `echo __GNUC__ __GNUC_MINOR__ | $(CC) -E -xc - \
> +	| tail -n 1 | sed -e 's/ /0/'` -gt 401 ];then echo yes; else echo no; fi)
> 
> -ifneq ($(findstring 4.1,$(shell $(CC) --version)),4.1)
> -
> +ifeq ($(GCC_SUPPORTS_MCPU),yes)
>   ifneq (,$(findstring CONFIG_M5249,$(is5249)))
>   PLATFORM_CPPFLAGS += -mcpu=5249
>   endif

What makes you think that

	echo __GNUC__ __GNUC_MINOR__ | $(CC) -E -xc - \
	| tail -n 1 | sed -e 's/ /0/'

would be any better than parsing the output of "$(CC) --version"? 

The fact that it takes 4 processes instead of one (or say two if we
add the filtering) is not a recommendation.


Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"Most people would like to be delivered  from  temptation  but  would
like it to keep in touch."                             - Robert Orben

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [U-Boot] [PATCH] Coldire: mcf52x2: Improve gcc version detection
  2009-03-19 21:14 ` Wolfgang Denk
@ 2009-03-20 13:27   ` Richard Retanubun
  2009-03-20 13:44     ` Wolfgang Denk
  0 siblings, 1 reply; 4+ messages in thread
From: Richard Retanubun @ 2009-03-20 13:27 UTC (permalink / raw)
  To: u-boot

Hi Wolfgang,

> What makes you think that
> 
> 	echo __GNUC__ __GNUC_MINOR__ | $(CC) -E -xc - \
> 	| tail -n 1 | sed -e 's/ /0/'
> 
> would be any better than parsing the output of "$(CC) --version"? 
> 
> The fact that it takes 4 processes instead of one (or say two if we
> add the filtering) is not a recommendation.
>

Thanks for the comments,

sorry if I'm (re)stating the obvious, but just to be clear:

ifneq ($(findstring 4.1,$(shell $(CC) --version)),4.1)

while simple, will cause gcc-4.0.x or gcc-3.x.x to try to use the -mcpu option
which is not supported yet until gcc-4.2.+ (if I am not mistaken).

I realize the world is always moving forward and this is an increasingly moot argument,
but the embedded world is often very attached to our toolchains :P

I am sure there are many better ways of extracting the version string, my attempt is to
highlight one way that converts the version to a number and use the '-gt' to compare on it.

Feel free to educate me in 'the better way', my user-space kung-fu is not that strong yet :)

Regards,

- Richard Retanubun

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [U-Boot] [PATCH] Coldire: mcf52x2: Improve gcc version detection
  2009-03-20 13:27   ` Richard Retanubun
@ 2009-03-20 13:44     ` Wolfgang Denk
  0 siblings, 0 replies; 4+ messages in thread
From: Wolfgang Denk @ 2009-03-20 13:44 UTC (permalink / raw)
  To: u-boot

Dear Richard Retanubun,

In message <49C399AA.2030107@RuggedCom.com> you wrote:
> 
> > 	echo __GNUC__ __GNUC_MINOR__ | $(CC) -E -xc - \
> > 	| tail -n 1 | sed -e 's/ /0/'
> > 
> > would be any better than parsing the output of "$(CC) --version"? 
> > 
> > The fact that it takes 4 processes instead of one (or say two if we
> > add the filtering) is not a recommendation.
> 
> sorry if I'm (re)stating the obvious, but just to be clear:
> 
> ifneq ($(findstring 4.1,$(shell $(CC) --version)),4.1)
> 
> while simple, will cause gcc-4.0.x or gcc-3.x.x to try to use the -mcpu option
> which is not supported yet until gcc-4.2.+ (if I am not mistaken).

Well, when I say "parsing the output" I had a little more intelligent
testing in ming than a fixed string compare and decision between 4.1
or anything else.

> I am sure there are many better ways of extracting the version string, my attempt is to
> highlight one way that converts the version to a number and use the '-gt' to compare on it.

You get the number for free from "gcc -v".

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"You can have my Unix system when you  pry  it  from  my  cold,  dead
fingers."                                                - Cal Keegan

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-03-20 13:44 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-19 14:32 [U-Boot] [PATCH] Coldire: mcf52x2: Improve gcc version detection Richard Retanubun
2009-03-19 21:14 ` Wolfgang Denk
2009-03-20 13:27   ` Richard Retanubun
2009-03-20 13:44     ` Wolfgang Denk

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.