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 <string.h>
 #include <time.h>
 #include <unistd.h>
+#include <libgen.h>
 
 #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 @@
 
 <widget class="GtkWindow" id="window1">
   <property name="visible">True</property>
-  <property name="title" translatable="yes">Gtk Kernel Configurator</property>
+  <property name="title" translatable="yes">Gtk Buildroot Configurator</property>
   <property name="type">GTK_WINDOW_TOPLEVEL</property>
   <property name="window_position">GTK_WIN_POS_NONE</property>
   <property name="modal">False</property>
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 <string.h>
+ #include <time.h>
+ #include <unistd.h>
++#include <libgen.h>
+ 
+ #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 @@
+ 
+ <widget class="GtkWindow" id="window1">
+   <property name="visible">True</property>
+-  <property name="title" translatable="yes">Gtk Kernel Configurator</property>
++  <property name="title" translatable="yes">Gtk Buildroot Configurator</property>
+   <property name="type">GTK_WINDOW_TOPLEVEL</property>
+   <property name="window_position">GTK_WIN_POS_NONE</property>
+   <property name="modal">False</property>
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.  "
 	"<Enter> selects submenus --->.  "
 	"Highlighted letters are hotkeys.  "
-	"Pressing <Y> includes, <N> excludes, <M> modularizes features.  "
+	"Pressing <Y> selectes a feature, while <N> will exclude a feature.  "
 	"Press <Esc><Esc> to exit, <?> for Help, </> for Search.  "
-	"Legend: [*] built-in  [ ] excluded  <M> 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"
 					     "<ESC><ESC> 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"))
