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