18d730cfbSDavid Woodhouse# ========================================================================== 28d730cfbSDavid Woodhouse# Installing headers 38d730cfbSDavid Woodhouse# 48d730cfbSDavid Woodhouse# header-y files will be installed verbatim 58d730cfbSDavid Woodhouse# unifdef-y are the files where unifdef will be run before installing files 68d730cfbSDavid Woodhouse# objhdr-y are generated files that will be installed verbatim 78d730cfbSDavid Woodhouse# 88d730cfbSDavid Woodhouse# ========================================================================== 98d730cfbSDavid Woodhouse 1007aea3a7SSam RavnborgUNIFDEF := scripts/unifdef -U__KERNEL__ 118d730cfbSDavid Woodhouse 128d730cfbSDavid Woodhouse# Eliminate the contents of (and inclusions of) compiler.h 138d730cfbSDavid WoodhouseHDRSED := sed -e "s/ inline / __inline__ /g" \ 14c0519037SMike Frysinger -e "s/[[:space:]]__user[[:space:]]\{1,\}/ /g" \ 15c0519037SMike Frysinger -e "s/(__user[[:space:]]\{1,\}/ (/g" \ 16c0519037SMike Frysinger -e "s/[[:space:]]__force[[:space:]]\{1,\}/ /g" \ 17c0519037SMike Frysinger -e "s/(__force[[:space:]]\{1,\}/ (/g" \ 18c0519037SMike Frysinger -e "s/[[:space:]]__iomem[[:space:]]\{1,\}/ /g" \ 19c0519037SMike Frysinger -e "s/(__iomem[[:space:]]\{1,\}/ (/g" \ 20c0519037SMike Frysinger -e "s/[[:space:]]__attribute_const__[[:space:]]\{1,\}/\ /g" \ 218d730cfbSDavid Woodhouse -e "s/[[:space:]]__attribute_const__$$//" \ 228d730cfbSDavid Woodhouse -e "/^\#include <linux\/compiler.h>/d" 238d730cfbSDavid Woodhouse 248d730cfbSDavid Woodhouse_dst := $(if $(dst),$(dst),$(obj)) 258d730cfbSDavid Woodhouse 26283039fbSSam Ravnborgkbuild-file := $(srctree)/$(obj)/Kbuild 27283039fbSSam Ravnborginclude $(kbuild-file) 28de789125SDavid Woodhouse 298d730cfbSDavid Woodhouseinclude scripts/Kbuild.include 308d730cfbSDavid Woodhouse 31283039fbSSam Ravnborg# If this is include/asm-$(ARCH) then override $(_dst) so that 32283039fbSSam Ravnborg# we install to include/asm directly. 33de789125SDavid Woodhouse# Unless $(BIASMDIR) is set, in which case we're probably doing 34de789125SDavid Woodhouse# a 'headers_install_all' build and we should keep the -$(ARCH) 35de789125SDavid Woodhouse# in the directory name. 36283039fbSSam Ravnborgifeq ($(obj),include/asm-$(ARCH)$(BIASMDIR)) 378d730cfbSDavid Woodhouse _dst := include/asm 388d730cfbSDavid Woodhouseendif 398d730cfbSDavid Woodhouse 40*62284a37SSam Ravnborginstall := $(INSTALL_HDR_PATH)/$(_dst) 41*62284a37SSam Ravnborg 424e420aa9SSam Ravnborgheader-y := $(sort $(header-y) $(unifdef-y)) 438d730cfbSDavid Woodhousesubdir-y := $(patsubst %/,%,$(filter %/, $(header-y))) 448d730cfbSDavid Woodhouseheader-y := $(filter-out %/, $(header-y)) 458d730cfbSDavid Woodhouse 46de789125SDavid Woodhouse# stamp files for header checks 474e420aa9SSam Ravnborgcheck-y := $(patsubst %,.check.%,$(header-y) $(objhdr-y)) 48de789125SDavid Woodhouse 49de789125SDavid Woodhouse# Work out what needs to be removed 50*62284a37SSam Ravnborgoldheaders := $(patsubst $(install)/%,%,$(wildcard $(install)/*.h)) 514e420aa9SSam Ravnborgunwanted := $(filter-out $(header-y) $(objhdr-y),$(oldheaders)) 52de789125SDavid Woodhouse 53*62284a37SSam Ravnborgoldcheckstamps := $(patsubst $(install)/%,%,$(wildcard $(install)/.check.*.h)) 54de789125SDavid Woodhouseunwanted += $(filter-out $(check-y),$(oldcheckstamps)) 55de789125SDavid Woodhouse 56de789125SDavid Woodhouse# Prefix them all with full paths to $(INSTALL_HDR_PATH) 57*62284a37SSam Ravnborgheader-y := $(patsubst %,$(install)/%,$(header-y)) 58*62284a37SSam Ravnborgobjhdr-y := $(patsubst %,$(install)/%,$(objhdr-y)) 59*62284a37SSam Ravnborgcheck-y := $(patsubst %,$(install)/%,$(check-y)) 60de789125SDavid Woodhouse 61de789125SDavid Woodhousequiet_cmd_o_hdr_install = INSTALL $(patsubst $(INSTALL_HDR_PATH)/%,%,$@) 62*62284a37SSam Ravnborg cmd_o_hdr_install = cp $(patsubst $(install)/%,$(objtree)/$(obj)/%,$@) \ 63*62284a37SSam Ravnborg $(install) 648d730cfbSDavid Woodhouse 65de789125SDavid Woodhousequiet_cmd_unifdef = UNIFDEF $(patsubst $(INSTALL_HDR_PATH)/%,%,$@) 66*62284a37SSam Ravnborg cmd_unifdef = $(UNIFDEF) $(patsubst $(install)/%,$(srctree)/$(obj)/%,$@)\ 67de789125SDavid Woodhouse | $(HDRSED) > $@ || : 688d730cfbSDavid Woodhouse 69*62284a37SSam Ravnborgquiet_cmd_check = CHECK $(patsubst $(install)/.check.%,$(_dst)/%,$@) 704e776b1dSAndrew Morton cmd_check = $(CONFIG_SHELL) $(srctree)/scripts/hdrcheck.sh \ 71de789125SDavid Woodhouse $(INSTALL_HDR_PATH)/include $(subst /.check.,/,$@) $@ 7268475359SDavid Woodhouse 73de789125SDavid Woodhousequiet_cmd_remove = REMOVE $(_dst)/$@ 74*62284a37SSam Ravnborg cmd_remove = rm -f $(install)/$@ 758d730cfbSDavid Woodhouse 76de789125SDavid Woodhousequiet_cmd_mkdir = MKDIR $(patsubst $(INSTALL_HDR_PATH)/%,%,$@) 77de789125SDavid Woodhouse cmd_mkdir = mkdir -p $@ 78de789125SDavid Woodhouse 79de789125SDavid Woodhouse.PHONY: __headersinst __headerscheck 808d730cfbSDavid Woodhouse 8168475359SDavid Woodhouseifdef HDRCHECK 82de789125SDavid Woodhouse__headerscheck: $(subdir-y) $(check-y) 83de789125SDavid Woodhouse @true 84de789125SDavid Woodhouse 85*62284a37SSam Ravnborg$(check-y) : $(install)/.check.%.h : $(install)/%.h 8668475359SDavid Woodhouse $(call cmd,check) 87de789125SDavid Woodhouse 88de789125SDavid Woodhouse# Other dependencies for $(check-y) 89df5f6311SDavid Woodhouseinclude /dev/null $(wildcard $(check-y)) 90de789125SDavid Woodhouse 91*62284a37SSam Ravnborg# but leave $(check-y) as .PHONY for now until those 92*62284a37SSam Ravnborg# deps are actually correct. 93de789125SDavid Woodhouse.PHONY: $(check-y) 94de789125SDavid Woodhouse 9568475359SDavid Woodhouseelse 968d730cfbSDavid Woodhouse# Rules for installing headers 97283039fbSSam Ravnborg__headersinst: $(subdir-y) $(header-y) $(objhdr-y) 98de789125SDavid Woodhouse @true 998d730cfbSDavid Woodhouse 100*62284a37SSam Ravnborg$(objhdr-y) $(subdir-y) $(header-y): | $(install) $(unwanted) 1018d730cfbSDavid Woodhouse 102*62284a37SSam Ravnborg$(install): 1038d730cfbSDavid Woodhouse $(call cmd,mkdir) 1048d730cfbSDavid Woodhouse 105*62284a37SSam Ravnborg# Rules for removing unwanted header files 106de789125SDavid Woodhouse.PHONY: $(unwanted) 107de789125SDavid Woodhouse$(unwanted): 108de789125SDavid Woodhouse $(call cmd,remove) 109de789125SDavid Woodhouse 110*62284a37SSam Ravnborg# Install generated files 111*62284a37SSam Ravnborg$(objhdr-y): $(install)/%.h: $(objtree)/$(obj)/%.h $(kbuild-file) 1128d730cfbSDavid Woodhouse $(call cmd,o_hdr_install) 1138d730cfbSDavid Woodhouse 114*62284a37SSam Ravnborg# Unifdef header files and install them 115*62284a37SSam Ravnborg$(header-y): $(install)/%.h: $(srctree)/$(obj)/%.h $(kbuild-file) 1168d730cfbSDavid Woodhouse $(call cmd,unifdef) 1174e420aa9SSam Ravnborg 1188d730cfbSDavid Woodhouseendif 1198d730cfbSDavid Woodhouse 120*62284a37SSam Ravnborghdr-inst := -rR -f $(srctree)/scripts/Makefile.headersinst obj 1218d730cfbSDavid Woodhouse 1228d730cfbSDavid Woodhouse# Recursion 123de789125SDavid Woodhouse.PHONY: $(subdir-y) 1248d730cfbSDavid Woodhouse$(subdir-y): 125*62284a37SSam Ravnborg $(Q)$(MAKE) $(hdr-inst)=$(obj)/$@ dst=$(_dst)/$@ 126