Re: [PATCH 2/2] powerpc: Fix defconfig choice logic when cross compiling
From: Mathieu Malaterre <hidden>
Date: 2019-02-07 10:21:24
Subsystem:
kernel build + files below scripts/ (unless maintained elsewhere), linux for powerpc (32-bit and 64-bit), the rest · Maintainers:
Nathan Chancellor, Nicolas Schier, Madhavan Srinivasan, Linus Torvalds
On Thu, Feb 7, 2019 at 6:20 AM Michael Ellerman [off-list ref] wrote:
Our logic for choosing defconfig doesn't work well in some situations. For example if you're on a ppc64le machine but you specify a non-empty CROSS_COMPILE, in order to use a non-default toolchain, then defconfig will give you ppc64_defconfig (big endian): $ make CROSS_COMPILE=~/toolchains/gcc-8/bin/powerpc-linux- defconfig *** Default configuration is based on 'ppc64_defconfig' This is because we assume that CROSS_COMPILE being set means we can't be on a ppc machine and rather than checking we just default to ppc64_defconfig. We should just ignore CROSS_COMPILE, instead check the machine with uname and if it's one of ppc, ppc64 or ppc64le then use that defconfig. If it's none of those then we fall back to ppc64_defconfig.
How about shamelessly copying x86:
diff --git a/Makefile b/Makefile
index 3142e67d03f1..041616742142 100644
--- a/Makefile
+++ b/Makefile@@ -351,6 +351,14 @@ ifeq ($(ARCH),sparc64) SRCARCH := sparc endif +# Additional ARCH settings for ppc +ifeq ($(ARCH),ppc64) + SRCARCH := powerpc +endif +ifeq ($(ARCH),ppc64el) + SRCARCH := powerpc +endif + # Additional ARCH settings for sh ifeq ($(ARCH),sh64) SRCARCH := sh
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index 10bf5dc7cdf0..cbb679fb7162 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile@@ -34,10 +34,17 @@ ifdef CONFIG_PPC_BOOK3S_32 KBUILD_CFLAGS += -mcpu=powerpc endif -# If we're on a ppc/ppc64/ppc64le machine use that defconfig,
otherwise just use -# ppc64_defconfig because we have nothing better to go on. -uname := $(shell uname -m) -KBUILD_DEFCONFIG := $(if $(filter ppc%,$(uname)),$(uname),ppc64)_defconfig +# select defconfig based on actual architecture +ifeq ($(ARCH),powerpc) + ifeq ($(shell uname -m),ppc64) + KBUILD_DEFCONFIG := ppc64_defconfig + else + KBUILD_DEFCONFIG := ppc_defconfig + endif +else + KBUILD_DEFCONFIG := $(ARCH)_defconfig +endif + ifdef CONFIG_PPC64 new_nm := $(shell if $(NM) --help 2>&1 | grep -- '--synthetic' > /dev/null; then echo y; else echo n; fi)
quoted hunk ↗ jump to hunk
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> --- arch/powerpc/Makefile | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile index 70e6e8119aeb..81563986a30e 100644 --- a/arch/powerpc/Makefile +++ b/arch/powerpc/Makefile@@ -34,11 +34,10 @@ ifdef CONFIG_PPC_BOOK3S_32 KBUILD_CFLAGS += -mcpu=powerpc endif -ifeq ($(CROSS_COMPILE),) -KBUILD_DEFCONFIG := $(shell uname -m)_defconfig -else -KBUILD_DEFCONFIG := ppc64_defconfig -endif +# If we're on a ppc/ppc64/ppc64le machine use that defconfig, otherwise just use +# ppc64_defconfig because we have nothing better to go on. +uname := $(shell uname -m) +KBUILD_DEFCONFIG := $(if $(filter ppc%,$(uname)),$(uname),ppc64)_defconfig ifdef CONFIG_PPC64 new_nm := $(shell if $(NM) --help 2>&1 | grep -- '--synthetic' > /dev/null; then echo y; else echo n; fi) --2.20.1