1*8d730cfbSDavid Woodhouse# ========================================================================== 2*8d730cfbSDavid Woodhouse# Installing headers 3*8d730cfbSDavid Woodhouse# 4*8d730cfbSDavid Woodhouse# header-y files will be installed verbatim 5*8d730cfbSDavid Woodhouse# unifdef-y are the files where unifdef will be run before installing files 6*8d730cfbSDavid Woodhouse# objhdr-y are generated files that will be installed verbatim 7*8d730cfbSDavid Woodhouse# 8*8d730cfbSDavid Woodhouse# ========================================================================== 9*8d730cfbSDavid Woodhouse 10*8d730cfbSDavid WoodhouseUNIFDEF := unifdef -U__KERNEL__ 11*8d730cfbSDavid Woodhouse 12*8d730cfbSDavid Woodhouse# Eliminate the contents of (and inclusions of) compiler.h 13*8d730cfbSDavid WoodhouseHDRSED := sed -e "s/ inline / __inline__ /g" \ 14*8d730cfbSDavid Woodhouse -e "s/[[:space:]]__user[[:space:]]\+/ /g" \ 15*8d730cfbSDavid Woodhouse -e "s/(__user[[:space:]]\+/ (/g" \ 16*8d730cfbSDavid Woodhouse -e "s/[[:space:]]__force[[:space:]]\+/ /g" \ 17*8d730cfbSDavid Woodhouse -e "s/(__force[[:space:]]\+/ (/g" \ 18*8d730cfbSDavid Woodhouse -e "s/[[:space:]]__iomem[[:space:]]\+/ /g" \ 19*8d730cfbSDavid Woodhouse -e "s/(__iomem[[:space:]]\+/ (/g" \ 20*8d730cfbSDavid Woodhouse -e "s/[[:space:]]__attribute_const__[[:space:]]\+/\ /g" \ 21*8d730cfbSDavid Woodhouse -e "s/[[:space:]]__attribute_const__$$//" \ 22*8d730cfbSDavid Woodhouse -e "/^\#include <linux\/compiler.h>/d" 23*8d730cfbSDavid Woodhouse 24*8d730cfbSDavid Woodhouse_dst := $(if $(dst),$(dst),$(obj)) 25*8d730cfbSDavid Woodhouse 26*8d730cfbSDavid Woodhouse.PHONY: __headersinst 27*8d730cfbSDavid Woodhouse__headersinst: 28*8d730cfbSDavid Woodhouse 29*8d730cfbSDavid Woodhouse 30*8d730cfbSDavid Woodhouseifeq (,$(patsubst include/asm/%,,$(obj)/)) 31*8d730cfbSDavid Woodhouse# For producing the generated stuff in include/asm for biarch builds, include 32*8d730cfbSDavid Woodhouse# both sets of Kbuild files; we'll generate anything which is mentioned in 33*8d730cfbSDavid Woodhouse# _either_ arch, and recurse into subdirectories which are mentioned in either 34*8d730cfbSDavid Woodhouse# arch. Since some directories may exist in one but not the other, we must 35*8d730cfbSDavid Woodhouse# use '-include'. 36*8d730cfbSDavid WoodhouseGENASM := 1 37*8d730cfbSDavid Woodhousearchasm := $(subst include/asm,asm-$(ARCH),$(obj)) 38*8d730cfbSDavid Woodhousealtarchasm := $(subst include/asm,asm-$(ALTARCH),$(obj)) 39*8d730cfbSDavid Woodhouse-include $(srctree)/include/$(archasm)/Kbuild 40*8d730cfbSDavid Woodhouse-include $(srctree)/include/$(altarchasm)/Kbuild 41*8d730cfbSDavid Woodhouseelse 42*8d730cfbSDavid Woodhouseinclude $(srctree)/$(obj)/Kbuild 43*8d730cfbSDavid Woodhouseendif 44*8d730cfbSDavid Woodhouse 45*8d730cfbSDavid Woodhouseinclude scripts/Kbuild.include 46*8d730cfbSDavid Woodhouse 47*8d730cfbSDavid Woodhouse# If this is include/asm-$(ARCH) and there's no $(ALTARCH), then 48*8d730cfbSDavid Woodhouse# override $(_dst) so that we install to include/asm directly. 49*8d730cfbSDavid Woodhouseifeq ($(obj)$(ALTARCH),include/asm-$(ARCH)) 50*8d730cfbSDavid Woodhouse _dst := include/asm 51*8d730cfbSDavid Woodhouseendif 52*8d730cfbSDavid Woodhouse 53*8d730cfbSDavid Woodhouseheader-y := $(sort $(header-y)) 54*8d730cfbSDavid Woodhouseunifdef-y := $(sort $(unifdef-y)) 55*8d730cfbSDavid Woodhousesubdir-y := $(patsubst %/,%,$(filter %/, $(header-y))) 56*8d730cfbSDavid Woodhouseheader-y := $(filter-out %/, $(header-y)) 57*8d730cfbSDavid Woodhouseheader-y := $(filter-out $(unifdef-y),$(header-y)) 58*8d730cfbSDavid Woodhouse 59*8d730cfbSDavid Woodhouseifdef ALTARCH 60*8d730cfbSDavid Woodhouseifeq ($(obj),include/asm-$(ARCH)) 61*8d730cfbSDavid Woodhousealtarch-y := altarch-dir 62*8d730cfbSDavid Woodhouseendif 63*8d730cfbSDavid Woodhouseendif 64*8d730cfbSDavid Woodhouse 65*8d730cfbSDavid Woodhouse# Make the definitions visible for recursive make invocations 66*8d730cfbSDavid Woodhouseexport ALTARCH 67*8d730cfbSDavid Woodhouseexport ARCHDEF 68*8d730cfbSDavid Woodhouseexport ALTARCHDEF 69*8d730cfbSDavid Woodhouse 70*8d730cfbSDavid Woodhousequiet_cmd_o_hdr_install = INSTALL $(_dst)/$@ 71*8d730cfbSDavid Woodhouse cmd_o_hdr_install = cp $(objtree)/$(obj)/$@ $(INSTALL_HDR_PATH)/$(_dst) 72*8d730cfbSDavid Woodhouse 73*8d730cfbSDavid Woodhousequiet_cmd_headers_install = INSTALL $(_dst)/$@ 74*8d730cfbSDavid Woodhouse cmd_headers_install = $(HDRSED) $(srctree)/$(obj)/$@ \ 75*8d730cfbSDavid Woodhouse > $(INSTALL_HDR_PATH)/$(_dst)/$@ 76*8d730cfbSDavid Woodhouse 77*8d730cfbSDavid Woodhousequiet_cmd_unifdef = UNIFDEF $(_dst)/$@ 78*8d730cfbSDavid Woodhouse cmd_unifdef = $(UNIFDEF) $(srctree)/$(obj)/$@ | $(HDRSED) \ 79*8d730cfbSDavid Woodhouse > $(INSTALL_HDR_PATH)/$(_dst)/$@ || : 80*8d730cfbSDavid Woodhouse 81*8d730cfbSDavid Woodhousequiet_cmd_mkdir = MKDIR $@ 82*8d730cfbSDavid Woodhouse cmd_mkdir = mkdir -p $(INSTALL_HDR_PATH)/$@ 83*8d730cfbSDavid Woodhouse 84*8d730cfbSDavid Woodhousequiet_cmd_gen = GEN $(_dst)/$@ 85*8d730cfbSDavid Woodhouse cmd_gen = \ 86*8d730cfbSDavid WoodhouseSTUBDEF=__ASM_STUB_`echo $@ | tr a-z. A-Z_`; \ 87*8d730cfbSDavid Woodhouse(echo "/* File autogenerated by 'make headers_install' */" ; \ 88*8d730cfbSDavid Woodhouseecho "\#ifndef $$STUBDEF" ; \ 89*8d730cfbSDavid Woodhouseecho "\#define $$STUBDEF" ; \ 90*8d730cfbSDavid Woodhouseecho "\# if $(ARCHDEF)" ; \ 91*8d730cfbSDavid Woodhouseif [ -r $(srctree)/include/$(archasm)/$@ ]; then \ 92*8d730cfbSDavid Woodhouse echo "\# include <$(archasm)/$@>" ; \ 93*8d730cfbSDavid Woodhouseelse \ 94*8d730cfbSDavid Woodhouse echo "\# error $(archasm)/$@ does not exist in" \ 95*8d730cfbSDavid Woodhouse "the $(ARCH) architecture" ; \ 96*8d730cfbSDavid Woodhousefi ; \ 97*8d730cfbSDavid Woodhouseecho "\# elif $(ALTARCHDEF)" ; \ 98*8d730cfbSDavid Woodhouseif [ -r $(srctree)/include/$(altarchasm)/$@ ]; then \ 99*8d730cfbSDavid Woodhouse echo "\# include <$(altarchasm)/$@>" ; \ 100*8d730cfbSDavid Woodhouseelse \ 101*8d730cfbSDavid Woodhouse echo "\# error $(altarchasm)/$@ does not exist in" \ 102*8d730cfbSDavid Woodhouse "the $(ALTARCH) architecture" ; \ 103*8d730cfbSDavid Woodhousefi ; \ 104*8d730cfbSDavid Woodhouseecho "\# else" ; \ 105*8d730cfbSDavid Woodhouseecho "\# warning This machine appears to be" \ 106*8d730cfbSDavid Woodhouse "neither $(ARCH) nor $(ALTARCH)." ; \ 107*8d730cfbSDavid Woodhouseecho "\# endif" ; \ 108*8d730cfbSDavid Woodhouseecho "\#endif /* $$STUBDEF */" ; \ 109*8d730cfbSDavid Woodhouse) > $(INSTALL_HDR_PATH)/$(_dst)/$@ 110*8d730cfbSDavid Woodhouse 111*8d730cfbSDavid Woodhouse__headersinst: $(subdir-y) $(header-y) $(unifdef-y) $(altarch-y) $(objhdr-y) 112*8d730cfbSDavid Woodhouse 113*8d730cfbSDavid Woodhouse.PHONY: $(header-y) $(unifdef-y) $(subdir-y) 114*8d730cfbSDavid Woodhouse 115*8d730cfbSDavid Woodhouse# Rules for installing headers 116*8d730cfbSDavid Woodhouse 117*8d730cfbSDavid Woodhouse$(objhdr-y) $(subdir-y) $(header-y) $(unifdef-y): $(_dst) 118*8d730cfbSDavid Woodhouse 119*8d730cfbSDavid Woodhouse.PHONY: $(_dst) 120*8d730cfbSDavid Woodhouse$(_dst): 121*8d730cfbSDavid Woodhouse $(call cmd,mkdir) 122*8d730cfbSDavid Woodhouse 123*8d730cfbSDavid Woodhouseifdef GENASM 124*8d730cfbSDavid Woodhouse$(objhdr-y) $(header-y) $(unifdef-y): 125*8d730cfbSDavid Woodhouse $(call cmd,gen) 126*8d730cfbSDavid Woodhouse 127*8d730cfbSDavid Woodhouseelse 128*8d730cfbSDavid Woodhouse$(objhdr-y): 129*8d730cfbSDavid Woodhouse $(call cmd,o_hdr_install) 130*8d730cfbSDavid Woodhouse 131*8d730cfbSDavid Woodhouse$(header-y): 132*8d730cfbSDavid Woodhouse $(call cmd,headers_install) 133*8d730cfbSDavid Woodhouse 134*8d730cfbSDavid Woodhouse$(unifdef-y): 135*8d730cfbSDavid Woodhouse $(call cmd,unifdef) 136*8d730cfbSDavid Woodhouseendif 137*8d730cfbSDavid Woodhouse 138*8d730cfbSDavid Woodhousehdrinst := -rR -f $(srctree)/scripts/Makefile.headersinst obj 139*8d730cfbSDavid Woodhouse 140*8d730cfbSDavid Woodhouse.PHONY: altarch-dir 141*8d730cfbSDavid Woodhousealtarch-dir: 142*8d730cfbSDavid Woodhouse $(Q)$(MAKE) $(hdrinst)=include/asm-$(ALTARCH) dst=include/asm-$(ALTARCH) 143*8d730cfbSDavid Woodhouse $(Q)$(MAKE) $(hdrinst)=include/asm dst=include/asm 144*8d730cfbSDavid Woodhouse 145*8d730cfbSDavid Woodhouse# Recursion 146*8d730cfbSDavid Woodhouse$(subdir-y): 147*8d730cfbSDavid Woodhouse $(Q)$(MAKE) $(hdrinst)=$(obj)/$@ dst=$(_dst)/$@ rel=../$(rel) 148