瀏覽代碼

kbuild: obj-dirs is calculated incorrectly if hostprogs-y is defined

When Makefile.host is included, $(obj-dirs) is subjected to the
addprefix operation for the second time.  Prefix only needs to be added
to the newly added directories, but not to those that came from
Makefile.lib.

This causes the build system to create unneeded empty directories in the
build tree when building in a separate directory.  For instance,
lib/lib/zlib_inflate is created in the build tree.

Signed-off-by: Pavel Roskin <proski@gnu.org>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Pavel Roskin 19 年之前
父節點
當前提交
9870a93d31
共有 1 個文件被更改,包括 5 次插入3 次删除
  1. 5 3
      scripts/Makefile.host

+ 5 - 3
scripts/Makefile.host

@@ -33,8 +33,8 @@
 __hostprogs := $(sort $(hostprogs-y)$(hostprogs-m))
 __hostprogs := $(sort $(hostprogs-y)$(hostprogs-m))
 
 
 # hostprogs-y := tools/build may have been specified. Retreive directory
 # hostprogs-y := tools/build may have been specified. Retreive directory
-obj-dirs += $(foreach f,$(__hostprogs), $(if $(dir $(f)),$(dir $(f))))
-obj-dirs := $(strip $(sort $(filter-out ./,$(obj-dirs))))
+host-objdirs := $(foreach f,$(__hostprogs), $(if $(dir $(f)),$(dir $(f))))
+host-objdirs := $(strip $(sort $(filter-out ./,$(host-objdirs))))
 
 
 
 
 # C code
 # C code
@@ -73,7 +73,9 @@ host-cxxmulti	:= $(addprefix $(obj)/,$(host-cxxmulti))
 host-cxxobjs	:= $(addprefix $(obj)/,$(host-cxxobjs))
 host-cxxobjs	:= $(addprefix $(obj)/,$(host-cxxobjs))
 host-cshlib	:= $(addprefix $(obj)/,$(host-cshlib))
 host-cshlib	:= $(addprefix $(obj)/,$(host-cshlib))
 host-cshobjs	:= $(addprefix $(obj)/,$(host-cshobjs))
 host-cshobjs	:= $(addprefix $(obj)/,$(host-cshobjs))
-obj-dirs        := $(addprefix $(obj)/,$(obj-dirs))
+host-objdirs    := $(addprefix $(obj)/,$(host-objdirs))
+
+obj-dirs += $(host-objdirs)
 
 
 #####
 #####
 # Handle options to gcc. Support building with separate output directory
 # Handle options to gcc. Support building with separate output directory