[U-Boot-Users] Re: Problem building U-Boot for ARM target

Paolo Broggini pbroggini at softool.ch
Wed Oct 12 10:46:18 CEST 2005


Peter Pearse ha scritto:
> 
> No question is stupid - just giving you the info.
I mean, it is quite obvious that it works by you (... and probably by
a lot of other people to)
> 
> Depends how much time you have available to sort the bug....
> Sometimes it's worth it in the long run.
Definitely! but I'm far to be a "guru" in the make stuff.


>>I tried the macro cc-option "by hand" (so without $CFLAGS) in a bash
>> 
>> shell and I got the same results as above, i.e. the check > for option
>> -mapcs-32 fails but the compiler support it and indeed the compilation
>> works fine! May be a bug?
Sorry forget about this I was making a mistake :-(

The script suggested by Catalin works perfectly either in a bash or a sh shell.
On the other hand, the U-Boot build process fails in both shell.

So I have investigated a little bit the macro cc-option:
   cc-option = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
	> /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)

I tried to drop the CFLAGS variable from the macro:
   cc-option = $(shell if $(CC) $(1) -S -o /dev/null -xc /dev/null \
	> /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
  and the build process worked fine i.e. the check for -mapcs-32 was OK.

Next step, in order to see the content of CFLAGS, I modified the macro as:
   cc-option = $(shell echo "$(CFLAGS)" > ./flags.txt; if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
	> /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
  and this revealed that among a lot of other otions it contains the failing option -mabi=apcs-gnu !!!
  But this option is not set by anybody else just by:
    PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu)
  So it is obvious why cc-option returns the wrong option!

Now the questions are:
1) Why the CFLAGS is in the macro since cc-option should check the compiler support for a particular
    option? Indeed the cc-option contained in config.mk is exactly the same as theone contained in
    linux kernel 2.6.x makefile.

2) How is it possible that CFLAGS contains the failing option since
    $(call cc-option,-mapcs-32,-mabi=apcs-gnu) is not yet processed and not set by anybody else?

3) Why if I replace -mapcs-32 with -g everything works fine? I wish I never tried that!!

Please Peter or Catalin since your compiler support both -mapcs-32 and -mabi=apcs-gnu options could
you try the following?
    PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,-mfoo)


Thanks for your patience!

-P.Broggini








More information about the U-Boot mailing list