Hi Cao, 2017-11-10 19:58 GMT+09:00 Cao jin <caoj.fnst@xxxxxxxxxxxxxx>: > Masahiro-san > > On 11/09/2017 11:41 PM, Masahiro Yamada wrote: >> The previous commit largely optimized the object directory creation. >> We can optimize it more for incremental build. >> >> There are already *.cmd files in the output directory. The existing >> *.cmd files have been picked up by $(wildcard ...). Obviously, >> directories containing them exist too, so we can skip "mkdir -p". >> >> With this, Kbuild runs almost zero "mkdir -p" in incremental building. >> >> Signed-off-by: Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx> >> --- >> >> scripts/Makefile.build | 5 +++++ >> 1 file changed, 5 insertions(+) >> >> diff --git a/scripts/Makefile.build b/scripts/Makefile.build >> index 89ac180..90ea7a5 100644 >> --- a/scripts/Makefile.build >> +++ b/scripts/Makefile.build >> @@ -583,8 +583,13 @@ endif >> ifneq ($(KBUILD_SRC),) >> # Create directories for object files if directory does not exist >> obj-dirs := $(sort $(obj) $(patsubst %/,%, $(dir $(targets)))) >> +# If cmd_files exist, their directories apparently exist. Skip mkdir. >> +exist-dirs := $(sort $(patsubst %/,%, $(dir $(cmd_files)))) >> +obj-dirs := $(strip $(filter-out . $(exist-dirs), $(obj-dirs))) > > First I am not sure if the dot "." here is necessary, because I guess > kbuild always descend into subdir do recursive make, so, very > $(cmd_files) should have at least 1 level dir. The top level Makefile descends into ./Kbuild prepare0: archprepare gcc-plugins $(Q)$(MAKE) $(build)=. So, it is possible to have 0 level dir. > Second, Assuming that "." probably exists, Right "." always exists. That's way I filtered it out. > would it be "./"? because it > is what "dir" function returns. No. You missed $(patsubst %/,%, ...) Having said that, "." generally comes from phony targets and I think I can fix it in a more correct way. I will remove "." from v2. > -- > Sincerely, > Cao jin > >> +ifneq ($(obj-dirs),) >> $(shell mkdir -p $(obj-dirs)) >> endif >> +endif >> > > > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Best Regards Masahiro Yamada -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html