Commit 5bb78269000cf326bfdfa19f79449c02a9158020
1 parent
9fe66dfd88
Exists in
master
and in
4 other branches
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>
Showing 10 changed files with 30 additions and 23 deletions Side-by-side Diff
Documentation/kbuild/makefiles.txt
... | ... | @@ -31,7 +31,7 @@ |
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 |
38 | 38 | |
39 | 39 | |
40 | 40 | |
... | ... | @@ -734,18 +734,18 @@ |
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 |
Makefile
... | ... | @@ -776,16 +776,21 @@ |
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 | |
788 | 790 | |
791 | +# prepare-all is deprecated, use prepare as valid replacement | |
792 | +.PHONY: prepare-all | |
793 | + | |
789 | 794 | # prepare3 is used to check if we are building in a separate output directory, |
790 | 795 | # and if so do: |
791 | 796 | # 1) Check that make has not been executed in the kernel src $(srctree) |
792 | 797 | |
... | ... | @@ -813,11 +818,13 @@ |
813 | 818 | $(Q)mkdir -p $(MODVERDIR) |
814 | 819 | endif |
815 | 820 | |
816 | -prepare0: prepare prepare1 FORCE | |
821 | +archprepare: prepare1 scripts_basic | |
822 | + | |
823 | +prepare0: archprepare FORCE | |
817 | 824 | $(Q)$(MAKE) $(build)=. |
818 | 825 | |
819 | 826 | # All the preparing.. |
820 | -prepare-all: prepare0 | |
827 | +prepare prepare-all: prepare0 | |
821 | 828 | |
822 | 829 | # Leave this as default for preprocessing vmlinux.lds.S, which is now |
823 | 830 | # done in arch/$(ARCH)/kernel/Makefile |
... | ... | @@ -908,7 +915,7 @@ |
908 | 915 | |
909 | 916 | # Target to prepare building external modules |
910 | 917 | .PHONY: modules_prepare |
911 | -modules_prepare: prepare-all scripts | |
918 | +modules_prepare: prepare scripts | |
912 | 919 | |
913 | 920 | # Target to install modules |
914 | 921 | .PHONY: modules_install |
arch/arm/Makefile
arch/cris/Makefile
... | ... | @@ -107,7 +107,7 @@ |
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: |
arch/ia64/Makefile
arch/ppc/Makefile
... | ... | @@ -107,7 +107,7 @@ |
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 |
arch/sh/Makefile
arch/sh64/Makefile
arch/um/Makefile
... | ... | @@ -107,7 +107,7 @@ |
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 |
arch/xtensa/Makefile