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

After Kbuild introduction, the CROSS_COMPILE environment variable has been set to some default value (prefix arm-linux-).
This shall be removed since it breaks building u-boot for native arm target (like qemu ARM). Moreover not all compilers have arm-linux- prefix.
Additionally the u-boot cross compiles with CROSS_COMPILE= set explicitly- e.g.: CROSS_COMPILE=/ .... /arm-v7a-linux-gnueabi- make
Signed-off-by: Lukasz Majewski l.majewski@samsung.com Cc: Masahiro Yamada yamada.m@jp.panasonic.com --- arch/arm/config.mk | 4 ---- 1 file changed, 4 deletions(-)
diff --git a/arch/arm/config.mk b/arch/arm/config.mk index f4c2d81..178a59a 100644 --- a/arch/arm/config.mk +++ b/arch/arm/config.mk @@ -5,10 +5,6 @@ # SPDX-License-Identifier: GPL-2.0+ #
-ifeq ($(CROSS_COMPILE),) -CROSS_COMPILE := arm-linux- -endif - ifndef CONFIG_STANDALONE_LOAD_ADDR ifneq ($(CONFIG_OMAP_COMMON),) CONFIG_STANDALONE_LOAD_ADDR = 0x80300000

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?

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.
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.
Any idea how to fix this is more than welcome.
Best regards, Lukasz Majewski

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
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

Hi Masahiro,
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
Thanks for review.
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.
Ok, lets stick to this solution.
Best Regards Masahiro Yamada

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

Hi Lukasz,
On Tue, 25 Mar 2014 09:55:45 +0100, Lukasz Majewski l.majewski@samsung.com wrote:
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?
I can. How would you like me to rephrase the commit message?
Amicalement,

Hi Albert,
Hi Lukasz,
On Tue, 25 Mar 2014 09:55:45 +0100, Lukasz Majewski l.majewski@samsung.com wrote:
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?
I can. How would you like me to rephrase the commit message?
Maybe something like this:
-- 8< -- For building u-boot on ARM the CROSS_COMPILE environment variable, when not defined, was set to default value (prefix arm-linux-).
Since not all cross compilers have the arm-linux- prefix and this setting prevents from building u-boot on natively arm powered devices it would be best to remove it.
As a side note: The most universal way to cross compile u-boot is to specify the CROSS_COMPILE environment variable explicitly - e.g.: CROSS_COMPILE=/ .... /arm-v7a-linux-gnueabi- make
-- >8 --
And also please add the Acked-by from Masahiro.
Amicalement,
Thanks a lot for your support.

Hi Albert,
Hi Albert,
Hi Lukasz,
On Tue, 25 Mar 2014 09:55:45 +0100, Lukasz Majewski l.majewski@samsung.com wrote:
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?
I can. How would you like me to rephrase the commit message?
Maybe something like this:
-- 8< -- For building u-boot on ARM the CROSS_COMPILE environment variable, when not defined, was set to default value (prefix arm-linux-).
Since not all cross compilers have the arm-linux- prefix and this setting prevents from building u-boot on natively arm powered devices it would be best to remove it.
As a side note: The most universal way to cross compile u-boot is to specify the CROSS_COMPILE environment variable explicitly - e.g.: CROSS_COMPILE=/ .... /arm-v7a-linux-gnueabi- make
-- >8 --
And also please add the Acked-by from Masahiro.
Albert, do you need any more support to pull this patch to u-boot-arm branch?
Amicalement,
Thanks a lot for your support.

Hi Albert,
Hi Albert,
Hi Albert,
Hi Lukasz,
On Tue, 25 Mar 2014 09:55:45 +0100, Lukasz Majewski l.majewski@samsung.com wrote:
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?
I can. How would you like me to rephrase the commit message?
Maybe something like this:
-- 8< -- For building u-boot on ARM the CROSS_COMPILE environment variable, when not defined, was set to default value (prefix arm-linux-).
Since not all cross compilers have the arm-linux- prefix and this setting prevents from building u-boot on natively arm powered devices it would be best to remove it.
As a side note: The most universal way to cross compile u-boot is to specify the CROSS_COMPILE environment variable explicitly - e.g.: CROSS_COMPILE=/ .... /arm-v7a-linux-gnueabi- make
-- >8 --
And also please add the Acked-by from Masahiro.
Albert, do you need any more support to pull this patch to u-boot-arm branch?
Are you willing to add this patch to your u-boot-arm tree?
I know that you were not available on the ML for some time and hence, I'm curious if you plan to send pull request for u-boot-arm tree to Tom before the v2014.04 release?
Amicalement,
Thanks a lot for your support.

Hi Lukasz,
On Mon, 07 Apr 2014 09:04:58 +0200, Lukasz Majewski l.majewski@samsung.com wrote:
Are you willing to add this patch to your u-boot-arm tree?
I know that you were not available on the ML for some time and hence, I'm curious if you plan to send pull request for u-boot-arm tree to Tom before the v2014.04 release?
Yes and yes -- I am clean up my backlog and this patch will get in before I send the PR.
Amicalement,

Hi Lukasz,
On Tue, 18 Mar 2014 16:46:48 +0100, Lukasz Majewski l.majewski@samsung.com wrote:
After Kbuild introduction, the CROSS_COMPILE environment variable has been set to some default value (prefix arm-linux-).
This shall be removed since it breaks building u-boot for native arm target (like qemu ARM). Moreover not all compilers have arm-linux- prefix.
Additionally the u-boot cross compiles with CROSS_COMPILE= set explicitly- e.g.: CROSS_COMPILE=/ .... /arm-v7a-linux-gnueabi- make
Signed-off-by: Lukasz Majewski l.majewski@samsung.com Cc: Masahiro Yamada yamada.m@jp.panasonic.com
arch/arm/config.mk | 4 ---- 1 file changed, 4 deletions(-)
diff --git a/arch/arm/config.mk b/arch/arm/config.mk index f4c2d81..178a59a 100644 --- a/arch/arm/config.mk +++ b/arch/arm/config.mk @@ -5,10 +5,6 @@ # SPDX-License-Identifier: GPL-2.0+ #
-ifeq ($(CROSS_COMPILE),) -CROSS_COMPILE := arm-linux- -endif
ifndef CONFIG_STANDALONE_LOAD_ADDR ifneq ($(CONFIG_OMAP_COMMON),) CONFIG_STANDALONE_LOAD_ADDR = 0x80300000
Applied to u-boot-arm/master, thanks!
Amicalement,

Hi Albert,
Applied to u-boot-arm/master, thanks!
BTW, you failed to rephrase the commit message. Anyway it's too late and OK for me.
-- 8< -- For building u-boot on ARM the CROSS_COMPILE environment variable, when not defined, was set to default value (prefix arm-linux-).
Since not all cross compilers have the arm-linux- prefix and this setting prevents from building u-boot on natively arm powered devices it would be best to remove it.
As a side note: The most universal way to cross compile u-boot is to specify the CROSS_COMPILE environment variable explicitly - e.g.: CROSS_COMPILE=/ .... /arm-v7a-linux-gnueabi- make
-- >8 --
Best Regards Masahiro Yamada
participants (5)
-
Albert ARIBAUD
-
Lukasz Majewski
-
Lukasz Majewski
-
Masahiro Yamada
-
Tom Rini