Skip to content

Commit

Permalink
kconfig: Update kconfig. Sync with Linux-4.2
Browse files Browse the repository at this point in the history
This change updates the kconfig utility to what is shipped with 4.2.0.

Signed-off-by: Bryan Hundven <[email protected]>
  • Loading branch information
bhundven committed Sep 4, 2015
1 parent 74b09f9 commit 0cffa79
Show file tree
Hide file tree
Showing 31 changed files with 2,119 additions and 1,088 deletions.
4 changes: 4 additions & 0 deletions config/backend.in
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ config BACKEND
bool
default y if IS_A_BACKEND = "y" || IS_A_BACKEND = "Y"

if BACKEND

config BACKEND_ARCH
string
option env="CT_BACKEND_ARCH"
Expand All @@ -19,3 +21,5 @@ config BACKEND_KERNEL
config BACKEND_LIBC
string
option env="CT_BACKEND_LIBC"

endif #if BACKEND
2 changes: 1 addition & 1 deletion ct-ng.comp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ _ct_ng () {
start_steps=$(echo "${steps}" |sed -r -e 's/($| )/\1+/;')
stop_steps=$(echo "${steps}" |sed -r -e 's/(^| )/+\1/;')

actions='help menuconfig oldconfig saveconfig extractconfig
actions='help menuconfig nconfig oldconfig saveconfig extractconfig
defconfig savedefconfig
build build. build-all build-all.
wiki-samples list-samples list-samples-short check-samples
Expand Down
3 changes: 1 addition & 2 deletions kconfig/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ conf
?conf
**.o
**.dep
lex.backup
lex.zconf.c
zconf.lex.c
zconf.hash.c
zconf.tab.c
12 changes: 6 additions & 6 deletions kconfig/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ LDFLAGS =

# Compiler flags to use gettext
ifeq ($(gettext),)
INTL_CFLAGS = -DKBUILD_NO_NLS
INTL_CFLAGS = -Wno-format-security -DKBUILD_NO_NLS
endif

# Compiler and linker flags to use ncurses
Expand Down Expand Up @@ -74,8 +74,8 @@ DEPS += $(nconf_DEP)
@$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -MM $< |$(sed) -r -e 's|([^:]+.o)( *:+)|$(<:.c=.o) $@\2|;' >$@

# Generate the grammar parser
zconf.tab.o: zconf.tab.c zconf.hash.c lex.zconf.c
zconf.tab.dep: zconf.tab.c zconf.hash.c lex.zconf.c
zconf.tab.o: zconf.tab.c zconf.hash.c zconf.lex.c
zconf.tab.dep: zconf.tab.c zconf.hash.c zconf.lex.c

.PRECIOUS: zconf.tab.c
zconf.tab.c: zconf.y
Expand All @@ -84,9 +84,9 @@ zconf.tab.c: zconf.y

zconf.hash.c: zconf.gperf
@echo " GPERF '$@'"
@$(gperf) < $< > $@
@$(gperf) -C < $< > $@

lex.zconf.c: zconf.l
zconf.lex.c: zconf.l
@echo " LEX '$@'"
@flex -L -Pzconf -o$@ $<

Expand Down Expand Up @@ -114,4 +114,4 @@ conf: $(COMMON_OBJ) $(conf_OBJ)
clean:
@echo " RM 'kconfig'"
@rm -f conf mconf nconf $(ALL_OBJS) $(ALL_DEPS)
@rm -f rm -f zconf.tab.c zconf.hash.c lex.zconf.c lex.backup
@rm -f rm -f zconf.tab.c zconf.hash.c zconf.lex.c lex.backup
3 changes: 1 addition & 2 deletions kconfig/check.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/sh
# Needed for systems without gettext
$* -xc -o /dev/null - > /dev/null 2>&1 << EOF
$* -x c -o /dev/null - > /dev/null 2>&1 << EOF
#include <libintl.h>
int main()
{
Expand All @@ -11,4 +11,3 @@ EOF
if [ ! "$?" -eq "0" ]; then
echo -DKBUILD_NO_NLS;
fi

105 changes: 78 additions & 27 deletions kconfig/conf.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,13 @@
#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);
static void xfgets(char *str, int size, FILE *in);

enum input_mode {
oldaskconfig,
Expand All @@ -32,12 +33,11 @@ enum input_mode {
defconfig,
savedefconfig,
listnewconfig,
oldnoconfig,
olddefconfig,
} input_mode = oldaskconfig;

char *defconfig_file;

static int indent = 1;
static int tty_stdio;
static int valid_stdin = 1;
static int sync_kconfig;
static int conf_cnt;
Expand Down Expand Up @@ -106,9 +106,12 @@ static int conf_askvalue(struct symbol *sym, const char *def)
return 0;
}
check_stdin();
/* fall through */
case oldaskconfig:
fflush(stdout);
xfgets(line, 128, stdin);
if (!tty_stdio)
printf("\n");
return 1;
default:
break;
Expand Down Expand Up @@ -150,6 +153,7 @@ static int conf_string(struct menu *menu)
def = NULL;
break;
}
/* fall through */
default:
line[strlen(line)-1] = 0;
def = line;
Expand Down Expand Up @@ -304,6 +308,7 @@ static int conf_choice(struct menu *menu)
break;
}
check_stdin();
/* fall through */
case oldaskconfig:
fflush(stdout);
xfgets(line, 128, stdin);
Expand Down Expand Up @@ -364,11 +369,12 @@ static void conf(struct menu *menu)
case P_MENU:
if ((input_mode == silentoldconfig ||
input_mode == listnewconfig ||
input_mode == oldnoconfig) &&
input_mode == olddefconfig) &&
rootEntry != menu) {
check_conf(menu);
return;
}
/* fall through */
case P_COMMENT:
prompt = menu_get_prompt(menu);
if (prompt)
Expand Down Expand Up @@ -427,7 +433,7 @@ static void check_conf(struct menu *menu)
if (sym->name && !sym_is_choice_value(sym)) {
printf("%s%s\n", CONFIG_, sym->name);
}
} else if (input_mode != oldnoconfig) {
} else if (input_mode != olddefconfig) {
if (!conf_cnt++)
printf(_("*\n* Restart config...\n*\n"));
rootEntry = menu_get_parent_menu(menu);
Expand All @@ -452,21 +458,34 @@ static struct option long_opts[] = {
{"alldefconfig", no_argument, NULL, alldefconfig},
{"randconfig", no_argument, NULL, randconfig},
{"listnewconfig", no_argument, NULL, listnewconfig},
{"oldnoconfig", no_argument, NULL, oldnoconfig},
{"olddefconfig", no_argument, NULL, olddefconfig},
/*
* oldnoconfig is an alias of olddefconfig, because people already
* are dependent on its behavior(sets new symbols to their default
* value but not 'n') with the counter-intuitive name.
*/
{"oldnoconfig", no_argument, NULL, olddefconfig},
{NULL, 0, NULL, 0}
};

int main(int ac, char **av)
{
const char *progname = av[0];
int opt;
const char *name;
const char *name, *defconfig_file = NULL /* gcc uninit */;
struct stat tmpstat;

setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);

while ((opt = getopt_long(ac, av, "", long_opts, NULL)) != -1) {
tty_stdio = isatty(0) && isatty(1) && isatty(2);

while ((opt = getopt_long(ac, av, "s", long_opts, NULL)) != -1) {
if (opt == 's') {
conf_set_message_callback(NULL);
continue;
}
input_mode = (enum input_mode)opt;
switch (opt) {
case silentoldconfig:
Expand All @@ -480,17 +499,36 @@ int main(int ac, char **av)
{
struct timeval now;
unsigned int seed;
char *seed_env;

/*
* Use microseconds derived seed,
* compensate for systems where it may be zero
*/
gettimeofday(&now, NULL);

seed = (unsigned int)((now.tv_sec + 1) * (now.tv_usec + 1));

seed_env = getenv("KCONFIG_SEED");
if( seed_env && *seed_env ) {
char *endp;
int tmp = (int)strtol(seed_env, &endp, 0);
if (*endp == '\0') {
seed = tmp;
}
}
fprintf( stderr, "KCONFIG_SEED=0x%X\n", seed );
srand(seed);
break;
}
case oldaskconfig:
case oldconfig:
case allnoconfig:
case allyesconfig:
case allmodconfig:
case alldefconfig:
case listnewconfig:
case olddefconfig:
break;
case '?':
fprintf(stderr, _("See README for usage info\n"));
exit(1);
Expand Down Expand Up @@ -533,7 +571,7 @@ int main(int ac, char **av)
case oldaskconfig:
case oldconfig:
case listnewconfig:
case oldnoconfig:
case olddefconfig:
conf_read(NULL);
break;
case allnoconfig:
Expand All @@ -542,8 +580,15 @@ int main(int ac, char **av)
case alldefconfig:
case randconfig:
name = getenv("KCONFIG_ALLCONFIG");
if (name && !stat(name, &tmpstat)) {
conf_read_simple(name, S_DEF_USER);
if (!name)
break;
if ((strcmp(name, "") != 0) && (strcmp(name, "1") != 0)) {
if (conf_read_simple(name, S_DEF_USER)) {
fprintf(stderr,
_("*** Can't read seed configuration \"%s\"!\n"),
name);
exit(1);
}
break;
}
switch (input_mode) {
Expand All @@ -554,10 +599,13 @@ int main(int ac, char **av)
case randconfig: name = "allrandom.config"; break;
default: break;
}
if (!stat(name, &tmpstat))
conf_read_simple(name, S_DEF_USER);
else if (!stat("all.config", &tmpstat))
conf_read_simple("all.config", S_DEF_USER);
if (conf_read_simple(name, S_DEF_USER) &&
conf_read_simple("all.config", S_DEF_USER)) {
fprintf(stderr,
_("*** KCONFIG_ALLCONFIG set, but no \"%s\" or \"all.config\" file found\n"),
name);
exit(1);
}
break;
default:
break;
Expand All @@ -572,7 +620,7 @@ int main(int ac, char **av)
return 1;
}
}
valid_stdin = isatty(0) && isatty(1) && isatty(2);
valid_stdin = tty_stdio;
}

switch (input_mode) {
Expand All @@ -589,7 +637,8 @@ int main(int ac, char **av)
conf_set_all_new_symbols(def_default);
break;
case randconfig:
conf_set_all_new_symbols(def_random);
/* Really nothing to do in this loop */
while (conf_set_all_new_symbols(def_random)) ;
break;
case defconfig:
conf_set_all_new_symbols(def_default);
Expand All @@ -603,15 +652,15 @@ int main(int ac, char **av)
/* fall through */
case oldconfig:
case listnewconfig:
case oldnoconfig:
case olddefconfig:
case silentoldconfig:
/* Update until a loop caused no more changes */
do {
conf_cnt = 0;
check_conf(&rootmenu);
} while (conf_cnt &&
(input_mode != listnewconfig &&
input_mode != oldnoconfig));
input_mode != olddefconfig));
break;
}

Expand All @@ -623,11 +672,15 @@ int main(int ac, char **av)
fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
exit(1);
}
/* In crosstool-NG, we do not use the autoconf stuff */
/* In crosstool-NG, we do not use the autoconf stuff
if (conf_write_autoconf()) {
fprintf(stderr, _("\n*** Error during update of the configuration.\n\n"));
return 1;
} */
} else if (input_mode == savedefconfig) {
if (conf_write_defconfig(defconfig_file)) {
fprintf(stderr, _("n*** Error while saving defconfig to: %s\n\n"),
defconfig_file);
defconfig_file);
return 1;
}
} else if (input_mode != listnewconfig) {
Expand All @@ -638,13 +691,11 @@ int main(int ac, char **av)
}
return 0;
}

/*
* Helper function to facilitate fgets() by Jean Sacren.
*/
void xfgets(str, size, in)
char *str;
int size;
FILE *in;
void xfgets(char *str, int size, FILE *in)
{
if (fgets(str, size, in) == NULL)
fprintf(stderr, "\nError in reading or end of file.\n");
Expand Down
Loading

0 comments on commit 0cffa79

Please sign in to comment.