diff options
| author | Masahiro Yamada <yamada.masahiro@socionext.com> | 2017-05-16 01:15:03 -0400 |
|---|---|---|
| committer | Masahiro Yamada <yamada.masahiro@socionext.com> | 2017-05-17 13:17:45 -0400 |
| commit | 05d8cba4a1e8c7e2d1f91a24a2f3d26852938a04 (patch) | |
| tree | e3385068de1b7f4db8567f38eb9d30e50aa9aa11 /scripts | |
| parent | 2ea659a9ef488125eb46da6eb571de5eae5c43f6 (diff) | |
kbuild: skip install/check of headers right under uapi directories
Since commit 61562f981e92 ("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: 61562f981e92 ("uapi: export all arch specifics directories")
Reported-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Tested-by: Dan Williams <dan.j.williams@intel.com>
Acked-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/Makefile.headersinst | 43 |
1 files changed, 27 insertions, 16 deletions
diff --git a/scripts/Makefile.headersinst b/scripts/Makefile.headersinst index 6ba97a1f9c5a..ce753a408c56 100644 --- a/scripts/Makefile.headersinst +++ b/scripts/Makefile.headersinst | |||
| @@ -8,6 +8,29 @@ | |||
| 8 | # | 8 | # |
| 9 | # ========================================================================== | 9 | # ========================================================================== |
| 10 | 10 | ||
| 11 | PHONY := __headers | ||
| 12 | __headers: | ||
| 13 | |||
| 14 | include scripts/Kbuild.include | ||
| 15 | |||
| 16 | srcdir := $(srctree)/$(obj) | ||
| 17 | subdirs := $(patsubst $(srcdir)/%/.,%,$(wildcard $(srcdir)/*/.)) | ||
| 18 | # caller may set destination dir (when installing to asm/) | ||
| 19 | _dst := $(if $(dst),$(dst),$(obj)) | ||
| 20 | |||
| 21 | # Recursion | ||
| 22 | __headers: $(subdirs) | ||
| 23 | |||
| 24 | .PHONY: $(subdirs) | ||
| 25 | $(subdirs): | ||
| 26 | $(Q)$(MAKE) $(hdr-inst)=$(obj)/$@ dst=$(_dst)/$@ | ||
| 27 | |||
| 28 | # Skip header install/check for include/uapi and arch/$(hdr-arch)/include/uapi. | ||
| 29 | # We have only sub-directories there. | ||
| 30 | skip-inst := $(if $(filter %/uapi,$(obj)),1) | ||
| 31 | |||
| 32 | ifeq ($(skip-inst),) | ||
| 33 | |||
| 11 | # generated header directory | 34 | # generated header directory |
| 12 | gen := $(if $(gen),$(gen),$(subst include/,include/generated/,$(obj))) | 35 | gen := $(if $(gen),$(gen),$(subst include/,include/generated/,$(obj))) |
| 13 | 36 | ||
| @@ -15,21 +38,14 @@ gen := $(if $(gen),$(gen),$(subst include/,include/generated/,$(obj))) | |||
| 15 | kbuild-file := $(srctree)/$(obj)/Kbuild | 38 | kbuild-file := $(srctree)/$(obj)/Kbuild |
| 16 | -include $(kbuild-file) | 39 | -include $(kbuild-file) |
| 17 | 40 | ||
| 18 | # called may set destination dir (when installing to asm/) | ||
| 19 | _dst := $(if $(dst),$(dst),$(obj)) | ||
| 20 | |||
| 21 | old-kbuild-file := $(srctree)/$(subst uapi/,,$(obj))/Kbuild | 41 | old-kbuild-file := $(srctree)/$(subst uapi/,,$(obj))/Kbuild |
| 22 | ifneq ($(wildcard $(old-kbuild-file)),) | 42 | ifneq ($(wildcard $(old-kbuild-file)),) |
| 23 | include $(old-kbuild-file) | 43 | include $(old-kbuild-file) |
| 24 | endif | 44 | endif |
| 25 | 45 | ||
| 26 | include scripts/Kbuild.include | ||
| 27 | |||
| 28 | installdir := $(INSTALL_HDR_PATH)/$(subst uapi/,,$(_dst)) | 46 | installdir := $(INSTALL_HDR_PATH)/$(subst uapi/,,$(_dst)) |
| 29 | 47 | ||
| 30 | srcdir := $(srctree)/$(obj) | ||
| 31 | gendir := $(objtree)/$(gen) | 48 | gendir := $(objtree)/$(gen) |
| 32 | subdirs := $(patsubst $(srcdir)/%/.,%,$(wildcard $(srcdir)/*/.)) | ||
| 33 | header-files := $(notdir $(wildcard $(srcdir)/*.h)) | 49 | header-files := $(notdir $(wildcard $(srcdir)/*.h)) |
| 34 | header-files += $(notdir $(wildcard $(srcdir)/*.agh)) | 50 | header-files += $(notdir $(wildcard $(srcdir)/*.agh)) |
| 35 | header-files := $(filter-out $(no-export-headers), $(header-files)) | 51 | header-files := $(filter-out $(no-export-headers), $(header-files)) |
| @@ -88,11 +104,9 @@ quiet_cmd_check = CHECK $(printdir) ($(words $(all-files)) files) | |||
| 88 | $(PERL) $< $(INSTALL_HDR_PATH)/include $(SRCARCH); \ | 104 | $(PERL) $< $(INSTALL_HDR_PATH)/include $(SRCARCH); \ |
| 89 | touch $@ | 105 | touch $@ |
| 90 | 106 | ||
| 91 | PHONY += __headersinst __headerscheck | ||
| 92 | |||
| 93 | ifndef HDRCHECK | 107 | ifndef HDRCHECK |
| 94 | # Rules for installing headers | 108 | # Rules for installing headers |
| 95 | __headersinst: $(subdirs) $(install-file) | 109 | __headers: $(install-file) |
| 96 | @: | 110 | @: |
| 97 | 111 | ||
| 98 | targets += $(install-file) | 112 | targets += $(install-file) |
| @@ -104,7 +118,7 @@ $(install-file): scripts/headers_install.sh \ | |||
| 104 | $(call if_changed,install) | 118 | $(call if_changed,install) |
| 105 | 119 | ||
| 106 | else | 120 | else |
| 107 | __headerscheck: $(subdirs) $(check-file) | 121 | __headers: $(check-file) |
| 108 | @: | 122 | @: |
| 109 | 123 | ||
| 110 | targets += $(check-file) | 124 | targets += $(check-file) |
| @@ -113,11 +127,6 @@ $(check-file): scripts/headers_check.pl $(output-files) FORCE | |||
| 113 | 127 | ||
| 114 | endif | 128 | endif |
| 115 | 129 | ||
| 116 | # Recursion | ||
| 117 | .PHONY: $(subdirs) | ||
| 118 | $(subdirs): | ||
| 119 | $(Q)$(MAKE) $(hdr-inst)=$(obj)/$@ dst=$(_dst)/$@ | ||
| 120 | |||
| 121 | targets := $(wildcard $(sort $(targets))) | 130 | targets := $(wildcard $(sort $(targets))) |
| 122 | cmd_files := $(wildcard \ | 131 | cmd_files := $(wildcard \ |
| 123 | $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd)) | 132 | $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd)) |
| @@ -126,6 +135,8 @@ ifneq ($(cmd_files),) | |||
| 126 | include $(cmd_files) | 135 | include $(cmd_files) |
| 127 | endif | 136 | endif |
| 128 | 137 | ||
| 138 | endif # skip-inst | ||
| 139 | |||
| 129 | .PHONY: $(PHONY) | 140 | .PHONY: $(PHONY) |
| 130 | PHONY += FORCE | 141 | PHONY += FORCE |
| 131 | FORCE: ; | 142 | FORCE: ; |
