[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20201123150452.GA68187@MacBook-Pro-2>
Date: Mon, 23 Nov 2020 23:04:52 +0800
From: WANG Chao <chao.wang@...oud.cn>
To: Masahiro Yamada <masahiroy@...nel.org>
Cc: Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
Linux Kbuild mailing list <linux-kbuild@...r.kernel.org>
Subject: Re: [PATCH] kbuild: add extra-y to targets-for-modules
On 11/23/20 at 02:23P, Masahiro Yamada wrote:
> On Tue, Nov 3, 2020 at 3:23 PM WANG Chao <chao.wang@...oud.cn> wrote:
> >
> > extra-y target doesn't build for 'make M=...' since commit 6212804f2d78
> > ("kbuild: do not create built-in objects for external module builds").
> >
> > This especially breaks kpatch, which is using 'extra-y := kpatch.lds'
> > and 'make M=...' to build livepatch patch module.
> >
> > Add extra-y to targets-for-modules so that such kind of build works
> > properly.
> >
> > Signed-off-by: WANG Chao <chao.wang@...oud.cn>
> > ---
> > scripts/Makefile.build | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/scripts/Makefile.build b/scripts/Makefile.build
> > index ae647379b579..0113a042d643 100644
> > --- a/scripts/Makefile.build
> > +++ b/scripts/Makefile.build
> > @@ -86,7 +86,7 @@ ifdef need-builtin
> > targets-for-builtin += $(obj)/built-in.a
> > endif
> >
> > -targets-for-modules := $(patsubst %.o, %.mod, $(filter %.o, $(obj-m)))
> > +targets-for-modules := $(extra-y) $(patsubst %.o, %.mod, $(filter %.o, $(obj-m)))
> >
> > ifdef need-modorder
> > targets-for-modules += $(obj)/modules.order
> > --
> > 2.29.1
> >
>
> NACK.
>
> Please fix your Makefile.
>
> Hint:
> https://patchwork.kernel.org/project/linux-kbuild/patch/20201123045403.63402-6-masahiroy@kernel.org/
>
>
> Probably what you should use is 'targets'.
I tried with 'targets' and 'always-y'. Both doesn't work for me.
I narraw it down to the following example:
cat > Makefile << _EOF_
obj-m += foo.o
ldflags-y += -T $(src)/kpatch.lds
always-y += kpatch.lds
foo-objs += bar.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD)
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
_EOF_
Take a look into scripts/Makefile.build:488:
__build: $(if $(KBUILD_BUILTIN), $(targets-for-builtin)) \
$(if $(KBUILD_MODULES), $(targets-for-modules)) \
$(subdir-ym) $(always-y)
@:
'always-y' is built after 'targets-for-modules'. This makes
'targets-for-modules' fails because kpatch.lds isn't there.
For 'targets', in case of OOT, does not seem to be useful.
What change do you suggest to make to fix this kind of Makefile?
Thanks,
WANG Chao
Powered by blists - more mailing lists