kconfig CROSS_COMPILE option

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Linux Kernel Mailing List
Date: Tuesday, June 1, 2010 - 9:59 am

Gitweb:     http://git.kernel.org/linus/84336466011c589b6af554f2f2f1fcfa1a5c1437
Commit:     84336466011c589b6af554f2f2f1fcfa1a5c1437
Parent:     4b024242e8a4e9679fa327ea03958b89f89096c9
Author:     Roland McGrath <roland@redhat.com>
AuthorDate: Mon Dec 21 16:24:06 2009 -0800
Committer:  Michal Marek <mmarek@suse.cz>
CommitDate: Tue Feb 2 14:33:54 2010 +0100

    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>
---
 Makefile     |    3 +++
 init/Kconfig |    8 ++++++++
 2 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/Makefile b/Makefile
index 394aec7..f9dc25c 100644
--- a/Makefile
+++ b/Makefile
@@ -183,11 +183,14 @@ SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
 # CROSS_COMPILE can be set on the command line
 # make CROSS_COMPILE=ia64-linux-
 # Alternatively CROSS_COMPILE can be set in the environment.
+# A third alternative is to store a setting in .config so that plain
+# "make" in the configured kernel build directory always uses that.
 # Default value for CROSS_COMPILE is not to prefix executables
 # Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
 export KBUILD_BUILDHOST := $(SUBARCH)
 ARCH		?= $(SUBARCH)
 CROSS_COMPILE	?=
+CROSS_COMPILE	?= $(CONFIG_CROSS_COMPILE:"%"=%)
 
 # Architecture as present in compile.h
 UTS_MACHINE 	:= $(ARCH)
diff --git a/init/Kconfig b/init/Kconfig
index d95ca7c..313506d 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -76,6 +76,14 @@ config INIT_ENV_ARG_LIMIT
 	  variables passed to init from the kernel command line.
 
 
+config CROSS_COMPILE
+	string "Cross-compiler tool prefix"
+	help
+	  Same as running 'make CROSS_COMPILE=prefix-' but stored for
+	  default make runs in this kernel build directory.  You don't
+	  need to set this unless you want the configured kernel build
+	  directory to select the cross-compiler automatically.
+
 config LOCALVERSION
 	string "Local version - append to kernel release"
 	help
--
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
kconfig CROSS_COMPILE option, Linux Kernel Mailing ..., (Tue Jun 1, 9:59 am)