• Masahiro Yamada's avatar
    kbuild: create object directories simpler and faster · 8a78756e
    Masahiro Yamada authored
    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 result is
    as many "./" as objects here.
    
    For a lot of 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 ugly code in arch/x86/entry/vdso/Makefile.  This is now
    really unnecessary.
    Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
    Acked-by: default avatarIngo Molnar <mingo@kernel.org>
    Tested-by: default avatarDouglas Anderson <dianders@chromium.org>
    8a78756e
Makefile.build 19.2 KB