Re: [PATCH] Make m68k cross compile like every other architecture.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 12 Oct 2007, Sam Ravnborg wrote:
On Fri, Oct 12, 2007 at 10:51:00AM +0200, Geert Uytterhoeven wrote:
On Fri, 12 Oct 2007, Finn Thain wrote:
If your cross-compiler is called differently than the default on in 
arch/*/Makefile,

Part of the problem is that there is no compelling default. The name of 
the cross-compiler can vary depending on the chosen executable prefix or 
the chosen target tuple.

Let's say I create new cross toolchains for both m68k and powerpc. I use 
the "m68k-linux-gnu" to follow the m68k default, but let's assume powerpc 
users prefer their default "powerpc-linux" so I follow that too. The 
result is that I now have gcc's -B option working (or not working) in 
suprising ways too.

Uniformity is more helpful downstream than a different arbitrary default 
for each architecture. Debian should patch their default into their kernel 
source packages if they've standardised on cross compiler prefixes.

what's the problem with calling?

    make ARCH=myarch CROSS_COMPILE=my-cross-compile-prefx-

This has been working for +10 years on all non-ia32 platforms I ever worked on.

But there is no problem with calling that (?). Rob's patch doesn't change 
this.

But it makes life harder for the people who use it daily.

If the consensus is to not provide default cross compiler prefixes in
arch/*/Makefile, fine for me, but IFF it's done for all architectures
(i.e. check with the blackfin, h8300, mips, parisc, and xtensa people
first).

Test if the expected gcc is available and set CROSS_COMPILE
if it is present. Otherwise do not touch CROSS_COMPILE.

m68kgcc := $(shell "test if m68k-gcc is present and echo 'y' if so")
ifeq ($(m68kgcc,y)
        CROSS_COMPILE := m68k-foo
endif

Then everyone is happy.
parisc does something similar.

64-bit parisc tests if /usr/bin/hppa64-linux-gnu- exists.
If yes, it sets CROSS_COMPILE to hppa64-linux-gnu-.
If no, it sets CROSS_COMPILE to hppa64-linux-

32-bit parisc unconditionally sets CROSS_COMPILE to hppa-linux-.

This still breaks Rob's setup if his compiler is called differently.

Anyway, here's a try to make it autodetect m68k-linux-gnu-gcc and
m68k-linux-gcc. Perhaps it can be generalized in kbuild, to allow
arch/*/Makefile to set a list of possible cross-compiler prefixes?

Subject: m68k: Improve cross-compiler autodetection

m68k: Improve cross-compiler autodetection

Set CROSS_COMPILE to m68k-linux-gnu- resp. m68k-linux-, but only if such a
cross compiler is found in your $PATH

Signed-off-by: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx>
---
 arch/m68k/Makefile |   12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

--- a/arch/m68k/Makefile
+++ b/arch/m68k/Makefile
@@ -22,7 +22,17 @@ LDFLAGS := -m m68kelf
 LDFLAGS_MODULE += -T $(srctree)/arch/m68k/kernel/module.lds
 ifneq ($(COMPILE_ARCH),$(ARCH))
 	# prefix for cross-compiling binaries
-	CROSS_COMPILE = m68k-linux-gnu-
+	m68k-linux-gnu-gcc := $(shell if [ `which m68k-linux-gnu-gcc` ]; then \
+		echo y; fi)
+	ifeq ($(m68k-linux-gnu-gcc),y)
+		CROSS_COMPILE := m68k-linux-gnu-
+	else
+		m68k-linux-gcc := $(shell if [ `which m68k-linux-gcc` ]; then \
+			echo y; fi)
+		ifeq ($(m68k-linux-gcc),y)
+			CROSS_COMPILE := m68k-linux-
+		endif
+	endif
 endif
 
 ifdef CONFIG_SUN3

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds
-
To unsubscribe from this list: send the line "unsubscribe linux-m68k" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Video for Linux]     [Yosemite News]     [Linux S/390]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux