[U-Boot] [PATCH] build:arm: Remove setting of CROSS_COMPILE environment variable

Masahiro Yamada yamada.m at jp.panasonic.com
Wed Mar 19 03:55:35 CET 2014


Hi Lukasz, Tom,


> Hi Tom,
> 
> > On Tue, Mar 18, 2014 at 04:46:48PM +0100, Lukasz Majewski wrote:
> > 
> > > After Kbuild introduction, the CROSS_COMPILE environment variable
> > > has been set to some default value (prefix arm-linux-).
> > 
> > Note that this is quite a long-standing thing.  Perhaps we're now not
> > detecting a native build when we used to?
> 
> My point is that we are relying on assigning default prefix (i.e.
> arm-linux-)
> 
> For example OSELAS toolchains can have an arbitrary prefix
> (e.g. arm-linux-gnueabi-).
> 
> When I cross compile I set explicitly "CROSS_COMPILE=<toolchain> make"
> and it works as it should (with or without this patch). Such approach
> seems natural for me.
>
> However, I don't know what is the exact rationale for seting this
> arm-linux- prefix to CROSS_COMPILE.
> I can only guess, that it is connected with situation when one just
> type "make" on x86_64 host and expect u-boot to be CROSS_COMPILE'd
> out of the box.

Agree.
It is useful only for people using "arm-linux-gcc" on x86 host.
I usually use "arm-linux-gnueabi-gcc". Someone else may be using other
prefixes.

I think there is no rationale more sophisticated than that it just has
been there since long time before.

So, I agree with this patch except a little misleading
commit description I commented below.

Acked-by: Masahiro Yamada <yamada.m at jp.panasonic.com>



> Unfortunately this doesn't work with ARM host emulated with qemu (like
> OBS). Here when I type "make" I expect that "native" gcc for arm will
> run without even touching CROSS_COMPILE environment variable.

I believe it is the same as prior to Kbuild.

So, I am not convined with this part of your commit description:
> After Kbuild introduction, the CROSS_COMPILE environment variable has been
> set to some default value (prefix arm-linux-).


> Any idea how to fix this is more than welcome.

If you are searching some other choices,


[1]
ifneq ("$(origin CROSS_COMPILE)", "command line")
ifeq ($(CROSS_COMPILE),)
CROSS_COMPILE := arm-linux-
endif
endif

For native build on ARM, you can explicitely set CROSS_COMPILE as
empty:    "make CROSS_COMPILE="
In this case, CROSS_COMPILE will not be overwritten in
arch/arm/config.mk.


[2]
ifneq ($(HOSTARCH),$(ARCH))
ifeq ($(CROSS_COMPILE),)
CROSS_COMPILE := arm-linux-
endif
endif

For native build on ARM, both $(HOSTARCH) and $(ARCH)
are "arm", so CROSS_COMPILE will not be set.



But, I think deleting CROSS_COMPILE setting is the simplest and the best.


Best Regards
Masahiro Yamada



More information about the U-Boot mailing list