diff options
author | Sam Ravnborg <sam@ravnborg.org> | 2009-10-11 17:22:58 -0400 |
---|---|---|
committer | Sam Ravnborg <sam@ravnborg.org> | 2009-10-11 17:22:58 -0400 |
commit | 2331d1a6cd3d6e580bc88b9a160066d9e1177fe1 (patch) | |
tree | eba044f60a1fe478e864ead1dc1940a2b0a23b9f /Makefile | |
parent | c01226c3145d173a0d38f9d5b4f229cc23d99ae2 (diff) |
kbuild: revert "save ARCH & CROSS_COMPILE ..."
Revert commit 575543347b5baed0ca927cb90ba8807396fe9cc9
It caused following issues:
- On architectures where ARCH= setting is used to select between
32 and 64 bit this was no longer possible without "make mrproper"
- If ARCH was changed then kbuild refused to run "make mrproper"
because ARCH had changed
- When CROSS_COMPILE was changed people were asked to run "make mrproper"
but kbuild refused to run "make mrproper" because CROSS_COMPILE changed.
- Spaces in CROSS_COMPILE was not 'supported'
- If an non-existing ARCH= was used kbuild could get stuck
Lessons learned:
. Despite being simple and straghtforward people uses very different
approaches when building the kernel.
. CROSS_COMPILE is sometimes used for ccache despite cache being
only a CC frontend so one would have expected CC to be
used for this purpose.
. And obviously this was not tested widely enough.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc: Pavel Machek <pavel@ucw.cz>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 46 |
1 files changed, 2 insertions, 44 deletions
@@ -179,46 +179,9 @@ SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \ | |||
179 | # Alternatively CROSS_COMPILE can be set in the environment. | 179 | # Alternatively CROSS_COMPILE can be set in the environment. |
180 | # Default value for CROSS_COMPILE is not to prefix executables | 180 | # Default value for CROSS_COMPILE is not to prefix executables |
181 | # Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile | 181 | # Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile |
182 | # | ||
183 | # To force ARCH and CROSS_COMPILE settings include kernel.* files | ||
184 | # in the kernel tree - do not patch this file. | ||
185 | export KBUILD_BUILDHOST := $(SUBARCH) | 182 | export KBUILD_BUILDHOST := $(SUBARCH) |
186 | 183 | ARCH ?= $(SUBARCH) | |
187 | # Kbuild save the ARCH and CROSS_COMPILE setting in kernel.* files. | 184 | CROSS_COMPILE ?= |
188 | # Restore these settings and check that user did not specify | ||
189 | # conflicting values. | ||
190 | |||
191 | saved_arch := $(shell cat include/generated/kernel.arch 2> /dev/null) | ||
192 | saved_cross := $(shell cat include/generated/kernel.cross 2> /dev/null) | ||
193 | |||
194 | ifneq ($(CROSS_COMPILE),) | ||
195 | ifneq ($(saved_cross),) | ||
196 | ifneq ($(CROSS_COMPILE),$(saved_cross)) | ||
197 | $(error CROSS_COMPILE changed from \ | ||
198 | "$(saved_cross)" to \ | ||
199 | to "$(CROSS_COMPILE)". \ | ||
200 | Use "make mrproper" to fix it up) | ||
201 | endif | ||
202 | endif | ||
203 | else | ||
204 | CROSS_COMPILE := $(saved_cross) | ||
205 | endif | ||
206 | |||
207 | ifneq ($(ARCH),) | ||
208 | ifneq ($(saved_arch),) | ||
209 | ifneq ($(saved_arch),$(ARCH)) | ||
210 | $(error ARCH changed from \ | ||
211 | "$(saved_arch)" to "$(ARCH)". \ | ||
212 | Use "make mrproper" to fix it up) | ||
213 | endif | ||
214 | endif | ||
215 | else | ||
216 | ifneq ($(saved_arch),) | ||
217 | ARCH := $(saved_arch) | ||
218 | else | ||
219 | ARCH := $(SUBARCH) | ||
220 | endif | ||
221 | endif | ||
222 | 185 | ||
223 | # Architecture as present in compile.h | 186 | # Architecture as present in compile.h |
224 | UTS_MACHINE := $(ARCH) | 187 | UTS_MACHINE := $(ARCH) |
@@ -483,11 +446,6 @@ ifeq ($(config-targets),1) | |||
483 | include $(srctree)/arch/$(SRCARCH)/Makefile | 446 | include $(srctree)/arch/$(SRCARCH)/Makefile |
484 | export KBUILD_DEFCONFIG KBUILD_KCONFIG | 447 | export KBUILD_DEFCONFIG KBUILD_KCONFIG |
485 | 448 | ||
486 | # save ARCH & CROSS_COMPILE settings | ||
487 | $(shell mkdir -p include/generated && \ | ||
488 | echo $(ARCH) > include/generated/kernel.arch && \ | ||
489 | echo $(CROSS_COMPILE) > include/generated/kernel.cross) | ||
490 | |||
491 | config: scripts_basic outputmakefile FORCE | 449 | config: scripts_basic outputmakefile FORCE |
492 | $(Q)mkdir -p include/linux include/config | 450 | $(Q)mkdir -p include/linux include/config |
493 | $(Q)$(MAKE) $(build)=scripts/kconfig $@ | 451 | $(Q)$(MAKE) $(build)=scripts/kconfig $@ |