kbuild: only one call for include/ in make headers_*
[cascardo/linux.git] / scripts / Makefile.headersinst
index 4241e0d..599503f 100644 (file)
 UNIFDEF := scripts/unifdef -U__KERNEL__
 
 # Eliminate the contents of (and inclusions of) compiler.h
-HDRSED  := sed         -e "s/ inline / __inline__ /g" \
-               -e "s/[[:space:]]__user[[:space:]]\+/ /g" \
-               -e "s/(__user[[:space:]]\+/ (/g" \
-               -e "s/[[:space:]]__force[[:space:]]\+/ /g" \
-               -e "s/(__force[[:space:]]\+/ (/g" \
-               -e "s/[[:space:]]__iomem[[:space:]]\+/ /g" \
-               -e "s/(__iomem[[:space:]]\+/ (/g" \
-               -e "s/[[:space:]]__attribute_const__[[:space:]]\+/\ /g" \
+HDRSED  := sed -e "s/ inline / __inline__ /g" \
+               -e "s/[[:space:]]__user[[:space:]]\{1,\}/ /g" \
+               -e "s/(__user[[:space:]]\{1,\}/ (/g" \
+               -e "s/[[:space:]]__force[[:space:]]\{1,\}/ /g" \
+               -e "s/(__force[[:space:]]\{1,\}/ (/g" \
+               -e "s/[[:space:]]__iomem[[:space:]]\{1,\}/ /g" \
+               -e "s/(__iomem[[:space:]]\{1,\}/ (/g" \
+               -e "s/[[:space:]]__attribute_const__[[:space:]]\{1,\}/\ /g" \
                -e "s/[[:space:]]__attribute_const__$$//" \
                -e "/^\#include <linux\/compiler.h>/d"
 
 _dst := $(if $(dst),$(dst),$(obj))
 
-ifeq (,$(patsubst include/asm/%,,$(obj)/))
-# For producing the generated stuff in include/asm for biarch builds, include
-# both sets of Kbuild files; we'll generate anything which is mentioned in
-# _either_ arch, and recurse into subdirectories which are mentioned in either
-# arch. Since some directories may exist in one but not the other, we must
-# use $(wildcard...). 
-GENASM := 1
-archasm           := $(subst include/asm,asm-$(ARCH),$(obj))
-altarchasm := $(subst include/asm,asm-$(ALTARCH),$(obj))
-KBUILDFILES := $(wildcard $(srctree)/include/$(archasm)/Kbuild $(srctree)/include/$(altarchasm)/Kbuild)
-else
-KBUILDFILES := $(srctree)/$(obj)/Kbuild
-endif
+kbuild-file := $(srctree)/$(obj)/Kbuild
+include $(kbuild-file)
 
-include $(KBUILDFILES)
+include scripts/Kbuild.include
 
-include scripts/Kbuild.include 
-
-# If this is include/asm-$(ARCH) and there's no $(ALTARCH), then
-# override $(_dst) so that we install to include/asm directly.
-# Unless $(BIASMDIR) is set, in which case we're probably doing
-# a 'headers_install_all' build and we should keep the -$(ARCH)
-# in the directory name.
-ifeq ($(obj)$(ALTARCH),include/asm-$(ARCH)$(BIASMDIR))
-     _dst := include/asm
-endif
+install := $(INSTALL_HDR_PATH)/$(_dst)
 
-header-y       := $(sort $(header-y))
-unifdef-y      := $(sort $(unifdef-y))
+header-y       := $(sort $(header-y) $(unifdef-y))
 subdir-y       := $(patsubst %/,%,$(filter %/, $(header-y)))
 header-y       := $(filter-out %/, $(header-y))
-header-y       := $(filter-out $(unifdef-y),$(header-y))
 
 # stamp files for header checks
-check-y                := $(patsubst %,.check.%,$(header-y) $(unifdef-y) $(objhdr-y))
+check-y                := $(patsubst %,.check.%,$(header-y) $(objhdr-y))
 
 # Work out what needs to be removed
