The kernel currently supports two methods of dealing with config fragments in the tree: a) Running "make foo.config" looks for arch/$(ARCH)/configs/foo.config and kernel/configs/foo.config, and applies the defaults from those files on top of the current configuration. b) Running "KCONFIG_ALLCONFIG=1 make randconfig" (or the equivalent allmodconfig/allnoconfig/allyesconfig/alldefconfig) will look for a "allrandconfig.config" file in the current directory or the top of the $(srctree). These are used as defaults before we generate the remaining options. This is rather inconsistent, and prevents us from easily shipping good defaults for "randconfig". I'm extending the logic here so that the second case also looks for the hardcoded file names in the standard directories (first arch/$(ARCH)/configs/, then kernel/configs) in the source tree. Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> --- scripts/kconfig/conf.c | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c index 866369f10ff8..848bf4d15e9a 100644 --- a/scripts/kconfig/conf.c +++ b/scripts/kconfig/conf.c @@ -493,8 +493,9 @@ int main(int ac, char **av) { const char *progname = av[0]; int opt; - const char *name, *defconfig_file = NULL /* gcc uninit */; + const char *arch, *name, *defconfig_file = NULL /* gcc uninit */; struct stat tmpstat; + char fullname[PATH_MAX+1]; setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); @@ -621,14 +622,24 @@ int main(int ac, char **av) case randconfig: name = "allrandom.config"; break; default: break; } - if (conf_read_simple(name, S_DEF_USER) && - conf_read_simple("all.config", S_DEF_USER)) { - fprintf(stderr, - _("*** KCONFIG_ALLCONFIG set, but no \"%s\" or \"all.config\" file found\n"), - name); - exit(1); + /* try ./name, arch/$(ARCH)/configs/name and kernel/config/name */ + if (!conf_read_simple(name, S_DEF_USER)) + break; + arch = getenv("ARCH"); + if (arch) { + snprintf(fullname, sizeof(fullname), "arch/%s/configs/%s", + arch, name); + if (!conf_read_simple(fullname, S_DEF_USER)) + break; } - break; + snprintf(fullname, sizeof(fullname), "kernel/configs/%s", name); + if (!conf_read_simple(fullname, S_DEF_USER)) + break; + + fprintf(stderr, + _("*** KCONFIG_ALLCONFIG set, but no \"%s\" or \"all.config\" file found\n"), + name); + exit(1); default: break; } -- 2.9.0 -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html