浏览代码

- pull kbuild from 2.6.22.7. This should fix the ncurses detection for dylib et al

Bernhard Reutner-Fischer 18 年之前
父节点
当前提交
0d888e3677

+ 1 - 0
package/config/Makefile.kconfig

@@ -143,6 +143,7 @@ endif
 
 clean-files	:= lkc_defs.h qconf.moc .tmp_qtcheck \
 		   .tmp_gtkcheck zconf.tab.c lex.zconf.c zconf.hash.c
+clean-files     += mconf qconf gconf
 
 # Needed for systems without gettext
 KBUILD_HAVE_NLS := $(shell \

+ 2 - 2
package/config/README.buildroot2

@@ -1,4 +1,4 @@
-This is a copy of the kconfig code in the kernel (currently 2.6.21.5) tweaked to
+This is a copy of the kconfig code in the kernel (currently 2.6.22.7) tweaked to
 suit Buildroot.
 
 To update:
@@ -6,7 +6,7 @@ To update:
 	cd package/config.new
 	cp /usr/src/linux/Documentation/kbuild/kconfig-language.txt .
 	mv Makefile Makefile.kconfig
-	patch -p1 < ../config/kconfig-to-buildroot.patch
+	patch -p1 < ../config/kconfig-to-buildroot2.patch
 	cp ../config/README.buildroot2 .
 	cp ../config/foo.h .
 	cp ../config/Makefile .

+ 1 - 0
package/config/conf.c

@@ -558,6 +558,7 @@ int main(int ac, char **av)
 		if (stat(".config", &tmpstat)) {
 			printf(_("***\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 config\").\n"

+ 699 - 130
package/config/kconfig-to-buildroot2.patch

@@ -1,5 +1,6 @@
---- kconfig/conf.c	2007-06-11 20:37:06.000000000 +0200
-+++ Buildroot/conf.c	2007-06-28 13:10:46.000000000 +0200
+diff -rdup kernel-config/conf.c config/conf.c
+--- kernel-config/conf.c	2007-09-22 00:38:23.000000000 +0200
++++ config/conf.c	2007-09-23 15:35:12.000000000 +0200
 @@ -542,7 +542,7 @@ int main(int ac, char **av)
  		exit(1);
  	}
@@ -9,12 +10,14 @@
  	switch (input_mode) {
  	case set_default:
  		if (!defconfig_file)
-@@ -557,10 +557,10 @@ int main(int ac, char **av)
+@@ -557,11 +557,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"
@@ -22,7 +25,7 @@
  				"***\n"));
  			exit(1);
  		}
-@@ -603,7 +603,7 @@ int main(int ac, char **av)
+@@ -604,7 +604,7 @@ int main(int ac, char **av)
  	} else if (conf_get_changed()) {
  		name = getenv("KCONFIG_NOSILENTUPDATE");
  		if (name && *name) {
@@ -31,7 +34,7 @@
  			return 1;
  		}
  	} else
-@@ -614,12 +614,12 @@ int main(int ac, char **av)
+@@ -615,12 +615,12 @@ int main(int ac, char **av)
  		check_conf(&rootmenu);
  	} while (conf_cnt);
  	if (conf_write(NULL)) {
@@ -47,18 +50,27 @@
  		return 1;
  	}
  
---- kconfig/confdata.c	2007-06-11 20:37:06.000000000 +0200
-+++ Buildroot/confdata.c	2007-06-28 13:06:23.000000000 +0200
-@@ -21,7 +21,7 @@ static void conf_warning(const char *fmt
+diff -rdup kernel-config/confdata.c config/confdata.c
+--- kernel-config/confdata.c	2007-09-22 00:38:23.000000000 +0200
++++ config/confdata.c	2007-09-23 15:33:26.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[] = "extra/Configs/defconfigs/$ARCH";
++const char conf_defname[] = ".defconfig";
  
  static void conf_warning(const char *fmt, ...)
  {
-@@ -150,22 +150,22 @@ load:
+@@ -150,22 +151,22 @@ load:
  		sym = NULL;
  		switch (line[0]) {
  		case '#':
@@ -86,7 +98,7 @@
  				if (sym->type == S_UNKNOWN)
  					sym->type = S_BOOLEAN;
  			}
-@@ -183,12 +183,8 @@ load:
+@@ -183,12 +184,8 @@ load:
  				;
  			}
  			break;
@@ -101,7 +113,7 @@
  			if (!p)
  				continue;
  			*p++ = 0;
-@@ -199,13 +195,13 @@ load:
+@@ -199,13 +196,13 @@ load:
  					*p2 = 0;
  			}
  			if (def == S_DEF_USER) {
@@ -118,7 +130,7 @@
  				if (sym->type == S_UNKNOWN)
  					sym->type = S_OTHER;
  			}
-@@ -416,7 +412,7 @@ int conf_write(const char *name)
+@@ -416,7 +413,7 @@ int conf_write(const char *name)
  	if (!out)
  		return 1;
  
@@ -127,7 +139,7 @@
  	sym_calc_value(sym);
  	time(&now);
  	env = getenv("KCONFIG_NOTIMESTAMP");
