This was originally several commits that had to be squashed into one because the intermediate states weren't able to build coreboot: - one to remove everything that wasn't our own code, leaving only regex.[ch], toada.c, description.md and Makefile.inc. - one to copy in Linux 5.13's scripts/kconfig and adapt Makefile.inc to make the original Makefile work again. - adapt abuild to use olddefconfig, simplifying matters. - apply patches in util/kconfig/patches. - Some more adaptations to the libpayload build system. The patches are now in util/kconfig/patches/, reverse applying them should lead to a util/kconfig/ tree that contains exactly the Linux version + our own 5 files. Change-Id: Ia0e8fe4e9022b278f34ab113a433ef4d45e5c355 Signed-off-by: Patrick Georgi <pgeorgi@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/37152 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Raul Rangel <rrangel@chromium.org>
		
			
				
	
	
		
			190 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			190 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From af6c23be63d14860c8c1f0d9fcbc020f7c11d84d Mon Sep 17 00:00:00 2001
 | |
| From: Stefan Reinauer <reinauer@chromium.org>
 | |
| Date: Thu, 20 Aug 2015 11:19:34 -0700
 | |
| Subject: [PATCH] kconfig: Allow KCONFIG_STRICT outside of confdata.c
 | |
| 
 | |
| To catch dependency errors in symbol.c (such as the ones
 | |
| fixed by I51b4ee326f082c6a656a813ee5772e9c34f5c343) we need
 | |
| to check for global kconfig warnings before saving config
 | |
| files.
 | |
| 
 | |
| This patch will produce errors for wrong dependencies and
 | |
| add catching of errors to conf, nconf and mconf. Sorry,
 | |
| gconf users, you will have to wait.
 | |
| 
 | |
| Signed-off-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
 | |
| ---
 | |
|  util/kconfig/conf.c     | 10 ++++++++++
 | |
|  util/kconfig/confdata.c |  6 +-----
 | |
|  util/kconfig/lkc.h      |  3 +++
 | |
|  util/kconfig/mconf.c    | 10 ++++++++++
 | |
|  util/kconfig/nconf.c    | 13 +++++++++++++
 | |
|  util/kconfig/qconf.cc   |  2 ++
 | |
|  util/kconfig/symbol.c   |  1 +
 | |
|  7 files changed, 40 insertions(+), 5 deletions(-)
 | |
| 
 | |
| Index: kconfig/conf.c
 | |
| ===================================================================
 | |
| --- kconfig.orig/conf.c
 | |
| +++ kconfig/conf.c
 | |
| @@ -16,6 +16,8 @@
 | |
|  
 | |
|  #include "lkc.h"
 | |
|  
 | |
| +int kconfig_warnings = 0;
 | |
| +
 | |
|  static void conf(struct menu *menu);
 | |
|  static void check_conf(struct menu *menu);
 | |
|  
 | |
| @@ -732,6 +734,7 @@ int main(int ac, char **av)
 | |
|  	const char *progname = av[0];
 | |
|  	int opt;
 | |
|  	const char *name, *defconfig_file = NULL /* gcc uninit */;
 | |
| +	char *env;
 | |
|  	int no_conf_write = 0;
 | |
|  
 | |
|  	tty_stdio = isatty(0) && isatty(1);
 | |
| @@ -838,6 +841,13 @@ int main(int ac, char **av)
 | |
|  		break;
 | |
|  	}
 | |
|  
 | |
| +	env = getenv("KCONFIG_STRICT");
 | |
| +	if (env && *env && kconfig_warnings) {
 | |
| +		fprintf(stderr, "\n*** ERROR: %d warnings encountered, and "
 | |
| +			"warnings are errors.\n\n", kconfig_warnings);
 | |
| +		exit(1);
 | |
| +	}
 | |
| +
 | |
