On Mon, 2012-02-27 at 21:41 +0000, James Bottomley wrote: > On Mon, 2012-02-27 at 15:59 -0500, Paul Gortmaker wrote: > > Using the 64 bit toolchains from kernel.org[1], one finds that > > you can't build the a500_defconfig, because the Makefile will > > stomp whatever value you have in your env. for CROSS_COMPILE. > > > > This shows up since the kernel.org toolchains for parisc-64 > > do not have the "-gnu" prefix, and so you run into it always > > saying hppa64-linux-gnu-gcc not found, regardless of the fact > > you've not got "-gnu" put anywhere into CROSS_COMPILE. > > > > Since you can set CROSS_COMPILE from the environment and/or set > > it in your .config file, there really is no need for it to be > > poked at by the Makefile at all. So just delete it. > > > > [1] ftp://ftp.kernel.org/pub/tools/crosstool/files/bin/x86_64/4.5.2/ > > > > Signed-off-by: Paul Gortmaker <paul.gortmaker@xxxxxxxxxxxxx> > > --- > > > > [v2: no ifdef/endif -- just delete the offending line.] > > > > diff --git a/arch/parisc/Makefile b/arch/parisc/Makefile > > index 55cca1d..a533367 100644 > > --- a/arch/parisc/Makefile > > +++ b/arch/parisc/Makefile > > @@ -31,7 +31,6 @@ ifdef CONFIG_64BIT > > UTS_MACHINE := parisc64 > > CHECKFLAGS += -D__LP64__=1 -m64 > > WIDTH := 64 > > -CROSS_COMPILE := hppa64-linux-gnu- > > else # 32-bit > > WIDTH := > > endif > > We can't do that ... it crashes a standard build almost immediately > because it doesn't pick the 64 bit compiler (and we have no biarch > solution). > > We need make on a 64 bit config to work out of the box. It breaks > with ?= as JDA pointed out because CROSS_COMPILE is always defined. > Does this satisfy everyone? > > James > > --- > > diff --git a/arch/parisc/Makefile b/arch/parisc/Makefile > index 55cca1d..19ab7b2 100644 > --- a/arch/parisc/Makefile > +++ b/arch/parisc/Makefile > @@ -31,7 +31,11 @@ ifdef CONFIG_64BIT > UTS_MACHINE := parisc64 > CHECKFLAGS += -D__LP64__=1 -m64 > WIDTH := 64 > + > +# FIXME: if no default set, should really try to locate dynamically > +ifeq ($(CROSS_COMPILE),) > CROSS_COMPILE := hppa64-linux-gnu- > +endif > else # 32-bit > WIDTH := > endif There's an awful lot more than just this wrong with that Makefile. For instance, NATIVE can never be set because ifeq() isn't globbing in make scripts ... So I think a final (and dynamically choosing if unset) solution is this one. I'll stop now before I find something else wrong ... James --- diff --git a/arch/parisc/Makefile b/arch/parisc/Makefile index 55cca1d..c823f4a 100644 --- a/arch/parisc/Makefile +++ b/arch/parisc/Makefile @@ -23,24 +23,20 @@ NM = sh $(srctree)/arch/parisc/nm CHECKFLAGS += -D__hppa__=1 MACHINE := $(shell uname -m) -ifeq ($(MACHINE),parisc*) -NATIVE := 1 -endif ifdef CONFIG_64BIT UTS_MACHINE := parisc64 CHECKFLAGS += -D__LP64__=1 -m64 WIDTH := 64 -CROSS_COMPILE := hppa64-linux-gnu- + +# if no default set, try to find the corresponding 64 bit compiler +ifeq ($(CROSS_COMPILE),) +CROSS_COMPILE := $(shell $(CC) -dumpmachine | sed s/hppa-\\\(.*\\\)/hppa64-\\1-/) +endif else # 32-bit WIDTH := endif -# attempt to help out folks who are cross-compiling -ifeq ($(NATIVE),1) -CROSS_COMPILE := hppa$(WIDTH)-linux- -endif - OBJCOPY_FLAGS =-O binary -R .note -R .comment -S cflags-y := -pipe ��.n��������+%������w��{.n�����{��w����ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f