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 26*283039fbSSam Ravnborgkbuild-file := $(srctree)/$(obj)/Kbuild 27*283039fbSSam Ravnborginclude $(kbuild-file) 28de789125SDavid Woodhouse 298d730cfbSDavid Woodhouseinclude scripts/Kbuild.include 308d730cfbSDavid Woodhouse 31*283039fbSSam Ravnborg# If this is include/asm-$(ARCH) then override $(_dst) so that 32*283039fbSSam 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. 36*283039fbSSam Ravnborgifeq ($(obj),include/asm-$(ARCH)$(BIASMDIR)) 378d730cfbSDavid Woodhouse _dst := include/asm 388d730cfbSDavid Woodhouseendif 398d730cfbSDavid Woodhouse 404e420aa9SSam Ravnborgheader-y := $(sort $(header-y) $(unifdef-y)) 418d730cfbSDavid Woodhousesubdir-y := $(patsubst %/,%,$(filter %/, $(header-y))) 428d730cfbSDavid Woodhouseheader-y := $(filter-out %/, $(header-y)) 438d730cfbSDavid Woodhouse 44de789125SDavid Woodhouse# stamp files for header checks 454e420aa9SSam Ravnborgcheck-y := $(patsubst %,.check.%,$(header-y) $(objhdr-y)) 46de789125SDavid Woodhouse 47de789125SDavid Woodhouse# Work out what needs to be removed 48de789125SDavid Woodhouseoldheaders := $(patsubst $(INSTALL_HDR_PATH)/$(_dst)/%,%,$(wildcard $(INSTALL_HDR_PATH)/$(_dst)/*.h)) 494e420aa9SSam Ravnborgunwanted := $(filter-out $(header-y) $(objhdr-y),$(oldheaders)) 50de789125SDavid Woodhouse 51de789125SDavid Woodhouseoldcheckstamps := $(patsubst $(INSTALL_HDR_PATH)/$(_dst)/%,%,$(wildcard $(INSTALL_HDR_PATH)/$(_dst)/.check.*.h)) 52de789125SDavid Woodhouseunwanted += $(filter-out $(check-y),$(oldcheckstamps)) 53de789125SDavid Woodhouse 54de789125SDavid Woodhouse# Prefix them all with full paths to $(INSTALL_HDR_PATH) 55de789125SDavid Woodhouseheader-y := $(patsubst %,$(INSTALL_HDR_PATH)/$(_dst)/%,$(header-y)) 56de789125SDavid Woodhouseobjhdr-y := $(patsubst %,$(INSTALL_HDR_PATH)/$(_dst)/%,$(objhdr-y)) 57de789125SDavid Woodhousecheck-y := $(patsubst %,$(INSTALL_HDR_PATH)/$(_dst)/%,$(check-y)) 58de789125SDavid Woodhouse 59de789125SDavid Woodhousequiet_cmd_o_hdr_install = INSTALL $(patsubst $(INSTALL_HDR_PATH)/%,%,$@) 60de789125SDavid Woodhouse cmd_o_hdr_install = cp $(patsubst $(INSTALL_HDR_PATH)/$(_dst)/%,$(objtree)/$(obj)/%,$@) \ 61de789125SDavid Woodhouse $(INSTALL_HDR_PATH)/$(_dst) 628d730cfbSDavid Woodhouse 63de789125SDavid Woodhousequiet_cmd_unifdef = UNIFDEF $(patsubst $(INSTALL_HDR_PATH)/%,%,$@) 64de789125SDavid Woodhouse cmd_unifdef = $(UNIFDEF) $(patsubst $(INSTALL_HDR_PATH)/$(_dst)/%,$(srctree)/$(obj)/%,$@) \ 65de789125SDavid Woodhouse | $(HDRSED) > $@ || : 668d730cfbSDavid Woodhouse 67de789125SDavid Woodhousequiet_cmd_check = CHECK $(patsubst $(INSTALL_HDR_PATH)/$(_dst)/.check.%,$(_dst)/%,$@) 684e776b1dSAndrew Morton cmd_check = $(CONFIG_SHELL) $(srctree)/scripts/hdrcheck.sh \ 69de789125SDavid Woodhouse $(INSTALL_HDR_PATH)/include $(subst /.check.,/,$@) $@ 7068475359SDavid Woodhouse 71de789125SDavid Woodhousequiet_cmd_remove = REMOVE $(_dst)/$@ 72de789125SDavid Woodhouse cmd_remove = rm -f $(INSTALL_HDR_PATH)/$(_dst)/$@ 738d730cfbSDavid Woodhouse 74de789125SDavid Woodhousequiet_cmd_mkdir = MKDIR $(patsubst $(INSTALL_HDR_PATH)/%,%,$@) 75de789125SDavid Woodhouse cmd_mkdir = mkdir -p $@ 76de789125SDavid Woodhouse 77de789125SDavid Woodhouse.PHONY: __headersinst __headerscheck 788d730cfbSDavid Woodhouse 7968475359SDavid Woodhouseifdef HDRCHECK 80de789125SDavid Woodhouse__headerscheck: $(subdir-y) $(check-y) 81de789125SDavid Woodhouse @true 82de789125SDavid Woodhouse 83de789125SDavid Woodhouse$(check-y) : $(INSTALL_HDR_PATH)/$(_dst)/.check.%.h : $(INSTALL_HDR_PATH)/$(_dst)/%.h 8468475359SDavid Woodhouse $(call cmd,check) 85de789125SDavid Woodhouse 86de789125SDavid Woodhouse# Other dependencies for $(check-y) 87df5f6311SDavid Woodhouseinclude /dev/null $(wildcard $(check-y)) 88de789125SDavid Woodhouse 89de789125SDavid Woodhouse# ... but leave $(check-y) as .PHONY for now until those deps are actually correct. 90de789125SDavid Woodhouse.PHONY: $(check-y) 91de789125SDavid Woodhouse 9268475359SDavid Woodhouseelse 938d730cfbSDavid Woodhouse# Rules for installing headers 94*283039fbSSam Ravnborg__headersinst: $(subdir-y) $(header-y) $(objhdr-y) 95de789125SDavid Woodhouse @true 968d730cfbSDavid Woodhouse 974e420aa9SSam Ravnborg$(objhdr-y) $(subdir-y) $(header-y): | $(INSTALL_HDR_PATH)/$(_dst) $(unwanted) 988d730cfbSDavid Woodhouse 99de789125SDavid Woodhouse$(INSTALL_HDR_PATH)/$(_dst): 1008d730cfbSDavid Woodhouse $(call cmd,mkdir) 1018d730cfbSDavid Woodhouse 102de789125SDavid Woodhouse.PHONY: $(unwanted) 103de789125SDavid Woodhouse$(unwanted): 104de789125SDavid Woodhouse $(call cmd,remove) 105de789125SDavid Woodhouse 106*283039fbSSam Ravnborg$(objhdr-y): $(INSTALL_HDR_PATH)/$(_dst)/%.h: $(objtree)/$(obj)/%.h $(kbuild-file) 1078d730cfbSDavid Woodhouse $(call cmd,o_hdr_install) 1088d730cfbSDavid Woodhouse 109*283039fbSSam Ravnborg$(header-y): $(INSTALL_HDR_PATH)/$(_dst)/%.h: $(srctree)/$(obj)/%.h $(kbuild-file) 1108d730cfbSDavid Woodhouse $(call cmd,unifdef) 1114e420aa9SSam Ravnborg 1128d730cfbSDavid Woodhouseendif 1138d730cfbSDavid Woodhouse 1148d730cfbSDavid Woodhousehdrinst := -rR -f $(srctree)/scripts/Makefile.headersinst obj 1158d730cfbSDavid Woodhouse 1168d730cfbSDavid Woodhouse# Recursion 117de789125SDavid Woodhouse.PHONY: $(subdir-y) 1188d730cfbSDavid Woodhouse$(subdir-y): 1198d730cfbSDavid Woodhouse $(Q)$(MAKE) $(hdrinst)=$(obj)/$@ dst=$(_dst)/$@ rel=../$(rel) 120