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 | |
| 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>
| -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 $@ |
