Skip to contentSkip to conversation

build:arm: Remove setting of CROSS_COMPILE environment variable

PATCH New Lukasz Majewski 5 participants 13 messages Mar 18, 2014 – Apr 9, 2014 Arm (32-bit)

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 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

---
 arch/arm/config.mk |    4 ----
 1 file changed, 4 deletions(-)
arch/arm/config.mk +0 -4
index f4c2d81..178a59a 100644
@@ -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
Signature · 1 line
1.7.10.4
#1 lore raw

PATCH 1/1 build:arm: Remove setting of CROSS_COMPILE environment variable

Quoted 2 lines · Lukasz Majewski

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?

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140318/bd975719/attachment.pgp>
#2 lore raw

PATCH 1/1 build:arm: Remove setting of CROSS_COMPILE environment variable

Hi Tom,

Quoted 7 lines · Lukasz Majewski
Quoted 3 lines

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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140318/a89c0703/attachment.pgp>

#3 lore raw

PATCH 1/1 build:arm: Remove setting of CROSS_COMPILE environment variable

Hi Lukasz, Tom,

Quoted 20 lines

Hi Tom,

Quoted 7 lines · Lukasz Majewski
Quoted 3 lines

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.

Quoted 5 lines

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.

Quoted 3 lines

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:

Quoted 5 lines

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

#4 lore raw

PATCH 1/1 build:arm: Remove setting of CROSS_COMPILE environment variable

Hi Masahiro,

Quoted 34 lines

Hi Lukasz, Tom,

Quoted 20 lines

Hi Tom,

Quoted 7 lines · Lukasz Majewski
Quoted 3 lines

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.

Quoted 5 lines

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.

Quoted 8 lines

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.

Thanks for review.

Quoted 39 lines
Quoted 6 lines

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:

Quoted 5 lines

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

Quoted 7 lines

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.

Quoted 5 lines

Best Regards
Masahiro Yamada

Signature · 5 lines
Best regards,

Lukasz Majewski

Samsung R&D Institute Poland (SRPOL) | Linux Platform Group
#5 lore raw

PATCH 1/1 build:arm: Remove setting of CROSS_COMPILE environment variable

In reply to Masahiro Yamada

Hi Albert,

Quoted 34 lines

Hi Lukasz, Tom,

Quoted 20 lines

Hi Tom,

Quoted 7 lines · Lukasz Majewski
Quoted 3 lines

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.

Quoted 5 lines

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.

Quoted 8 lines

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.

Albert, could you take this patch for your arm repository?

Quoted 51 lines
Quoted 6 lines

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:

Quoted 5 lines

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

Signature · 5 lines
Best regards,

Lukasz Majewski

Samsung R&D Institute Poland (SRPOL) | Linux Platform Group
#6 lore raw

PATCH 1/1 build:arm: Remove setting of CROSS_COMPILE environment variable

Hi Lukasz,

Quoted 39 lines · Lukasz Majewski

Hi Albert,

Quoted 37 lines

Hi Lukasz, Tom,

Quoted 20 lines

Hi Tom,

Quoted 7 lines · Lukasz Majewski
Quoted 3 lines

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.

Quoted 5 lines

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.

Quoted 7 lines
Quoted 5 lines

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

Albert, could you take this patch for your arm repository?

I can. How would you like me to rephrase the commit message?

Amicalement,

Signature · 1 line
Albert.
#7 lore raw

PATCH 1/1 build:arm: Remove setting of CROSS_COMPILE environment variable

Hi Albert,

Quoted 49 lines

Hi Lukasz,

Quoted 44 lines · Lukasz Majewski

Hi Albert,

Quoted 42 lines

Hi Lukasz, Tom,

Quoted 22 lines

Hi Tom,

Quoted 9 lines
Quoted 3 lines · Lukasz Majewski

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.

Quoted 5 lines

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.

Quoted 6 lines
Quoted 4 lines
Quoted 2 lines

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.

Quoted 2 lines

Amicalement,

Thanks a lot for your support.

Signature · 5 lines
Best regards,

Lukasz Majewski

Samsung R&D Institute Poland (SRPOL) | Linux Platform Group
#8 lore raw

PATCH 1/1 build:arm: Remove setting of CROSS_COMPILE environment variable

Hi Albert,

Quoted 69 lines

Hi Albert,

Quoted 50 lines

Hi Lukasz,

Quoted 45 lines · Lukasz Majewski

Hi Albert,

Quoted 43 lines

Hi Lukasz, Tom,

Quoted 23 lines

Hi Tom,

Quoted 9 lines
Quoted 3 lines · Lukasz Majewski

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.

Quoted 5 lines

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.

Quoted 6 lines
Quoted 4 lines
Quoted 2 lines

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.

Quoted 8 lines

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?

Quoted 6 lines
Quoted 3 lines

Amicalement,

Thanks a lot for your support.

Signature · 5 lines
Best regards,

Lukasz Majewski

Samsung R&D Institute Poland (SRPOL) | Linux Platform Group
#9 lore raw

PATCH 1/1 build:arm: Remove setting of CROSS_COMPILE environment variable

Hi Albert,

Quoted 76 lines

Hi Albert,

Quoted 74 lines

Hi Albert,

Quoted 50 lines

Hi Lukasz,

Quoted 45 lines · Lukasz Majewski

Hi Albert,

Quoted 43 lines

Hi Lukasz, Tom,

Quoted 23 lines

Hi Tom,

Quoted 9 lines
Quoted 3 lines · Lukasz Majewski

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.

Quoted 5 lines

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.

Quoted 6 lines
Quoted 4 lines
Quoted 2 lines

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

Quoted 6 lines
Quoted 3 lines

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

Quoted 10 lines
Quoted 7 lines
Quoted 4 lines

Amicalement,

Thanks a lot for your support.

Signature · 5 lines
Best regards,

Lukasz Majewski

Samsung R&D Institute Poland (SRPOL) | Linux Platform Group
#10 lore raw

PATCH 1/1 build:arm: Remove setting of CROSS_COMPILE environment variable

Hi Lukasz,

Quoted 5 lines · Lukasz Majewski

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,

Signature · 1 line
Albert.
#11 lore raw

PATCH 1/1 build:arm: Remove setting of CROSS_COMPILE environment variable

In reply to Lukasz Majewski

Hi Lukasz,

Quoted 22 lines · Lukasz Majewski

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

---
 arch/arm/config.mk |    4 ----
 1 file changed, 4 deletions(-)
arch/arm/config.mk +0 -0
index f4c2d81..178a59a 100644

arch/arm/config.mk line 10

Quoted 10 lines
arch/arm/config.mk +0 -4
@@ -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,

Signature · 1 line
Albert.
#12 lore raw

PATCH 1/1 build:arm: Remove setting of CROSS_COMPILE environment variable

Hi Albert,

Quoted 1 line

Applied to u-boot-arm/master, thanks!

BTW, you failed to rephrase the commit message.
Anyway it's too late and OK for me.

Quoted 8 lines

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

Quoted 6 lines

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