-@@ -425,10 +421,8 @@ int conf_write(const char *name)
+@@ -425,10 +422,8 @@ int conf_write(const char *name)
  
  	fprintf(out, _("#\n"
  		       "# Automatically generated make config: don't edit\n"
@@ -138,7 +150,7 @@
  		     use_timestamp ? "# " : "",
  		     use_timestamp ? ctime(&now) : "");
  
-@@ -462,19 +456,19 @@ int conf_write(const char *name)
+@@ -462,19 +457,19 @@ int conf_write(const char *name)
  			case S_TRISTATE:
  				switch (sym_get_tristate_value(sym)) {
  				case no:
@@ -162,7 +174,7 @@
  				while (1) {
  					l = strcspn(str, "\"\\");
  					if (l) {
-@@ -490,12 +484,12 @@ int conf_write(const char *name)
+@@ -490,12 +485,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')) {
@@ -177,7 +189,62 @@
  				break;
  			}
  		}
-@@ -672,22 +668,19 @@ int conf_write_autoconf(void)
+@@ -535,7 +530,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;
+@@ -546,8 +541,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) {
+@@ -640,9 +647,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;
+ }
+ 
+@@ -657,7 +666,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;
+@@ -672,22 +681,19 @@ int conf_write_autoconf(void)
  		return 1;
  	}
  
