aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoland McGrath <roland@redhat.com>2009-12-21 19:24:06 -0500
committerMichal Marek <mmarek@suse.cz>2010-02-02 08:33:54 -0500
commit84336466011c589b6af554f2f2f1fcfa1a5c1437 (patch)
treeea46dd245d649273c323275afb65ca83171c97ad
parent4b024242e8a4e9679fa327ea03958b89f89096c9 (diff)
kconfig CROSS_COMPILE option
This adds CROSS_COMPILE as a kconfig string so you can store it in .config. Then you can use plain "make" in the configured kernel build directory to do the right cross compilation without setting the command-line or environment variable every time. With this, you can set up different build directories for different kernel configurations, whether native or cross-builds, and then use the simple: make -C /build/dir M=module-source-dir idiom to build modules for any given target kernel, indicating which one by nothing but the build directory chosen. I tried a version that defaults the string with env="CROSS_COMPILE" so that in a "make oldconfig" with CROSS_COMPILE in the environment you can just hit return to store the way you're building it. But the kconfig prompt for strings doesn't give you any way to say you want an empty string instead of the default, so I punted that. Signed-off-by: Roland McGrath <roland@redhat.com> Cc: Sam Ravnborg <sam@ravnborg.org> Cc: Anibal Monsalve Salazar <anibal@debian.org> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Michal Marek <mmarek@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Michal Marek <mmarek@suse.cz>
-rw-r--r--Makefile3
-rw-r--r--init/Kconfig8
2 files changed, 11 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 394aec712c7d..f9dc25cd9b2e 100644
--- a/Makefile
+++ b/Makefile
@@ -183,11 +183,14 @@ SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
183# CROSS_COMPILE can be set on the command line 183# CROSS_COMPILE can be set on the command line
184# make CROSS_COMPILE=ia64-linux- 184# make CROSS_COMPILE=ia64-linux-
185# Alternatively CROSS_COMPILE can be set in the environment. 185# Alternatively CROSS_COMPILE can be set in the environment.
186# A third alternative is to store a setting in .config so that plain
187# "make" in the configured kernel build directory always uses that.
186# Default value for CROSS_COMPILE is not to prefix executables 188# Default value for CROSS_COMPILE is not to prefix executables
187# Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile 189# Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
188export KBUILD_BUILDHOST := $(SUBARCH) 190export KBUILD_BUILDHOST := $(SUBARCH)
189ARCH ?= $(SUBARCH) 191ARCH ?= $(SUBARCH)
190CROSS_COMPILE ?= 192CROSS_COMPILE ?=
193CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
191 194
192# Architecture as present in compile.h 195# Architecture as present in compile.h
193UTS_MACHINE := $(ARCH) 196UTS_MACHINE := $(ARCH)
diff --git a/init/Kconfig b/init/Kconfig
index d95ca7cd5d45..313506d8be6e 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -76,6 +76,14 @@ config INIT_ENV_ARG_LIMIT
76 variables passed to init from the kernel command line. 76 variables passed to init from the kernel command line.
77 77
78 78
79config CROSS_COMPILE
80 string "Cross-compiler tool prefix"
81 help
82 Same as running 'make CROSS_COMPILE=prefix-' but stored for
83 default make runs in this kernel build directory. You don't
84 need to set this unless you want the configured kernel build
85 directory to select the cross-compiler automatically.
86
79config LOCALVERSION 87config LOCALVERSION
80 string "Local version - append to kernel release" 88 string "Local version - append to kernel release"
81 help 89 help