]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/blame - scripts/Makefile.headersinst
kbuild: always unifdef files in headers_install*
[mirror_ubuntu-hirsute-kernel.git] / scripts / Makefile.headersinst
CommitLineData
8d730cfb
DW
1# ==========================================================================
2# Installing headers
3#
4# header-y files will be installed verbatim
5# unifdef-y are the files where unifdef will be run before installing files
6# objhdr-y are generated files that will be installed verbatim
7#
8# ==========================================================================
9
07aea3a7 10UNIFDEF := scripts/unifdef -U__KERNEL__
8d730cfb
DW
11
12# Eliminate the contents of (and inclusions of) compiler.h
13HDRSED := sed -e "s/ inline / __inline__ /g" \
c0519037
MF
14 -e "s/[[:space:]]__user[[:space:]]\{1,\}/ /g" \
15 -e "s/(__user[[:space:]]\{1,\}/ (/g" \
16 -e "s/[[:space:]]__force[[:space:]]\{1,\}/ /g" \
17 -e "s/(__force[[:space:]]\{1,\}/ (/g" \
18 -e "s/[[:space:]]__iomem[[:space:]]\{1,\}/ /g" \
19 -e "s/(__iomem[[:space:]]\{1,\}/ (/g" \
20 -e "s/[[:space:]]__attribute_const__[[:space:]]\{1,\}/\ /g" \
8d730cfb
DW
21 -e "s/[[:space:]]__attribute_const__$$//" \
22 -e "/^\#include <linux\/compiler.h>/d"
23
24_dst := $(if $(dst),$(dst),$(obj))
25
8d730cfb
DW
26ifeq (,$(patsubst include/asm/%,,$(obj)/))
27# For producing the generated stuff in include/asm for biarch builds, include
28# both sets of Kbuild files; we'll generate anything which is mentioned in
29# _either_ arch, and recurse into subdirectories which are mentioned in either
30# arch. Since some directories may exist in one but not the other, we must
de789125 31# use $(wildcard...).
8d730cfb
DW
32GENASM := 1
33archasm := $(subst include/asm,asm-$(ARCH),$(obj))
34altarchasm := $(subst include/asm,asm-$(ALTARCH),$(obj))
de789125 35KBUILDFILES := $(wildcard $(srctree)/include/$(archasm)/Kbuild $(srctree)/include/$(altarchasm)/Kbuild)
8d730cfb 36else
de789125 37KBUILDFILES := $(srctree)/$(obj)/Kbuild
8d730cfb
DW
38endif
39
de789125
DW
40include $(KBUILDFILES)
41
42include scripts/Kbuild.include
8d730cfb
DW
43
44# If this is include/asm-$(ARCH) and there's no $(ALTARCH), then
45# override $(_dst) so that we install to include/asm directly.
de789125
DW
46# Unless $(BIASMDIR) is set, in which case we're probably doing
47# a 'headers_install_all' build and we should keep the -$(ARCH)
48# in the directory name.
49ifeq ($(obj)$(ALTARCH),include/asm-$(ARCH)$(BIASMDIR))
8d730cfb
DW
50 _dst := include/asm
51endif
52
4e420aa9 53header-y := $(sort $(header-y) $(unifdef-y))
8d730cfb
DW
54subdir-y := $(patsubst %/,%,$(filter %/, $(header-y)))
55header-y := $(filter-out %/, $(header-y))
8d730cfb 56
de789125 57# stamp files for header checks
4e420aa9 58check-y := $(patsubst %,.check.%,$(header-y) $(objhdr-y))
de789125
DW
59
60# Work out what needs to be removed
61oldheaders := $(patsubst $(INSTALL_HDR_PATH)/$(_dst)/%,%,$(wildcard $(INSTALL_HDR_PATH)/$(_dst)/*.h))
4e420aa9 62unwanted := $(filter-out $(header-y) $(objhdr-y),$(oldheaders))
de789125
DW
63
64oldcheckstamps := $(patsubst $(INSTALL_HDR_PATH)/$(_dst)/%,%,$(wildcard $(INSTALL_HDR_PATH)/$(_dst)/.check.*.h))
65unwanted += $(filter-out $(check-y),$(oldcheckstamps))
66
67# Prefix them all with full paths to $(INSTALL_HDR_PATH)
68header-y := $(patsubst %,$(INSTALL_HDR_PATH)/$(_dst)/%,$(header-y))
de789125
DW
69objhdr-y := $(patsubst %,$(INSTALL_HDR_PATH)/$(_dst)/%,$(objhdr-y))
70check-y := $(patsubst %,$(INSTALL_HDR_PATH)/$(_dst)/%,$(check-y))
71
72
8d730cfb
DW
73ifdef ALTARCH
74ifeq ($(obj),include/asm-$(ARCH))
75altarch-y := altarch-dir
76endif
77endif
78
79# Make the definitions visible for recursive make invocations
80export ALTARCH
81export ARCHDEF
82export ALTARCHDEF
83
de789125
DW
84quiet_cmd_o_hdr_install = INSTALL $(patsubst $(INSTALL_HDR_PATH)/%,%,$@)
85 cmd_o_hdr_install = cp $(patsubst $(INSTALL_HDR_PATH)/$(_dst)/%,$(objtree)/$(obj)/%,$@) \
86 $(INSTALL_HDR_PATH)/$(_dst)
8d730cfb 87
de789125
DW
88quiet_cmd_unifdef = UNIFDEF $(patsubst $(INSTALL_HDR_PATH)/%,%,$@)
89 cmd_unifdef = $(UNIFDEF) $(patsubst $(INSTALL_HDR_PATH)/$(_dst)/%,$(srctree)/$(obj)/%,$@) \
90 | $(HDRSED) > $@ || :
8d730cfb 91
de789125 92quiet_cmd_check = CHECK $(patsubst $(INSTALL_HDR_PATH)/$(_dst)/.check.%,$(_dst)/%,$@)
4e776b1d 93 cmd_check = $(CONFIG_SHELL) $(srctree)/scripts/hdrcheck.sh \
de789125
DW
94 $(INSTALL_HDR_PATH)/include $(subst /.check.,/,$@) $@
95
96quiet_cmd_remove = REMOVE $(_dst)/$@
97 cmd_remove = rm -f $(INSTALL_HDR_PATH)/$(_dst)/$@
68475359 98
de789125
DW
99quiet_cmd_mkdir = MKDIR $(patsubst $(INSTALL_HDR_PATH)/%,%,$@)
100 cmd_mkdir = mkdir -p $@
8d730cfb 101
de789125 102quiet_cmd_gen = GEN $(patsubst $(INSTALL_HDR_PATH)/%,%,$@)
8d730cfb 103 cmd_gen = \
0db19c41 104FNAME=$(patsubst $(INSTALL_HDR_PATH)/$(_dst)/%,%,$@); \
ec268be3 105STUBDEF=__ASM_STUB_`echo $$FNAME | tr a-z.- A-Z__`; \
8d730cfb
DW
106(echo "/* File autogenerated by 'make headers_install' */" ; \
107echo "\#ifndef $$STUBDEF" ; \
108echo "\#define $$STUBDEF" ; \
109echo "\# if $(ARCHDEF)" ; \
de789125
DW
110if [ -r $(subst /$(_dst)/,/include/$(archasm)/,$@) ]; then \
111 echo "\# include <$(archasm)/$$FNAME>" ; \
8d730cfb 112else \
de789125 113 echo "\# error $(archasm)/$$FNAME does not exist in" \
8d730cfb
DW
114 "the $(ARCH) architecture" ; \
115fi ; \
116echo "\# elif $(ALTARCHDEF)" ; \
de789125
DW
117if [ -r $(subst /$(_dst)/,/include/$(altarchasm)/,$@) ]; then \
118 echo "\# include <$(altarchasm)/$$FNAME>" ; \
8d730cfb 119else \
de789125 120 echo "\# error $(altarchasm)/$$FNAME does not exist in" \
8d730cfb
DW
121 "the $(ALTARCH) architecture" ; \
122fi ; \
123echo "\# else" ; \
124echo "\# warning This machine appears to be" \
125 "neither $(ARCH) nor $(ALTARCH)." ; \
126echo "\# endif" ; \
127echo "\#endif /* $$STUBDEF */" ; \
de789125 128) > $@
8d730cfb 129
de789125 130.PHONY: __headersinst __headerscheck
8d730cfb 131
68475359 132ifdef HDRCHECK
de789125
DW
133__headerscheck: $(subdir-y) $(check-y)
134 @true
135
136$(check-y) : $(INSTALL_HDR_PATH)/$(_dst)/.check.%.h : $(INSTALL_HDR_PATH)/$(_dst)/%.h
68475359 137 $(call cmd,check)
de789125
DW
138
139# Other dependencies for $(check-y)
df5f6311 140include /dev/null $(wildcard $(check-y))
de789125
DW
141
142# ... but leave $(check-y) as .PHONY for now until those deps are actually correct.
143.PHONY: $(check-y)
144
68475359 145else
8d730cfb 146# Rules for installing headers
4e420aa9 147__headersinst: $(subdir-y) $(header-y) $(altarch-y) $(objhdr-y)
de789125 148 @true
8d730cfb 149
4e420aa9 150$(objhdr-y) $(subdir-y) $(header-y): | $(INSTALL_HDR_PATH)/$(_dst) $(unwanted)
8d730cfb 151
de789125 152$(INSTALL_HDR_PATH)/$(_dst):
8d730cfb
DW
153 $(call cmd,mkdir)
154
de789125
DW
155.PHONY: $(unwanted)
156$(unwanted):
157 $(call cmd,remove)
158
8d730cfb 159ifdef GENASM
4e420aa9 160$(objhdr-y) $(header-y): $(KBUILDFILES)
8d730cfb
DW
161 $(call cmd,gen)
162
163else
4e420aa9 164$(objhdr-y): $(INSTALL_HDR_PATH)/$(_dst)/%.h: $(objtree)/$(obj)/%.h $(KBUILDFILES)
8d730cfb
DW
165 $(call cmd,o_hdr_install)
166
4e420aa9 167$(header-y): $(INSTALL_HDR_PATH)/$(_dst)/%.h: $(srctree)/$(obj)/%.h $(KBUILDFILES)
8d730cfb 168 $(call cmd,unifdef)
4e420aa9 169
8d730cfb 170endif
68475359 171endif
8d730cfb
DW
172
173hdrinst := -rR -f $(srctree)/scripts/Makefile.headersinst obj
174
175.PHONY: altarch-dir
b5122177
DW
176# All the files in the normal arch dir must be created first, since we test
177# for their existence.
4e420aa9 178altarch-dir: $(subdir-y) $(header-y) $(objhdr-y)
8d730cfb 179 $(Q)$(MAKE) $(hdrinst)=include/asm-$(ALTARCH) dst=include/asm-$(ALTARCH)
de789125 180 $(Q)$(MAKE) $(hdrinst)=include/asm dst=include/asm$(BIASMDIR)
8d730cfb
DW
181
182# Recursion
de789125 183.PHONY: $(subdir-y)
8d730cfb
DW
184$(subdir-y):
185 $(Q)$(MAKE) $(hdrinst)=$(obj)/$@ dst=$(_dst)/$@ rel=../$(rel)