kbuild: rename prepare to archprepare to fix dependency chain

When introducing the generic asm-offsets.h support the dependency
chain for the prepare targets was changed. All build scripts expecting
include/asm/asm-offsets.h to be made when using the prepare target would broke.
With the limited number of prepare targets left in arch Makefiles
the trivial solution was to introduce a new arch specific target: archprepare

The dependency chain looks like this now:

prepare
|
+--> prepare0
|
+--> archprepare
|
+--> scripts_basic
+--> prepare1
|
+---> prepare2
|
+--> prepare3

So prepare 3 is processed before prepare2 etc.
This guaantees that the asm symlink, version.h, scripts_basic
are all updated before archprepare is processed.

prepare0 which build the asm-offsets.h file will need the
actions performed by archprepare.

The head target is now named prepare, because users scripts will most
likely use that target, but prepare-all has been kept for compatibility.
Updated Documentation/kbuild/makefiles.txt.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>

+30 -23
+7 -7
Documentation/kbuild/makefiles.txt
··· 31 32 === 6 Architecture Makefiles 33 --- 6.1 Set variables to tweak the build to the architecture 34 - --- 6.2 Add prerequisites to prepare: 35 --- 6.3 List directories to visit when descending 36 --- 6.4 Architecture specific boot images 37 --- 6.5 Building non-kbuild targets ··· 734 for loadable kernel modules. 735 736 737 - --- 6.2 Add prerequisites to prepare: 738 739 - The prepare: rule is used to list prerequisites that needs to be 740 built before starting to descend down in the subdirectories. 741 This is usual header files containing assembler constants. 742 743 Example: 744 - #arch/s390/Makefile 745 - prepare: include/asm-$(ARCH)/offsets.h 746 747 - In this example the file include/asm-$(ARCH)/offsets.h will 748 - be built before descending down in the subdirectories. 749 See also chapter XXX-TODO that describe how kbuild supports 750 generating offset header files. 751
··· 31 32 === 6 Architecture Makefiles 33 --- 6.1 Set variables to tweak the build to the architecture 34 + --- 6.2 Add prerequisites to archprepare: 35 --- 6.3 List directories to visit when descending 36 --- 6.4 Architecture specific boot images 37 --- 6.5 Building non-kbuild targets ··· 734 for loadable kernel modules. 735 736 737 + --- 6.2 Add prerequisites to archprepare: 738 739 + The archprepare: rule is used to list prerequisites that needs to be 740 built before starting to descend down in the subdirectories. 741 This is usual header files containing assembler constants. 742 743 Example: 744 + #arch/arm/Makefile 745 + archprepare: maketools 746 747 + In this example the file target maketools will be processed 748 + before descending down in the subdirectories. 749 See also chapter XXX-TODO that describe how kbuild supports 750 generating offset header files. 751
+15 -8
Makefile
··· 776 # Error messages still appears in the original language 777 778 .PHONY: $(vmlinux-dirs) 779 - $(vmlinux-dirs): prepare-all scripts 780 $(Q)$(MAKE) $(build)=$@ 781 782 # Things we need to do before we recursively start building the kernel 783 - # or the modules are listed in "prepare-all". 784 - # A multi level approach is used. prepare1 is updated first, then prepare0. 785 - # prepare-all is the collection point for the prepare targets. 786 787 - .PHONY: prepare-all prepare prepare0 prepare1 prepare2 prepare3 788 789 # prepare3 is used to check if we are building in a separate output directory, 790 # and if so do: ··· 818 $(Q)mkdir -p $(MODVERDIR) 819 endif 820 821 - prepare0: prepare prepare1 FORCE 822 $(Q)$(MAKE) $(build)=. 823 824 # All the preparing.. 825 - prepare-all: prepare0 826 827 # Leave this as default for preprocessing vmlinux.lds.S, which is now 828 # done in arch/$(ARCH)/kernel/Makefile ··· 915 916 # Target to prepare building external modules 917 .PHONY: modules_prepare 918 - modules_prepare: prepare-all scripts 919 920 # Target to install modules 921 .PHONY: modules_install
··· 776 # Error messages still appears in the original language 777 778 .PHONY: $(vmlinux-dirs) 779 + $(vmlinux-dirs): prepare scripts 780 $(Q)$(MAKE) $(build)=$@ 781 782 # Things we need to do before we recursively start building the kernel 783 + # or the modules are listed in "prepare". 784 + # A multi level approach is used. prepareN is processed before prepareN-1. 785 + # archprepare is used in arch Makefiles and when processed asm symlink, 786 + # version.h and scripts_basic is processed / created. 787 788 + # Listed in dependency order 789 + .PHONY: prepare archprepare prepare0 prepare1 prepare2 prepare3 790 + 791 + # prepare-all is deprecated, use prepare as valid replacement 792 + .PHONY: prepare-all 793 794 # prepare3 is used to check if we are building in a separate output directory, 795 # and if so do: ··· 813 $(Q)mkdir -p $(MODVERDIR) 814 endif 815 816 + archprepare: prepare1 scripts_basic 817 + 818 + prepare0: archprepare FORCE 819 $(Q)$(MAKE) $(build)=. 820 821 # All the preparing.. 822 + prepare prepare-all: prepare0 823 824 # Leave this as default for preprocessing vmlinux.lds.S, which is now 825 # done in arch/$(ARCH)/kernel/Makefile ··· 908 909 # Target to prepare building external modules 910 .PHONY: modules_prepare 911 + modules_prepare: prepare scripts 912 913 # Target to install modules 914 .PHONY: modules_install
+1 -1
arch/arm/Makefile
··· 175 endif 176 @touch $@ 177 178 - prepare: maketools include/asm-arm/.arch 179 180 .PHONY: maketools FORCE 181 maketools: include/linux/version.h FORCE
··· 175 endif 176 @touch $@ 177 178 + archprepare: maketools include/asm-arm/.arch 179 180 .PHONY: maketools FORCE 181 maketools: include/linux/version.h FORCE
+1 -1
arch/cris/Makefile
··· 107 rm -f timage vmlinux.bin decompress.bin rescue.bin cramfs.img 108 rm -rf $(LD_SCRIPT).tmp 109 110 - prepare: $(SRC_ARCH)/.links $(srctree)/include/asm-$(ARCH)/.arch 111 112 # Create some links to make all tools happy 113 $(SRC_ARCH)/.links:
··· 107 rm -f timage vmlinux.bin decompress.bin rescue.bin cramfs.img 108 rm -rf $(LD_SCRIPT).tmp 109 110 + archprepare: $(SRC_ARCH)/.links $(srctree)/include/asm-$(ARCH)/.arch 111 112 # Create some links to make all tools happy 113 $(SRC_ARCH)/.links:
+1 -1
arch/ia64/Makefile
··· 82 archclean: 83 $(Q)$(MAKE) $(clean)=$(boot) 84 85 - prepare: include/asm-ia64/.offsets.h.stamp 86 87 include/asm-ia64/.offsets.h.stamp: 88 mkdir -p include/asm-ia64
··· 82 archclean: 83 $(Q)$(MAKE) $(clean)=$(boot) 84 85 + archprepare: include/asm-ia64/.offsets.h.stamp 86 87 include/asm-ia64/.offsets.h.stamp: 88 mkdir -p include/asm-ia64
+1 -1
arch/ppc/Makefile
··· 107 # Temporary hack until we have migrated to asm-powerpc 108 $(Q)rm -rf arch/$(ARCH)/include 109 110 - prepare: checkbin 111 112 # Temporary hack until we have migrated to asm-powerpc 113 include/asm: arch/$(ARCH)/include/asm
··· 107 # Temporary hack until we have migrated to asm-powerpc 108 $(Q)rm -rf arch/$(ARCH)/include 109 110 + archprepare: checkbin 111 112 # Temporary hack until we have migrated to asm-powerpc 113 include/asm: arch/$(ARCH)/include/asm
+1 -1
arch/sh/Makefile
··· 152 @touch $@ 153 154 155 - prepare: maketools include/asm-sh/.cpu include/asm-sh/.mach 156 157 .PHONY: maketools FORCE 158 maketools: include/linux/version.h FORCE
··· 152 @touch $@ 153 154 155 + archprepare: maketools include/asm-sh/.cpu include/asm-sh/.mach 156 157 .PHONY: maketools FORCE 158 maketools: include/linux/version.h FORCE
+1 -1
arch/sh64/Makefile
··· 73 archclean: 74 $(Q)$(MAKE) $(clean)=$(boot) 75 76 - prepare: arch/$(ARCH)/lib/syscalltab.h 77 78 define filechk_gen-syscalltab 79 (set -e; \
··· 73 archclean: 74 $(Q)$(MAKE) $(clean)=$(boot) 75 76 + archprepare: arch/$(ARCH)/lib/syscalltab.h 77 78 define filechk_gen-syscalltab 79 (set -e; \
+1 -1
arch/um/Makefile
··· 107 $(shell cd $(ARCH_DIR) && ln -sf Kconfig.$(SUBARCH) Kconfig.arch) 108 endif 109 110 - prepare: $(ARCH_SYMLINKS) $(SYS_HEADERS) $(GEN_HEADERS) 111 112 LINK-$(CONFIG_LD_SCRIPT_STATIC) += -static 113 LINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/lib
··· 107 $(shell cd $(ARCH_DIR) && ln -sf Kconfig.$(SUBARCH) Kconfig.arch) 108 endif 109 110 + archprepare: $(ARCH_SYMLINKS) $(SYS_HEADERS) $(GEN_HEADERS) 111 112 LINK-$(CONFIG_LD_SCRIPT_STATIC) += -static 113 LINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/lib
+1 -1
arch/xtensa/Makefile
··· 66 67 archinc := include/asm-xtensa 68 69 - prepare: $(archinc)/.platform 70 71 # Update machine cpu and platform symlinks if something which affects 72 # them changed.
··· 66 67 archinc := include/asm-xtensa 68 69 + archprepare: $(archinc)/.platform 70 71 # Update machine cpu and platform symlinks if something which affects 72 # them changed.