@@ -204,7 +271,7 @@
  
  	for_all_symbols(i, sym) {
  		sym_calc_value(sym);
-@@ -700,19 +693,19 @@ int conf_write_autoconf(void)
+@@ -700,19 +706,19 @@ int conf_write_autoconf(void)
  			case no:
  				break;
  			case mod:
@@ -230,7 +297,7 @@
  			while (1) {
  				l = strcspn(str, "\"\\");
  				if (l) {
-@@ -732,14 +725,14 @@ int conf_write_autoconf(void)
+@@ -732,14 +738,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')) {
@@ -249,8 +316,9 @@
  			break;
  		default:
  			break;
---- kconfig/expr.c	2007-06-11 20:37:06.000000000 +0200
-+++ Buildroot/expr.c	2007-06-28 13:24:38.000000000 +0200
+diff -rdup kernel-config/expr.c config/expr.c
+--- kernel-config/expr.c	2007-09-22 00:38:23.000000000 +0200
++++ config/expr.c	2007-09-23 15:33:26.000000000 +0200
 @@ -331,7 +331,7 @@ struct expr *expr_trans_bool(struct expr
  		e->right.expr = expr_trans_bool(e->right.expr);
  		break;
@@ -421,8 +489,9 @@
  				tmp = e->left.expr;
  				free(e);
  				e = tmp;
---- kconfig/expr.h	2007-06-11 20:37:06.000000000 +0200
-+++ Buildroot/expr.h	2007-06-28 13:08:57.000000000 +0200
+diff -rdup kernel-config/expr.h config/expr.h
+--- kernel-config/expr.h	2007-09-22 00:38:23.000000000 +0200
++++ config/expr.h	2007-09-23 15:33:26.000000000 +0200
 @@ -65,7 +65,7 @@ enum symbol_type {
  
  enum {
@@ -441,8 +510,9 @@
  	struct file *file;
  	int lineno;
  	void *data;
---- kconfig/gconf.c	2007-06-11 20:37:06.000000000 +0200
-+++ Buildroot/gconf.c	2007-06-28 12:15:29.000000000 +0200
+diff -rdup kernel-config/gconf.c config/gconf.c
+--- kernel-config/gconf.c	2007-09-22 00:38:23.000000000 +0200
++++ config/gconf.c	2007-09-23 15:33:26.000000000 +0200
 @@ -271,8 +271,8 @@ void init_main_window(const gchar * glad
  					  /*"style", PANGO_STYLE_OBLIQUE, */
  					  NULL);
@@ -454,8 +524,9 @@
  	gtk_window_set_title(GTK_WINDOW(main_wnd), title);
  
  	gtk_widget_show(main_wnd);
---- kconfig/gconf.glade	2007-06-11 20:37:06.000000000 +0200
-+++ Buildroot/gconf.glade	2007-06-28 12:17:40.000000000 +0200
+diff -rdup kernel-config/gconf.glade config/gconf.glade
+--- kernel-config/gconf.glade	2007-09-22 00:38:23.000000000 +0200
++++ config/gconf.glade	2007-09-23 15:33:26.000000000 +0200
 @@ -5,7 +5,7 @@
  
  <widget class="GtkWindow" id="window1">
@@ -465,9 +536,549 @@
    <property name="type">GTK_WINDOW_TOPLEVEL</property>
    <property name="window_position">GTK_WIN_POS_NONE</property>
    <property name="modal">False</property>
---- kconfig/mconf.c	2007-06-11 20:37:06.000000000 +0200
-+++ Buildroot/mconf.c	2007-06-28 12:15:29.000000000 +0200
-@@ -30,20 +30,18 @@ static char menu_backtitle[128];
+diff -rdup kernel-config/kconfig-to-buildroot2.patch config/kconfig-to-buildroot2.patch
+--- kernel-config/kconfig-to-buildroot2.patch	2007-09-23 15:33:01.000000000 +0200
++++ config/kconfig-to-buildroot2.patch	2007-09-23 15:39:23.000000000 +0200
+@@ -1,5 +1,6 @@
+---- kconfig/conf.c	2007-06-11 20:37:06.000000000 +0200
+-+++ Buildroot/conf.c	2007-06-28 13:10:46.000000000 +0200
++diff -rdup kernel-config/conf.c config/conf.c
++--- kernel-config/conf.c	2007-09-22 00:38:23.000000000 +0200
+++++ config/conf.c	2007-09-23 15:35:12.000000000 +0200
+ @@ -542,7 +542,7 @@ int main(int ac, char **av)
+  		exit(1);
+  	}
+@@ -9,12 +10,14 @@
+  	switch (input_mode) {
+  	case set_default:
+  		if (!defconfig_file)
+-@@ -557,10 +557,10 @@ int main(int ac, char **av)
++@@ -557,11 +557,11 @@ int main(int ac, char **av)
+  	case ask_silent:
+  		if (stat(".config", &tmpstat)) {
+  			printf(_("***\n"
+ -				"*** You have not yet configured your kernel!\n"
+-+				"*** You have not yet configured Buildroot!\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"
+@@ -22,7 +25,7 @@
+  				"***\n"));
+  			exit(1);
+  		}
+-@@ -603,7 +603,7 @@ int main(int ac, char **av)
++@@ -604,7 +604,7 @@ int main(int ac, char **av)
+  	} else if (conf_get_changed()) {
+  		name = getenv("KCONFIG_NOSILENTUPDATE");
+  		if (name && *name) {
+@@ -31,7 +34,7 @@
+  			return 1;
+  		}
+  	} else
+-@@ -614,12 +614,12 @@ int main(int ac, char **av)
++@@ -615,12 +615,12 @@ int main(int ac, char **av)
+  		check_conf(&rootmenu);
+  	} while (conf_cnt);
+  	if (conf_write(NULL)) {
+@@ -47,18 +50,27 @@
+  		return 1;
+  	}
+  
+---- kconfig/confdata.c	2007-06-11 20:37:06.000000000 +0200
+-+++ Buildroot/confdata.c	2007-06-28 13:06:23.000000000 +0200
+-@@ -21,7 +21,7 @@ static void conf_warning(const char *fmt
++diff -rdup kernel-config/confdata.c config/confdata.c
++--- kernel-config/confdata.c	2007-09-22 00:38:23.000000000 +0200
+++++ config/confdata.c	2007-09-23 15:33:26.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[] = "extra/Configs/defconfigs/$ARCH";
+++const char conf_defname[] = ".defconfig";
+  
+  static void conf_warning(const char *fmt, ...)
+  {
+-@@ -150,22 +150,22 @@ load:
++@@ -150,22 +151,22 @@ load:
+  		sym = NULL;
+  		switch (line[0]) {
+  		case '#':
+@@ -86,7 +98,7 @@
+  				if (sym->type == S_UNKNOWN)
+  					sym->type = S_BOOLEAN;
+  			}
+-@@ -183,12 +183,8 @@ load:
++@@ -183,12 +184,8 @@ load:
+  				;
+  			}
+  			break;
+@@ -101,7 +113,7 @@
+  			if (!p)
+  				continue;
+  			*p++ = 0;
+-@@ -199,13 +195,13 @@ load:
++@@ -199,13 +196,13 @@ load:
+  					*p2 = 0;
+  			}
+  			if (def == S_DEF_USER) {
+@@ -118,7 +130,7 @@
+  				if (sym->type == S_UNKNOWN)
+  					sym->type = S_OTHER;
+  			}
+-@@ -416,7 +412,7 @@ int conf_write(const char *name)
++@@ -416,7 +413,7 @@ int conf_write(const char *name)
+  	if (!out)
+  		return 1;
+  
+@@ -127,7 +139,7 @@
+  	sym_calc_value(sym);
+  	time(&now);
+  	env = getenv("KCONFIG_NOTIMESTAMP");
+-@@ -425,10 +421,8 @@ int conf_write(const char *name)
++@@ -425,10 +422,8 @@ int conf_write(const char *name)
+  
+  	fprintf(out, _("#\n"
+  		       "# Automatically generated make config: don't edit\n"
+@@ -138,7 +150,7 @@
+  		     use_timestamp ? "# " : "",
+  		     use_timestamp ? ctime(&now) : "");
+  
+-@@ -462,19 +456,19 @@ int conf_write(const char *name)
++@@ -462,19 +457,19 @@ int conf_write(const char *name)
+  			case S_TRISTATE:
+  				switch (sym_get_tristate_value(sym)) {
+  				case no:
+@@ -162,7 +174,7 @@
+  				while (1) {
+  					l = strcspn(str, "\"\\");
+  					if (l) {
+-@@ -490,12 +484,12 @@ int conf_write(const char *name)
++@@ -490,12 +485,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')) {
+@@ -177,7 +189,62 @@
+  				break;
+  			}
+  		}
+-@@ -672,22 +668,19 @@ int conf_write_autoconf(void)
++@@ -535,7 +530,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;
++@@ -546,8 +541,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) {
++@@ -640,9 +647,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;
++ }
++ 
++@@ -657,7 +666,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;
++@@ -672,22 +681,19 @@ int conf_write_autoconf(void)
+  		return 1;
+  	}
+  
+@@ -204,7 +271,7 @@
+  
+  	for_all_symbols(i, sym) {
+  		sym_calc_value(sym);
+-@@ -700,19 +693,19 @@ int conf_write_autoconf(void)
++@@ -700,19 +706,19 @@ int conf_write_autoconf(void)
+  			case no:
+  				break;
+  			case mod:
+@@ -230,7 +297,7 @@
+  			while (1) {
+  				l = strcspn(str, "\"\\");
+  				if (l) {
+-@@ -732,14 +725,14 @@ int conf_write_autoconf(void)
++@@ -732,14 +738,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')) {
+@@ -249,8 +316,9 @@
+  			break;
+  		default:
+  			break;
+---- kconfig/expr.c	2007-06-11 20:37:06.000000000 +0200
+-+++ Buildroot/expr.c	2007-06-28 13:24:38.000000000 +0200
++diff -rdup kernel-config/expr.c config/expr.c
++--- kernel-config/expr.c	2007-09-22 00:38:23.000000000 +0200
+++++ config/expr.c	2007-09-23 15:33:26.000000000 +0200
+ @@ -331,7 +331,7 @@ struct expr *expr_trans_bool(struct expr
+  		e->right.expr = expr_trans_bool(e->right.expr);
+  		break;
+@@ -421,305 +489,11 @@
+  				tmp = e->left.expr;
+  				free(e);
+  				e = tmp;
+---- kconfig/expr.h	2007-06-11 20:37:06.000000000 +0200
+-+++ Buildroot/expr.h	2007-06-28 13:08:57.000000000 +0200
++diff -rdup kernel-config/expr.h config/expr.h
++--- kernel-config/expr.h	2007-09-22 00:38:23.000000000 +0200
+++++ config/expr.h	2007-09-23 15:33:26.000000000 +0200
+ @@ -65,7 +65,7 @@ enum symbol_type {
+  
+  enum {
+  	S_DEF_USER,		/* main user value */
+--	S_DEF_AUTO,
+-+	S_DEF_AUTO
+- };
+- 
+- struct symbol {
+-@@ -139,7 +139,7 @@ struct menu {
+- 	struct property *prompt;
+- 	struct expr *dep;
+- 	unsigned int flags;
+--	//char *help;
+-+	/*char *help; */
+- 	struct file *file;
+- 	int lineno;
+- 	void *data;
+---- kconfig/gconf.c	2007-06-11 20:37:06.000000000 +0200
+-+++ Buildroot/gconf.c	2007-06-28 12:15:29.000000000 +0200
+-@@ -271,8 +271,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("VERSION"));
+- 	gtk_window_set_title(GTK_WINDOW(main_wnd), title);
+- 
+- 	gtk_widget_show(main_wnd);
+---- kconfig/gconf.glade	2007-06-11 20:37:06.000000000 +0200
+-+++ Buildroot/gconf.glade	2007-06-28 12:17:40.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>
+---- kconfig/mconf.c	2007-06-11 20:37:06.000000000 +0200
+-+++ Buildroot/mconf.c	2007-06-28 12:15:29.000000000 +0200
+-@@ -30,20 +30,18 @@ static char menu_backtitle[128];
+- 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 [*], <M> or [ ] represent features\n"
+--"configured to be built in, modularized or removed respectively.\n"
+--"Pointed brackets <> represent module capable features.\n"
+-+"Menu items beginning with [*] or [ ] represent features\n"
+-+"configured to be built in or removed respectively.\n"
+- "\n"
+- "To change any of these features, highlight it with the cursor\n"
+--"keys and press <Y> to build it in, <M> to make it a module or\n"
+--"<N> to removed it.  You may also press the <Space Bar> to cycle\n"
+--"through the available options (ie. Y->N->M->Y).\n"
+-+"keys and press <Y> to build it in or <N> to removed it.\n"
+-+"You may also press the <Space Bar> to cycle\n"
+-+"through the available options (ie. Y->N->Y).\n"
+- "\n"
+- "Some additional keyboard hints:\n"
+- "\n"
+-@@ -116,7 +114,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"
+-@@ -149,7 +147,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"
+-@@ -179,9 +177,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 "
+-@@ -201,18 +199,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"
+-@@ -222,7 +220,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"
+-@@ -871,9 +869,9 @@ int main(int ac, char **av)
+- 	conf_parse(av[1]);
+- 	conf_read(NULL);
+- 
+--	sym = sym_lookup("KERNELVERSION", 0);
+-+	sym = sym_lookup("VERSION", 0);
+- 	sym_calc_value(sym);
+--	sprintf(menu_backtitle, _("Linux Kernel v%s Configuration"),
+-+	sprintf(menu_backtitle, _("Buildroot v%s Configuration"),
+- 		sym_get_string_value(sym));
+- 
+- 	mode = getenv("MENUCONFIG_MODE");
+-@@ -893,7 +891,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
+-@@ -905,22 +903,22 @@ int main(int ac, char **av)
+- 	case 0:
+- 		if (conf_write(NULL)) {
+- 			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();
+- }
+---- kconfig/symbol.c	2007-06-11 20:37:06.000000000 +0200
+-+++ Buildroot/symbol.c	2007-06-28 12:15:29.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("VERSION", 0);
+- 	sym->type = S_STRING;
+- 	sym->flags |= SYMBOL_AUTO;
+--	p = getenv("KERNELVERSION");
+-+	p = getenv("VERSION");
+- 	if (p)
+- 		sym_add_default(sym, p);
+- 
+---- kconfig/zconf.tab.c_shipped	2007-06-11 20:37:06.000000000 +0200
+-+++ Buildroot/zconf.tab.c_shipped	2007-06-28 12:15:29.000000000 +0200
+-@@ -2115,7 +2115,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"))
+---- kconfig/zconf.y	2007-06-11 20:37:06.000000000 +0200
+-+++ Buildroot/zconf.y	2007-06-28 12:15:29.000000000 +0200
+-@@ -484,7 +484,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"))
+-Index: confdata.c
+-===================================================================
+---- kconfig/confdata.c	(revision 18967)
+-+++ Buildroot/confdata.c	(working copy)
+-@@ -21,7 +21,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[] = "extra/Configs/defconfigs/$ARCH";
+-+const char conf_defname[] = ".defconfig";
+- 
+- static void conf_warning(const char *fmt, ...)
+- {
+---- kconfig/confdata.c	2007-07-02 16:07:19.000000000 +0200
+-+++ Buildroot/confdata.c	2007-07-02 16:05:21.000000000 +0200
+-@@ -651,7 +651,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;
+---- kconfig/confdata.c	2007-07-07 11:13:12.000000000 +0200
+-+++ Buildroot/confdata.c	2007-07-08 01:30:44.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"
+-@@ -529,7 +530,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;
+-@@ -540,8 +541,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) {
+-@@ -634,9 +647,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;
+- }
+- 
++-	S_DE
+\ No newline at end of file
+diff -rdup kernel-config/mconf.c config/mconf.c
+--- kernel-config/mconf.c	2007-09-22 00:38:23.000000000 +0200
++++ config/mconf.c	2007-09-23 15:36:33.000000000 +0200
+@@ -29,20 +29,18 @@
  static const char mconf_readme[] = N_(
  "Overview\n"
  "--------\n"
@@ -495,7 +1106,7 @@
  "\n"
  "Some additional keyboard hints:\n"
  "\n"
-@@ -116,7 +114,7 @@ static const char mconf_readme[] = N_(
+@@ -115,7 +113,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"
@@ -504,7 +1115,7 @@
  "\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"
-@@ -149,7 +147,7 @@ static const char mconf_readme[] = N_(
+@@ -148,7 +146,7 @@ static const char mconf_readme[] = N_(
  "\n"
  "Optional personality available\n"
  "------------------------------\n"
@@ -513,7 +1124,7 @@
  "menu, rather than the default multimenu hierarchy, run the menuconfig\n"
  "with MENUCONFIG_MODE environment variable set to single_menu. Example:\n"
  "\n"
-@@ -179,9 +177,9 @@ menu_instructions[] = N_(
+@@ -178,9 +176,9 @@ menu_instructions[] = N_(
  	"Arrow keys navigate the menu.  "
  	"<Enter> selects submenus --->.  "
  	"Highlighted letters are hotkeys.  "
@@ -525,7 +1136,7 @@
  radiolist_instructions[] = N_(
  	"Use the arrow keys to navigate this window or "
  	"press the hotkey of the item you wish to select "
-@@ -201,18 +199,18 @@ setmod_text[] = N_(
+@@ -200,18 +198,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_(
@@ -547,7 +1158,7 @@
  	"to modify that configuration.\n"
  	"\n"
  	"If you are uncertain, then you have probably never used alternate\n"
-@@ -222,7 +220,7 @@ save_config_text[] = N_(
+@@ -221,7 +219,7 @@ save_config_text[] = N_(
  	"as an alternate.  Leave blank to abort."),
  save_config_help[] = N_(
  	"\n"
@@ -556,19 +1167,20 @@
  	"configurations available on a single machine.\n"
  	"\n"
  	"Entering a file name here will allow you to later retrieve, modify\n"
-@@ -871,9 +869,9 @@ int main(int ac, char **av)
- 	conf_parse(av[1]);
- 	conf_read(NULL);
+@@ -400,10 +398,10 @@ static void set_config_filename(const ch
+ 	int size;
+ 	struct symbol *sym;
  
 -	sym = sym_lookup("KERNELVERSION", 0);
 +	sym = sym_lookup("VERSION", 0);
  	sym_calc_value(sym);
--	sprintf(menu_backtitle, _("Linux Kernel v%s Configuration"),
-+	sprintf(menu_backtitle, _("Buildroot v%s Configuration"),
- 		sym_get_string_value(sym));
- 
- 	mode = getenv("MENUCONFIG_MODE");
-@@ -893,7 +891,7 @@ int main(int ac, char **av)
+ 	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';
+@@ -912,7 +910,7 @@ int main(int ac, char **av)
  		if (conf_get_changed())
  			res = dialog_yesno(NULL,
  					   _("Do you wish to save your "
@@ -577,9 +1189,9 @@
  					     "<ESC><ESC> to continue."),
  					   6, 60);
  		else
-@@ -905,22 +903,22 @@ int main(int ac, char **av)
+@@ -924,22 +922,22 @@ int main(int ac, char **av)
  	case 0:
- 		if (conf_write(NULL)) {
+ 		if (conf_write(filename)) {
  			fprintf(stderr, _("\n\n"
 -				"Error during writing of the kernel configuration.\n"
 -				"Your kernel configuration changes were NOT saved."
@@ -606,8 +1218,9 @@
 -	return 0;
 +	return conf_write_autoconf();
  }
---- kconfig/symbol.c	2007-06-11 20:37:06.000000000 +0200
-+++ Buildroot/symbol.c	2007-06-28 12:15:29.000000000 +0200
+diff -rdup kernel-config/symbol.c config/symbol.c
+--- kernel-config/symbol.c	2007-09-22 00:38:23.000000000 +0200
++++ config/symbol.c	2007-09-23 15:33:26.000000000 +0200
 @@ -61,10 +61,10 @@ void sym_init(void)
  	if (p)
  		sym_add_default(sym, p);
@@ -621,8 +1234,9 @@
  	if (p)
  		sym_add_default(sym, p);
  
---- kconfig/zconf.tab.c_shipped	2007-06-11 20:37:06.000000000 +0200
-+++ Buildroot/zconf.tab.c_shipped	2007-06-28 12:15:29.000000000 +0200
+diff -rdup kernel-config/zconf.tab.c_shipped config/zconf.tab.c_shipped
+--- kernel-config/zconf.tab.c_shipped	2007-09-22 00:38:23.000000000 +0200
++++ config/zconf.tab.c_shipped	2007-09-23 15:33:26.000000000 +0200
 @@ -2115,7 +2115,7 @@ void conf_parse(const char *name)
  	modules_sym = sym_lookup(NULL, 0);
  	modules_sym->type = S_BOOLEAN;
@@ -632,8 +1246,9 @@
  
  #if YYDEBUG
  	if (getenv("ZCONF_DEBUG"))
---- kconfig/zconf.y	2007-06-11 20:37:06.000000000 +0200
-+++ Buildroot/zconf.y	2007-06-28 12:15:29.000000000 +0200
+diff -rdup kernel-config/zconf.y config/zconf.y
+--- kernel-config/zconf.y	2007-09-22 00:38:23.000000000 +0200
++++ config/zconf.y	2007-09-23 15:33:26.000000000 +0200
 @@ -484,7 +484,7 @@ void conf_parse(const char *name)
  	modules_sym = sym_lookup(NULL, 0);
  	modules_sym->type = S_BOOLEAN;
@@ -643,83 +1258,37 @@
  
  #if YYDEBUG
  	if (getenv("ZCONF_DEBUG"))
-Index: confdata.c
-===================================================================
---- kconfig/confdata.c	(revision 18967)
-+++ Buildroot/confdata.c	(working copy)
-@@ -21,7 +21,7 @@ static void conf_warning(const char *fmt
- static const char *conf_filename;
- static int conf_lineno, conf_warnings, conf_unsaved;
+--- kernel-config/Makefile	2007-09-22 00:38:23.000000000 +0200
++++ config/Makefile	2007-07-27 20:09:15.000000000 +0200
+@@ -120,6 +120,9 @@
+ ifeq ($(MAKECMDGOALS),menuconfig)
+ 	hostprogs-y += mconf
+ endif
++ifeq ($(findstring mconf,$(MAKECMDGOALS)),mconf)
++	hostprogs-y += mconf
++endif
  
--const char conf_defname[] = "extra/Configs/defconfigs/$ARCH";
-+const char conf_defname[] = ".defconfig";
- 
- static void conf_warning(const char *fmt, ...)
- {
---- kconfig/config/confdata.c	2007-07-02 16:07:19.000000000 +0200
-+++ Buildroot/config/confdata.c	2007-07-02 16:05:21.000000000 +0200
-@@ -651,7 +651,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;
---- kconfig/config/confdata.c	2007-07-07 11:13:12.000000000 +0200
-+++ Buildroot/config/confdata.c	2007-07-08 01:30:44.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"
-@@ -529,7 +530,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;
-@@ -540,8 +541,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) {
-@@ -634,9 +647,11 @@ int conf_split_config(void)
- 		close(fd);
+ ifeq ($(MAKECMDGOALS),xconfig)
+ 	qconf-target := 1
+@@ -184,8 +186,8 @@
+ 	  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 "*"; \
+--- kernel-config/util.c	2007-09-22 00:38:23.000000000 +0200
++++ config/util.c	2007-09-23 15:57:18.000000000 +0200
+@@ -44,7 +44,7 @@
+ 		else
+ 			fprintf(out, "\t%s\n", file->name);
  	}
- out:
--	if (chdir("../.."))
--		return 1;
--
-+	if (chdir(opwd))
-+		res = 1;
-+err:
-+	free(opwd);
-+	free(_name);
- 	return res;
- }
- 
+-	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);

+ 1 - 1
package/config/lex.zconf.c_shipped

@@ -2264,7 +2264,7 @@ FILE *zconf_fopen(const char *name)
 	FILE *f;
 
 	f = fopen(name, "r");
-	if (!f && name[0] != '/') {
+	if (!f && name != NULL && name[0] != '/') {
 		env = getenv(SRCTREE);
 		if (env) {
 			sprintf(fullname, "%s/%s", env, name);

+ 1 - 0
package/config/lkc.h

@@ -64,6 +64,7 @@ int zconf_lineno(void);
 char *zconf_curname(void);
 
 /* confdata.c */
+const char *conf_get_configname(void);
 char *conf_get_default_confname(void);
 void sym_set_change_count(int count);
 void sym_add_change_count(int count);

+ 9 - 15
package/config/lxdialog/check-lxdialog.sh

@@ -4,21 +4,15 @@
 # What library to link
 ldflags()
 {
-	$cc -print-file-name=libncursesw.so | grep -q /
-	if [ $? -eq 0 ]; then
-		echo '-lncursesw'
-		exit
-	fi
-	$cc -print-file-name=libncurses.so | grep -q /
-	if [ $? -eq 0 ]; then
-		echo '-lncurses'
-		exit
-	fi
-	$cc -print-file-name=libcurses.so | grep -q /
-	if [ $? -eq 0 ]; then
-		echo '-lcurses'
-		exit
-	fi
+	for ext in so a dylib ; do
+		for lib in ncursesw ncurses curses ; do
+			$cc -print-file-name=lib${lib}.${ext} | grep -q /
+			if [ $? -eq 0 ]; then
+				echo "-l${lib}"
+				exit
+			fi
+		done
+	done
 	exit 1
 }
 

+ 1 - 0
package/config/lxdialog/dialog.h

@@ -188,6 +188,7 @@ int on_key_esc(WINDOW *win);
 int on_key_resize(void);
 
 void init_dialog(const char *backtitle);
+void set_dialog_backtitle(const char *backtitle);
 void reset_dialog(void);
 void end_dialog(void);
 void attr_clear(WINDOW * win, int height, int width, chtype attr);

+ 7 - 2
package/config/lxdialog/util.c

@@ -272,6 +272,11 @@ void init_dialog(const char *backtitle)
 	color_setup(getenv("MENUCONFIG_COLOR"));
 }
 
+void set_dialog_backtitle(const char *backtitle)
+{
+	dlg.backtitle = backtitle;
+}
+
 void reset_dialog(void)
 {
 	initscr();		/* Init curses */
@@ -336,7 +341,7 @@ void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x)
 		newl = 1;
 		word = tempstr;
 		while (word && *word) {
-			sp = index(word, ' ');
+			sp = strchr(word, ' ');
 			if (sp)
 				*sp++ = 0;
 
@@ -348,7 +353,7 @@ void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x)
 			if (wlen > room ||
 			    (newl && wlen < 4 && sp
 			     && wlen + 1 + strlen(sp) > room
-			     && (!(sp2 = index(sp, ' '))
+			     && (!(sp2 = strchr(sp, ' '))
 				 || wlen + 1 + (sp2 - sp) > room))) {
 				cur_y++;
 				cur_x = x;

+ 31 - 12
package/config/mconf.c

@@ -26,7 +26,6 @@
 #include "lkc.h"
 #include "lxdialog/dialog.h"
 
-static char menu_backtitle[128];
 static const char mconf_readme[] = N_(
 "Overview\n"
 "--------\n"
@@ -269,7 +268,6 @@ search_help[] = N_(
 	"          USB$ => find all CONFIG_ symbols ending with USB\n"
 	"\n");
 
-static char filename[PATH_MAX+1] = ".config";
 static int indent;
 static struct termios ios_org;
 static int rows = 0, cols = 0;
@@ -393,6 +391,28 @@ static struct gstr get_relations_str(struct symbol **sym_arr)
 	return res;
 }
 
+static char filename[PATH_MAX+1];
+static void set_config_filename(const char *config_filename)
+{
+	static char menu_backtitle[PATH_MAX+128];
+	int size;
+	struct symbol *sym;
+
+	sym = sym_lookup("VERSION", 0);
+	sym_calc_value(sym);
+	size = snprintf(menu_backtitle, sizeof(menu_backtitle),
+	                _("%s - buildroot v%s Configuration"),
+		        config_filename, sym_get_string_value(sym));
+	if (size >= sizeof(menu_backtitle))
+		menu_backtitle[sizeof(menu_backtitle)-1] = '\0';
+	set_dialog_backtitle(menu_backtitle);
+
+	size = snprintf(filename, sizeof(filename), "%s", config_filename);
+	if (size >= sizeof(filename))
+		filename[sizeof(filename)-1] = '\0';
+}
+
+
 static void search_conf(void)
 {
 	struct symbol **sym_arr;
@@ -814,8 +834,10 @@ static void conf_load(void)
 		case 0:
 			if (!dialog_input_result[0])
 				return;
-			if (!conf_read(dialog_input_result))
+			if (!conf_read(dialog_input_result)) {
+				set_config_filename(dialog_input_result);
 				return;
+			}
 			show_textbox(NULL, _("File does not exist!"), 5, 38);
 			break;
 		case 1:
@@ -838,8 +860,10 @@ static void conf_save(void)
 		case 0:
 			if (!dialog_input_result[0])
 				return;
-			if (!conf_write(dialog_input_result))
+			if (!conf_write(dialog_input_result)) {
+				set_config_filename(dialog_input_result);
 				return;
+			}
 			show_textbox(NULL, _("Can't create file!  Probably a nonexistent directory."), 5, 60);
 			break;
 		case 1:
@@ -858,7 +882,6 @@ static void conf_cleanup(void)
 
 int main(int ac, char **av)
 {
-	struct symbol *sym;
 	char *mode;
 	int res;
 
@@ -869,11 +892,6 @@ int main(int ac, char **av)
 	conf_parse(av[1]);
 	conf_read(NULL);
 
-	sym = sym_lookup("VERSION", 0);
-	sym_calc_value(sym);
-	sprintf(menu_backtitle, _("Buildroot v%s Configuration"),
-		sym_get_string_value(sym));
-
 	mode = getenv("MENUCONFIG_MODE");
 	if (mode) {
 		if (!strcasecmp(mode, "single_menu"))
@@ -884,7 +902,8 @@ int main(int ac, char **av)
 	atexit(conf_cleanup);
 	init_wsize();
 	reset_dialog();
-	init_dialog(menu_backtitle);
+	init_dialog(NULL);
+	set_config_filename(conf_get_configname());
 	do {
 		conf(&rootmenu);
 		dialog_clear();
@@ -901,7 +920,7 @@ int main(int ac, char **av)
 
 	switch (res) {
 	case 0:
-		if (conf_write(NULL)) {
+		if (conf_write(filename)) {
 			fprintf(stderr, _("\n\n"
 				"Error during writing of the Buildroot configuration.\n"
 				"Your Buildroot configuration changes were NOT saved."

+ 1 - 1
package/config/menu.c

@@ -203,7 +203,7 @@ void sym_check_prop(struct symbol *sym)
 			else if (sym2->type == S_UNKNOWN)
 				prop_warn(prop,
 				    "'select' used by config symbol '%s' "
-				    "refer to undefined symbol '%s'",
+				    "refers to undefined symbol '%s'",
 				    sym->name, sym2->name);
 			else if (sym2->type != S_BOOLEAN && sym2->type != S_TRISTATE)
 				prop_warn(prop,

+ 4 - 1
package/config/qconf.cc

@@ -1182,7 +1182,7 @@ void ConfigInfoView::contentsContextMenuEvent(QContextMenuEvent *e)
 	Parent::contentsContextMenuEvent(e);
 }
 
-ConfigSearchWindow::ConfigSearchWindow(QWidget* parent, const char *name)
+ConfigSearchWindow::ConfigSearchWindow(ConfigMainWindow* parent, const char *name)
 	: Parent(parent, name), result(NULL)
 {
 	setCaption("Search Config");
@@ -1206,6 +1206,9 @@ ConfigSearchWindow::ConfigSearchWindow(QWidget* parent, const char *name)
 	info = new ConfigInfoView(split, name);
 	connect(list->list, SIGNAL(menuChanged(struct menu *)),
 		info, SLOT(setInfo(struct menu *)));
+	connect(list->list, SIGNAL(menuChanged(struct menu *)),
+		parent, SLOT(setMenuLink(struct menu *)));
+
 	layout1->addWidget(split);
 
 	if (name) {

+ 1 - 1
package/config/qconf.h

@@ -279,7 +279,7 @@ class ConfigSearchWindow : public QDialog {
 	Q_OBJECT
 	typedef class QDialog Parent;
 public:
-	ConfigSearchWindow(QWidget* parent, const char *name = 0);
+	ConfigSearchWindow(ConfigMainWindow* parent, const char *name = 0);
 
 public slots:
 	void saveSettings(void);

+ 5 - 8
package/config/symbol.c

@@ -786,13 +786,15 @@ static struct symbol *sym_check_expr_deps(struct expr *e)
 	return NULL;
 }
 
+/* return NULL when dependencies are OK */
 struct symbol *sym_check_deps(struct symbol *sym)
 {
 	struct symbol *sym2;
 	struct property *prop;
 
 	if (sym->flags & SYMBOL_CHECK) {
-		printf("Warning! Found recursive dependency: %s", sym->name);
+		fprintf(stderr, "%s:%d:error: found recursive dependency: %s",
+		        sym->prop->file->name, sym->prop->lineno, sym->name);
 		return sym;
 	}
 	if (sym->flags & SYMBOL_CHECKED)
@@ -816,13 +818,8 @@ struct symbol *sym_check_deps(struct symbol *sym)
 			goto out;
 	}
 out:
-	if (sym2) {
-		printf(" %s", sym->name);
-		if (sym2 == sym) {
-			printf("\n");
-			sym2 = NULL;
-		}
-	}
+	if (sym2)
+		fprintf(stderr, " -> %s%s", sym->name, sym2 == sym? "\n": "");
 	sym->flags &= ~SYMBOL_CHECK;
 	return sym2;
 }

+ 1 - 1
package/config/util.c

@@ -44,7 +44,7 @@ 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);

+ 1 - 1
package/config/zconf.l

@@ -265,7 +265,7 @@ FILE *zconf_fopen(const char *name)
 	FILE *f;
 
 	f = fopen(name, "r");
-	if (!f && name[0] != '/') {
+	if (!f && name != NULL && name[0] != '/') {
 		env = getenv(SRCTREE);
 		if (env) {
 			sprintf(fullname, "%s/%s", env, name);

+ 4 - 2
package/config/zconf.tab.c_shipped

@@ -2132,9 +2132,11 @@ void conf_parse(const char *name)
 	}
 	menu_finalize(&rootmenu);
 	for_all_symbols(i, sym) {
-		sym_check_deps(sym);
+		if (sym_check_deps(sym))
+			zconfnerrs++;
         }
-
+	if (zconfnerrs)
+		exit(1);
 	sym_set_change_count(1);
 }
 

+ 4 - 2
package/config/zconf.y

@@ -501,9 +501,11 @@ void conf_parse(const char *name)
 	}
 	menu_finalize(&rootmenu);
 	for_all_symbols(i, sym) {
-		sym_check_deps(sym);
+		if (sym_check_deps(sym))
+			zconfnerrs++;
         }
-
+	if (zconfnerrs)
+		exit(1);
 	sym_set_change_count(1);
 }