aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Ravnborg <sam@mars.ravnborg.org>2005-09-11 16:30:22 -0400
committerSam Ravnborg <sam@mars.ravnborg.org>2005-09-11 16:30:22 -0400
commit5bb78269000cf326bfdfa19f79449c02a9158020 (patch)
treef01e30e8d8f015cb0418331da55a459ddcfc9569
parent9fe66dfd8846706ff11ed7990d06c92644973bd8 (diff)
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>
-rw-r--r--Documentation/kbuild/makefiles.txt14
-rw-r--r--Makefile23
-rw-r--r--arch/arm/Makefile2
-rw-r--r--arch/cris/Makefile2
-rw-r--r--arch/ia64/Makefile2
-rw-r--r--arch/ppc/Makefile2
-rw-r--r--arch/sh/Makefile2
-rw-r--r--arch/sh64/Makefile2
-rw-r--r--arch/um/Makefile2
-rw-r--r--arch/xtensa/Makefile2
10 files changed, 30 insertions, 23 deletions
diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt
index 9a1586590d82..d802ce88bedc 100644
--- a/Documentation/kbuild/makefiles.txt
+++ b/Documentation/kbuild/makefiles.txt
@@ -31,7 +31,7 @@ This document describes the Linux kernel Makefiles.
31 31
32 === 6 Architecture Makefiles 32 === 6 Architecture Makefiles
33 --- 6.1 Set variables to tweak the build to the architecture 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 --- 6.3 List directories to visit when descending 35 --- 6.3 List directories to visit when descending
36 --- 6.4 Architecture specific boot images 36 --- 6.4 Architecture specific boot images
37 --- 6.5 Building non-kbuild targets 37 --- 6.5 Building non-kbuild targets
@@ -734,18 +734,18 @@ When kbuild executes the following steps are followed (roughly):
734 for loadable kernel modules. 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 built before starting to descend down in the subdirectories. 740 built before starting to descend down in the subdirectories.
741 This is usual header files containing assembler constants. 741 This is usual header files containing assembler constants.
742 742
743 Example: 743 Example:
744 #arch/s390/Makefile 744 #arch/arm/Makefile
745 prepare: include/asm-$(ARCH)/offsets.h 745 archprepare: maketools
746 746
747 In this example the file include/asm-$(ARCH)/offsets.h will 747 In this example the file target maketools will be processed
748 be built before descending down in the subdirectories. 748 before descending down in the subdirectories.
749 See also chapter XXX-TODO that describe how kbuild supports 749 See also chapter XXX-TODO that describe how kbuild supports
750 generating offset header files. 750 generating offset header files.
751 751
diff --git a/Makefile b/Makefile
index 382298f37adf..e90ee6a3eef4 100644
--- a/Makefile
+++ b/Makefile
@@ -776,15 +776,20 @@ $(sort $(vmlinux-init) $(vmlinux-main)) $(vmlinux-lds): $(vmlinux-dirs) ;
776# Error messages still appears in the original language 776# Error messages still appears in the original language
777 777
778.PHONY: $(vmlinux-dirs) 778.PHONY: $(vmlinux-dirs)
779$(vmlinux-dirs): prepare-all scripts 779$(vmlinux-dirs): prepare scripts
780 $(Q)$(MAKE) $(build)=$@ 780 $(Q)$(MAKE) $(build)=$@
781 781
782# Things we need to do before we recursively start building the kernel 782# Things we need to do before we recursively start building the kernel
783# or the modules are listed in "prepare-all". 783# or the modules are listed in "prepare".
784# A multi level approach is used. prepare1 is updated first, then prepare0. 784# A multi level approach is used. prepareN is processed before prepareN-1.
785# prepare-all is the collection point for the prepare targets. 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# prepare3 is used to check if we are building in a separate output directory, 794# prepare3 is used to check if we are building in a separate output directory,
790# and if so do: 795# and if so do:
@@ -813,11 +818,13 @@ ifneq ($(KBUILD_MODULES),)
813 $(Q)mkdir -p $(MODVERDIR) 818 $(Q)mkdir -p $(MODVERDIR)
814endif 819endif
815 820
816prepare0: prepare prepare1 FORCE 821archprepare: prepare1 scripts_basic
822
823prepare0: archprepare FORCE
817 $(Q)$(MAKE) $(build)=. 824 $(Q)$(MAKE) $(build)=.
818 825
819# All the preparing.. 826# All the preparing..
820prepare-all: prepare0 827prepare prepare-all: prepare0
821 828
822# Leave this as default for preprocessing vmlinux.lds.S, which is now 829# Leave this as default for preprocessing vmlinux.lds.S, which is now
823# done in arch/$(ARCH)/kernel/Makefile 830# done in arch/$(ARCH)/kernel/Makefile
@@ -908,7 +915,7 @@ modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux)
908 915
909# Target to prepare building external modules 916# Target to prepare building external modules
910.PHONY: modules_prepare 917.PHONY: modules_prepare
911modules_prepare: prepare-all scripts 918modules_prepare: prepare scripts
912 919
913# Target to install modules 920# Target to install modules
914.PHONY: modules_install 921.PHONY: modules_install
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index e625ac66f49b..130e6228b587 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -175,7 +175,7 @@ else
175endif 175endif
176 @touch $@ 176 @touch $@
177 177
178prepare: maketools include/asm-arm/.arch 178archprepare: maketools include/asm-arm/.arch
179 179
180.PHONY: maketools FORCE 180.PHONY: maketools FORCE
181maketools: include/linux/version.h FORCE 181maketools: include/linux/version.h FORCE
diff --git a/arch/cris/Makefile b/arch/cris/Makefile
index a00043a91f16..ea65d585cf5e 100644
--- a/arch/cris/Makefile
+++ b/arch/cris/Makefile
@@ -107,7 +107,7 @@ archclean:
107 rm -f timage vmlinux.bin decompress.bin rescue.bin cramfs.img 107 rm -f timage vmlinux.bin decompress.bin rescue.bin cramfs.img
108 rm -rf $(LD_SCRIPT).tmp 108 rm -rf $(LD_SCRIPT).tmp
109 109
110prepare: $(SRC_ARCH)/.links $(srctree)/include/asm-$(ARCH)/.arch 110archprepare: $(SRC_ARCH)/.links $(srctree)/include/asm-$(ARCH)/.arch
111 111
112# Create some links to make all tools happy 112# Create some links to make all tools happy
113$(SRC_ARCH)/.links: 113$(SRC_ARCH)/.links:
diff --git a/arch/ia64/Makefile b/arch/ia64/Makefile
index 7ed678cf5e41..70f8ed2748d1 100644
--- a/arch/ia64/Makefile
+++ b/arch/ia64/Makefile
@@ -82,7 +82,7 @@ unwcheck: vmlinux
82archclean: 82archclean:
83 $(Q)$(MAKE) $(clean)=$(boot) 83 $(Q)$(MAKE) $(clean)=$(boot)
84 84
85prepare: include/asm-ia64/.offsets.h.stamp 85archprepare: include/asm-ia64/.offsets.h.stamp
86 86
87include/asm-ia64/.offsets.h.stamp: 87include/asm-ia64/.offsets.h.stamp:
88 mkdir -p include/asm-ia64 88 mkdir -p include/asm-ia64
diff --git a/arch/ppc/Makefile b/arch/ppc/Makefile
index 6dd7b50e0669..16e2675f3270 100644
--- a/arch/ppc/Makefile
+++ b/arch/ppc/Makefile
@@ -107,7 +107,7 @@ archclean:
107 # Temporary hack until we have migrated to asm-powerpc 107 # Temporary hack until we have migrated to asm-powerpc
108 $(Q)rm -rf arch/$(ARCH)/include 108 $(Q)rm -rf arch/$(ARCH)/include
109 109
110prepare: checkbin 110archprepare: checkbin
111 111
112# Temporary hack until we have migrated to asm-powerpc 112# Temporary hack until we have migrated to asm-powerpc
113include/asm: arch/$(ARCH)/include/asm 113include/asm: arch/$(ARCH)/include/asm
diff --git a/arch/sh/Makefile b/arch/sh/Makefile
index 19f00d57acf0..4a3049080b41 100644
--- a/arch/sh/Makefile
+++ b/arch/sh/Makefile
@@ -152,7 +152,7 @@ endif
152 @touch $@ 152 @touch $@
153 153
154 154
155prepare: maketools include/asm-sh/.cpu include/asm-sh/.mach 155archprepare: maketools include/asm-sh/.cpu include/asm-sh/.mach
156 156
157.PHONY: maketools FORCE 157.PHONY: maketools FORCE
158maketools: include/linux/version.h FORCE 158maketools: include/linux/version.h FORCE
diff --git a/arch/sh64/Makefile b/arch/sh64/Makefile
index 39073734a476..8ca57ffa2b70 100644
--- a/arch/sh64/Makefile
+++ b/arch/sh64/Makefile
@@ -73,7 +73,7 @@ compressed: zImage
73archclean: 73archclean:
74 $(Q)$(MAKE) $(clean)=$(boot) 74 $(Q)$(MAKE) $(clean)=$(boot)
75 75
76prepare: arch/$(ARCH)/lib/syscalltab.h 76archprepare: arch/$(ARCH)/lib/syscalltab.h
77 77
78define filechk_gen-syscalltab 78define filechk_gen-syscalltab
79 (set -e; \ 79 (set -e; \
diff --git a/arch/um/Makefile b/arch/um/Makefile
index 154803a22698..ce987266dac6 100644
--- a/arch/um/Makefile
+++ b/arch/um/Makefile
@@ -107,7 +107,7 @@ else
107$(shell cd $(ARCH_DIR) && ln -sf Kconfig.$(SUBARCH) Kconfig.arch) 107$(shell cd $(ARCH_DIR) && ln -sf Kconfig.$(SUBARCH) Kconfig.arch)
108endif 108endif
109 109
110prepare: $(ARCH_SYMLINKS) $(SYS_HEADERS) $(GEN_HEADERS) 110archprepare: $(ARCH_SYMLINKS) $(SYS_HEADERS) $(GEN_HEADERS)
111 111
112LINK-$(CONFIG_LD_SCRIPT_STATIC) += -static 112LINK-$(CONFIG_LD_SCRIPT_STATIC) += -static
113LINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/lib 113LINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/lib
diff --git a/arch/xtensa/Makefile b/arch/xtensa/Makefile
index 67ef4cd173b9..98fac8489aed 100644
--- a/arch/xtensa/Makefile
+++ b/arch/xtensa/Makefile
@@ -66,7 +66,7 @@ boot := arch/xtensa/boot
66 66
67archinc := include/asm-xtensa 67archinc := include/asm-xtensa
68 68
69prepare: $(archinc)/.platform 69archprepare: $(archinc)/.platform
70 70
71# Update machine cpu and platform symlinks if something which affects 71# Update machine cpu and platform symlinks if something which affects
72# them changed. 72# them changed.