From: Sam Ravnborg Use the official keyword 'select' when kconfig reports wrong usage. Be more specific when wrong usage is encountered. Other warnings from kconfig could use same treatment, but kept this minimal for now. --- 25-akpm/scripts/kconfig/menu.c | 17 +++++++++++++---- 1 files changed, 13 insertions(+), 4 deletions(-) diff -puN scripts/kconfig/menu.c~kconfig-use-select scripts/kconfig/menu.c --- 25/scripts/kconfig/menu.c~kconfig-use-select Tue Jan 20 12:08:43 2004 +++ 25-akpm/scripts/kconfig/menu.c Tue Jan 20 12:08:43 2004 @@ -275,10 +275,19 @@ void menu_finalize(struct menu *parent) break; case P_SELECT: sym2 = prop_get_symbol(prop); - if ((sym->type != S_BOOLEAN && sym->type != S_TRISTATE) || - (sym2->type != S_BOOLEAN && sym2->type != S_TRISTATE)) - fprintf(stderr, "%s:%d:warning: enable is only allowed with boolean and tristate symbols\n", - prop->file->name, prop->lineno); + if (sym->type != S_BOOLEAN && sym->type != S_TRISTATE) + fprintf(stderr, "%s:%d:warning: config symbol '%s' uses select, " + "but is not boolean or tristate\n", + prop->file->name, prop->lineno, sym->name); + else if (sym2->type == S_UNKNOWN) + fprintf(stderr, "%s:%d:warning: 'select' used by config symbol '%s' " + "refer to undefined symbol '%s'\n", + prop->file->name, prop->lineno, sym->name, sym2->name); + else if (sym2->type != S_BOOLEAN && sym2->type != S_TRISTATE) + fprintf(stderr, "%s:%d:warning: '%s' has wrong type." + " 'select' only accept arguments of " + "boolean and tristate type.\n", + prop->file->name, prop->lineno, sym2->name); break; case P_RANGE: if (sym->type != S_INT && sym->type != S_HEX) _