aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Ravnborg <sam@ravnborg.org>2007-11-17 09:37:31 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-11-17 11:35:43 -0500
commit6840999b192b1b57d713ddee3761c457a2779036 (patch)
treee0fe2a7cafc373aa6b67fcf2b4a91e17215bca3a
parentd9f8bcbf67a0ee67c8cb0734f003dfe916bb5248 (diff)
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>
-rw-r--r--Makefile4
-rw-r--r--README2
-rw-r--r--arch/x86/Kconfig4
-rw-r--r--scripts/kconfig/conf.c1
-rw-r--r--scripts/kconfig/confdata.c27
-rw-r--r--scripts/kconfig/lkc_proto.h1
6 files changed, 3 insertions, 36 deletions
diff --git a/Makefile b/Makefile
index 7f969303ed49..6d7d7e991c96 100644
--- a/Makefile
+++ b/Makefile
@@ -200,11 +200,9 @@ SRCARCH := $(ARCH)
200# Additional ARCH settings for x86 200# Additional ARCH settings for x86
201ifeq ($(ARCH),i386) 201ifeq ($(ARCH),i386)
202 SRCARCH := x86 202 SRCARCH := x86
203 K64BIT := n
204endif 203endif
205ifeq ($(ARCH),x86_64) 204ifeq ($(ARCH),x86_64)
206 SRCARCH := x86 205 SRCARCH := x86
207 K64BIT := y
208endif 206endif
209 207
210KCONFIG_CONFIG ?= .config 208KCONFIG_CONFIG ?= .config
@@ -341,7 +339,7 @@ KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null)
341KERNELVERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) 339KERNELVERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
342 340
343export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION 341export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION
344export ARCH SRCARCH K64BIT CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC 342export ARCH SRCARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC
345export CPP AR NM STRIP OBJCOPY OBJDUMP MAKE AWK GENKSYMS PERL UTS_MACHINE 343export CPP AR NM STRIP OBJCOPY OBJDUMP MAKE AWK GENKSYMS PERL UTS_MACHINE
346export HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS 344export HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS
347 345
diff --git a/README b/README
index 592f8a238281..159912cf5155 100644
--- a/README
+++ b/README
@@ -194,8 +194,6 @@ CONFIGURING the kernel:
194 "make *config" checks for a file named "all{yes/mod/no/random}.config" 194 "make *config" checks for a file named "all{yes/mod/no/random}.config"
195 for symbol values that are to be forced. If this file is not found, 195 for symbol values that are to be forced. If this file is not found,
196 it checks for a file named "all.config" to contain forced values. 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 NOTES on "make config": 198 NOTES on "make config":
201 - having unnecessary drivers will make the kernel bigger, and can 199 - having unnecessary drivers will make the kernel bigger, and can
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 1eb59971af5d..368864dfe6eb 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -3,8 +3,8 @@ mainmenu "Linux Kernel Configuration for x86"
3 3
4# Select 32 or 64 bit 4# Select 32 or 64 bit
5config 64BIT 5config 64BIT
6 bool "64-bit kernel" 6 bool "64-bit kernel" if ARCH = "x86"
7 default n 7 default ARCH = "x86_64"
8 help 8 help
9 Say yes to build a 64-bit kernel - formerly known as x86_64 9 Say yes to build a 64-bit kernel - formerly known as x86_64
10 Say no to build a 32-bit kernel - formerly known as i386 10 Say no to build a 32-bit kernel - formerly known as i386
diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
index c6bee85c3962..a38787a881ea 100644
--- a/scripts/kconfig/conf.c
+++ b/scripts/kconfig/conf.c
@@ -591,7 +591,6 @@ int main(int ac, char **av)
591 conf_read_simple(name, S_DEF_USER); 591 conf_read_simple(name, S_DEF_USER);
592 else if (!stat("all.config", &tmpstat)) 592 else if (!stat("all.config", &tmpstat))
593 conf_read_simple("all.config", S_DEF_USER); 593 conf_read_simple("all.config", S_DEF_USER);
594 conf_set_env_sym("K64BIT", "64BIT", S_DEF_USER);
595 break; 594 break;
596 default: 595 default:
597 break; 596 break;
diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
index e4fa3f302541..e0f402f3b75d 100644
--- a/scripts/kconfig/confdata.c
+++ b/scripts/kconfig/confdata.c
@@ -145,33 +145,6 @@ static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p)
145 return 0; 145 return 0;
146} 146}
147 147
148/* Read an environment variable and assign the value to the symbol */
149int 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
175int conf_read_simple(const char *name, int def) 148int conf_read_simple(const char *name, int def)
176{ 149{
177 FILE *in = NULL; 150 FILE *in = NULL;
diff --git a/scripts/kconfig/lkc_proto.h b/scripts/kconfig/lkc_proto.h
index dca294e90cc3..4d09f6ddefe3 100644
--- a/scripts/kconfig/lkc_proto.h
+++ b/scripts/kconfig/lkc_proto.h
@@ -1,7 +1,6 @@
1 1
2/* confdata.c */ 2/* confdata.c */
3P(conf_parse,void,(const char *name)); 3P(conf_parse,void,(const char *name));
4P(conf_set_env_sym,int,(const char *envname, const char *symname, int def));
5P(conf_read,int,(const char *name)); 4P(conf_read,int,(const char *name));
6P(conf_read_simple,int,(const char *name, int)); 5P(conf_read_simple,int,(const char *name, int));
7P(conf_write,int,(const char *name)); 6P(conf_write,int,(const char *name));