Commit 6840999b192b1b57d713ddee3761c457a2779036

Authored by Sam Ravnborg
Committed by Linus Torvalds
1 parent d9f8bcbf67

x86: simplify "make ARCH=x86" and fix kconfig all.config

Simplify "make ARCH=x86" and fix kconfig so we again can set 64BIT in
all.config.

For a fix the diffstat is nice:
 6 files changed, 3 insertions(+), 36 deletions(-)

The patch reverts these commits:
 - 0f855aa64b3f63d35a891510cf7db932a435c116 ("kconfig: add helper to set
   config symbol from environment variable")
 - 2a113281f5cd2febbab21a93c8943f8d3eece4d3 ("kconfig: use $K64BIT to
   set 64BIT with all*config targets")

Roman Zippel pointed out that kconfig supported string compares so
the additional complexity introduced by the above two patches were
not needed.

With this patch we have following behaviour:

  # make {allno,allyes,allmod,rand}config [ARCH=...]
  option \ host arch      | 32bit         | 64bit
  =====================================================
  ./.                     | 32bit         | 64bit
  ARCH=x86                | 32bit         | 32bit
  ARCH=i386               | 32bit         | 32bit
  ARCH=x86_64             | 64bit         | 64bit

The general rule are that ARCH= and native architecture takes
precedence over the configuration.

So make ARCH=i386 [whatever] will always build a 32-bit kernel
no matter what the configuration says.  The configuration will
be updated to 32-bit if it was configured to 64-bit and the
other way around.

This behaviour is consistent with previous behaviour so no
suprises here.

make ARCH=x86 will per default result in a 32-bit kernel but as
the only ARCH= value x86 allow the user to select between 32-bit
and 64-bit using menuconfig.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc: Roman Zippel <zippel@linux-m68k.org>
Cc: Andreas Herrmann <aherrman@arcor.de>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 6 changed files with 3 additions and 36 deletions Side-by-side Diff

... ... @@ -200,11 +200,9 @@
200 200 # Additional ARCH settings for x86
201 201 ifeq ($(ARCH),i386)
202 202 SRCARCH := x86
203   - K64BIT := n
204 203 endif
205 204 ifeq ($(ARCH),x86_64)
206 205 SRCARCH := x86
207   - K64BIT := y
208 206 endif
209 207  
210 208 KCONFIG_CONFIG ?= .config
... ... @@ -341,7 +339,7 @@
341 339 KERNELVERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
342 340  
343 341 export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION
344   -export ARCH SRCARCH K64BIT CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC
  342 +export ARCH SRCARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC
345 343 export CPP AR NM STRIP OBJCOPY OBJDUMP MAKE AWK GENKSYMS PERL UTS_MACHINE
346 344 export HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS
347 345  
... ... @@ -194,8 +194,6 @@
194 194 "make *config" checks for a file named "all{yes/mod/no/random}.config"
195 195 for symbol values that are to be forced. If this file is not found,
196 196 it checks for a file named "all.config" to contain forced values.
197   - Finally it checks the environment variable K64BIT and if found, sets
198   - the config symbol "64BIT" to the value of the K64BIT variable.
199 197  
200 198 NOTES on "make config":
201 199 - having unnecessary drivers will make the kernel bigger, and can
... ... @@ -3,8 +3,8 @@
3 3  
4 4 # Select 32 or 64 bit
5 5 config 64BIT
6   - bool "64-bit kernel"
7   - default n
  6 + bool "64-bit kernel" if ARCH = "x86"
  7 + default ARCH = "x86_64"
8 8 help
9 9 Say yes to build a 64-bit kernel - formerly known as x86_64
10 10 Say no to build a 32-bit kernel - formerly known as i386
scripts/kconfig/conf.c
... ... @@ -591,7 +591,6 @@
591 591 conf_read_simple(name, S_DEF_USER);
592 592 else if (!stat("all.config", &tmpstat))
593 593 conf_read_simple("all.config", S_DEF_USER);
594   - conf_set_env_sym("K64BIT", "64BIT", S_DEF_USER);
595 594 break;
596 595 default:
597 596 break;
scripts/kconfig/confdata.c
... ... @@ -145,33 +145,6 @@
145 145 return 0;
146 146 }
147 147  
148   -/* Read an environment variable and assign the value to the symbol */
149   -int conf_set_env_sym(const char *env, const char *symname, int def)
150   -{
151   - struct symbol *sym;
152   - char *p;
153   - int def_flags;
154   -
155   - p = getenv(env);
156   - if (p) {
157   - char warning[200];
158   - sprintf(warning, "Environment variable (%s = \"%s\")", env, p);
159   - conf_filename = warning;
160   - def_flags = SYMBOL_DEF << def;
161   - if (def == S_DEF_USER) {
162   - sym = sym_find(symname);
163   - if (!sym)
164   - return 1;
165   - } else {
166   - sym = sym_lookup(symname, 0);
167   - if (sym->type == S_UNKNOWN)
168   - sym->type = S_OTHER;
169   - }
170   - conf_set_sym_val(sym, def, def_flags, p);
171   - }
172   - return 0;
173   -}
174   -
175 148 int conf_read_simple(const char *name, int def)
176 149 {
177 150 FILE *in = NULL;
scripts/kconfig/lkc_proto.h
1 1  
2 2 /* confdata.c */
3 3 P(conf_parse,void,(const char *name));
4   -P(conf_set_env_sym,int,(const char *envname, const char *symname, int def));
5 4 P(conf_read,int,(const char *name));
6 5 P(conf_read_simple,int,(const char *name, int));
7 6 P(conf_write,int,(const char *name));