From 4f60634364615a9fc00b4b19dbec8c7615820622 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Ko=C4=8D=C3=AD?= Date: Fri, 17 Jul 2015 11:36:12 +0200 Subject: Add small program for generating complete configuration This program generates complete configuration. Written because permute_conf is only writing out configs that are chargeable. --- scripts/allconfig/Makefile | 23 ++++++++++++++ scripts/allconfig/allconfig | Bin 0 -> 130016 bytes scripts/allconfig/allconfig.c | 71 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 scripts/allconfig/Makefile create mode 100755 scripts/allconfig/allconfig create mode 100644 scripts/allconfig/allconfig.c (limited to 'scripts') diff --git a/scripts/allconfig/Makefile b/scripts/allconfig/Makefile new file mode 100644 index 0000000..ffe320e --- /dev/null +++ b/scripts/allconfig/Makefile @@ -0,0 +1,23 @@ +MAKEFLAGS += --no-builtin-rules +.PHONY: all clean +.SUFFIXES: + +all: allconfig + +KCONFIG_PREFIX = ../shared/kconfig +include $(KCONFIG_PREFIX)/files.mk + +SRC = allconfig.c +OBJ = $(patsubst %.c,%.o,$(SRC)) +CFLAGS = -O0 -Wall -ggdb -DDEBUG +INCLUDES = -I../shared + +%.o: %.c + gcc -c $(CFLAGS) -o $@ $^ $(INCLUDES) + +allconfig: $(OBJ) $(KCONFIG_OBJ) + gcc -o $@ $^ + +clean:: + $(RM) $(OBJ) + $(RM) allconfig diff --git a/scripts/allconfig/allconfig b/scripts/allconfig/allconfig new file mode 100755 index 0000000..cc714c1 Binary files /dev/null and b/scripts/allconfig/allconfig differ diff --git a/scripts/allconfig/allconfig.c b/scripts/allconfig/allconfig.c new file mode 100644 index 0000000..65c8b56 --- /dev/null +++ b/scripts/allconfig/allconfig.c @@ -0,0 +1,71 @@ +#include +#include +#include +#include + +#include +#include +#include + +int verbose_level; + +char *kconfig_file; +char *output_config_file; +char *input_config_file; + +int main(int argc, char ** argv) { + verbose_level = 1; + int i; + for (i = 1; i < argc; i++) { + if (!strcmp(argv[i], "-v")) { + verbose_level++; + } else if (kconfig_file == NULL) { + kconfig_file = argv[i]; + } else if (input_config_file == NULL) { + input_config_file = argv[i]; + } else if (output_config_file == NULL) { + output_config_file = argv[i]; + } else { + Eprintf("Unknown parameter: %s\n", argv[i]); + exit(-1); + } + } + + if (output_config_file == NULL || kconfig_file == NULL || input_config_file == NULL) { + Eprintf("Use with parameters: kconfig_file input_config output_config\n"); + exit(-2); + } + + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + conf_parse(kconfig_file); + conf_read(input_config_file); + + struct symbol *sym; + sym = sym_find("MODULES"); + if (sym == NULL) { + Eprintf("Config MODULES not found. Ignoring...\n"); + } else if (sym_get_tristate_value(sym) == yes) { + Eprintf("Config MODULES set as yes. This is incompatible.\n"); + exit(-4); + } + + FILE *f; + f = fopen(output_config_file, "w"); + if (f == NULL) { + Eprintf("Can't write to file %s\n", output_config_file); + exit(-3); + } + + for_all_symbols(i, sym) { + if ((sym->type == S_BOOLEAN || sym->type == S_TRISTATE) && sym->name != NULL) { + fprintf(f, "CONFIG_%s=%s\n", sym->name, + sym_get_tristate_value(sym) == no ? "n" : "y"); + } + } + fclose(f); + + return 0; +} -- cgit v1.2.3