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 108d730cfbSDavid WoodhouseUNIFDEF := unifdef -U__KERNEL__ 118d730cfbSDavid Woodhouse 128d730cfbSDavid Woodhouse# Eliminate the contents of (and inclusions of) compiler.h 138d730cfbSDavid WoodhouseHDRSED := sed -e "s/ inline / __inline__ /g" \ 148d730cfbSDavid Woodhouse -e "s/[[:space:]]__user[[:space:]]\+/ /g" \ 158d730cfbSDavid Woodhouse -e "s/(__user[[:space:]]\+/ (/g" \ 168d730cfbSDavid Woodhouse -e "s/[[:space:]]__force[[:space:]]\+/ /g" \ 178d730cfbSDavid Woodhouse -e "s/(__force[[:space:]]\+/ (/g" \ 188d730cfbSDavid Woodhouse -e "s/[[:space:]]__iomem[[:space:]]\+/ /g" \ 198d730cfbSDavid Woodhouse -e "s/(__iomem[[:space:]]\+/ (/g" \ 208d730cfbSDavid Woodhouse -e "s/[[:space:]]__attribute_const__[[:space:]]\+/\ /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 268d730cfbSDavid Woodhouse.PHONY: __headersinst 278d730cfbSDavid Woodhouse__headersinst: 288d730cfbSDavid Woodhouse 298d730cfbSDavid Woodhouse 308d730cfbSDavid Woodhouseifeq (,$(patsubst include/asm/%,,$(obj)/)) 318d730cfbSDavid Woodhouse# For producing the generated stuff in include/asm for biarch builds, include 328d730cfbSDavid Woodhouse# both sets of Kbuild files; we'll generate anything which is mentioned in 338d730cfbSDavid Woodhouse# _either_ arch, and recurse into subdirectories which are mentioned in either 348d730cfbSDavid Woodhouse# arch. Since some directories may exist in one but not the other, we must 358d730cfbSDavid Woodhouse# use '-include'. 368d730cfbSDavid WoodhouseGENASM := 1 378d730cfbSDavid Woodhousearchasm := $(subst include/asm,asm-$(ARCH),$(obj)) 388d730cfbSDavid Woodhousealtarchasm := $(subst include/asm,asm-$(ALTARCH),$(obj)) 398d730cfbSDavid Woodhouse-include $(srctree)/include/$(archasm)/Kbuild 408d730cfbSDavid Woodhouse-include $(srctree)/include/$(altarchasm)/Kbuild 418d730cfbSDavid Woodhouseelse 428d730cfbSDavid Woodhouseinclude $(srctree)/$(obj)/Kbuild 438d730cfbSDavid Woodhouseendif 448d730cfbSDavid Woodhouse 458d730cfbSDavid Woodhouseinclude scripts/Kbuild.include 468d730cfbSDavid Woodhouse 478d730cfbSDavid Woodhouse# If this is include/asm-$(ARCH) and there's no $(ALTARCH), then 488d730cfbSDavid Woodhouse# override $(_dst) so that we install to include/asm directly. 498d730cfbSDavid Woodhouseifeq ($(obj)$(ALTARCH),include/asm-$(ARCH)) 508d730cfbSDavid Woodhouse _dst := include/asm 518d730cfbSDavid Woodhouseendif 528d730cfbSDavid Woodhouse 538d730cfbSDavid Woodhouseheader-y := $(sort $(header-y)) 548d730cfbSDavid Woodhouseunifdef-y := $(sort $(unifdef-y)) 558d730cfbSDavid Woodhousesubdir-y := $(patsubst %/,%,$(filter %/, $(header-y))) 568d730cfbSDavid Woodhouseheader-y := $(filter-out %/, $(header-y)) 578d730cfbSDavid Woodhouseheader-y := $(filter-out $(unifdef-y),$(header-y)) 588d730cfbSDavid Woodhouse 598d730cfbSDavid Woodhouseifdef ALTARCH 608d730cfbSDavid Woodhouseifeq ($(obj),include/asm-$(ARCH)) 618d730cfbSDavid Woodhousealtarch-y := altarch-dir 628d730cfbSDavid Woodhouseendif 638d730cfbSDavid Woodhouseendif 648d730cfbSDavid Woodhouse 658d730cfbSDavid Woodhouse# Make the definitions visible for recursive make invocations 668d730cfbSDavid Woodhouseexport ALTARCH 678d730cfbSDavid Woodhouseexport ARCHDEF 688d730cfbSDavid Woodhouseexport ALTARCHDEF 698d730cfbSDavid Woodhouse 708d730cfbSDavid Woodhousequiet_cmd_o_hdr_install = INSTALL $(_dst)/$@ 718d730cfbSDavid Woodhouse cmd_o_hdr_install = cp $(objtree)/$(obj)/$@ $(INSTALL_HDR_PATH)/$(_dst) 728d730cfbSDavid Woodhouse 738d730cfbSDavid Woodhousequiet_cmd_headers_install = INSTALL $(_dst)/$@ 748d730cfbSDavid Woodhouse cmd_headers_install = $(HDRSED) $(srctree)/$(obj)/$@ \ 758d730cfbSDavid Woodhouse > $(INSTALL_HDR_PATH)/$(_dst)/$@ 768d730cfbSDavid Woodhouse 778d730cfbSDavid Woodhousequiet_cmd_unifdef = UNIFDEF $(_dst)/$@ 788d730cfbSDavid Woodhouse cmd_unifdef = $(UNIFDEF) $(srctree)/$(obj)/$@ | $(HDRSED) \ 798d730cfbSDavid Woodhouse > $(INSTALL_HDR_PATH)/$(_dst)/$@ || : 808d730cfbSDavid Woodhouse 8168475359SDavid Woodhousequiet_cmd_check = CHECK $(_dst)/$@ 8268475359SDavid Woodhouse cmd_check = $(srctree)/scripts/hdrcheck.sh \ 8368475359SDavid Woodhouse $(INSTALL_HDR_PATH)/include \ 8468475359SDavid Woodhouse $(INSTALL_HDR_PATH)/$(_dst)/$@ 8568475359SDavid Woodhouse 868d730cfbSDavid Woodhousequiet_cmd_mkdir = MKDIR $@ 878d730cfbSDavid Woodhouse cmd_mkdir = mkdir -p $(INSTALL_HDR_PATH)/$@ 888d730cfbSDavid Woodhouse 898d730cfbSDavid Woodhousequiet_cmd_gen = GEN $(_dst)/$@ 908d730cfbSDavid Woodhouse cmd_gen = \ 918d730cfbSDavid WoodhouseSTUBDEF=__ASM_STUB_`echo $@ | tr a-z. A-Z_`; \ 928d730cfbSDavid Woodhouse(echo "/* File autogenerated by 'make headers_install' */" ; \ 938d730cfbSDavid Woodhouseecho "\#ifndef $$STUBDEF" ; \ 948d730cfbSDavid Woodhouseecho "\#define $$STUBDEF" ; \ 958d730cfbSDavid Woodhouseecho "\# if $(ARCHDEF)" ; \ 96*b5122177SDavid Woodhouseif [ -r $(INSTALL_HDR_PATH)/include/$(archasm)/$@ ]; then \ 978d730cfbSDavid Woodhouse echo "\# include <$(archasm)/$@>" ; \ 988d730cfbSDavid Woodhouseelse \ 998d730cfbSDavid Woodhouse echo "\# error $(archasm)/$@ does not exist in" \ 1008d730cfbSDavid Woodhouse "the $(ARCH) architecture" ; \ 1018d730cfbSDavid Woodhousefi ; \ 1028d730cfbSDavid Woodhouseecho "\# elif $(ALTARCHDEF)" ; \ 103*b5122177SDavid Woodhouseif [ -r $(INSTALL_HDR_PATH)/include/$(altarchasm)/$@ ]; then \ 1048d730cfbSDavid Woodhouse echo "\# include <$(altarchasm)/$@>" ; \ 1058d730cfbSDavid Woodhouseelse \ 1068d730cfbSDavid Woodhouse echo "\# error $(altarchasm)/$@ does not exist in" \ 1078d730cfbSDavid Woodhouse "the $(ALTARCH) architecture" ; \ 1088d730cfbSDavid Woodhousefi ; \ 1098d730cfbSDavid Woodhouseecho "\# else" ; \ 1108d730cfbSDavid Woodhouseecho "\# warning This machine appears to be" \ 1118d730cfbSDavid Woodhouse "neither $(ARCH) nor $(ALTARCH)." ; \ 1128d730cfbSDavid Woodhouseecho "\# endif" ; \ 1138d730cfbSDavid Woodhouseecho "\#endif /* $$STUBDEF */" ; \ 1148d730cfbSDavid Woodhouse) > $(INSTALL_HDR_PATH)/$(_dst)/$@ 1158d730cfbSDavid Woodhouse 1168d730cfbSDavid Woodhouse__headersinst: $(subdir-y) $(header-y) $(unifdef-y) $(altarch-y) $(objhdr-y) 1178d730cfbSDavid Woodhouse 1188d730cfbSDavid Woodhouse.PHONY: $(header-y) $(unifdef-y) $(subdir-y) 1198d730cfbSDavid Woodhouse 12068475359SDavid Woodhouseifdef HDRCHECK 12168475359SDavid Woodhouse# Rules for checking headers 12268475359SDavid Woodhouse$(objhdr-y) $(header-y) $(unifdef-y): 12368475359SDavid Woodhouse $(call cmd,check) 12468475359SDavid Woodhouseelse 1258d730cfbSDavid Woodhouse# Rules for installing headers 1268d730cfbSDavid Woodhouse 1278d730cfbSDavid Woodhouse$(objhdr-y) $(subdir-y) $(header-y) $(unifdef-y): $(_dst) 1288d730cfbSDavid Woodhouse 1298d730cfbSDavid Woodhouse.PHONY: $(_dst) 1308d730cfbSDavid Woodhouse$(_dst): 1318d730cfbSDavid Woodhouse $(call cmd,mkdir) 1328d730cfbSDavid Woodhouse 1338d730cfbSDavid Woodhouseifdef GENASM 1348d730cfbSDavid Woodhouse$(objhdr-y) $(header-y) $(unifdef-y): 1358d730cfbSDavid Woodhouse $(call cmd,gen) 1368d730cfbSDavid Woodhouse 1378d730cfbSDavid Woodhouseelse 1388d730cfbSDavid Woodhouse$(objhdr-y): 1398d730cfbSDavid Woodhouse $(call cmd,o_hdr_install) 1408d730cfbSDavid Woodhouse 1418d730cfbSDavid Woodhouse$(header-y): 1428d730cfbSDavid Woodhouse $(call cmd,headers_install) 1438d730cfbSDavid Woodhouse 1448d730cfbSDavid Woodhouse$(unifdef-y): 1458d730cfbSDavid Woodhouse $(call cmd,unifdef) 1468d730cfbSDavid Woodhouseendif 14768475359SDavid Woodhouseendif 1488d730cfbSDavid Woodhouse 1498d730cfbSDavid Woodhousehdrinst := -rR -f $(srctree)/scripts/Makefile.headersinst obj 1508d730cfbSDavid Woodhouse 1518d730cfbSDavid Woodhouse.PHONY: altarch-dir 152*b5122177SDavid Woodhouse# All the files in the normal arch dir must be created first, since we test 153*b5122177SDavid Woodhouse# for their existence. 154*b5122177SDavid Woodhousealtarch-dir: $(subdir-y) $(header-y) $(unifdef-y) $(objhdr-y) 1558d730cfbSDavid Woodhouse $(Q)$(MAKE) $(hdrinst)=include/asm-$(ALTARCH) dst=include/asm-$(ALTARCH) 1568d730cfbSDavid Woodhouse $(Q)$(MAKE) $(hdrinst)=include/asm dst=include/asm 1578d730cfbSDavid Woodhouse 1588d730cfbSDavid Woodhouse# Recursion 1598d730cfbSDavid Woodhouse$(subdir-y): 1608d730cfbSDavid Woodhouse $(Q)$(MAKE) $(hdrinst)=$(obj)/$@ dst=$(_dst)/$@ rel=../$(rel) 161