[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