diff -rduNp config.new.oorig/Makefile config.new/Makefile --- config.new.oorig/Makefile 2008-04-07 11:03:28.000000000 +0200 +++ config.new/Makefile 2008-04-07 11:06:30.000000000 +0200 @@ -123,6 +123,9 @@ hostprogs-y := conf qconf gconf kxgettex ifeq ($(MAKECMDGOALS),menuconfig) hostprogs-y += mconf endif +ifeq ($(findstring mconf,$(MAKECMDGOALS)),mconf) + hostprogs-y += mconf +endif ifeq ($(MAKECMDGOALS),xconfig) qconf-target := 1 @@ -181,8 +184,8 @@ $(obj)/.tmp_qtcheck: done; \ if [ -z "$$dir" ]; then \ echo "*"; \ - echo "* Unable to find the QT3 installation. Please make sure that"; \ - echo "* the QT3 development package is correctly installed and"; \ + echo "* Unable to find the QT installation. Please make sure that"; \ + echo "* the QT development package is correctly installed and"; \ echo "* either install pkg-config or set the QTDIR environment"; \ echo "* variable to the correct location."; \ echo "*"; \ diff -rduNp config.new.oorig/conf.c config.new/conf.c --- config.new.oorig/conf.c 2008-04-07 11:03:28.000000000 +0200 +++ config.new/conf.c 2008-04-07 11:06:30.000000000 +0200 @@ -545,7 +545,7 @@ int main(int ac, char **av) exit(1); } conf_parse(name); - //zconfdump(stdout); + /*zconfdump(stdout);*/ switch (input_mode) { case set_default: if (!defconfig_file) @@ -560,11 +560,11 @@ int main(int ac, char **av) case ask_silent: if (stat(".config", &tmpstat)) { printf(_("***\n" - "*** You have not yet configured your kernel!\n" - "*** (missing kernel .config file)\n" + "*** You have not yet configured Buildroot!\n" + "*** (missing .config file)\n" "***\n" "*** Please run some configurator (e.g. \"make oldconfig\" or\n" - "*** \"make menuconfig\" or \"make xconfig\").\n" + "*** \"make menuconfig\" or \"make config\").\n" "***\n")); exit(1); } @@ -607,7 +607,7 @@ int main(int ac, char **av) } else if (conf_get_changed()) { name = getenv("KCONFIG_NOSILENTUPDATE"); if (name && *name) { - fprintf(stderr, _("\n*** Kernel configuration requires explicit update.\n\n")); + fprintf(stderr, _("\n*** Buildroot configuration requires explicit update.\n\n")); return 1; } } else @@ -618,12 +618,12 @@ int main(int ac, char **av) check_conf(&rootmenu); } while (conf_cnt); if (conf_write(NULL)) { - fprintf(stderr, _("\n*** Error during writing of the kernel configuration.\n\n")); + fprintf(stderr, _("\n*** Error during writing of the Buildroot configuration.\n\n")); return 1; } skip_check: - if (input_mode == ask_silent && conf_write_autoconf()) { - fprintf(stderr, _("\n*** Error during writing of the kernel configuration.\n\n")); + if (/*input_mode == ask_silent &&*/ conf_write_autoconf()) { + fprintf(stderr, _("\n*** Error during writing of the Buildroot configuration.\n\n")); return 1; } diff -rduNp config.new.oorig/confdata.c config.new/confdata.c --- config.new.oorig/confdata.c 2008-04-07 11:03:28.000000000 +0200 +++ config.new/confdata.c 2008-04-07 11:06:30.000000000 +0200 @@ -11,6 +11,7 @@ #include #include #include +#include #define LKC_DIRECT_LINK #include "lkc.h" @@ -21,7 +22,7 @@ static void conf_warning(const char *fmt static const char *conf_filename; static int conf_lineno, conf_warnings, conf_unsaved; -const char conf_defname[] = "arch/$ARCH/defconfig"; +const char conf_defname[] = ".defconfig"; static void conf_warning(const char *fmt, ...) { @@ -36,7 +37,7 @@ static void conf_warning(const char *fmt const char *conf_get_configname(void) { - char *name = getenv("KCONFIG_CONFIG"); + char *name = getenv("BUILDROOT_CONFIG"); return name ? name : ".config"; } @@ -212,22 +213,22 @@ load: sym = NULL; switch (line[0]) { case '#': - if (memcmp(line + 2, "CONFIG_", 7)) + if (line[1]!=' ') continue; - p = strchr(line + 9, ' '); + p = strchr(line + 2, ' '); if (!p) continue; *p++ = 0; if (strncmp(p, "is not set", 10)) continue; if (def == S_DEF_USER) { - sym = sym_find(line + 9); + sym = sym_find(line + 2); if (!sym) { - conf_warning("trying to assign nonexistent symbol %s", line + 9); + conf_warning("trying to assign nonexistent symbol %s", line + 2); break; } } else { - sym = sym_lookup(line + 9, 0); + sym = sym_lookup(line + 2, 0); if (sym->type == S_UNKNOWN) sym->type = S_BOOLEAN; } @@ -245,12 +246,8 @@ load: ; } break; - case 'C': - if (memcmp(line, "CONFIG_", 7)) { - conf_warning("unexpected data"); - continue; - } - p = strchr(line + 7, '='); + case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': + p = strchr(line, '='); if (!p) continue; *p++ = 0; @@ -261,13 +258,13 @@ load: *p2 = 0; } if (def == S_DEF_USER) { - sym = sym_find(line + 7); + sym = sym_find(line); if (!sym) { - conf_warning("trying to assign nonexistent symbol %s", line + 7); + conf_warning("trying to assign nonexistent symbol %s", line); break; } } else { - sym = sym_lookup(line + 7, 0); + sym = sym_lookup(line, 0); if (sym->type == S_UNKNOWN) sym->type = S_OTHER; } @@ -440,7 +437,7 @@ int conf_write(const char *name) if (!out) return 1; - sym = sym_lookup("KERNELVERSION", 0); + sym = sym_lookup("BR2_VERSION", 0); sym_calc_value(sym); time(&now); env = getenv("KCONFIG_NOTIMESTAMP"); @@ -449,10 +446,8 @@ int conf_write(const char *name) fprintf(out, _("#\n" "# Automatically generated make config: don't edit\n" - "# Linux kernel version: %s\n" "%s%s" "#\n"), - sym_get_string_value(sym), use_timestamp ? "# " : "", use_timestamp ? ctime(&now) : ""); @@ -486,19 +481,19 @@ int conf_write(const char *name) case S_TRISTATE: switch (sym_get_tristate_value(sym)) { case no: - fprintf(out, "# CONFIG_%s is not set\n", sym->name); + fprintf(out, "# %s is not set\n", sym->name); break; case mod: - fprintf(out, "CONFIG_%s=m\n", sym->name); + fprintf(out, "%s=m\n", sym->name); break; case yes: - fprintf(out, "CONFIG_%s=y\n", sym->name); + fprintf(out, "%s=y\n", sym->name); break; } break; case S_STRING: str = sym_get_string_value(sym); - fprintf(out, "CONFIG_%s=\"", sym->name); + fprintf(out, "%s=\"", sym->name); while (1) { l = strcspn(str, "\"\\"); if (l) { @@ -514,12 +509,12 @@ int conf_write(const char *name) case S_HEX: str = sym_get_string_value(sym); if (str[0] != '0' || (str[1] != 'x' && str[1] != 'X')) { - fprintf(out, "CONFIG_%s=%s\n", sym->name, str); + fprintf(out, "%s=%s\n", sym->name, str); break; } case S_INT: str = sym_get_string_value(sym); - fprintf(out, "CONFIG_%s=%s\n", sym->name, str); + fprintf(out, "%s=%s\n", sym->name, str); break; } } @@ -559,7 +554,7 @@ int conf_write(const char *name) int conf_split_config(void) { - char *name, path[128]; + char *name, path[128], *opwd, *dir, *_name; char *s, *d, c; struct symbol *sym; struct stat sb; @@ -570,8 +565,20 @@ int conf_split_config(void) name = "include/config/auto.conf"; conf_read_simple(name, S_DEF_AUTO); - if (chdir("include/config")) + opwd = malloc(256); + _name = strdup(name); + if (opwd == NULL || _name == NULL) return 1; + opwd = getcwd(opwd, 256); + dir = dirname(_name); + if (dir == NULL) { + res = 1; + goto err; + } + if (chdir(dir)) { + res = 1; + goto err; + } res = 0; for_all_symbols(i, sym) { @@ -664,9 +671,11 @@ int conf_split_config(void) close(fd); } out: - if (chdir("../..")) - return 1; - + if (chdir(opwd)) + res = 1; +err: + free(opwd); + free(_name); return res; } @@ -681,7 +690,7 @@ int conf_write_autoconf(void) sym_clear_all_valid(); - file_write_dep("include/config/auto.conf.cmd"); + file_write_dep(".config.cmd"); if (conf_split_config()) return 1; @@ -696,22 +705,19 @@ int conf_write_autoconf(void) return 1; } - sym = sym_lookup("KERNELVERSION", 0); + sym = sym_lookup("BR2_VERSION", 0); sym_calc_value(sym); time(&now); fprintf(out, "#\n" "# Automatically generated make config: don't edit\n" - "# Linux kernel version: %s\n" "# %s" "#\n", - sym_get_string_value(sym), ctime(&now)); + ctime(&now)); fprintf(out_h, "/*\n" " * Automatically generated C config: don't edit\n" - " * Linux kernel version: %s\n" " * %s" - " */\n" - "#define AUTOCONF_INCLUDED\n", - sym_get_string_value(sym), ctime(&now)); + " */\n", + ctime(&now)); for_all_symbols(i, sym) { sym_calc_value(sym); @@ -724,19 +730,19 @@ int conf_write_autoconf(void) case no: break; case mod: - fprintf(out, "CONFIG_%s=m\n", sym->name); - fprintf(out_h, "#define CONFIG_%s_MODULE 1\n", sym->name); + fprintf(out, "%s=m\n", sym->name); + fprintf(out_h, "#define %s_MODULE 1\n", sym->name); break; case yes: - fprintf(out, "CONFIG_%s=y\n", sym->name); - fprintf(out_h, "#define CONFIG_%s 1\n", sym->name); + fprintf(out, "%s=y\n", sym->name); + fprintf(out_h, "#define %s 1\n", sym->name); break; } break; case S_STRING: str = sym_get_string_value(sym); - fprintf(out, "CONFIG_%s=\"", sym->name); - fprintf(out_h, "#define CONFIG_%s \"", sym->name); + fprintf(out, "%s=\"", sym->name); + fprintf(out_h, "#define %s \"", sym->name); while (1) { l = strcspn(str, "\"\\"); if (l) { @@ -756,14 +762,14 @@ int conf_write_autoconf(void) case S_HEX: str = sym_get_string_value(sym); if (str[0] != '0' || (str[1] != 'x' && str[1] != 'X')) { - fprintf(out, "CONFIG_%s=%s\n", sym->name, str); - fprintf(out_h, "#define CONFIG_%s 0x%s\n", sym->name, str); + fprintf(out, "%s=%s\n", sym->name, str); + fprintf(out_h, "#define %s 0x%s\n", sym->name, str); break; } case S_INT: str = sym_get_string_value(sym); - fprintf(out, "CONFIG_%s=%s\n", sym->name, str); - fprintf(out_h, "#define CONFIG_%s %s\n", sym->name, str); + fprintf(out, "%s=%s\n", sym->name, str); + fprintf(out_h, "#define %s %s\n", sym->name, str); break; default: break; diff -rduNp config.new.oorig/expr.c config.new/expr.c --- config.new.oorig/expr.c 2008-04-07 11:03:28.000000000 +0200 +++ config.new/expr.c 2008-04-07 11:06:30.000000000 +0200 @@ -331,7 +331,7 @@ struct expr *expr_trans_bool(struct expr e->right.expr = expr_trans_bool(e->right.expr); break; case E_UNEQUAL: - // FOO!=n -> FOO + /* FOO!=n -> FOO */ if (e->left.sym->type == S_TRISTATE) { if (e->right.sym == &symbol_no) { e->type = E_SYMBOL; @@ -380,19 +380,19 @@ struct expr *expr_join_or(struct expr *e if (e1->type == E_EQUAL && e2->type == E_EQUAL && ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) || (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes))) { - // (a='y') || (a='m') -> (a!='n') + /* (a='y') || (a='m') -> (a!='n') */ return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_no); } if (e1->type == E_EQUAL && e2->type == E_EQUAL && ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) || (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes))) { - // (a='y') || (a='n') -> (a!='m') + /* (a='y') || (a='n') -> (a!='m') */ return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_mod); } if (e1->type == E_EQUAL && e2->type == E_EQUAL && ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) || (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod))) { - // (a='m') || (a='n') -> (a!='y') + /* (a='m') || (a='n') -> (a!='y') */ return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_yes); } } @@ -443,29 +443,29 @@ struct expr *expr_join_and(struct expr * if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_yes) || (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_yes)) - // (a) && (a='y') -> (a='y') + /* (a) && (a='y') -> (a='y') */ return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes); if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_no) || (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_no)) - // (a) && (a!='n') -> (a) + /* (a) && (a!='n') -> (a) */ return expr_alloc_symbol(sym1); if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_mod) || (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_mod)) - // (a) && (a!='m') -> (a='y') + /* (a) && (a!='m') -> (a='y') */ return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes); if (sym1->type == S_TRISTATE) { if (e1->type == E_EQUAL && e2->type == E_UNEQUAL) { - // (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b' + /* (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b' */ sym2 = e1->right.sym; if ((e2->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST)) return sym2 != e2->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2) : expr_alloc_symbol(&symbol_no); } if (e1->type == E_UNEQUAL && e2->type == E_EQUAL) { - // (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b' + /* (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b' */ sym2 = e2->right.sym; if ((e1->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST)) return sym2 != e1->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2) @@ -474,19 +474,19 @@ struct expr *expr_join_and(struct expr * if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) || (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes))) - // (a!='y') && (a!='n') -> (a='m') + /* (a!='y') && (a!='n') -> (a='m') */ return expr_alloc_comp(E_EQUAL, sym1, &symbol_mod); if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) || (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes))) - // (a!='y') && (a!='m') -> (a='n') + /* (a!='y') && (a!='m') -> (a='n') */ return expr_alloc_comp(E_EQUAL, sym1, &symbol_no); if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) || (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod))) - // (a!='m') && (a!='n') -> (a='m') + /* (a!='m') && (a!='n') -> (a='m') */ return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes); if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_mod) || @@ -579,7 +579,7 @@ static void expr_eliminate_dups2(enum ex switch (e1->type) { case E_OR: expr_eliminate_dups2(e1->type, &e1, &e1); - // (FOO || BAR) && (!FOO && !BAR) -> n + /* (FOO || BAR) && (!FOO && !BAR) -> n */ tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1))); tmp2 = expr_copy(e2); tmp = expr_extract_eq_and(&tmp1, &tmp2); @@ -594,7 +594,7 @@ static void expr_eliminate_dups2(enum ex break; case E_AND: expr_eliminate_dups2(e1->type, &e1, &e1); - // (FOO && BAR) || (!FOO || !BAR) -> y + /* (FOO && BAR) || (!FOO || !BAR) -> y */ tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1))); tmp2 = expr_copy(e2); tmp = expr_extract_eq_or(&tmp1, &tmp2); @@ -703,7 +703,7 @@ struct expr *expr_transform(struct expr case E_NOT: switch (e->left.expr->type) { case E_NOT: - // !!a -> a + /* !!a -> a */ tmp = e->left.expr->left.expr; free(e->left.expr); free(e); @@ -712,14 +712,14 @@ struct expr *expr_transform(struct expr break; case E_EQUAL: case E_UNEQUAL: - // !a='x' -> a!='x' + /* !a='x' -> a!='x' */ tmp = e->left.expr; free(e); e = tmp; e->type = e->type == E_EQUAL ? E_UNEQUAL : E_EQUAL; break; case E_OR: - // !(a || b) -> !a && !b + /* !(a || b) -> !a && !b */ tmp = e->left.expr; e->type = E_AND; e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr); @@ -728,7 +728,7 @@ struct expr *expr_transform(struct expr e = expr_transform(e); break; case E_AND: - // !(a && b) -> !a || !b + /* !(a && b) -> !a || !b */ tmp = e->left.expr; e->type = E_OR; e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr); @@ -738,7 +738,7 @@ struct expr *expr_transform(struct expr break; case E_SYMBOL: if (e->left.expr->left.sym == &symbol_yes) { - // !'y' -> 'n' + /* !'y' -> 'n' */ tmp = e->left.expr; free(e); e = tmp; @@ -747,7 +747,7 @@ struct expr *expr_transform(struct expr break; } if (e->left.expr->left.sym == &symbol_mod) { - // !'m' -> 'm' + /* !'m' -> 'm' */ tmp = e->left.expr; free(e); e = tmp; @@ -756,7 +756,7 @@ struct expr *expr_transform(struct expr break; } if (e->left.expr->left.sym == &symbol_no) { - // !'n' -> 'y' + /* !'n' -> 'y' */ tmp = e->left.expr; free(e); e = tmp; diff -rduNp config.new.oorig/expr.h config.new/expr.h --- config.new.oorig/expr.h 2008-04-07 11:03:28.000000000 +0200 +++ config.new/expr.h 2008-04-07 11:06:30.000000000 +0200 @@ -65,7 +65,7 @@ enum symbol_type { enum { S_DEF_USER, /* main user value */ - S_DEF_AUTO, + S_DEF_AUTO }; struct symbol { diff -rduNp config.new.oorig/gconf.c config.new/gconf.c --- config.new.oorig/gconf.c 2008-04-07 11:03:28.000000000 +0200 +++ config.new/gconf.c 2008-04-07 11:06:30.000000000 +0200 @@ -268,8 +268,8 @@ void init_main_window(const gchar * glad /*"style", PANGO_STYLE_OBLIQUE, */ NULL); - sprintf(title, _("Linux Kernel v%s Configuration"), - getenv("KERNELVERSION")); + sprintf(title, _("Buildroot v%s Configuration"), + getenv("BR2_VERSION")); gtk_window_set_title(GTK_WINDOW(main_wnd), title); gtk_widget_show(main_wnd); diff -rduNp config.new.oorig/gconf.glade config.new/gconf.glade --- config.new.oorig/gconf.glade 2008-04-07 11:03:28.000000000 +0200 +++ config.new/gconf.glade 2008-04-07 11:06:30.000000000 +0200 @@ -5,7 +5,7 @@ True - Gtk Kernel Configurator + Gtk Buildroot Configurator GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False diff -rduNp config.new.oorig/kconfig-to-buildroot2.patch config.new/kconfig-to-buildroot2.patch --- config.new.oorig/kconfig-to-buildroot2.patch 1970-01-01 01:00:00.000000000 +0100 +++ config.new/kconfig-to-buildroot2.patch 2008-04-07 11:12:30.000000000 +0200 @@ -0,0 +1,562 @@ +diff -rduNp config.new.oorig/Makefile config.new/Makefile +--- config.new.oorig/Makefile 2008-04-07 11:03:28.000000000 +0200 ++++ config.new/Makefile 2008-04-07 11:06:30.000000000 +0200 +@@ -123,6 +123,9 @@ hostprogs-y := conf qconf gconf kxgettex + ifeq ($(MAKECMDGOALS),menuconfig) + hostprogs-y += mconf + endif ++ifeq ($(findstring mconf,$(MAKECMDGOALS)),mconf) ++ hostprogs-y += mconf ++endif + + ifeq ($(MAKECMDGOALS),xconfig) + qconf-target := 1 +@@ -181,8 +184,8 @@ $(obj)/.tmp_qtcheck: + done; \ + if [ -z "$$dir" ]; then \ + echo "*"; \ +- echo "* Unable to find the QT3 installation. Please make sure that"; \ +- echo "* the QT3 development package is correctly installed and"; \ ++ echo "* Unable to find the QT installation. Please make sure that"; \ ++ echo "* the QT development package is correctly installed and"; \ + echo "* either install pkg-config or set the QTDIR environment"; \ + echo "* variable to the correct location."; \ + echo "*"; \ +diff -rduNp config.new.oorig/conf.c config.new/conf.c +--- config.new.oorig/conf.c 2008-04-07 11:03:28.000000000 +0200 ++++ config.new/conf.c 2008-04-07 11:06:30.000000000 +0200 +@@ -545,7 +545,7 @@ int main(int ac, char **av) + exit(1); + } + conf_parse(name); +- //zconfdump(stdout); ++ /*zconfdump(stdout);*/ + switch (input_mode) { + case set_default: + if (!defconfig_file) +@@ -560,11 +560,11 @@ int main(int ac, char **av) + case ask_silent: + if (stat(".config", &tmpstat)) { + printf(_("***\n" +- "*** You have not yet configured your kernel!\n" +- "*** (missing kernel .config file)\n" ++ "*** You have not yet configured Buildroot!\n" ++ "*** (missing .config file)\n" + "***\n" + "*** Please run some configurator (e.g. \"make oldconfig\" or\n" +- "*** \"make menuconfig\" or \"make xconfig\").\n" ++ "*** \"make menuconfig\" or \"make config\").\n" + "***\n")); + exit(1); + } +@@ -607,7 +607,7 @@ int main(int ac, char **av) + } else if (conf_get_changed()) { + name = getenv("KCONFIG_NOSILENTUPDATE"); + if (name && *name) { +- fprintf(stderr, _("\n*** Kernel configuration requires explicit update.\n\n")); ++ fprintf(stderr, _("\n*** Buildroot configuration requires explicit update.\n\n")); + return 1; + } + } else +@@ -618,12 +618,12 @@ int main(int ac, char **av) + check_conf(&rootmenu); + } while (conf_cnt); + if (conf_write(NULL)) { +- fprintf(stderr, _("\n*** Error during writing of the kernel configuration.\n\n")); ++ fprintf(stderr, _("\n*** Error during writing of the Buildroot configuration.\n\n")); + return 1; + } + skip_check: +- if (input_mode == ask_silent && conf_write_autoconf()) { +- fprintf(stderr, _("\n*** Error during writing of the kernel configuration.\n\n")); ++ if (/*input_mode == ask_silent &&*/ conf_write_autoconf()) { ++ fprintf(stderr, _("\n*** Error during writing of the Buildroot configuration.\n\n")); + return 1; + } + +diff -rduNp config.new.oorig/confdata.c config.new/confdata.c +--- config.new.oorig/confdata.c 2008-04-07 11:03:28.000000000 +0200 ++++ config.new/confdata.c 2008-04-07 11:06:30.000000000 +0200 +@@ -11,6 +11,7 @@ + #include + #include + #include ++#include + + #define LKC_DIRECT_LINK + #include "lkc.h" +@@ -21,7 +22,7 @@ static void conf_warning(const char *fmt + static const char *conf_filename; + static int conf_lineno, conf_warnings, conf_unsaved; + +-const char conf_defname[] = "arch/$ARCH/defconfig"; ++const char conf_defname[] = ".defconfig"; + + static void conf_warning(const char *fmt, ...) + { +@@ -36,7 +37,7 @@ static void conf_warning(const char *fmt + + const char *conf_get_configname(void) + { +- char *name = getenv("KCONFIG_CONFIG"); ++ char *name = getenv("BUILDROOT_CONFIG"); + + return name ? name : ".config"; + } +@@ -212,22 +213,22 @@ load: + sym = NULL; + switch (line[0]) { + case '#': +- if (memcmp(line + 2, "CONFIG_", 7)) ++ if (line[1]!=' ') + continue; +- p = strchr(line + 9, ' '); ++ p = strchr(line + 2, ' '); + if (!p) + continue; + *p++ = 0; + if (strncmp(p, "is not set", 10)) + continue; + if (def == S_DEF_USER) { +- sym = sym_find(line + 9); ++ sym = sym_find(line + 2); + if (!sym) { +- conf_warning("trying to assign nonexistent symbol %s", line + 9); ++ conf_warning("trying to assign nonexistent symbol %s", line + 2); + break; + } + } else { +- sym = sym_lookup(line + 9, 0); ++ sym = sym_lookup(line + 2, 0); + if (sym->type == S_UNKNOWN) + sym->type = S_BOOLEAN; + } +@@ -245,12 +246,8 @@ load: + ; + } + break; +- case 'C': +- if (memcmp(line, "CONFIG_", 7)) { +- conf_warning("unexpected data"); +- continue; +- } +- p = strchr(line + 7, '='); ++ case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': ++ p = strchr(line, '='); + if (!p) + continue; + *p++ = 0; +@@ -261,13 +258,13 @@ load: + *p2 = 0; + } + if (def == S_DEF_USER) { +- sym = sym_find(line + 7); ++ sym = sym_find(line); + if (!sym) { +- conf_warning("trying to assign nonexistent symbol %s", line + 7); ++ conf_warning("trying to assign nonexistent symbol %s", line); + break; + } + } else { +- sym = sym_lookup(line + 7, 0); ++ sym = sym_lookup(line, 0); + if (sym->type == S_UNKNOWN) + sym->type = S_OTHER; + } +@@ -440,7 +437,7 @@ int conf_write(const char *name) + if (!out) + return 1; + +- sym = sym_lookup("KERNELVERSION", 0); ++ sym = sym_lookup("BR2_VERSION", 0); + sym_calc_value(sym); + time(&now); + env = getenv("KCONFIG_NOTIMESTAMP"); +@@ -449,10 +446,8 @@ int conf_write(const char *name) + + fprintf(out, _("#\n" + "# Automatically generated make config: don't edit\n" +- "# Linux kernel version: %s\n" + "%s%s" + "#\n"), +- sym_get_string_value(sym), + use_timestamp ? "# " : "", + use_timestamp ? ctime(&now) : ""); + +@@ -486,19 +481,19 @@ int conf_write(const char *name) + case S_TRISTATE: + switch (sym_get_tristate_value(sym)) { + case no: +- fprintf(out, "# CONFIG_%s is not set\n", sym->name); ++ fprintf(out, "# %s is not set\n", sym->name); + break; + case mod: +- fprintf(out, "CONFIG_%s=m\n", sym->name); ++ fprintf(out, "%s=m\n", sym->name); + break; + case yes: +- fprintf(out, "CONFIG_%s=y\n", sym->name); ++ fprintf(out, "%s=y\n", sym->name); + break; + } + break; + case S_STRING: + str = sym_get_string_value(sym); +- fprintf(out, "CONFIG_%s=\"", sym->name); ++ fprintf(out, "%s=\"", sym->name); + while (1) { + l = strcspn(str, "\"\\"); + if (l) { +@@ -514,12 +509,12 @@ int conf_write(const char *name) + case S_HEX: + str = sym_get_string_value(sym); + if (str[0] != '0' || (str[1] != 'x' && str[1] != 'X')) { +- fprintf(out, "CONFIG_%s=%s\n", sym->name, str); ++ fprintf(out, "%s=%s\n", sym->name, str); + break; + } + case S_INT: + str = sym_get_string_value(sym); +- fprintf(out, "CONFIG_%s=%s\n", sym->name, str); ++ fprintf(out, "%s=%s\n", sym->name, str); + break; + } + } +@@ -559,7 +554,7 @@ int conf_write(const char *name) + + int conf_split_config(void) + { +- char *name, path[128]; ++ char *name, path[128], *opwd, *dir, *_name; + char *s, *d, c; + struct symbol *sym; + struct stat sb; +@@ -570,8 +565,20 @@ int conf_split_config(void) + name = "include/config/auto.conf"; + conf_read_simple(name, S_DEF_AUTO); + +- if (chdir("include/config")) ++ opwd = malloc(256); ++ _name = strdup(name); ++ if (opwd == NULL || _name == NULL) + return 1; ++ opwd = getcwd(opwd, 256); ++ dir = dirname(_name); ++ if (dir == NULL) { ++ res = 1; ++ goto err; ++ } ++ if (chdir(dir)) { ++ res = 1; ++ goto err; ++ } + + res = 0; + for_all_symbols(i, sym) { +@@ -664,9 +671,11 @@ int conf_split_config(void) + close(fd); + } + out: +- if (chdir("../..")) +- return 1; +- ++ if (chdir(opwd)) ++ res = 1; ++err: ++ free(opwd); ++ free(_name); + return res; + } + +@@ -681,7 +690,7 @@ int conf_write_autoconf(void) + + sym_clear_all_valid(); + +- file_write_dep("include/config/auto.conf.cmd"); ++ file_write_dep(".config.cmd"); + + if (conf_split_config()) + return 1; +@@ -696,22 +705,19 @@ int conf_write_autoconf(void) + return 1; + } + +- sym = sym_lookup("KERNELVERSION", 0); ++ sym = sym_lookup("BR2_VERSION", 0); + sym_calc_value(sym); + time(&now); + fprintf(out, "#\n" + "# Automatically generated make config: don't edit\n" +- "# Linux kernel version: %s\n" + "# %s" + "#\n", +- sym_get_string_value(sym), ctime(&now)); ++ ctime(&now)); + fprintf(out_h, "/*\n" + " * Automatically generated C config: don't edit\n" +- " * Linux kernel version: %s\n" + " * %s" +- " */\n" +- "#define AUTOCONF_INCLUDED\n", +- sym_get_string_value(sym), ctime(&now)); ++ " */\n", ++ ctime(&now)); + + for_all_symbols(i, sym) { + sym_calc_value(sym); +@@ -724,19 +730,19 @@ int conf_write_autoconf(void) + case no: + break; + case mod: +- fprintf(out, "CONFIG_%s=m\n", sym->name); +- fprintf(out_h, "#define CONFIG_%s_MODULE 1\n", sym->name); ++ fprintf(out, "%s=m\n", sym->name); ++ fprintf(out_h, "#define %s_MODULE 1\n", sym->name); + break; + case yes: +- fprintf(out, "CONFIG_%s=y\n", sym->name); +- fprintf(out_h, "#define CONFIG_%s 1\n", sym->name); ++ fprintf(out, "%s=y\n", sym->name); ++ fprintf(out_h, "#define %s 1\n", sym->name); + break; + } + break; + case S_STRING: + str = sym_get_string_value(sym); +- fprintf(out, "CONFIG_%s=\"", sym->name); +- fprintf(out_h, "#define CONFIG_%s \"", sym->name); ++ fprintf(out, "%s=\"", sym->name); ++ fprintf(out_h, "#define %s \"", sym->name); + while (1) { + l = strcspn(str, "\"\\"); + if (l) { +@@ -756,14 +762,14 @@ int conf_write_autoconf(void) + case S_HEX: + str = sym_get_string_value(sym); + if (str[0] != '0' || (str[1] != 'x' && str[1] != 'X')) { +- fprintf(out, "CONFIG_%s=%s\n", sym->name, str); +- fprintf(out_h, "#define CONFIG_%s 0x%s\n", sym->name, str); ++ fprintf(out, "%s=%s\n", sym->name, str); ++ fprintf(out_h, "#define %s 0x%s\n", sym->name, str); + break; + } + case S_INT: + str = sym_get_string_value(sym); +- fprintf(out, "CONFIG_%s=%s\n", sym->name, str); +- fprintf(out_h, "#define CONFIG_%s %s\n", sym->name, str); ++ fprintf(out, "%s=%s\n", sym->name, str); ++ fprintf(out_h, "#define %s %s\n", sym->name, str); + break; + default: + break; +diff -rduNp config.new.oorig/expr.c config.new/expr.c +--- config.new.oorig/expr.c 2008-04-07 11:03:28.000000000 +0200 ++++ config.new/expr.c 2008-04-07 11:06:30.000000000 +0200 +@@ -331,7 +331,7 @@ struct expr *expr_trans_bool(struct expr + e->right.expr = expr_trans_bool(e->right.expr); + break; + case E_UNEQUAL: +- // FOO!=n -> FOO ++ /* FOO!=n -> FOO */ + if (e->left.sym->type == S_TRISTATE) { + if (e->right.sym == &symbol_no) { + e->type = E_SYMBOL; +@@ -380,19 +380,19 @@ struct expr *expr_join_or(struct expr *e + if (e1->type == E_EQUAL && e2->type == E_EQUAL && + ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) || + (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes))) { +- // (a='y') || (a='m') -> (a!='n') ++ /* (a='y') || (a='m') -> (a!='n') */ + return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_no); + } + if (e1->type == E_EQUAL && e2->type == E_EQUAL && + ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) || + (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes))) { +- // (a='y') || (a='n') -> (a!='m') ++ /* (a='y') || (a='n') -> (a!='m') */ + return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_mod); + } + if (e1->type == E_EQUAL && e2->type == E_EQUAL && + ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) || + (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod))) { +- // (a='m') || (a='n') -> (a!='y') ++ /* (a='m') || (a='n') -> (a!='y') */ + return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_yes); + } + } +@@ -443,29 +443,29 @@ struct expr *expr_join_and(struct expr * + + if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_yes) || + (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_yes)) +- // (a) && (a='y') -> (a='y') ++ /* (a) && (a='y') -> (a='y') */ + return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes); + + if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_no) || + (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_no)) +- // (a) && (a!='n') -> (a) ++ /* (a) && (a!='n') -> (a) */ + return expr_alloc_symbol(sym1); + + if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_mod) || + (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_mod)) +- // (a) && (a!='m') -> (a='y') ++ /* (a) && (a!='m') -> (a='y') */ + return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes); + + if (sym1->type == S_TRISTATE) { + if (e1->type == E_EQUAL && e2->type == E_UNEQUAL) { +- // (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b' ++ /* (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b' */ + sym2 = e1->right.sym; + if ((e2->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST)) + return sym2 != e2->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2) + : expr_alloc_symbol(&symbol_no); + } + if (e1->type == E_UNEQUAL && e2->type == E_EQUAL) { +- // (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b' ++ /* (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b' */ + sym2 = e2->right.sym; + if ((e1->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST)) + return sym2 != e1->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2) +@@ -474,19 +474,19 @@ struct expr *expr_join_and(struct expr * + if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && + ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) || + (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes))) +- // (a!='y') && (a!='n') -> (a='m') ++ /* (a!='y') && (a!='n') -> (a='m') */ + return expr_alloc_comp(E_EQUAL, sym1, &symbol_mod); + + if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && + ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) || + (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes))) +- // (a!='y') && (a!='m') -> (a='n') ++ /* (a!='y') && (a!='m') -> (a='n') */ + return expr_alloc_comp(E_EQUAL, sym1, &symbol_no); + + if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && + ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) || + (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod))) +- // (a!='m') && (a!='n') -> (a='m') ++ /* (a!='m') && (a!='n') -> (a='m') */ + return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes); + + if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_mod) || +@@ -579,7 +579,7 @@ static void expr_eliminate_dups2(enum ex + switch (e1->type) { + case E_OR: + expr_eliminate_dups2(e1->type, &e1, &e1); +- // (FOO || BAR) && (!FOO && !BAR) -> n ++ /* (FOO || BAR) && (!FOO && !BAR) -> n */ + tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1))); + tmp2 = expr_copy(e2); + tmp = expr_extract_eq_and(&tmp1, &tmp2); +@@ -594,7 +594,7 @@ static void expr_eliminate_dups2(enum ex + break; + case E_AND: + expr_eliminate_dups2(e1->type, &e1, &e1); +- // (FOO && BAR) || (!FOO || !BAR) -> y ++ /* (FOO && BAR) || (!FOO || !BAR) -> y */ + tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1))); + tmp2 = expr_copy(e2); + tmp = expr_extract_eq_or(&tmp1, &tmp2); +@@ -703,7 +703,7 @@ struct expr *expr_transform(struct expr + case E_NOT: + switch (e->left.expr->type) { + case E_NOT: +- // !!a -> a ++ /* !!a -> a */ + tmp = e->left.expr->left.expr; + free(e->left.expr); + free(e); +@@ -712,14 +712,14 @@ struct expr *expr_transform(struct expr + break; + case E_EQUAL: + case E_UNEQUAL: +- // !a='x' -> a!='x' ++ /* !a='x' -> a!='x' */ + tmp = e->left.expr; + free(e); + e = tmp; + e->type = e->type == E_EQUAL ? E_UNEQUAL : E_EQUAL; + break; + case E_OR: +- // !(a || b) -> !a && !b ++ /* !(a || b) -> !a && !b */ + tmp = e->left.expr; + e->type = E_AND; + e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr); +@@ -728,7 +728,7 @@ struct expr *expr_transform(struct expr + e = expr_transform(e); + break; + case E_AND: +- // !(a && b) -> !a || !b ++ /* !(a && b) -> !a || !b */ + tmp = e->left.expr; + e->type = E_OR; + e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr); +@@ -738,7 +738,7 @@ struct expr *expr_transform(struct expr + break; + case E_SYMBOL: + if (e->left.expr->left.sym == &symbol_yes) { +- // !'y' -> 'n' ++ /* !'y' -> 'n' */ + tmp = e->left.expr; + free(e); + e = tmp; +@@ -747,7 +747,7 @@ struct expr *expr_transform(struct expr + break; + } + if (e->left.expr->left.sym == &symbol_mod) { +- // !'m' -> 'm' ++ /* !'m' -> 'm' */ + tmp = e->left.expr; + free(e); + e = tmp; +@@ -756,7 +756,7 @@ struct expr *expr_transform(struct expr + break; + } + if (e->left.expr->left.sym == &symbol_no) { +- // !'n' -> 'y' ++ /* !'n' -> 'y' */ + tmp = e->left.expr; + free(e); + e = tmp; +diff -rduNp config.new.oorig/expr.h config.new/expr.h +--- config.new.oorig/expr.h 2008-04-07 11:03:28.000000000 +0200 ++++ config.new/expr.h 2008-04-07 11:06:30.000000000 +0200 +@@ -65,7 +65,7 @@ enum symbol_type { + + enum { + S_DEF_USER, /* main user value */ +- S_DEF_AUTO, ++ S_DEF_AUTO + }; + + struct symbol { +diff -rduNp config.new.oorig/gconf.c config.new/gconf.c +--- config.new.oorig/gconf.c 2008-04-07 11:03:28.000000000 +0200 ++++ config.new/gconf.c 2008-04-07 11:06:30.000000000 +0200 +@@ -268,8 +268,8 @@ void init_main_window(const gchar * glad + /*"style", PANGO_STYLE_OBLIQUE, */ + NULL); + +- sprintf(title, _("Linux Kernel v%s Configuration"), +- getenv("KERNELVERSION")); ++ sprintf(title, _("Buildroot v%s Configuration"), ++ getenv("BR2_VERSION")); + gtk_window_set_title(GTK_WINDOW(main_wnd), title); + + gtk_widget_show(main_wnd); +diff -rduNp config.new.oorig/gconf.glade config.new/gconf.glade +--- config.new.oorig/gconf.glade 2008-04-07 11:03:28.000000000 +0200 ++++ config.new/gconf.glade 2008-04-07 11:06:30.000000000 +0200 +@@ -5,7 +5,7 @@ + + + True +- Gtk Kernel Configurator ++ Gtk Buildroot Configurator + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False diff -rduNp config.new.oorig/mconf.c config.new/mconf.c --- config.new.oorig/mconf.c 2008-04-07 11:03:28.000000000 +0200 +++ config.new/mconf.c 2008-04-07 11:09:01.000000000 +0200 @@ -29,10 +29,9 @@ static const char mconf_readme[] = N_( "Overview\n" "--------\n" -"Some kernel features may be built directly into the kernel.\n" -"Some may be made into loadable runtime modules. Some features\n" +"Some features may be built directly into Buildroot. Some features\n" "may be completely removed altogether. There are also certain\n" -"kernel parameters which are not really features, but must be\n" +"parameters which are not really features, but must be\n" "entered in as decimal or hexadecimal numbers or possibly text.\n" "\n" "Menu items beginning with following braces represent features that\n" @@ -119,7 +118,7 @@ static const char mconf_readme[] = N_( "-----------------------------\n" "Menuconfig supports the use of alternate configuration files for\n" "those who, for various reasons, find it necessary to switch\n" -"between different kernel configurations.\n" +"between different configurations.\n" "\n" "At the end of the main menu you will find two options. One is\n" "for saving the current configuration to a file of your choosing.\n" @@ -152,7 +151,7 @@ static const char mconf_readme[] = N_( "\n" "Optional personality available\n" "------------------------------\n" -"If you prefer to have all of the kernel options listed in a single\n" +"If you prefer to have all of the options listed in a single\n" "menu, rather than the default multimenu hierarchy, run the menuconfig\n" "with MENUCONFIG_MODE environment variable set to single_menu. Example:\n" "\n" @@ -182,9 +181,9 @@ menu_instructions[] = N_( "Arrow keys navigate the menu. " " selects submenus --->. " "Highlighted letters are hotkeys. " - "Pressing includes, excludes, modularizes features. " + "Pressing selectes a feature, while will exclude a feature. " "Press to exit, for Help, for Search. " - "Legend: [*] built-in [ ] excluded module < > module capable"), + "Legend: [*] feature is selected [ ] feature is excluded"), radiolist_instructions[] = N_( "Use the arrow keys to navigate this window or " "press the hotkey of the item you wish to select " @@ -204,18 +203,18 @@ setmod_text[] = N_( "This feature depends on another which has been configured as a module.\n" "As a result, this feature will be built as a module."), nohelp_text[] = N_( - "There is no help available for this kernel option.\n"), + "There is no help available for this option.\n"), load_config_text[] = N_( "Enter the name of the configuration file you wish to load. " "Accept the name shown to restore the configuration you " "last retrieved. Leave blank to abort."), load_config_help[] = N_( "\n" - "For various reasons, one may wish to keep several different kernel\n" + "For various reasons, one may wish to keep several different Buildroot\n" "configurations available on a single machine.\n" "\n" "If you have saved a previous configuration in a file other than the\n" - "kernel's default, entering the name of the file here will allow you\n" + "Buildroot's default, entering the name of the file here will allow you\n" "to modify that configuration.\n" "\n" "If you are uncertain, then you have probably never used alternate\n" @@ -225,7 +224,7 @@ save_config_text[] = N_( "as an alternate. Leave blank to abort."), save_config_help[] = N_( "\n" - "For various reasons, one may wish to keep different kernel\n" + "For various reasons, one may wish to keep different Buildroot\n" "configurations available on a single machine.\n" "\n" "Entering a file name here will allow you to later retrieve, modify\n" @@ -405,10 +404,10 @@ static void set_config_filename(const ch int size; struct symbol *sym; - sym = sym_lookup("KERNELVERSION", 0); + sym = sym_lookup("BR2_VERSION", 0); sym_calc_value(sym); size = snprintf(menu_backtitle, sizeof(menu_backtitle), - _("%s - Linux Kernel v%s Configuration"), + _("%s - buildroot v%s Configuration"), config_filename, sym_get_string_value(sym)); if (size >= sizeof(menu_backtitle)) menu_backtitle[sizeof(menu_backtitle)-1] = '\0'; @@ -935,7 +934,7 @@ int main(int ac, char **av) if (conf_get_changed()) res = dialog_yesno(NULL, _("Do you wish to save your " - "new kernel configuration?\n" + "new Buildroot configuration?\n" " to continue."), 6, 60); else @@ -947,22 +946,22 @@ int main(int ac, char **av) case 0: if (conf_write(filename)) { fprintf(stderr, _("\n\n" - "Error during writing of the kernel configuration.\n" - "Your kernel configuration changes were NOT saved." + "Error during writing of the Buildroot configuration.\n" + "Your Buildroot configuration changes were NOT saved." "\n\n")); return 1; } case -1: printf(_("\n\n" - "*** End of Linux kernel configuration.\n" - "*** Execute 'make' to build the kernel or try 'make help'." + "*** End of Buildroot configuration.\n" + "*** Execute 'make' to build Buildroot or try 'make help'." "\n\n")); break; default: fprintf(stderr, _("\n\n" - "Your kernel configuration changes were NOT saved." + "Your Buildroot configuration changes were NOT saved." "\n\n")); } - return 0; + return conf_write_autoconf(); } diff -rduNp config.new.oorig/symbol.c config.new/symbol.c --- config.new.oorig/symbol.c 2008-04-07 11:03:28.000000000 +0200 +++ config.new/symbol.c 2008-04-07 11:06:30.000000000 +0200 @@ -61,10 +61,10 @@ void sym_init(void) if (p) sym_add_default(sym, p); - sym = sym_lookup("KERNELVERSION", 0); + sym = sym_lookup("BR2_VERSION", 0); sym->type = S_STRING; sym->flags |= SYMBOL_AUTO; - p = getenv("KERNELVERSION"); + p = getenv("BR2_VERSION"); if (p) sym_add_default(sym, p); diff -rduNp config.new.oorig/util.c config.new/util.c --- config.new.oorig/util.c 2008-04-07 11:03:28.000000000 +0200 +++ config.new/util.c 2008-04-07 11:06:30.000000000 +0200 @@ -26,6 +26,109 @@ struct file *file_lookup(const char *nam return file; } +static char* br2_symbol_printer(const char * const in) +{ + ssize_t i, j, len = strlen(in); + char *ret; + if (len < 1) + return NULL; + ret = malloc(len); + if (!ret) { + printf("Out of memory!"); + exit(1); + } + memset(ret, 0, len); + i = j = 0; + if (strncmp("BR2_", in, 4) == 0) + i += 4; + if (strncmp("PACKAGE_", in + i, 8) == 0) + i += 8; + else if (strncmp("TARGET_", in + i, 7) == 0) + i += 7; + while (i <= len) + ret[j++] = tolower(in[i++]); + return ret; +} + +/* write dependencies of the infividual config-symbols */ +static int write_make_deps(const char *name) +{ + struct menu *menu; + struct symbol *sym; + struct property *prop, *p; + unsigned done; + const char * const name_tmp = "..make.deps.tmp"; + FILE *out; + if (!name) + name = ".auto.deps"; + out = fopen(name_tmp, "w"); + if (!out) + return 1; + fprintf(out, "# ATTENTION! This does not handle 'depends', just 'select'! \n" + "# See package/config/util.c write_make_deps()\n#\n"); + menu = &rootmenu;//rootmenu.list; + while (menu) { + sym = menu->sym; + if (!sym) { + if (!menu_is_visible(menu)) + goto next; + } else if (!(sym->flags & SYMBOL_CHOICE)) { + sym_calc_value(sym); + if (sym->type == S_BOOLEAN + && sym_get_tristate_value(sym) != no) { + done = 0; + for_all_prompts(sym, prop) { + struct expr *e; +//printf("\nname=%s\n", sym->name); + for_all_properties(sym, p, P_SELECT) { + e = p->expr; + if (e && e->left.sym->name) { + if (!done) { + fprintf(out, "%s: $(BASE_TARGETS)", br2_symbol_printer(sym->name)); + done = 1; + } +//printf("SELECTS %s\n",e->left.sym->name); + fprintf(out, " %s",br2_symbol_printer(e->left.sym->name)); + } + } + if (done) + fprintf(out, "\n"); +#if 0 + e = sym->rev_dep.expr; + if (e && e->type == E_SYMBOL + && e->left.sym->name) { + fprintf(out, "%s: %s", br2_symbol_printer(e->left.sym->name), + br2_symbol_printer(sym->name)); +printf("%s is Selected BY: %s", sym->name, e->left.sym->name); + } +#endif + } + } + } +next: + if (menu->list) { + menu = menu->list; + continue; + } + if (menu->next) + menu = menu->next; + else while ((menu = menu->parent)) { + if (menu->next) { + menu = menu->next; + break; + } + } + } + fclose(out); + rename(name_tmp, name); + printf(_("#\n" + "# make dependencies written to %s\n" + "# ATTENTION buildroot devels!\n" + "# See top of this file before playing with this auto-preprequisites!\n" + "#\n"), name); + return 0; +} + /* write a dependency file as used by kbuild to track dependencies */ int file_write_dep(const char *name) { @@ -44,12 +147,13 @@ int file_write_dep(const char *name) else fprintf(out, "\t%s\n", file->name); } - fprintf(out, "\ninclude/config/auto.conf: \\\n" + fprintf(out, "\n$(BR2_DEPENDS_DIR)/config/auto.conf: \\\n" "\t$(deps_config)\n\n" "$(deps_config): ;\n"); fclose(out); rename("..config.tmp", name); - return 0; + + return write_make_deps(NULL); } diff -rduNp config.new.oorig/zconf.tab.c_shipped config.new/zconf.tab.c_shipped --- config.new.oorig/zconf.tab.c_shipped 2008-04-07 11:03:28.000000000 +0200 +++ config.new/zconf.tab.c_shipped 2008-04-07 11:06:30.000000000 +0200 @@ -2248,7 +2248,7 @@ void conf_parse(const char *name) modules_sym = sym_lookup(NULL, 0); modules_sym->type = S_BOOLEAN; modules_sym->flags |= SYMBOL_AUTO; - rootmenu.prompt = menu_add_prompt(P_MENU, "Linux Kernel Configuration", NULL); + rootmenu.prompt = menu_add_prompt(P_MENU, "Buildroot Configuration", NULL); #if YYDEBUG if (getenv("ZCONF_DEBUG")) diff -rduNp config.new.oorig/zconf.y config.new/zconf.y --- config.new.oorig/zconf.y 2008-04-07 11:03:28.000000000 +0200 +++ config.new/zconf.y 2008-04-07 11:06:30.000000000 +0200 @@ -473,7 +473,7 @@ void conf_parse(const char *name) modules_sym = sym_lookup(NULL, 0); modules_sym->type = S_BOOLEAN; modules_sym->flags |= SYMBOL_AUTO; - rootmenu.prompt = menu_add_prompt(P_MENU, "Linux Kernel Configuration", NULL); + rootmenu.prompt = menu_add_prompt(P_MENU, "Buildroot Configuration", NULL); #if YYDEBUG if (getenv("ZCONF_DEBUG"))