xref: /linux/scripts/Makefile.headersinst (revision b512217736049cef3e681bbd3ff6696c1cca567d)
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