Hi Kieran, On Wed, Feb 27, 2019 at 8:56 PM Kieran Bingham <kieran.bingham@xxxxxxxxxxxxxxxx> wrote: > > Hi Yamada-san, > > On 19/02/2019 09:33, Masahiro Yamada wrote: > > gdb-scripts is not a real object, but (ab)used like a phony target. > > > > Rewrite the code in a more Kbuild-ish way. Add symlinks to extra-y > > and use if_changed. > > > > Signed-off-by: Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx> > > --- > > > > scripts/gdb/linux/Makefile | 18 +++++++++++------- > > 1 file changed, 11 insertions(+), 7 deletions(-) > > > > diff --git a/scripts/gdb/linux/Makefile b/scripts/gdb/linux/Makefile > > index 7545806..3df395a 100644 > > --- a/scripts/gdb/linux/Makefile > > +++ b/scripts/gdb/linux/Makefile > > @@ -1,13 +1,17 @@ > > # SPDX-License-Identifier: GPL-2.0 > > -always := gdb-scripts > > > > -SRCTREE := $(abspath $(srctree)) > > - > > -$(obj)/gdb-scripts: > > ifneq ($(KBUILD_SRC),) > > - $(Q)ln -fsn $(SRCTREE)/$(obj)/*.py $(objtree)/$(obj) > > + > > +symlinks := $(patsubst $(srctree)/$(src)/%,%,$(wildcard $(srctree)/$(src)/*.py)) > > + > > +quiet_cmd_symlink = SYMLINK $@ > > + cmd_symlink = ln -fsn $(patsubst $(obj)/%,$(abspath $(srctree))/$(src)/%,$@) $@ > > + > > +extra-y += $(symlinks) > > +$(addprefix $(obj)/, $(symlinks)): FORCE > > + $(call if_changed,symlink) > > + > > endif > > - @: > > > > quiet_cmd_gen_constants_py = GEN $@ > > cmd_gen_constants_py = \ > > @@ -18,4 +22,4 @@ extra-y += constants.py > > $(obj)/constants.py: $(src)/constants.py.in FORCE > > $(call if_changed_dep,gen_constants_py) > > > > -clean-files := *.pyc *.pyo $(if $(KBUILD_SRC),*.py) > > +clean-files := *.pyc *.pyo > > Perhaps this answers my earlier question. > I guess the extra-y hook is somehow handling the clean up of these files? > > Aha - yes, I've just found it in > > Documentation/kbuild/makefiles.txt: > > === 5 Kbuild clean infrastructure > > ... > > Kbuild knows targets listed in $(hostprogs-y), $(hostprogs-m), $(always), $(extra-y) and $(targets). They are all deleted during "make clean". > > Perfect, so this is much better. Exactly. If you are interested in the real code, see scripts/Makefile.clean __clean-files := $(extra-y) $(extra-m) $(extra-) \ $(always) $(targets) $(clean-files) \ $(hostprogs-y) $(hostprogs-m) $(hostprogs-) \ $(hostlibs-y) $(hostlibs-m) $(hostlibs-) \ $(hostcxxlibs-y) $(hostcxxlibs-m) > Reviewed-by: Kieran Bingham <kieran.bingham@xxxxxxxxxxxxxxxx> > > -- > Regards > -- > Kieran -- Best Regards Masahiro Yamada