diff options
| author | Sam Ravnborg <sam@mars.ravnborg.org> | 2003-09-11 00:14:02 +0200 |
|---|---|---|
| committer | Sam Ravnborg <sam@mars.ravnborg.org> | 2003-09-11 00:14:02 +0200 |
| commit | f8e5d51db3721d575cc724c3468ab2e409d37142 (patch) | |
| tree | 8184acf9419f851779d0432d545120ba627b3f92 /scripts | |
| parent | f4c16cfc5ad13c133e06f5796e5de77971a657ba (diff) | |
kconfig: Allow architectures to select board specific configs
This patch introduces the framework required for architectures to supply
several independent configurations. Three architectures does this today:
ppc, ppc64 and arm.
The infrastructure provided here requires the files to be located in
the following directory:
arch/$(ARCH)/configs
The file shall be named <board>_defconfig
To select the configuration for ppc/gemini simply issue the following command:
make gemini_defconfig
This will generate a valid configuration.
ppc and ppc64 already comply to the above requirements, arm needs some
trivial updates.
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/kconfig/Makefile | 3 | ||||
| -rw-r--r-- | scripts/kconfig/conf.c | 30 |
2 files changed, 25 insertions, 8 deletions
diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile index 2189c334ad37..99d4ac48efc6 100644 --- a/scripts/kconfig/Makefile +++ b/scripts/kconfig/Makefile @@ -40,6 +40,9 @@ allmodconfig: $(obj)/conf defconfig: $(obj)/conf $< -d arch/$(ARCH)/Kconfig +%_defconfig: $(obj)/conf + $(Q)$< -D arch/$(ARCH)/configs/$@ arch/$(ARCH)/Kconfig + # Help text used by make help help: @echo ' oldconfig - Update current config utilising a line-oriented program' diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c index fa320f79a5da..08da496f8369 100644 --- a/scripts/kconfig/conf.c +++ b/scripts/kconfig/conf.c @@ -26,6 +26,7 @@ enum { set_no, set_random } input_mode = ask_all; +char *defconfig_file; static int indent = 1; static int valid_stdin = 1; @@ -483,11 +484,12 @@ static void check_conf(struct menu *menu) int main(int ac, char **av) { + int i = 1; const char *name; struct stat tmpstat; - if (ac > 1 && av[1][0] == '-') { - switch (av[1][1]) { + if (ac > i && av[i][0] == '-') { + switch (av[i++][1]) { case 'o': input_mode = ask_new; break; @@ -498,6 +500,15 @@ int main(int ac, char **av) case 'd': input_mode = set_default; break; + case 'D': + input_mode = set_default; + defconfig_file = av[i++]; + if (!defconfig_file) { + printf("%s: No default config file specified\n", + av[0]); + exit(1); + } + break; case 'n': input_mode = set_no; break; @@ -516,18 +527,21 @@ int main(int ac, char **av) printf("%s [-o|-s] config\n", av[0]); exit(0); } - name = av[2]; - } else - name = av[1]; + } + name = av[i]; + if (!name) { + printf("%s: Kconfig file missing\n", av[0]); + } conf_parse(name); //zconfdump(stdout); switch (input_mode) { case set_default: - name = conf_get_default_confname(); - if (conf_read(name)) { + if (!defconfig_file) + defconfig_file = conf_get_default_confname(); + if (conf_read(defconfig_file)) { printf("***\n" "*** Can't find default configuration \"%s\"!\n" - "***\n", name); + "***\n", defconfig_file); exit(1); } break; |
