diff options
90 files changed, 11952 insertions, 2507 deletions
diff --git a/.gitignore b/.gitignore index 244b24f80..2a5c6bb3b 100644 --- a/.gitignore +++ b/.gitignore @@ -47,11 +47,11 @@ /make.log /dl /package/Config.in.auto* -/package/Config.in.collections /package/pkgconfigs.d/ /extra/ /target/*/Config.in.arch /target/*/Config.in.systems +/target/config/Config.in.appliances /target/config/Config.in.system* /target/config/Config.in.arch* /target/config/Config.in.scripts diff --git a/BSDmakefile b/BSDmakefile index d7f7992aa..ddf869106 100644 --- a/BSDmakefile +++ b/BSDmakefile @@ -19,7 +19,7 @@ ${.TARGETS}: _subdir _subdir: ${_subdir_dep} cd ${.CURDIR}/${subdir} && ADK_TOPDIR=${.CURDIR} DEVELOPER=1 \ - ${GMAKE} VERBOSE=1 ${.MFLAGS} ${_subdir} + ${GMAKE} ADK_VERBOSE=1 ${.MFLAGS} ${_subdir} . include "${.CURDIR}/prereq.mk" .else @@ -1,17 +1,23 @@ # This file is part of the OpenADK project. OpenADK is copyrighted # material, please see the LICENCE file in the top-level directory. -config MODULES - boolean +mainmenu "OpenADK Configuration" + +# enable tristate +config ADK_MODULES + bool + option modules default y config ADK_HAVE_DOT_CONFIG boolean default y -mainmenu "OpenADK Configuration" +source "target/config/Config.in.appliances" + +menu "Target configuration" + visible if !ADK_CHOOSE_APPLIANCE -source "target/config/Config.in.system.choose" source "target/config/Config.in.cpu" source "target/config/Config.in.hardware" source "target/config/Config.in.kernel" @@ -19,33 +25,28 @@ source "target/config/Config.in.arch" source "target/config/Config.in.system" source "target/config/Config.in.endian" source "target/config/Config.in.arm" -source "target/config/Config.in.abi" source "target/config/Config.in.cris" source "target/config/Config.in.x86" source "target/config/Config.in.qemu" source "target/config/Config.in.qemuopts" - -menu "Target configuration" -depends on !ADK_CHOOSE_TARGET_ARCH && !ADK_CHOOSE_TARGET_SYSTEM source "target/config/Config.in.kernelversion" source "target/config/Config.in.libc" +source "target/config/Config.in.abi" source "target/config/Config.in.target" + endmenu source "target/config/Config.in" -menu "Package collection" -depends on !ADK_CHOOSE_TARGET_ARCH && !ADK_CHOOSE_TARGET_SYSTEM -source "package/Config.in.collections" -endmenu - menu "Package selection" -depends on !ADK_CHOOSE_TARGET_ARCH && !ADK_CHOOSE_TARGET_SYSTEM + visible if !ADK_CHOOSE_APPLIANCE source "package/Config.in.auto.global" source "package/Config.in" menu "Package options" + visible if !ADK_CHOOSE_APPLIANCE + config ADK_LEAVE_ETC_ALONE boolean "do not install anything into /etc" default n @@ -90,12 +91,12 @@ endmenu endmenu menu "Runtime configuration" -depends on !ADK_CHOOSE_TARGET_ARCH && !ADK_CHOOSE_TARGET_SYSTEM + visible if !ADK_CHOOSE_APPLIANCE source "target/config/Config.in.runtime" endmenu menu "Kernel configuration" -depends on !ADK_CHOOSE_TARGET_ARCH && !ADK_CHOOSE_TARGET_SYSTEM + visible if !ADK_CHOOSE_APPLIANCE source "target/linux/Config.in" endmenu diff --git a/GNUmakefile b/GNUmakefile index 698c0ea68..1cd73044e 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -16,7 +16,7 @@ ${MAKECMDGOALS}: _subdir _subdir: ${_subdir_dep} cd ${subdir} && ADK_TOPDIR=${ADK_TOPDIR} DEVELOPER=1 \ - make VERBOSE=1 ${MAKEFLAGS} ${MAKECMDGOALS} + make ADK_VERBOSE=1 ${MAKEFLAGS} ${MAKECMDGOALS} include prereq.mk else @@ -9,7 +9,7 @@ all: .prereq_done checkreloc v: .prereq_done @(echo; echo "Build started on $$(LC_ALL=C LANGUAGE=C date)"; \ - set -x; ${_UNLIMIT} ${GMAKE_FMK} VERBOSE=1 all) 2>&1 | tee -a make.log + set -x; ${_UNLIMIT} ${GMAKE_FMK} ADK_VERBOSE=1 all) 2>&1 | tee -a make.log help: @echo 'Configuration targets:' @@ -17,8 +17,9 @@ help: @echo ' menuconfig - Update current config utilising a menu based program' @echo ' (default when .config does not exist)' @echo ' oldconfig - Update current config utilising a provided .configs base' - @echo ' allmodconfig - New config selecting all packages as modules when possible' - @echo ' allconfig - New config selecting all packages when possible' + @echo ' defconfig - New config with defaults' + @echo ' allmodconfig - New config selecting all symbols with m' + @echo ' allyesconfig - New config selecting all symbols with y' @echo ' allnoconfig - New config where all options are answered with no' @echo '' @echo 'Help targets:' @@ -85,7 +86,7 @@ config: .prereq_done @${GMAKE_INV} _config W= oldconfig: .prereq_done - @${GMAKE_INV} _config W=-o + @${GMAKE_INV} _config W=--oldconfig download: .prereq_done @${GMAKE_INV} toolchain/download @@ -132,13 +133,13 @@ defconfig: .prereq_done @${GMAKE_INV} defconfig allnoconfig: .prereq_done - @${GMAKE_INV} _config W=-n + @${GMAKE_INV} KCONFIG_ALLCONFIG=all.config _config W=--allnoconfig -allconfig: .prereq_done - @${GMAKE_INV} _mconfig W=-y RCONFIG=Config.in +allyesconfig: .prereq_done + @${GMAKE_INV} KCONFIG_ALLCONFIG=all.config _config W=--allyesconfig allmodconfig: .prereq_done - @${GMAKE_INV} _mconfig W=-o RCONFIG=Config.in + @${GMAKE_INV} KCONFIG_ALLCONFIG=all.config _config W=--allmodconfig package_index: .prereq_done @${GMAKE_INV} package_index diff --git a/adk/config/Makefile b/adk/config/Makefile index 7e91da1bf..b6c253f18 100644 --- a/adk/config/Makefile +++ b/adk/config/Makefile @@ -78,7 +78,7 @@ lkc_defs.h: lkc_proto.h # The following requires flex/bison # By default we use the _shipped versions, uncomment the # following line if you are modifying the flex/bison src. -#LKC_GENPARSER:= 1 +# LKC_GENPARSER:= 1 ifdef LKC_GENPARSER @@ -86,7 +86,7 @@ ifdef LKC_GENPARSER bison -t -d -v -b $* -p $(notdir $*) $< %.hash.c: %.gperf - gperf < $< > $@ + gperf -t --output-file zconf.hash.c -a -C -E -g -k '1,3,$$' -p -t zconf.gperf lex.%.c: %.l flex -P$(notdir $*) -o$@ $< diff --git a/adk/config/conf.c b/adk/config/conf.c index 412656fec..fef75fc75 100644 --- a/adk/config/conf.c +++ b/adk/config/conf.c @@ -10,42 +10,48 @@ #include <string.h> #include <time.h> #include <unistd.h> +#include <getopt.h> #include <sys/stat.h> #include <sys/time.h> +#include <errno.h> -#define LKC_DIRECT_LINK #include "lkc.h" static void conf(struct menu *menu); static void check_conf(struct menu *menu); - -enum { - ask_all, - ask_new, - ask_silent, - set_default, - set_yes, - set_mod, - set_no, - set_random -} input_mode = ask_all; -char *defconfig_file; +static void xfgets(char *str, int size, FILE *in); + +enum input_mode { + oldaskconfig, + silentoldconfig, + oldconfig, + allnoconfig, + allyesconfig, + allmodconfig, + alldefconfig, + randconfig, + defconfig, + savedefconfig, + listnewconfig, + olddefconfig, +} input_mode = oldaskconfig; static int indent = 1; +static int tty_stdio; static int valid_stdin = 1; static int sync_kconfig; static int conf_cnt; static char line[128]; static struct menu *rootEntry; -static char nohelp_text[] = N_("Sorry, no help available for this option yet.\n"); - -static const char *get_help(struct menu *menu) +static void print_help(struct menu *menu) { - if (menu_has_help(menu)) - return _(menu_get_help(menu)); - else - return nohelp_text; + struct gstr help = str_new(); + + menu_get_ext_help(menu, &help); + + printf("\n%s\n", str_get(&help)); + str_free(&help); } static void strip(char *str) @@ -68,9 +74,9 @@ static void strip(char *str) static void check_stdin(void) { if (!valid_stdin) { - printf("aborted!\n\n"); - printf("Console input/output is redirected. "); - printf("Run 'make oldconfig' to update configuration.\n\n"); + printf(_("aborted!\n\n")); + printf(_("Console input/output is redirected. ")); + printf(_("Run 'make oldconfig' to update configuration.\n\n")); exit(1); } } @@ -80,7 +86,7 @@ static int conf_askvalue(struct symbol *sym, const char *def) enum symbol_type type = sym_get_type(sym); if (!sym_has_value(sym)) - printf("(NEW) "); + printf(_("(NEW) ")); line[0] = '\n'; line[1] = 0; @@ -93,17 +99,20 @@ static int conf_askvalue(struct symbol *sym, const char *def) } switch (input_mode) { - case ask_new: - case ask_silent: + case oldconfig: + case silentoldconfig: if (sym_has_value(sym)) { printf("%s\n", def); return 0; } check_stdin(); - case ask_all: + /* fall through */ + case oldaskconfig: fflush(stdout); - if (fgets(line, 128, stdin) != NULL) - return 1; + xfgets(line, 128, stdin); + if (!tty_stdio) + printf("\n"); + return 1; default: break; } @@ -121,7 +130,7 @@ static int conf_askvalue(struct symbol *sym, const char *def) return 1; } -int conf_string(struct menu *menu) +static int conf_string(struct menu *menu) { struct symbol *sym = menu->sym; const char *def; @@ -140,10 +149,11 @@ int conf_string(struct menu *menu) case '?': /* print help */ if (line[1] == '\n') { - printf("\n%s\n", get_help(menu)); + print_help(menu); def = NULL; break; } + /* fall through */ default: line[strlen(line)-1] = 0; def = line; @@ -156,14 +166,12 @@ int conf_string(struct menu *menu) static int conf_sym(struct menu *menu) { struct symbol *sym = menu->sym; - int type; tristate oldval, newval; while (1) { printf("%*s%s ", indent - 1, "", _(menu->prompt->text)); if (sym->name) printf("(%s) ", sym->name); - type = sym_get_type(sym); putchar('['); oldval = sym_get_tristate_value(sym); switch (oldval) { @@ -220,7 +228,7 @@ static int conf_sym(struct menu *menu) if (sym_set_tristate_value(sym, newval)) return 0; help: - printf("\n%s\n", get_help(menu)); + print_help(menu); } } @@ -228,11 +236,9 @@ static int conf_choice(struct menu *menu) { struct symbol *sym, *def_sym; struct menu *child; - int type; bool is_new; sym = menu->sym; - type = sym_get_type(sym); is_new = !sym_has_value(sym); if (sym_is_changable(sym)) { conf_sym(menu); @@ -281,7 +287,7 @@ static int conf_choice(struct menu *menu) if (child->sym->name) printf(" (%s)", child->sym->name); if (!sym_has_value(child->sym)) - printf(" (NEW)"); + printf(_(" (NEW)")); printf("\n"); } printf(_("%*schoice"), indent - 1, ""); @@ -294,20 +300,21 @@ static int conf_choice(struct menu *menu) printf("?"); printf("]: "); switch (input_mode) { - case ask_new: - case ask_silent: + case oldconfig: + case silentoldconfig: if (!is_new) { cnt = def; printf("%d\n", cnt); break; } check_stdin(); - case ask_all: + /* fall through */ + case oldaskconfig: fflush(stdout); - if (fgets(line, 128, stdin) != NULL) - strip(line); + xfgets(line, 128, stdin); + strip(line); if (line[0] == '?') { - printf("\n%s\n", get_help(menu)); + print_help(menu); continue; } if (!line[0]) @@ -330,8 +337,8 @@ static int conf_choice(struct menu *menu) } if (!child) continue; - if (line[strlen(line) - 1] == '?') { - printf("\n%s\n", get_help(child)); + if (line[0] && line[strlen(line) - 1] == '?') { + print_help(child); continue; } sym_set_choice_value(sym, child->sym); @@ -360,10 +367,14 @@ static void conf(struct menu *menu) switch (prop->type) { case P_MENU: - if (input_mode == ask_silent && rootEntry != menu) { + if ((input_mode == silentoldconfig || + input_mode == listnewconfig || + input_mode == olddefconfig) && + rootEntry != menu) { check_conf(menu); return; } + /* fall through */ case P_COMMENT: prompt = menu_get_prompt(menu); if (prompt) @@ -418,10 +429,16 @@ static void check_conf(struct menu *menu) if (sym && !sym_has_value(sym)) { if (sym_is_changable(sym) || (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) { |