lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20140706080234.19520.96704.stgit@zurg>
Date:	Sun, 06 Jul 2014 12:02:34 +0400
From:	Konstantin Khlebnikov <koct9i@...il.com>
To:	Michal Marek <mmarek@...e.cz>, linux-kernel@...r.kernel.org,
	linux-kbuild@...r.kernel.org
Cc:	Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
	Andrew Morton <akpm@...ux-foundation.org>,
	Linus Torvalds <torvalds@...ux-foundation.org>,
	linux-arm-kernel@...ts.infradead.org
Subject: [PATCH] kconfig: store default ARCH in .config

This patch makes cross-compilation configuration fully statefull.
Default ARCH is stored in .config as CONFIG_DEFAULT_ARCH.
After initial configuration specifying ARCH= is no longer required.

To avoid recursion it is read directly from .config using scritps/config
because include/config/auto.conf is not yet included at this point.

Signed-off-by: Konstantin Khlebnikov <koct9i@...il.com>
---
 Documentation/kbuild/makefiles.txt |    2 ++
 Makefile                           |   19 ++++++++++++++-----
 init/Kconfig                       |    4 ++++
 3 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt
index c600e2f..ced3e42 100644
--- a/Documentation/kbuild/makefiles.txt
+++ b/Documentation/kbuild/makefiles.txt
@@ -1394,6 +1394,8 @@ The top Makefile exports the following variables:
 
 	    make ARCH=m68k ...
 
+	Default $(ARCH) is stored in .config as CONFIG_DEFAULT_ARCH,
+	so overriding is required only for initial configuration.
 
     INSTALL_PATH
 
diff --git a/Makefile b/Makefile
index 50fb690..76fcd9f 100644
--- a/Makefile
+++ b/Makefile
@@ -171,6 +171,8 @@ VPATH		:= $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD))
 
 export srctree objtree VPATH
 
+KCONFIG_CONFIG	?= .config
+export KCONFIG_CONFIG
 
 # SUBARCH tells the usermode build what the underlying arch is.  That is set
 # first, and if a usermode build is happening, the "ARCH=um" on the command
@@ -193,7 +195,18 @@ SUBARCH := $(shell uname -m | sed -e s/i.86/x86/ -e s/x86_64/x86/ \
 # ARCH can be set during invocation of make:
 # make ARCH=ia64
 # Another way is to have ARCH set in the environment.
-# The default ARCH is the host where make is executed.
+# If CONFIG_DEFAULT_ARCH is in .config its value is used as default ARCH,
+# otherwise the host where make is executed.
+
+ifndef ARCH
+	ARCH := $(shell test -e $(KBUILD_OUTPUT)$(KCONFIG_CONFIG) && \
+			$(srctree)/scripts/config \
+			--file $(KBUILD_OUTPUT)$(KCONFIG_CONFIG) \
+			--state "DEFAULT_ARCH")
+ifeq ($(filter-out undef,$(ARCH)),)
+	ARCH := $(SUBARCH)
+endif
+endif
 
 # CROSS_COMPILE specify the prefix used for all executables used
 # during compilation. Only gcc and related bin-utils executables
@@ -205,7 +218,6 @@ SUBARCH := $(shell uname -m | sed -e s/i.86/x86/ -e s/x86_64/x86/ \
 # "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
-ARCH		?= $(SUBARCH)
 CROSS_COMPILE	?= $(CONFIG_CROSS_COMPILE:"%"=%)
 
 # Architecture as present in compile.h
@@ -244,9 +256,6 @@ endif
 # Where to locate arch specific headers
 hdr-arch  := $(SRCARCH)
 
-KCONFIG_CONFIG	?= .config
-export KCONFIG_CONFIG
-
 # SHELL used by kbuild
 CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
 	  else if [ -x /bin/bash ]; then echo /bin/bash; \
diff --git a/init/Kconfig b/init/Kconfig
index 9d76b99..3d58cb7 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -2,6 +2,10 @@ config ARCH
 	string
 	option env="ARCH"
 
+config DEFAULT_ARCH
+	string
+	default ARCH
+
 config KERNELVERSION
 	string
 	option env="KERNELVERSION"

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