-oldheaders     := $(patsubst $(INSTALL_HDR_PATH)/$(_dst)/%,%,$(wildcard $(INSTALL_HDR_PATH)/$(_dst)/*.h))
-unwanted       := $(filter-out $(header-y) $(unifdef-y) $(objhdr-y),$(oldheaders))
+oldheaders      := $(patsubst $(install)/%,%,$(wildcard $(install)/*.h))
+unwanted        := $(filter-out $(header-y) $(objhdr-y),$(oldheaders))
 
-oldcheckstamps := $(patsubst $(INSTALL_HDR_PATH)/$(_dst)/%,%,$(wildcard $(INSTALL_HDR_PATH)/$(_dst)/.check.*.h))
-unwanted       += $(filter-out $(check-y),$(oldcheckstamps))
+oldcheckstamps  := $(patsubst $(install)/%,%,$(wildcard $(install)/.check.*.h))
+unwanted        += $(filter-out $(check-y),$(oldcheckstamps))
 
 # Prefix them all with full paths to $(INSTALL_HDR_PATH)
-header-y       := $(patsubst %,$(INSTALL_HDR_PATH)/$(_dst)/%,$(header-y))
-unifdef-y      := $(patsubst %,$(INSTALL_HDR_PATH)/$(_dst)/%,$(unifdef-y))
-objhdr-y       := $(patsubst %,$(INSTALL_HDR_PATH)/$(_dst)/%,$(objhdr-y))
-check-y        := $(patsubst %,$(INSTALL_HDR_PATH)/$(_dst)/%,$(check-y))
+header-y        := $(patsubst %,$(install)/%,$(header-y))
+objhdr-y        := $(patsubst %,$(install)/%,$(objhdr-y))
+check-y         := $(patsubst %,$(install)/%,$(check-y))
 
+quiet_cmd_o_hdr_install = INSTALL $(patsubst $(INSTALL_HDR_PATH)/%,%,$@)
+      cmd_o_hdr_install = cp $(patsubst $(install)/%,$(objtree)/$(obj)/%,$@) \
+                             $(install)
 
-ifdef ALTARCH
-ifeq ($(obj),include/asm-$(ARCH))
-altarch-y      := altarch-dir
-endif
-endif
+quiet_cmd_unifdef = UNIFDEF $(patsubst $(INSTALL_HDR_PATH)/%,%,$@)
+      cmd_unifdef = $(UNIFDEF) $(patsubst $(install)/%,$(srctree)/$(obj)/%,$@)\
+                               | $(HDRSED) > $@ || :
+
+quiet_cmd_check = CHECK   $(patsubst $(install)/.check.%,$(_dst)/%,$@)
+      cmd_check = $(CONFIG_SHELL) $(srctree)/scripts/hdrcheck.sh \
+                  $(INSTALL_HDR_PATH)/include $(subst /.check.,/,$@) $@
 
-# Make the definitions visible for recursive make invocations
-export ALTARCH
-export ARCHDEF
-export ALTARCHDEF
-
-quiet_cmd_o_hdr_install   = INSTALL $(patsubst $(INSTALL_HDR_PATH)/%,%,$@)
-      cmd_o_hdr_install   = cp $(patsubst $(INSTALL_HDR_PATH)/$(_dst)/%,$(objtree)/$(obj)/%,$@) \
-                           $(INSTALL_HDR_PATH)/$(_dst)
-
-quiet_cmd_headers_install = INSTALL $(patsubst $(INSTALL_HDR_PATH)/%,%,$@)
-      cmd_headers_install = $(HDRSED) $(patsubst $(INSTALL_HDR_PATH)/$(_dst)/%,$(srctree)/$(obj)/%,$@) \
-                           > $@
-
-quiet_cmd_unifdef        = UNIFDEF $(patsubst $(INSTALL_HDR_PATH)/%,%,$@)
-      cmd_unifdef        = $(UNIFDEF) $(patsubst $(INSTALL_HDR_PATH)/$(_dst)/%,$(srctree)/$(obj)/%,$@) \
-                                  | $(HDRSED) > $@ || :
-
-quiet_cmd_check                  = CHECK   $(patsubst $(INSTALL_HDR_PATH)/$(_dst)/.check.%,$(_dst)/%,$@)
-      cmd_check                  = $(CONFIG_SHELL) $(srctree)/scripts/hdrcheck.sh \
-                              $(INSTALL_HDR_PATH)/include $(subst /.check.,/,$@) $@
-
-quiet_cmd_remove         = REMOVE  $(_dst)/$@
-      cmd_remove         = rm -f $(INSTALL_HDR_PATH)/$(_dst)/$@
-
-quiet_cmd_mkdir                  = MKDIR   $(patsubst $(INSTALL_HDR_PATH)/%,%,$@)
-      cmd_mkdir                  = mkdir -p $@
-
-quiet_cmd_gen            = GEN     $(patsubst $(INSTALL_HDR_PATH)/%,%,$@)
-      cmd_gen            = \
-FNAME=$(patsubst $(INSTALL_HDR_PATH)/$(_dst)/%,%,$@)                   \
-STUBDEF=__ASM_STUB_`echo $$FNAME | tr a-z. A-Z_`;                      \
-(echo "/* File autogenerated by 'make headers_install' */" ;           \
-echo "\#ifndef $$STUBDEF" ;                                            \
-echo "\#define $$STUBDEF" ;                                            \
-echo "\# if $(ARCHDEF)" ;                                              \
-if [ -r $(subst /$(_dst)/,/include/$(archasm)/,$@) ]; then             \
-       echo "\#  include <$(archasm)/$$FNAME>" ;                       \
-else                                                                   \
-       echo "\#  error $(archasm)/$$FNAME does not exist in"           \
-                       "the $(ARCH) architecture" ;                    \
-fi ;                                                                   \
-echo "\# elif $(ALTARCHDEF)" ;                                         \
-if [ -r $(subst /$(_dst)/,/include/$(altarchasm)/,$@) ]; then          \
-       echo "\#  include <$(altarchasm)/$$FNAME>" ;                    \
-else                                                                   \
-       echo "\#  error $(altarchasm)/$$FNAME does not exist in"        \
-                       "the $(ALTARCH) architecture" ;                 \
-fi ;                                                                   \
-echo "\# else" ;                                                       \
-echo "\#  warning This machine appears to be"                          \
-                "neither $(ARCH) nor $(ALTARCH)." ;                    \
-echo "\# endif" ;                                                      \
-echo "\#endif /* $$STUBDEF */" ;                                       \
-) > $@
+quiet_cmd_remove = REMOVE  $(_dst)/$@
+      cmd_remove = rm -f $(install)/$@
+
+quiet_cmd_mkdir  = MKDIR   $(patsubst $(INSTALL_HDR_PATH)/%,%,$@)
+      cmd_mkdir  = mkdir -p $@
 
 .PHONY: __headersinst __headerscheck
 
@@ -140,55 +73,44 @@ ifdef HDRCHECK
 __headerscheck: $(subdir-y) $(check-y)
        @true
 
-$(check-y) : $(INSTALL_HDR_PATH)/$(_dst)/.check.%.h : $(INSTALL_HDR_PATH)/$(_dst)/%.h 
+$(check-y) : $(install)/.check.%.h : $(install)/%.h
        $(call cmd,check)
 
 # Other dependencies for $(check-y)
--include /dev/null $(check-y)
+include /dev/null $(wildcard $(check-y))
 
-# ... but leave $(check-y) as .PHONY for now until those deps are actually correct.
+# but leave $(check-y) as .PHONY for now until those
+# deps are actually correct.
 .PHONY: $(check-y)
 
 else
 # Rules for installing headers
-__headersinst: $(subdir-y) $(header-y) $(unifdef-y) $(altarch-y) $(objhdr-y)
+__headersinst: $(subdir-y) $(header-y) $(objhdr-y)
        @true
 
-$(objhdr-y) $(subdir-y) $(header-y) $(unifdef-y): | $(INSTALL_HDR_PATH)/$(_dst) $(unwanted)
+$(objhdr-y) $(subdir-y) $(header-y): | $(install) $(unwanted)
 
-$(INSTALL_HDR_PATH)/$(_dst):
+$(install):
        $(call cmd,mkdir)
 
+# Rules for removing unwanted header files
 .PHONY: $(unwanted)
 $(unwanted):
        $(call cmd,remove)
 
-ifdef GENASM
-$(objhdr-y) $(header-y) $(unifdef-y): $(KBUILDFILES)
-       $(call cmd,gen)
-
-else
-$(objhdr-y) :          $(INSTALL_HDR_PATH)/$(_dst)/%.h: $(objtree)/$(obj)/%.h $(KBUILDFILES)
+# Install generated files
+$(objhdr-y): $(install)/%.h: $(objtree)/$(obj)/%.h $(kbuild-file)
        $(call cmd,o_hdr_install)
 
-$(header-y) :          $(INSTALL_HDR_PATH)/$(_dst)/%.h: $(srctree)/$(obj)/%.h $(KBUILDFILES)
-       $(call cmd,headers_install)
-
-$(unifdef-y) :         $(INSTALL_HDR_PATH)/$(_dst)/%.h: $(srctree)/$(obj)/%.h $(KBUILDFILES)
+# Unifdef header files and install them
+$(header-y): $(install)/%.h: $(srctree)/$(obj)/%.h $(kbuild-file)
        $(call cmd,unifdef)
-endif
-endif
 
-hdrinst := -rR -f $(srctree)/scripts/Makefile.headersinst obj
+endif
 
-.PHONY: altarch-dir
-# All the files in the normal arch dir must be created first, since we test
-# for their existence.
-altarch-dir: $(subdir-y) $(header-y) $(unifdef-y) $(objhdr-y)
-       $(Q)$(MAKE) $(hdrinst)=include/asm-$(ALTARCH) dst=include/asm-$(ALTARCH)
-       $(Q)$(MAKE) $(hdrinst)=include/asm dst=include/asm$(BIASMDIR)
+hdr-inst := -rR -f $(srctree)/scripts/Makefile.headersinst obj
 
 # Recursion
 .PHONY: $(subdir-y)
 $(subdir-y):
-       $(Q)$(MAKE) $(hdrinst)=$(obj)/$@ dst=$(_dst)/$@ rel=../$(rel)
+       $(Q)$(MAKE) $(hdr-inst)=$(obj)/$@ dst=$(_dst)/$@