Commit 05d8cba4 authored by Masahiro Yamada's avatar Masahiro Yamada

kbuild: skip install/check of headers right under uapi directories

Since commit 61562f98 ("uapi: export all arch specifics
directories"), "make INSTALL_HDR_PATH=$root/usr headers_install"
deletes standard glibc headers and others in $(root)/usr/include.

The cause of the issue is that headers_install now starts descending
from arch/$(hdr-arch)/include/uapi with $(root)/usr/include for its
destination when installing asm headers.  So, headers already there
are assumed to be unwanted.

When headers_install starts descending from include/uapi with
$(root)/usr/include for its destination, it works around the problem
by creating an dummy destination $(root)/usr/include/uapi, but this
is tricky.

To fix the problem in a clean way is to skip headers install/check
in include/uapi and arch/$(hdr-arch)/include/uapi because we know
there are only sub-directories in uapi directories.  A good side
effect is the empty destination $(root)/usr/include/uapi will go
away.

I am also removing the trailing slash in the headers_check target to
skip checking in arch/$(hdr-arch)/include/uapi.

Fixes: 61562f98 ("uapi: export all arch specifics directories")
Reported-by: default avatarDan Williams <dan.j.williams@intel.com>
Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
Tested-by: default avatarDan Williams <dan.j.williams@intel.com>
Acked-by: default avatarNicolas Dichtel <nicolas.dichtel@6wind.com>
parent 2ea659a9
...@@ -1172,7 +1172,7 @@ headers_check_all: headers_install_all ...@@ -1172,7 +1172,7 @@ headers_check_all: headers_install_all
PHONY += headers_check PHONY += headers_check
headers_check: headers_install headers_check: headers_install
$(Q)$(MAKE) $(hdr-inst)=include/uapi HDRCHECK=1 $(Q)$(MAKE) $(hdr-inst)=include/uapi HDRCHECK=1
$(Q)$(MAKE) $(hdr-inst)=arch/$(hdr-arch)/include/uapi/ $(hdr-dst) HDRCHECK=1 $(Q)$(MAKE) $(hdr-inst)=arch/$(hdr-arch)/include/uapi $(hdr-dst) HDRCHECK=1
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# Kernel selftest # Kernel selftest
......
...@@ -8,6 +8,29 @@ ...@@ -8,6 +8,29 @@
# #
# ========================================================================== # ==========================================================================
PHONY := __headers
__headers:
include scripts/Kbuild.include
srcdir := $(srctree)/$(obj)
subdirs := $(patsubst $(srcdir)/%/.,%,$(wildcard $(srcdir)/*/.))
# caller may set destination dir (when installing to asm/)
_dst := $(if $(dst),$(dst),$(obj))
# Recursion
__headers: $(subdirs)
.PHONY: $(subdirs)
$(subdirs):
$(Q)$(MAKE) $(hdr-inst)=$(obj)/$@ dst=$(_dst)/$@
# Skip header install/check for include/uapi and arch/$(hdr-arch)/include/uapi.
# We have only sub-directories there.
skip-inst := $(if $(filter %/uapi,$(obj)),1)
ifeq ($(skip-inst),)
# generated header directory # generated header directory
gen := $(if $(gen),$(gen),$(subst include/,include/generated/,$(obj))) gen := $(if $(gen),$(gen),$(subst include/,include/generated/,$(obj)))
...@@ -15,21 +38,14 @@ gen := $(if $(gen),$(gen),$(subst include/,include/generated/,$(obj))) ...@@ -15,21 +38,14 @@ gen := $(if $(gen),$(gen),$(subst include/,include/generated/,$(obj)))
kbuild-file := $(srctree)/$(obj)/Kbuild kbuild-file := $(srctree)/$(obj)/Kbuild
-include $(kbuild-file) -include $(kbuild-file)
# called may set destination dir (when installing to asm/)
_dst := $(if $(dst),$(dst),$(obj))
old-kbuild-file := $(srctree)/$(subst uapi/,,$(obj))/Kbuild old-kbuild-file := $(srctree)/$(subst uapi/,,$(obj))/Kbuild
ifneq ($(wildcard $(old-kbuild-file)),) ifneq ($(wildcard $(old-kbuild-file)),)
include $(old-kbuild-file) include $(old-kbuild-file)
endif endif
include scripts/Kbuild.include
installdir := $(INSTALL_HDR_PATH)/$(subst uapi/,,$(_dst)) installdir := $(INSTALL_HDR_PATH)/$(subst uapi/,,$(_dst))
srcdir := $(srctree)/$(obj)
gendir := $(objtree)/$(gen) gendir := $(objtree)/$(gen)
subdirs := $(patsubst $(srcdir)/%/.,%,$(wildcard $(srcdir)/*/.))
header-files := $(notdir $(wildcard $(srcdir)/*.h)) header-files := $(notdir $(wildcard $(srcdir)/*.h))
header-files += $(notdir $(wildcard $(srcdir)/*.agh)) header-files += $(notdir $(wildcard $(srcdir)/*.agh))
header-files := $(filter-out $(no-export-headers), $(header-files)) header-files := $(filter-out $(no-export-headers), $(header-files))
...@@ -88,11 +104,9 @@ quiet_cmd_check = CHECK $(printdir) ($(words $(all-files)) files) ...@@ -88,11 +104,9 @@ quiet_cmd_check = CHECK $(printdir) ($(words $(all-files)) files)
$(PERL) $< $(INSTALL_HDR_PATH)/include $(SRCARCH); \ $(PERL) $< $(INSTALL_HDR_PATH)/include $(SRCARCH); \
touch $@ touch $@
PHONY += __headersinst __headerscheck
ifndef HDRCHECK ifndef HDRCHECK
# Rules for installing headers # Rules for installing headers
__headersinst: $(subdirs) $(install-file) __headers: $(install-file)
@: @:
targets += $(install-file) targets += $(install-file)
...@@ -104,7 +118,7 @@ $(install-file): scripts/headers_install.sh \ ...@@ -104,7 +118,7 @@ $(install-file): scripts/headers_install.sh \
$(call if_changed,install) $(call if_changed,install)
else else
__headerscheck: $(subdirs) $(check-file) __headers: $(check-file)
@: @:
targets += $(check-file) targets += $(check-file)
...@@ -113,11 +127,6 @@ $(check-file): scripts/headers_check.pl $(output-files) FORCE ...@@ -113,11 +127,6 @@ $(check-file): scripts/headers_check.pl $(output-files) FORCE
endif endif
# Recursion
.PHONY: $(subdirs)
$(subdirs):
$(Q)$(MAKE) $(hdr-inst)=$(obj)/$@ dst=$(_dst)/$@
targets := $(wildcard $(sort $(targets))) targets := $(wildcard $(sort $(targets)))
cmd_files := $(wildcard \ cmd_files := $(wildcard \
$(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd)) $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd))
...@@ -126,6 +135,8 @@ ifneq ($(cmd_files),) ...@@ -126,6 +135,8 @@ ifneq ($(cmd_files),)
include $(cmd_files) include $(cmd_files)
endif endif
endif # skip-inst
.PHONY: $(PHONY) .PHONY: $(PHONY)
PHONY += FORCE PHONY += FORCE
FORCE: ; FORCE: ;
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment