diff options
| author | Peter Korsgaard <jacmet@sunsite.dk> | 2012-01-13 12:48:28 +0100 | 
|---|---|---|
| committer | Peter Korsgaard <jacmet@sunsite.dk> | 2012-01-15 20:48:04 +0100 | 
| commit | 21f540be4e247b4468d0e8adbf9e3a7575f8a085 (patch) | |
| tree | 8c572a31fbc5cbeecb015a3b15ce00debf03a074 /support | |
| parent | 8f8d414b61bf3b27a77ad38dfc493ae412b65471 (diff) | |
| download | buildroot-novena-21f540be4e247b4468d0e8adbf9e3a7575f8a085.tar.gz buildroot-novena-21f540be4e247b4468d0e8adbf9e3a7575f8a085.zip | |
kconfig: sync with linux-3.0
And drop unused make-write-deps patch.
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
Diffstat (limited to 'support')
| -rw-r--r-- | support/kconfig/Makefile | 68 | ||||
| -rw-r--r-- | support/kconfig/conf.c | 2 | ||||
| -rw-r--r-- | support/kconfig/confdata.c | 20 | ||||
| -rw-r--r-- | support/kconfig/expr.h | 4 | ||||
| -rw-r--r-- | support/kconfig/gconf.c | 12 | ||||
| -rw-r--r-- | support/kconfig/lex.zconf.c_shipped | 33 | ||||
| -rw-r--r-- | support/kconfig/nconf.c | 14 | ||||
| -rw-r--r-- | support/kconfig/patches/03-change-config-option-prefix.patch | 22 | ||||
| -rw-r--r-- | support/kconfig/patches/05-really-clean-everything.patch | 29 | ||||
| -rw-r--r-- | support/kconfig/patches/06-br-build-system-integration.patch | 47 | ||||
| -rw-r--r-- | support/kconfig/patches/08-make-write-deps.patch | 139 | ||||
| -rw-r--r-- | support/kconfig/patches/09-implement-kconfig-probability.patch | 10 | ||||
| -rw-r--r-- | support/kconfig/patches/12-fix-glade-file-path.patch | 2 | ||||
| -rw-r--r-- | support/kconfig/patches/14-support-out-of-tree-config.patch | 42 | ||||
| -rw-r--r-- | support/kconfig/patches/series | 2 | ||||
| -rw-r--r-- | support/kconfig/qconf.cc | 5 | ||||
| -rw-r--r-- | support/kconfig/streamline_config.pl | 2 | ||||
| -rw-r--r-- | support/kconfig/util.c | 117 | ||||
| -rw-r--r-- | support/kconfig/zconf.l | 33 | 
19 files changed, 149 insertions, 454 deletions
| diff --git a/support/kconfig/Makefile b/support/kconfig/Makefile index ece2a822f..f2def76f0 100644 --- a/support/kconfig/Makefile +++ b/support/kconfig/Makefile @@ -77,14 +77,15 @@ localyesconfig: $(obj)/streamline_config.pl $(obj)/conf  # The symlink is used to repair a deficiency in arch/um  update-po-config: $(obj)/kxgettext $(obj)/gconf.glade.h  	$(Q)echo "  GEN config" -	$(Q)xgettext --default-domain=linux              \ -	    --add-comments --keyword=_ --keyword=N_      \ -	    --from-code=UTF-8                            \ -	    --files-from=scripts/kconfig/POTFILES.in     \ +	$(Q)xgettext --default-domain=linux                         \ +	    --add-comments --keyword=_ --keyword=N_                 \ +	    --from-code=UTF-8                                       \ +	    --files-from=$(srctree)/scripts/kconfig/POTFILES.in     \ +	    --directory=$(srctree) --directory=$(objtree)           \  	    --output $(obj)/config.pot  	$(Q)sed -i s/CHARSET/UTF-8/ $(obj)/config.pot -	$(Q)ln -fs Kconfig.i386 arch/um/Kconfig.arch -	$(Q)(for i in `ls arch/*/Kconfig`;               \ +	$(Q)ln -fs Kconfig.x86 arch/um/Kconfig +	$(Q)(for i in `ls $(srctree)/arch/*/Kconfig`;    \  	    do                                           \  		echo "  GEN $$i";                        \  		$(obj)/kxgettext $$i                     \ @@ -92,7 +93,7 @@ update-po-config: $(obj)/kxgettext $(obj)/gconf.glade.h  	    done )  	$(Q)msguniq --sort-by-file --to-code=UTF-8 $(obj)/config.pot \  	    --output $(obj)/linux.pot -	$(Q)rm -f arch/um/Kconfig.arch +	$(Q)rm -f $(srctree)/arch/um/Kconfig  	$(Q)rm -f $(obj)/config.pot  PHONY += allnoconfig allyesconfig allmodconfig alldefconfig randconfig @@ -168,56 +169,44 @@ conf-objs	:= conf.o  zconf.tab.o  mconf-objs     := mconf.o zconf.tab.o $(lxdialog)  nconf-objs     := nconf.o zconf.tab.o nconf.gui.o  kxgettext-objs	:= kxgettext.o zconf.tab.o +qconf-cxxobjs	:= qconf.o +qconf-objs	:= kconfig_load.o zconf.tab.o +gconf-objs	:= gconf.o kconfig_load.o zconf.tab.o -hostprogs-y := conf qconf gconf kxgettext +hostprogs-y := conf -ifeq ($(MAKECMDGOALS),nconfig) +ifeq ($(MAKECMDGOALS),nconf)  	hostprogs-y += nconf  endif -ifeq ($(findstring nconf,$(MAKECMDGOALS)),nconf) -       hostprogs-y += nconf -endif -ifeq ($(MAKECMDGOALS),menuconfig) +ifeq ($(MAKECMDGOALS),mconf)  	hostprogs-y += mconf  endif -ifeq ($(findstring mconf,$(MAKECMDGOALS)),mconf) -       hostprogs-y += mconf -endif -ifeq ($(MAKECMDGOALS),xconfig) -	qconf-target := 1 -endif -ifeq ($(findstring qconf,$(MAKECMDGOALS)),qconf) -	qconf-target := 1 +ifeq ($(MAKECMDGOALS),update-po-config) +	hostprogs-y += kxgettext  endif -ifeq ($(MAKECMDGOALS),gconfig) -	gconf-target := 1 +ifeq ($(MAKECMDGOALS),qconf) +	qconf-target := 1  endif -ifeq ($(findstring gconf,$(MAKECMDGOALS)),gconf) +ifeq ($(MAKECMDGOALS),gconf)  	gconf-target := 1  endif +  ifeq ($(qconf-target),1) -qconf-cxxobjs	:= qconf.o -qconf-objs	:= kconfig_load.o zconf.tab.o +	hostprogs-y += qconf  endif  ifeq ($(gconf-target),1) -gconf-objs	:= gconf.o kconfig_load.o zconf.tab.o +	hostprogs-y += gconf  endif -clean-files := lkc_defs.h qconf.moc .tmp_qtcheck \ -               .tmp_gtkcheck zconf.tab.c lex.zconf.c zconf.hash.c gconf.glade.h -clean-files += config.pot linux.pot -clean-files += conf $(conf-objs) -clean-files += mconf $(mconf-objs) -clean-files += nconf $(nconf-objs) -clean-files += qconf qconf.o -clean-files += gconf gconf.o -clean-files += kconfig_load.o zconf.tab.o -clean-files += $(kxgettext-objs) +clean-files	:= lkc_defs.h qconf.moc .tmp_qtcheck .tmp_gtkcheck +clean-files	+= zconf.tab.c lex.zconf.c zconf.hash.c gconf.glade.h +clean-files     += mconf qconf gconf nconf +clean-files     += config.pot linux.pot  # Check that we have the required ncurses stuff installed for lxdialog (menuconfig)  PHONY += $(obj)/dochecklxdialog @@ -339,11 +328,12 @@ $(obj)/%.moc: $(src)/%.h  	$(KC_QT_MOC) -i $< -o $@  $(obj)/lkc_defs.h: $(src)/lkc_proto.h -	sed < $< > $@ 's/P(\([^,]*\),.*/#define \1 (\*\1_p)/' +	$(Q)sed < $< > $@ 's/P(\([^,]*\),.*/#define \1 (\*\1_p)/'  # Extract gconf menu items for I18N support  $(obj)/gconf.glade.h: $(obj)/gconf.glade -	intltool-extract --type=gettext/glade $(obj)/gconf.glade +	$(Q)intltool-extract --type=gettext/glade --srcdir=$(srctree) \ +	$(obj)/gconf.glade  ###  # The following requires flex/bison/gperf diff --git a/support/kconfig/conf.c b/support/kconfig/conf.c index 652e079a6..ed9402a60 100644 --- a/support/kconfig/conf.c +++ b/support/kconfig/conf.c @@ -332,7 +332,7 @@ static int conf_choice(struct menu *menu)  		}  		if (!child)  			continue; -		if (line[strlen(line) - 1] == '?') { +		if (line[0] && line[strlen(line) - 1] == '?') {  			print_help(child);  			continue;  		} diff --git a/support/kconfig/confdata.c b/support/kconfig/confdata.c index c9f13eec7..54f20ca96 100644 --- a/support/kconfig/confdata.c +++ b/support/kconfig/confdata.c @@ -559,8 +559,6 @@ int conf_write(const char *name)  	const char *basename;  	const char *str;  	char dirname[PATH_MAX+1], tmpname[PATH_MAX+1], newname[PATH_MAX+1]; -	time_t now; -	int use_timestamp = 1;  	char *env;  	if (!name) @@ -600,19 +598,11 @@ int conf_write(const char *name)  	if (!out)  		return 1; -	time(&now); -	env = getenv("KCONFIG_NOTIMESTAMP"); -	if (env && *env) -		use_timestamp = 0; -  	fprintf(out, _("#\n"  		       "# Automatically generated make config: don't edit\n"  		       "# %s\n" -		       "%s%s"  		       "#\n"), -		     rootmenu.prompt->text, -		     use_timestamp ? "# " : "", -		     use_timestamp ? ctime(&now) : ""); +		     rootmenu.prompt->text);  	if (!conf_get_changed())  		sym_clear_all_valid(); @@ -801,7 +791,6 @@ int conf_write_autoconf(void)  	const char *str;  	const char *name;  	FILE *out, *tristate, *out_h; -	time_t now;  	int i;  	char dir[PATH_MAX+1], buf[PATH_MAX+1];  	char *s; @@ -841,22 +830,19 @@ int conf_write_autoconf(void)  		return 1;  	} -	time(&now);  	fprintf(out, "#\n"  		     "# Automatically generated make config: don't edit\n"  		     "# %s\n" -		     "# %s"  		     "#\n", -		     rootmenu.prompt->text, ctime(&now)); +		     rootmenu.prompt->text);  	fprintf(tristate, "#\n"  			  "# Automatically generated - do not edit\n"  			  "\n");  	fprintf(out_h, "/*\n"  		       " * Automatically generated C config: don't edit\n"  		       " * %s\n" -		       " * %s"  		       " */\n", -		       rootmenu.prompt->text, ctime(&now)); +		       rootmenu.prompt->text);  	for_all_symbols(i, sym) {  		sym_calc_value(sym); diff --git a/support/kconfig/expr.h b/support/kconfig/expr.h index 3d238db49..16bfae2d3 100644 --- a/support/kconfig/expr.h +++ b/support/kconfig/expr.h @@ -20,12 +20,8 @@ struct file {  	struct file *parent;  	const char *name;  	int lineno; -	int flags;  }; -#define FILE_BUSY		0x0001 -#define FILE_SCANNED		0x0002 -  typedef enum tristate {  	no, mod, yes  } tristate; diff --git a/support/kconfig/gconf.c b/support/kconfig/gconf.c index f9daf987d..79479c323 100644 --- a/support/kconfig/gconf.c +++ b/support/kconfig/gconf.c @@ -253,7 +253,7 @@ void init_left_tree(void)  	gtk_tree_view_set_model(view, model1);  	gtk_tree_view_set_headers_visible(view, TRUE); -	gtk_tree_view_set_rules_hint(view, FALSE); +	gtk_tree_view_set_rules_hint(view, TRUE);  	column = gtk_tree_view_column_new();  	gtk_tree_view_append_column(view, column); @@ -298,7 +298,7 @@ void init_right_tree(void)  	gtk_tree_view_set_model(view, model2);  	gtk_tree_view_set_headers_visible(view, TRUE); -	gtk_tree_view_set_rules_hint(view, FALSE); +	gtk_tree_view_set_rules_hint(view, TRUE);  	column = gtk_tree_view_column_new();  	gtk_tree_view_append_column(view, column); @@ -756,7 +756,6 @@ void on_load_clicked(GtkButton * button, gpointer user_data)  void on_single_clicked(GtkButton * button, gpointer user_data)  {  	view_mode = SINGLE_VIEW; -	gtk_paned_set_position(GTK_PANED(hpaned), 0);  	gtk_widget_hide(tree1_w);  	current = &rootmenu;  	display_tree_part(); @@ -782,7 +781,6 @@ void on_split_clicked(GtkButton * button, gpointer user_data)  void on_full_clicked(GtkButton * button, gpointer user_data)  {  	view_mode = FULL_VIEW; -	gtk_paned_set_position(GTK_PANED(hpaned), 0);  	gtk_widget_hide(tree1_w);  	if (tree2)  		gtk_tree_store_clear(tree2); @@ -1444,6 +1442,12 @@ static void display_tree(struct menu *menu)                  if (((menu != &rootmenu) && !(menu->flags & MENU_ROOT))  		    || (view_mode == FULL_VIEW)  		    || (view_mode == SPLIT_VIEW))*/ + +		/* Change paned position if the view is not in 'split mode' */ +		if (view_mode == SINGLE_VIEW || view_mode == FULL_VIEW) { +			gtk_paned_set_position(GTK_PANED(hpaned), 0); +		} +  		if (((view_mode == SINGLE_VIEW) && (menu->flags & MENU_ROOT))  		    || (view_mode == FULL_VIEW)  		    || (view_mode == SPLIT_VIEW)) { diff --git a/support/kconfig/lex.zconf.c_shipped b/support/kconfig/lex.zconf.c_shipped index 6eb039718..d9182916f 100644 --- a/support/kconfig/lex.zconf.c_shipped +++ b/support/kconfig/lex.zconf.c_shipped @@ -2363,11 +2363,11 @@ void zconf_initscan(const char *name)  	current_file = file_lookup(name);  	current_file->lineno = 1; -	current_file->flags = FILE_BUSY;  }  void zconf_nextfile(const char *name)  { +	struct file *iter;  	struct file *file = file_lookup(name);  	struct buffer *buf = malloc(sizeof(*buf));  	memset(buf, 0, sizeof(*buf)); @@ -2383,18 +2383,25 @@ void zconf_nextfile(const char *name)  	buf->parent = current_buf;  	current_buf = buf; -	if (file->flags & FILE_BUSY) { -		printf("%s:%d: do not source '%s' from itself\n", -		       zconf_curname(), zconf_lineno(), name); -		exit(1); -	} -	if (file->flags & FILE_SCANNED) { -		printf("%s:%d: file '%s' is already sourced from '%s'\n", -		       zconf_curname(), zconf_lineno(), name, -		       file->parent->name); -		exit(1); +	for (iter = current_file->parent; iter; iter = iter->parent ) { +		if (!strcmp(current_file->name,iter->name) ) { +			printf("%s:%d: recursive inclusion detected. " +			       "Inclusion path:\n  current file : '%s'\n", +			       zconf_curname(), zconf_lineno(), +			       zconf_curname()); +			iter = current_file->parent; +			while (iter && \ +			       strcmp(iter->name,current_file->name)) { +				printf("  included from: '%s:%d'\n", +				       iter->name, iter->lineno-1); +				iter = iter->parent; +			} +			if (iter) +				printf("  included from: '%s:%d'\n", +				       iter->name, iter->lineno+1); +			exit(1); +		}  	} -	file->flags |= FILE_BUSY;  	file->lineno = 1;  	file->parent = current_file;  	current_file = file; @@ -2404,8 +2411,6 @@ static void zconf_endfile(void)  {  	struct buffer *parent; -	current_file->flags |= FILE_SCANNED; -	current_file->flags &= ~FILE_BUSY;  	current_file = current_file->parent;  	parent = current_buf->parent; diff --git a/support/kconfig/nconf.c b/support/kconfig/nconf.c index db5637739..488dd7410 100644 --- a/support/kconfig/nconf.c +++ b/support/kconfig/nconf.c @@ -373,18 +373,18 @@ static void print_function_line(void)  	const int skip = 1;  	for (i = 0; i < function_keys_num; i++) { -		wattrset(main_window, attributes[FUNCTION_HIGHLIGHT]); +		(void) wattrset(main_window, attributes[FUNCTION_HIGHLIGHT]);  		mvwprintw(main_window, LINES-3, offset,  				"%s",  				function_keys[i].key_str); -		wattrset(main_window, attributes[FUNCTION_TEXT]); +		(void) wattrset(main_window, attributes[FUNCTION_TEXT]);  		offset += strlen(function_keys[i].key_str);  		mvwprintw(main_window, LINES-3,  				offset, "%s",  				function_keys[i].func);  		offset += strlen(function_keys[i].func) + skip;  	} -	wattrset(main_window, attributes[NORMAL]); +	(void) wattrset(main_window, attributes[NORMAL]);  }  /* help */ @@ -953,16 +953,16 @@ static void show_menu(const char *prompt, const char *instructions,  	current_instructions = instructions;  	clear(); -	wattrset(main_window, attributes[NORMAL]); +	(void) wattrset(main_window, attributes[NORMAL]);  	print_in_middle(stdscr, 1, 0, COLS,  			menu_backtitle,  			attributes[MAIN_HEADING]); -	wattrset(main_window, attributes[MAIN_MENU_BOX]); +	(void) wattrset(main_window, attributes[MAIN_MENU_BOX]);  	box(main_window, 0, 0); -	wattrset(main_window, attributes[MAIN_MENU_HEADING]); +	(void) wattrset(main_window, attributes[MAIN_MENU_HEADING]);  	mvwprintw(main_window, 0, 3, " %s ", prompt); -	wattrset(main_window, attributes[NORMAL]); +	(void) wattrset(main_window, attributes[NORMAL]);  	set_menu_items(curses_menu, curses_menu_items); diff --git a/support/kconfig/patches/03-change-config-option-prefix.patch b/support/kconfig/patches/03-change-config-option-prefix.patch index d387236e7..4c51eaa9b 100644 --- a/support/kconfig/patches/03-change-config-option-prefix.patch +++ b/support/kconfig/patches/03-change-config-option-prefix.patch @@ -4,10 +4,10 @@   menu.c     |    2 +-   3 files changed, 31 insertions(+), 30 deletions(-) -Index: config/confdata.c +Index: kconfig/confdata.c  =================================================================== ---- config.orig/confdata.c -+++ config/confdata.c +--- kconfig.orig/confdata.c ++++ kconfig/confdata.c  @@ -12,6 +12,7 @@   #include <string.h>   #include <time.h> @@ -125,7 +125,7 @@ Index: config/confdata.c   		break;   	case S_OTHER:   	case S_UNKNOWN: -@@ -844,17 +845,17 @@ +@@ -830,17 +831,17 @@   			case no:   				break;   			case mod: @@ -151,7 +151,7 @@ Index: config/confdata.c   				break;   			}   			break; -@@ -864,14 +865,14 @@ +@@ -850,14 +851,14 @@   		case S_HEX:   			str = sym_get_string_value(sym);   			if (str[0] != '0' || (str[1] != 'x' && str[1] != 'X')) { @@ -170,10 +170,10 @@ Index: config/confdata.c   			break;   		default:   			break; -Index: config/lkc.h +Index: kconfig/lkc.h  =================================================================== ---- config.orig/lkc.h -+++ config/lkc.h +--- kconfig.orig/lkc.h ++++ kconfig/lkc.h  @@ -42,7 +42,7 @@   #define N_(text) (text) @@ -183,10 +183,10 @@ Index: config/lkc.h   #endif   #define TF_COMMAND	0x0001 -Index: config/menu.c +Index: kconfig/menu.c  =================================================================== ---- config.orig/menu.c -+++ config/menu.c +--- kconfig.orig/menu.c ++++ kconfig/menu.c  @@ -597,7 +597,7 @@   	if (menu_has_help(menu)) { diff --git a/support/kconfig/patches/05-really-clean-everything.patch b/support/kconfig/patches/05-really-clean-everything.patch deleted file mode 100644 index a1517542e..000000000 --- a/support/kconfig/patches/05-really-clean-everything.patch +++ /dev/null @@ -1,29 +0,0 @@ ---- - Makefile |   14 ++++++++++---- - 1 file changed, 10 insertions(+), 4 deletions(-) - -Index: config/Makefile -=================================================================== ---- config.orig/Makefile -+++ config/Makefile -@@ -196,10 +196,16 @@ - gconf-objs	:= gconf.o kconfig_load.o zconf.tab.o - endif -  --clean-files	:= lkc_defs.h qconf.moc .tmp_qtcheck \ --		   .tmp_gtkcheck zconf.tab.c lex.zconf.c zconf.hash.c gconf.glade.h --clean-files     += mconf qconf gconf nconf --clean-files     += config.pot linux.pot -+clean-files := lkc_defs.h qconf.moc .tmp_qtcheck \ -+               .tmp_gtkcheck zconf.tab.c lex.zconf.c zconf.hash.c gconf.glade.h -+clean-files += config.pot linux.pot -+clean-files += conf $(conf-objs) -+clean-files += mconf $(mconf-objs) -+clean-files += nconf $(nconf-objs) -+clean-files += qconf qconf.o -+clean-files += gconf gconf.o -+clean-files += kconfig_load.o zconf.tab.o -+clean-files += $(kxgettext-objs) -  - # Check that we have the required ncurses stuff installed for lxdialog (menuconfig) - PHONY += $(obj)/dochecklxdialog diff --git a/support/kconfig/patches/06-br-build-system-integration.patch b/support/kconfig/patches/06-br-build-system-integration.patch index 8a27e251e..feb166d36 100644 --- a/support/kconfig/patches/06-br-build-system-integration.patch +++ b/support/kconfig/patches/06-br-build-system-integration.patch @@ -1,40 +1,35 @@  --- - Makefile |   14 +++++++++++++- - 1 file changed, 13 insertions(+), 1 deletion(-) + Makefile |    8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) -Index: config/Makefile +Index: kconfig/Makefile  =================================================================== ---- config.orig/Makefile -+++ config/Makefile -@@ -174,18 +174,30 @@ - ifeq ($(MAKECMDGOALS),nconfig) +--- kconfig.orig/Makefile ++++ kconfig/Makefile +@@ -175,11 +175,11 @@ +  + hostprogs-y := conf +  +-ifeq ($(MAKECMDGOALS),nconfig) ++ifeq ($(MAKECMDGOALS),nconf)   	hostprogs-y += nconf   endif -+ifeq ($(findstring nconf,$(MAKECMDGOALS)),nconf) -+       hostprogs-y += nconf -+endif - ifeq ($(MAKECMDGOALS),menuconfig) +-ifeq ($(MAKECMDGOALS),menuconfig) ++ifeq ($(MAKECMDGOALS),mconf)   	hostprogs-y += mconf   endif -+ifeq ($(findstring mconf,$(MAKECMDGOALS)),mconf) -+       hostprogs-y += mconf -+endif - ifeq ($(MAKECMDGOALS),xconfig) +@@ -187,10 +187,10 @@ + 	hostprogs-y += kxgettext + endif +  +-ifeq ($(MAKECMDGOALS),xconfig) ++ifeq ($(MAKECMDGOALS),qconf)   	qconf-target := 1   endif -+ifeq ($(findstring qconf,$(MAKECMDGOALS)),qconf) -+	qconf-target := 1 -+endif -+ - ifeq ($(MAKECMDGOALS),gconfig) +-ifeq ($(MAKECMDGOALS),gconfig) ++ifeq ($(MAKECMDGOALS),gconf)   	gconf-target := 1   endif -- -+ifeq ($(findstring gconf,$(MAKECMDGOALS)),gconf) -+	gconf-target := 1 -+endif - ifeq ($(qconf-target),1) - qconf-cxxobjs	:= qconf.o diff --git a/support/kconfig/patches/08-make-write-deps.patch b/support/kconfig/patches/08-make-write-deps.patch deleted file mode 100644 index e5a21c386..000000000 --- a/support/kconfig/patches/08-make-write-deps.patch +++ /dev/null @@ -1,139 +0,0 @@ ---- - util.c |  117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- - 1 file changed, 116 insertions(+), 1 deletion(-) - -Index: kconfig/util.c -=================================================================== ---- kconfig.orig/util.c -+++ kconfig/util.c -@@ -29,6 +29,121 @@ - 	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+1); -+	if (!ret) { -+		printf("Out of memory!"); -+		exit(1); -+	} -+	memset(ret, 0, len+1); -+	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 individual config-symbols */ -+static int write_make_deps(const char *name) -+{ -+	char *str; -+	char dir[PATH_MAX+1], buf[PATH_MAX+1], buf2[PATH_MAX+1]; -+	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"; -+ -+	strcpy(dir, conf_get_configname()); -+	str = strrchr(dir, '/'); -+	if (str) -+		str[1] = 0; -+	else -+		dir[0] = 0; -+ -+	sprintf(buf, "%s%s", dir, name_tmp); -+	out = fopen(buf, "w"); -+	if (!out) -+		return 1; -+	fprintf(out, "# ATTENTION! This does not handle 'depends', just 'select'! \n" -+		"# See support/kconfig/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); -+	sprintf(buf2, "%s%s", dir, name); -+	rename(buf, buf2); -+	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) - { -@@ -71,7 +186,7 @@ - 	fprintf(out, "\n$(deps_config): ;\n"); - 	fclose(out); - 	rename("..config.tmp", name); --	return 0; -+	return write_make_deps(NULL); - } -  -  diff --git a/support/kconfig/patches/09-implement-kconfig-probability.patch b/support/kconfig/patches/09-implement-kconfig-probability.patch index 3f09673b8..3b6eb898f 100644 --- a/support/kconfig/patches/09-implement-kconfig-probability.patch +++ b/support/kconfig/patches/09-implement-kconfig-probability.patch @@ -2,11 +2,11 @@   confdata.c |   22 +++++++++++++++++++---   1 file changed, 19 insertions(+), 3 deletions(-) -Index: config/confdata.c +Index: kconfig/confdata.c  =================================================================== ---- config.orig/confdata.c -+++ config/confdata.c -@@ -996,7 +996,16 @@ +--- kconfig.orig/confdata.c ++++ kconfig/confdata.c +@@ -982,7 +982,16 @@   void conf_set_all_new_symbols(enum conf_def_mode mode)   {   	struct symbol *sym, *csym; @@ -24,7 +24,7 @@ Index: config/confdata.c   	for_all_symbols(i, sym) {   		if (sym_has_value(sym)) -@@ -1015,8 +1024,15 @@ +@@ -1001,8 +1010,15 @@   				sym->def[S_DEF_USER].tri = no;   				break;   			case def_random: diff --git a/support/kconfig/patches/12-fix-glade-file-path.patch b/support/kconfig/patches/12-fix-glade-file-path.patch index 681dce160..badfc91d8 100644 --- a/support/kconfig/patches/12-fix-glade-file-path.patch +++ b/support/kconfig/patches/12-fix-glade-file-path.patch @@ -6,7 +6,7 @@ Index: kconfig/gconf.c  ===================================================================  --- kconfig.orig/gconf.c  +++ kconfig/gconf.c -@@ -1521,7 +1521,7 @@ +@@ -1525,7 +1525,7 @@   	/* Determine GUI path */   	env = getenv(SRCTREE);   	if (env) diff --git a/support/kconfig/patches/14-support-out-of-tree-config.patch b/support/kconfig/patches/14-support-out-of-tree-config.patch index 9fa6384d3..8d76df2e6 100644 --- a/support/kconfig/patches/14-support-out-of-tree-config.patch +++ b/support/kconfig/patches/14-support-out-of-tree-config.patch @@ -4,10 +4,10 @@   util.c     |   16 +++++++++++++--   3 files changed, 61 insertions(+), 18 deletions(-) -Index: config/conf.c +Index: kconfig/conf.c  =================================================================== ---- config.orig/conf.c -+++ config/conf.c +--- kconfig.orig/conf.c ++++ kconfig/conf.c  @@ -503,7 +503,6 @@   	}   	name = av[optind]; @@ -16,10 +16,10 @@ Index: config/conf.c   	if (sync_kconfig) {   		name = conf_get_configname();   		if (stat(name, &tmpstat)) { -Index: config/confdata.c +Index: kconfig/confdata.c  =================================================================== ---- config.orig/confdata.c -+++ config/confdata.c +--- kconfig.orig/confdata.c ++++ kconfig/confdata.c  @@ -71,9 +71,7 @@   const char *conf_get_autoconfig_name(void) @@ -31,8 +31,8 @@ Index: config/confdata.c   }   static char *conf_expand_value(const char *in) -@@ -565,6 +563,9 @@ - 	int use_timestamp = 1; +@@ -563,6 +561,9 @@ + 	char dirname[PATH_MAX+1], tmpname[PATH_MAX+1], newname[PATH_MAX+1];   	char *env;  +	if (!name) @@ -41,7 +41,7 @@ Index: config/confdata.c   	dirname[0] = 0;   	if (name && name[0]) {   		struct stat st; -@@ -671,6 +672,7 @@ +@@ -661,6 +662,7 @@   {   	const char *name;   	char path[PATH_MAX+1]; @@ -49,7 +49,7 @@ Index: config/confdata.c   	char *s, *d, c;   	struct symbol *sym;   	struct stat sb; -@@ -679,8 +681,20 @@ +@@ -669,8 +671,20 @@   	name = conf_get_autoconfig_name();   	conf_read_simple(name, S_DEF_AUTO); @@ -72,7 +72,7 @@ Index: config/confdata.c   	res = 0;   	for_all_symbols(i, sym) { -@@ -773,9 +787,11 @@ +@@ -763,9 +777,11 @@   		close(fd);   	}   out: @@ -87,9 +87,9 @@ Index: config/confdata.c   	return res;   } -@@ -787,25 +803,38 @@ +@@ -776,25 +792,38 @@ + 	const char *name;   	FILE *out, *tristate, *out_h; - 	time_t now;   	int i;  +	char dir[PATH_MAX+1], buf[PATH_MAX+1];  +	char *s; @@ -130,7 +130,7 @@ Index: config/confdata.c   	if (!out_h) {   		fclose(out);   		fclose(tristate); -@@ -885,19 +914,22 @@ +@@ -871,19 +900,22 @@   	name = getenv("KCONFIG_AUTOHEADER");   	if (!name)   		name = "include/generated/autoconf.h"; @@ -156,11 +156,11 @@ Index: config/confdata.c   		return 1;   	return 0; -Index: config/util.c +Index: kconfig/util.c  =================================================================== ---- config.orig/util.c -+++ config/util.c -@@ -147,6 +147,8 @@ +--- kconfig.orig/util.c ++++ kconfig/util.c +@@ -32,6 +32,8 @@   /* write a dependency file as used by kbuild to track dependencies */   int file_write_dep(const char *name)   { @@ -169,7 +169,7 @@ Index: config/util.c   	struct symbol *sym, *env_sym;   	struct expr *e;   	struct file *file; -@@ -154,7 +156,16 @@ +@@ -39,7 +41,16 @@   	if (!name)   		name = ".kconfig.d"; @@ -187,13 +187,13 @@ Index: config/util.c   	if (!out)   		return 1;   	fprintf(out, "deps_config := \\\n"); -@@ -185,7 +196,8 @@ +@@ -70,7 +81,8 @@   	fprintf(out, "\n$(deps_config): ;\n");   	fclose(out);  -	rename("..config.tmp", name);  +	sprintf(buf2, "%s%s", dir, name);  +	rename(buf, buf2); - 	return write_make_deps(NULL); + 	return 0;   } diff --git a/support/kconfig/patches/series b/support/kconfig/patches/series index defdf5899..573911bdd 100644 --- a/support/kconfig/patches/series +++ b/support/kconfig/patches/series @@ -1,9 +1,7 @@  01-kconfig-kernel-to-buildroot.patch  02-cpp-comments-to-c-comments.patch  03-change-config-option-prefix.patch -05-really-clean-everything.patch  06-br-build-system-integration.patch -08-make-write-deps.patch  09-implement-kconfig-probability.patch  10-br-build-system.patch  11-use-mktemp-for-lxdialog.patch diff --git a/support/kconfig/qconf.cc b/support/kconfig/qconf.cc index 06dd2e335..c2796b866 100644 --- a/support/kconfig/qconf.cc +++ b/support/kconfig/qconf.cc @@ -1489,8 +1489,7 @@ void ConfigMainWindow::saveConfigAs(void)  	QString s = Q3FileDialog::getSaveFileName(conf_get_configname(), NULL, this);  	if (s.isNull())  		return; -	if (conf_write(QFile::encodeName(s))) -		QMessageBox::information(this, "qconf", _("Unable to save configuration!")); +	saveConfig();  }  void ConfigMainWindow::searchConfig(void) @@ -1643,7 +1642,7 @@ void ConfigMainWindow::closeEvent(QCloseEvent* e)  	mb.setButtonText(QMessageBox::Cancel, _("Cancel Exit"));  	switch (mb.exec()) {  	case QMessageBox::Yes: -		conf_write(NULL); +		saveConfig();  	case QMessageBox::No:  		e->accept();  		break; diff --git a/support/kconfig/streamline_config.pl b/support/kconfig/streamline_config.pl index fd81fc33d..a4fe923c0 100644 --- a/support/kconfig/streamline_config.pl +++ b/support/kconfig/streamline_config.pl @@ -1,6 +1,6 @@  #!/usr/bin/perl -w  # -# Copywrite 2005-2009 - Steven Rostedt +# Copyright 2005-2009 - Steven Rostedt  # Licensed under the terms of the GNU GPL License version 2  #  #  It's simple enough to figure out how this works. diff --git a/support/kconfig/util.c b/support/kconfig/util.c index 8a5efaa17..6edd8a3d1 100644 --- a/support/kconfig/util.c +++ b/support/kconfig/util.c @@ -29,121 +29,6 @@ struct file *file_lookup(const char *name)  	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+1); -	if (!ret) { -		printf("Out of memory!"); -		exit(1); -	} -	memset(ret, 0, len+1); -	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 individual config-symbols */ -static int write_make_deps(const char *name) -{ -	char *str; -	char dir[PATH_MAX+1], buf[PATH_MAX+1], buf2[PATH_MAX+1]; -	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"; - -	strcpy(dir, conf_get_configname()); -	str = strrchr(dir, '/'); -	if (str) -		str[1] = 0; -	else -		dir[0] = 0; - -	sprintf(buf, "%s%s", dir, name_tmp); -	out = fopen(buf, "w"); -	if (!out) -		return 1; -	fprintf(out, "# ATTENTION! This does not handle 'depends', just 'select'! \n" -		"# See support/kconfig/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); -	sprintf(buf2, "%s%s", dir, name); -	rename(buf, buf2); -	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)  { @@ -198,7 +83,7 @@ int file_write_dep(const char *name)  	fclose(out);  	sprintf(buf2, "%s%s", dir, name);  	rename(buf, buf2); -	return write_make_deps(NULL); +	return 0;  } diff --git a/support/kconfig/zconf.l b/support/kconfig/zconf.l index 3dbaec185..b22f884f9 100644 --- a/support/kconfig/zconf.l +++ b/support/kconfig/zconf.l @@ -294,11 +294,11 @@ void zconf_initscan(const char *name)  	current_file = file_lookup(name);  	current_file->lineno = 1; -	current_file->flags = FILE_BUSY;  }  void zconf_nextfile(const char *name)  { +	struct file *iter;  	struct file *file = file_lookup(name);  	struct buffer *buf = malloc(sizeof(*buf));  	memset(buf, 0, sizeof(*buf)); @@ -314,18 +314,25 @@ void zconf_nextfile(const char *name)  	buf->parent = current_buf;  	current_buf = buf; -	if (file->flags & FILE_BUSY) { -		printf("%s:%d: do not source '%s' from itself\n", -		       zconf_curname(), zconf_lineno(), name); -		exit(1); -	} -	if (file->flags & FILE_SCANNED) { -		printf("%s:%d: file '%s' is already sourced from '%s'\n", -		       zconf_curname(), zconf_lineno(), name, -		       file->parent->name); -		exit(1); +	for (iter = current_file->parent; iter; iter = iter->parent ) { +		if (!strcmp(current_file->name,iter->name) ) { +			printf("%s:%d: recursive inclusion detected. " +			       "Inclusion path:\n  current file : '%s'\n", +			       zconf_curname(), zconf_lineno(), +			       zconf_curname()); +			iter = current_file->parent; +			while (iter && \ +			       strcmp(iter->name,current_file->name)) { +				printf("  included from: '%s:%d'\n", +				       iter->name, iter->lineno-1); +				iter = iter->parent; +			} +			if (iter) +				printf("  included from: '%s:%d'\n", +				       iter->name, iter->lineno+1); +			exit(1); +		}  	} -	file->flags |= FILE_BUSY;  	file->lineno = 1;  	file->parent = current_file;  	current_file = file; @@ -335,8 +342,6 @@ static void zconf_endfile(void)  {  	struct buffer *parent; -	current_file->flags |= FILE_SCANNED; -	current_file->flags &= ~FILE_BUSY;  	current_file = current_file->parent;  	parent = current_buf->parent; | 