|  	if (sync_kconfig) {
 | |
|  		name = getenv("KCONFIG_NOSILENTUPDATE");
 | |
|  		if (name && *name) {
 | |
| Index: kconfig/confdata.c
 | |
| ===================================================================
 | |
| --- kconfig.orig/confdata.c
 | |
| +++ kconfig/confdata.c
 | |
| @@ -539,11 +539,7 @@ load:
 | |
|  	free(line);
 | |
|  	fclose(in);
 | |
|  
 | |
| -	name = getenv("KCONFIG_STRICT");
 | |
| -	if (name && *name && conf_warnings) {
 | |
| -		fprintf(stderr, "\nERROR: %d warnings encountered, and warnings are errors.\n\n", conf_warnings);
 | |
| -		return 1;
 | |
| -	}
 | |
| +	kconfig_warnings += conf_warnings;
 | |
|  
 | |
|  	return 0;
 | |
|  }
 | |
| Index: kconfig/lkc.h
 | |
| ===================================================================
 | |
| --- kconfig.orig/lkc.h
 | |
| +++ kconfig/lkc.h
 | |
| @@ -39,6 +39,9 @@ void zconf_nextfile(const char *name);
 | |
|  int zconf_lineno(void);
 | |
|  const char *zconf_curname(void);
 | |
|  
 | |
| +/* conf.c */
 | |
| +extern int kconfig_warnings;
 | |
| +
 | |
|  /* confdata.c */
 | |
|  const char *conf_get_configname(void);
 | |
|  void set_all_choice_values(struct symbol *csym);
 | |
| Index: kconfig/mconf.c
 | |
| ===================================================================
 | |
| --- kconfig.orig/mconf.c
 | |
| +++ kconfig/mconf.c
 | |
| @@ -24,6 +24,8 @@
 | |
|  
 | |
|  #define JUMP_NB			9
 | |
|  
 | |
| +int kconfig_warnings = 0;
 | |
| +
 | |
|  static const char mconf_readme[] =
 | |
|  "Overview\n"
 | |
|  "--------\n"
 | |
| @@ -948,6 +950,7 @@ static void conf_save(void)
 | |
|  static int handle_exit(void)
 | |
|  {
 | |
|  	int res;
 | |
| +	char *env;
 | |
|  
 | |
|  	save_and_exit = 1;
 | |
|  	reset_subtitle();
 | |
| @@ -962,6 +965,13 @@ static int handle_exit(void)
 | |
|  
 | |
|  	end_dialog(saved_x, saved_y);
 | |
|  
 | |
| +	env = getenv("KCONFIG_STRICT");
 | |
| +	if (env && *env && kconfig_warnings) {
 | |
| +		fprintf(stderr, "\n*** ERROR: %d warnings encountered, and "
 | |
| +			"warnings are errors.\n\n", kconfig_warnings);
 | |
| +		res = 2;
 | |
| +	}
 | |
| +
 | |
|  	switch (res) {
 | |
|  	case 0:
 | |
|  		if (conf_write(filename)) {
 | |
| Index: kconfig/nconf.c
 | |
| ===================================================================
 | |
| --- kconfig.orig/nconf.c
 | |
| +++ kconfig/nconf.c
 | |
| @@ -15,6 +15,8 @@
 | |
|  #include "nconf.h"
 | |
|  #include <ctype.h>
 | |
|  
 | |
| +int kconfig_warnings = 0;
 | |
| +
 | |
|  static const char nconf_global_help[] =
 | |
|  "Help windows\n"
 | |
|  "------------\n"
 | |
| @@ -645,6 +647,8 @@ static void set_config_filename(const ch
 | |
|  static int do_exit(void)
 | |
|  {
 | |
|  	int res;
 | |
| +	char *env;
 | |
| +
 | |
|  	if (!conf_get_changed()) {
 | |
|  		global_exit = 1;
 | |
|  		return 0;
 | |
| @@ -660,6 +664,15 @@ static int do_exit(void)
 | |
|  		return -1;
 | |
|  	}
 | |
|  
 | |
| +	env = getenv("KCONFIG_STRICT");
 | |
| +	if (env && *env && kconfig_warnings) {
 | |
| +		btn_dialog(main_window,
 | |
| +			"\nWarnings encountered, and warnings are errors.\n\n",
 | |
| +			1,
 | |
| +			"<OK>");
 | |
| +		res = 2;
 | |
| +	}
 | |
| +
 | |
|  	/* if we got here, the user really wants to exit */
 | |
|  	switch (res) {
 | |
|  	case 0:
 | |
| Index: kconfig/qconf.cc
 | |
| ===================================================================
 | |
| --- kconfig.orig/qconf.cc
 | |
| +++ kconfig/qconf.cc
 | |
| @@ -26,6 +26,8 @@
 | |
|  #include "images.h"
 | |
|  
 | |
|  
 | |
| +int kconfig_warnings = 0;
 | |
| +
 | |
|  static QApplication *configApp;
 | |
|  static ConfigSettings *configSettings;
 | |
|  
 | |
| Index: kconfig/symbol.c
 | |
| ===================================================================
 | |
| --- kconfig.orig/symbol.c
 | |
| +++ kconfig/symbol.c
 | |
| @@ -319,6 +319,7 @@ static void sym_warn_unmet_dep(struct sy
 | |
|  			       "  Selected by [m]:\n");
 | |
|  
 | |
|  	fputs(str_get(&gs), stderr);
 | |
| +	kconfig_warnings++;
 | |
|  }
 | |
|  
 | |
|  void sym_calc_value(struct symbol *sym)
 |