Thread (15 messages) 15 messages, 4 authors, 2015-10-15

Re: [RFC, 1/2] scripts/kconfig/Makefile: Allow KBUILD_DEFCONFIG to be a target

From: Michael Ellerman <mpe@ellerman.id.au>
Date: 2015-10-15 03:27:19
Also in: linux-kbuild, lkml

On Wed, 2015-10-14 at 09:54 -0700, Olof Johansson wrote:
On Tue, Oct 13, 2015 at 4:43 PM, Michael Ellerman [off-list ref] wrote:
quoted
On Tue, 2015-10-13 at 14:02 -0700, Olof Johansson wrote:
quoted
On Fri, Oct 2, 2015 at 12:47 AM, Michael Ellerman [off-list ref] wrote:
quoted
On Wed, 2015-23-09 at 05:40:34 UTC, Michael Ellerman wrote:
quoted
Arch Makefiles can set KBUILD_DEFCONFIG to tell kbuild the name of the
defconfig that should be built by default.

However currently there is an assumption that KBUILD_DEFCONFIG points to
a file at arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG).

We would like to use a target, using merge_config, as our defconfig, so
adapt the logic in scripts/kconfig/Makefile to allow that.

To minimise the chance of breaking anything, we first check if
KBUILD_DEFCONFIG is a file, and if so we do the old logic. If it's not a
file, then we call the top-level Makefile with KBUILD_DEFCONFIG as the
target.

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Acked-by: Michal Marek <redacted>
Applied to powerpc next.

https://git.kernel.org/powerpc/c/d2036f30cfe1daa19e63ce75
This breaks arm64 defconfig for me:

mkdir obj-tmp
make -f Makefile O=obj-tmp ARCH=arm64 defconfig
... watch loop of:
*** Default configuration is based on target 'defconfig'
  GEN     ./Makefile
Crap, sorry. I knew I shouldn't have touched that code!

Does this fix it for you?
Yes, it does, however:
quoted
diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
index b2b9c87..3043d6b 100644
--- a/scripts/kconfig/Makefile
+++ b/scripts/kconfig/Makefile
@@ -96,7 +96,7 @@ savedefconfig: $(obj)/conf
 defconfig: $(obj)/conf
 ifeq ($(KBUILD_DEFCONFIG),)
        $< $(silent) --defconfig $(Kconfig)
-else ifneq ($(wildcard arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)),)
+else ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)),)
        @$(kecho) "*** Default configuration is based on '$(KBUILD_DEFCONFIG)'"
        $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig)
Do you need a $(srctree) prefix here too? I'm not entirely sure what I
would do to reproduce a run that goes down this path so I can't
confirm.
That is the path you're going down, now that it's fixed. That's the path where
KBUILD_DEFCONFIG is a real file, ie. the old behaviour.

I'm not sure why it doesn't have a $(srctree) there, but it's never had one.

It looks like it eventually boils down to zconf_fopen() which looks for the
file in both .  and $(srctree).

So I think we could add a $(srctree) there, it would be more obvious and not
rely on the zconf_fopen() behaviour, but I'd rather leave it as is and let
Michal do that as a cleanup later.

cheers
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help