
Hi Albert,
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@jp.panasonic.com
Albert, could you take this patch for your arm repository?
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