1commit ab0cc6067d5a00182e89fbec82b942eb3d803204
2Author: Patrick Georgi <[email protected]>
3Date:   Fri Nov 22 22:08:15 2019 +0100
4
5    util/kconfig: Allow emitting false booleans into kconfig output
6
7    This is controlled by an environment variable so the same tool is
8    useful in different contexts.
9
10    Change-Id: I9e62b05e45709f1539e455e2eed37308609be15e
11    Signed-off-by: Patrick Georgi <[email protected]>
12
13Index: kconfig/confdata.c
14===================================================================
15--- kconfig.orig/confdata.c
16+++ kconfig/confdata.c
17@@ -731,7 +731,12 @@ static void print_symbol_for_dotconfig(F
18
19 static void print_symbol_for_autoconf(FILE *fp, struct symbol *sym)
20 {
21-	__print_symbol(fp, sym, OUTPUT_N_NONE, false);
22+	int print_negatives = getenv("KCONFIG_NEGATIVES") != NULL;
23+	enum output_n out = OUTPUT_N_NONE;
24+	if (print_negatives) {
25+		out = OUTPUT_N;
26+	}
27+	__print_symbol(fp, sym, out, false);
28 }
29
30 void print_symbol_for_listconfig(struct symbol *sym)
31@@ -756,6 +761,10 @@ static void print_symbol_for_c(FILE *fp,
32 	case S_TRISTATE:
33 		switch (*val) {
34 		case 'n':
35+			if (getenv("KCONFIG_NEGATIVES") != NULL) {
36+				val = "0";
37+				break;
38+			}
39 			return;
40 		case 'm':
41 			sym_suffix = "_MODULE";
42@@ -767,6 +776,12 @@ static void print_symbol_for_c(FILE *fp,
43 	case S_HEX:
44 		if (val[0] != '0' || (val[1] != 'x' && val[1] != 'X'))
45 			val_prefix = "0x";
46+		/* fall through */
47+	case S_INT:
48+		if (val[0] == '\0') {
49+			val = "0";
50+			val_prefix = "";
51+		}
52 		break;
53 	case S_STRING:
54 		escaped = escape_string_value(val);
55@@ -1183,8 +1198,9 @@ static int __conf_write_autoconf(const c
56
57 	conf_write_heading(file, comment_style);
58
59+	int print_negatives = getenv("KCONFIG_NEGATIVES") != NULL;
60 	for_all_symbols(i, sym)
61-		if ((sym->flags & SYMBOL_WRITE) && sym->name)
62+		if (((sym->flags & SYMBOL_WRITE) || (print_negatives && sym->type != S_STRING)) && sym->name)
63 			print_symbol(file, sym);
64
65 	fflush(file);
66