scripts/build/internals.sh: compile wrapper with portable options.
static linking is not possible on MacOS, and unnessecary on other systems.
The old optimization and warning flags crash the gcc on MacOS
and (imho) are a bit overdone for this software.
2 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
3 * Released under the terms of the GNU GPL v2.0.
15 #define LKC_DIRECT_LINK
18 static void conf(struct menu *menu);
19 static void check_conf(struct menu *menu);
30 } input_mode = ask_all;
33 static int indent = 1;
34 static int valid_stdin = 1;
35 static int sync_kconfig;
37 static char line[128];
38 static struct menu *rootEntry;
40 static char nohelp_text[] = N_("Sorry, no help available for this option yet.\n");
42 static const char *get_help(struct menu *menu)
44 if (menu_has_help(menu))
45 return _(menu_get_help(menu));
50 static void strip(char *str)
59 memmove(str, p, l + 1);
67 static void check_stdin(void)
70 /* For crosstool-NG, we don't care if stdin/stdout got redirected.
71 * In this case, just printf a cariage return, for pretty output.
77 static int conf_askvalue(struct symbol *sym, const char *def)
79 enum symbol_type type = sym_get_type(sym);
81 if (!sym_has_value(sym))
87 if (!sym_is_changable(sym)) {
97 if (sym_has_value(sym)) {
104 fgets(line, 128, stdin);
123 int conf_string(struct menu *menu)
125 struct symbol *sym = menu->sym;
129 printf("%*s%s ", indent - 1, "", _(menu->prompt->text));
130 printf("(%s) ", sym->name);
131 def = sym_get_string_value(sym);
132 if (sym_get_string_value(sym))
133 printf("[%s] ", def);
134 if (!conf_askvalue(sym, def))
141 if (line[1] == '\n') {
142 printf("\n%s\n", get_help(menu));
147 line[strlen(line)-1] = 0;
150 if (def && sym_set_string_value(sym, def))
155 static int conf_sym(struct menu *menu)
157 struct symbol *sym = menu->sym;
159 tristate oldval, newval;
162 printf("%*s%s ", indent - 1, "", _(menu->prompt->text));
164 printf("(%s) ", sym->name);
165 type = sym_get_type(sym);
167 oldval = sym_get_tristate_value(sym);
179 if (oldval != no && sym_tristate_within_range(sym, no))
181 if (oldval != mod && sym_tristate_within_range(sym, mod))
183 if (oldval != yes && sym_tristate_within_range(sym, yes))
185 if (menu_has_help(menu))
188 if (!conf_askvalue(sym, sym_get_string_value(sym)))
196 if (!line[1] || !strcmp(&line[1], "o"))
208 if (!line[1] || !strcmp(&line[1], "es"))
219 if (sym_set_tristate_value(sym, newval))
222 printf("\n%s\n", get_help(menu));
226 static int conf_choice(struct menu *menu)
228 struct symbol *sym, *def_sym;
234 type = sym_get_type(sym);
235 is_new = !sym_has_value(sym);
236 if (sym_is_changable(sym)) {
239 switch (sym_get_tristate_value(sym)) {
248 switch (sym_get_tristate_value(sym)) {
252 printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu)));
262 printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu)));
263 def_sym = sym_get_choice_value(sym);
266 for (child = menu->list; child; child = child->next) {
267 if (!menu_is_visible(child))
270 printf("%*c %s\n", indent, '*', _(menu_get_prompt(child)));
274 if (child->sym == def_sym) {
276 printf("%*c", indent, '>');
278 printf("%*c", indent, ' ');
279 printf(" %d. %s", cnt, _(menu_get_prompt(child)));
280 if (child->sym->name)
281 printf(" (%s)", child->sym->name);
282 if (!sym_has_value(child->sym))
286 printf(_("%*schoice"), indent - 1, "");
291 printf("[1-%d", cnt);
292 if (menu_has_help(menu))
295 switch (input_mode) {
306 fgets(line, 128, stdin);
308 if (line[0] == '?') {
309 printf("\n%s\n", get_help(menu));
314 else if (isdigit(line[0]))
324 for (child = menu->list; child; child = child->next) {
325 if (!child->sym || !menu_is_visible(child))
332 if (line[strlen(line) - 1] == '?') {
333 printf("\n%s\n", get_help(child));
336 sym_set_choice_value(sym, child->sym);
337 for (child = child->list; child; child = child->next) {
346 static void conf(struct menu *menu)
349 struct property *prop;
352 if (!menu_is_visible(menu))
360 switch (prop->type) {
362 if (input_mode == ask_silent && rootEntry != menu) {
367 prompt = menu_get_prompt(menu);
369 printf("%*c\n%*c %s\n%*c\n",
371 indent, '*', _(prompt),
381 if (sym_is_choice(sym)) {
383 if (sym->curr.tri != mod)
402 for (child = menu->list; child; child = child->next)
408 static void check_conf(struct menu *menu)
413 if (!menu_is_visible(menu))
417 if (sym && !sym_has_value(sym)) {
418 if (sym_is_changable(sym) ||
419 (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) {
421 printf(_("*\n* Restart config...\n*\n"));
422 rootEntry = menu_get_parent_menu(menu);
427 for (child = menu->list; child; child = child->next)
431 int main(int ac, char **av)
437 setlocale(LC_ALL, "");
438 bindtextdomain(PACKAGE, LOCALEDIR);
441 while ((opt = getopt(ac, av, "osdD:nmyrh")) != -1) {
444 input_mode = ask_silent;
447 input_mode = ask_silent;
451 input_mode = set_default;
454 input_mode = set_default;
455 defconfig_file = optarg;
461 input_mode = set_mod;
464 input_mode = set_yes;
467 input_mode = set_random;
471 printf(_("See README for usage info\n"));
475 fprintf(stderr, _("See README for usage info\n"));
480 printf(_("%s: Kconfig file missing\n"), av[0]);
487 if (stat(".config", &tmpstat)) {
488 fprintf(stderr, _("***\n"
489 "*** Please run some configurator (e.g. \"make menuconfig\").\n"
495 switch (input_mode) {
498 defconfig_file = conf_get_default_confname();
499 if (conf_read(defconfig_file)) {
501 "*** Can't find default configuration \"%s\"!\n"
502 "***\n"), defconfig_file);
515 name = getenv("KCONFIG_ALLCONFIG");
516 if (name && !stat(name, &tmpstat)) {
517 conf_read_simple(name, S_DEF_USER);
520 switch (input_mode) {
521 case set_no: name = "allno.config"; break;
522 case set_mod: name = "allmod.config"; break;
523 case set_yes: name = "allyes.config"; break;
524 case set_random: name = "allrandom.config"; break;
527 if (!stat(name, &tmpstat))
528 conf_read_simple(name, S_DEF_USER);
529 else if (!stat("all.config", &tmpstat))
530 conf_read_simple("all.config", S_DEF_USER);
537 if (conf_get_changed()) {
538 name = getenv("KCONFIG_NOSILENTUPDATE");
541 _("\n*** Configuration requires explicit update.\n\n"));
545 valid_stdin = isatty(0) && isatty(1) && isatty(2);
548 switch (input_mode) {
550 conf_set_all_new_symbols(def_no);
553 conf_set_all_new_symbols(def_yes);
556 conf_set_all_new_symbols(def_mod);
559 conf_set_all_new_symbols(def_random);
562 conf_set_all_new_symbols(def_default);
566 rootEntry = &rootmenu;
568 input_mode = ask_silent;
571 /* Update until a loop caused no more changes */
574 check_conf(&rootmenu);
580 /* silentoldconfig is used during the build so we shall update autoconf.
581 * All other commands are only used to generate a config.
583 if (conf_get_changed() && conf_write(NULL)) {
584 fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
588 if (conf_write(NULL)) {
589 fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));