Message ID | 1368076115-22262-1-git-send-email-vapier@gentoo.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
On Thu, 9 May 2013 01:08:35 -0400 Mike Frysinger <vapier@gentoo.org> wrote: > People/distros vary how they prefix the toolchain name for 64bit > builds. Rather than enforce one convention over another, add a for > loop which does a search for all the general prefixes. This code > will run for both native and cross builds when CROSS_COMPILE isn't > explicitly set. Several architectures appear to use a scriptlet called cc-cross-prefix for this. See scripts/Kbuild.include. jer -- To unsubscribe from this list: send the line "unsubscribe linux-parisc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 05/09/2013 02:28 PM, Jeroen Roovers wrote: > On Thu, 9 May 2013 01:08:35 -0400 > Mike Frysinger <vapier@gentoo.org> wrote: > >> People/distros vary how they prefix the toolchain name for 64bit >> builds. Rather than enforce one convention over another, add a for >> loop which does a search for all the general prefixes. This code >> will run for both native and cross builds when CROSS_COMPILE isn't >> explicitly set. > > Several architectures appear to use a scriptlet called > cc-cross-prefix for this. See scripts/Kbuild.include. That's cool :-) Basically this +ifneq ($(SUBARCH),$(ARCH)) + ifeq ($(CROSS_COMPILE),) + CROSS_COMPILE := $(call cc-cross-prefix, hppa$(WIDTH)-linux- hppa$(WIDTH)-linux-gnu-) + endif endif should then be enough. Do we really need to search for: hppa1.1-unknown-linux-gnu hppa1.1-linux-gnu hppa1.1-linux hppa2.0-unknown-linux-gnu hppa2.0-linux-gnu hppa2.0-linux on 32bit? Helge -- To unsubscribe from this list: send the line "unsubscribe linux-parisc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thursday 09 May 2013 09:14:51 Helge Deller wrote: > On 05/09/2013 02:28 PM, Jeroen Roovers wrote: > > On Thu, 9 May 2013 01:08:35 -0400 Mike Frysinger wrote: > >> People/distros vary how they prefix the toolchain name for 64bit > >> builds. Rather than enforce one convention over another, add a for > >> loop which does a search for all the general prefixes. This code > >> will run for both native and cross builds when CROSS_COMPILE isn't > >> explicitly set. > > > > Several architectures appear to use a scriptlet called > > cc-cross-prefix for this. See scripts/Kbuild.include. > > That's cool :-) > > Basically this > > +ifneq ($(SUBARCH),$(ARCH)) > + ifeq ($(CROSS_COMPILE),) > + CROSS_COMPILE := $(call cc-cross-prefix, > hppa$(WIDTH)-linux- hppa$(WIDTH)-linux-gnu-) > + endif > endif > > should then be enough. > > Do we really need to search for: > hppa1.1-unknown-linux-gnu > hppa1.1-linux-gnu > hppa1.1-linux > hppa2.0-unknown-linux-gnu > hppa2.0-linux-gnu > hppa2.0-linux > on 32bit? Gentoo actively uses hppa1.1 and hppa2.0 (i'm not sure we have any systems that don't use those). we've seen some projects key off of those tuples (like gmp) to change code selection. similarly, the reason i included -unknown- is that is the tuple we use in Gentoo for our native toolchain. for 64bit ones, we've been using ${ARCH}64- linux as it was only good for building the kernel ... it didn't include a C lib itself. along that last line, hppa is the only target anymore where we have a dedicated 64bit compiler for the kernel. all the other ports have biarch support in gcc/binutils :/. CC_ARCHES = hppa$(WIDTH) hppa1.1 hppa2.0 CC_SUFFIXES = linux linux-gnu unknown-linux-gnu CROSS_COMPILE := $(call cc-cross-prefix, \ $(foreach a,$(CC_ARCHES),$(foreach s,$(CC_SUFFIXES),$(a)-$(s)-))) -mike
diff --git a/arch/parisc/Makefile b/arch/parisc/Makefile index 2f967cc..523ae34 100644 --- a/arch/parisc/Makefile +++ b/arch/parisc/Makefile @@ -23,9 +23,6 @@ NM = sh $(srctree)/arch/parisc/nm CHECKFLAGS += -D__hppa__=1 LIBGCC = $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name) -MACHINE := $(shell uname -m) -NATIVE := $(if $(filter parisc%,$(MACHINE)),1,0) - ifdef CONFIG_64BIT UTS_MACHINE := parisc64 CHECKFLAGS += -D__LP64__=1 -m64 @@ -35,12 +32,17 @@ WIDTH := endif # attempt to help out folks who are cross-compiling -ifeq ($(NATIVE),1) -CROSS_COMPILE := hppa$(WIDTH)-linux- -else - ifeq ($(CROSS_COMPILE),) - CROSS_COMPILE := hppa$(WIDTH)-linux-gnu- - endif +ifeq ($(CROSS_COMPILE),) +CROSS_COMPILE := $(shell \ + arches="hppa$(WIDTH)"; \ + [ -z "$(WIDTH)" ] && arches="$$a hppa1.1 hppa2.0"; \ + for a in $$arches; do \ + for p in unknown-linux-gnu linux-gnu linux; do \ + c="$$a-$$p-"; \ + command -v $${c}gcc >/dev/null 2>&1 && echo $$c && break 2; \ + done; \ + done \ +) endif OBJCOPY_FLAGS =-O binary -R .note -R .comment -S
People/distros vary how they prefix the toolchain name for 64bit builds. Rather than enforce one convention over another, add a for loop which does a search for all the general prefixes. This code will run for both native and cross builds when CROSS_COMPILE isn't explicitly set. For 64bit builds, we now search for (in order): hppa64-unknown-linux-gnu hppa64-linux-gnu hppa64-linux For 32bit builds, we look for: hppa-unknown-linux-gnu hppa-linux-gnu hppa-linux hppa1.1-unknown-linux-gnu hppa1.1-linux-gnu hppa1.1-linux hppa2.0-unknown-linux-gnu hppa2.0-linux-gnu hppa2.0-linux Signed-off-by: Mike Frysinger <vapier@gentoo.org> --- arch/parisc/Makefile | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-)