Messages in this thread | | | Date | Fri, 10 Nov 2017 07:26:40 +0100 | From | Ingo Molnar <> | Subject | Re: [PATCH 3/4] kbuild: create object directories simpler and faster |
| |
* Masahiro Yamada <yamada.masahiro@socionext.com> wrote:
> For the out-of-tree build, scripts/Makefile.build creates output > directories, but this operation is not efficient. > > scripts/Makefile.lib calculates obj-dirs as follows: > > obj-dirs := $(dir $(multi-objs) $(obj-y)) > > Please notice $(sort ...) is not used here. Usually the resulted > obj-dirs is as many "./" as objects. > > For those duplicated paths, the following command is invoked. > > _dummy := $(foreach d,$(obj-dirs), $(shell [ -d $(d) ] || mkdir -p $(d))) > > Then, the costly shell command is run over and over again. > > I see many points for optimization: > > [1] Use $(sort ...) to cut down duplicated paths before passing them > to system call > [2] Use single $(shell ...) instead of repeating it with $(foreach ...) > This will reduce forking. > [3] We can calculate obj-dirs more simply. Most of objects are already > accumulated in $(targets). So, $(dir $(targets)) is fine and more > comprehensive. > > I also removed bad code in arch/x86/entry/vdso/Makefile. This is now > really unnecessary. > > Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> > --- > > arch/x86/entry/vdso/Makefile | 4 ---- > scripts/Makefile.build | 15 ++++++--------- > scripts/Makefile.host | 11 ----------- > scripts/Makefile.lib | 5 ----- > 4 files changed, 6 insertions(+), 29 deletions(-)
I love not just the speedup, but the diffstat as well ;-)
Acked-by: Ingo Molnar <mingo@kernel.org>
Thanks,
Ingo
| |