summaryrefslogtreecommitdiff
path: root/kconfig/conf.c
diff options
context:
space:
mode:
authorChris Packham <judge.packham@gmail.com>2020-12-09 08:53:59 (GMT)
committerChris Packham <judge.packham@gmail.com>2021-02-02 07:06:32 (GMT)
commitdf94f6803fe17fd1030ef08ff0463e437b9323b9 (patch)
tree106d046627774f58f912d21a5ea1f92004c4310b /kconfig/conf.c
parent8fbf528681d1fa64a5d6fa6286fbf6f256c10a80 (diff)
kconfig: Sync with upstream v4.19
This commit introduces the following upstream changes: fd65465b7016 kconfig: do not require pkg-config on make {menu,n}config bc8d2e20a3eb kconfig: remove a spurious self-assignment 9a9ddcf47831 kconfig: suppress "configuration written to .config" for syncconfig 98a4afbfafd2 kconfig: fix "Can't open ..." in parallel build f498926c47aa kconfig: improve the recursive dependency report 5e8c5299d315 kconfig: report recursive dependency involving 'imply' f1575595d156 kconfig: error out when seeing recursive dependency 4bf6a9af0e91 kconfig: add build-only configurator targets 1880861226c1 kconfig: remove P_ENV property type c151272d1687 kconfig: remove unused sym_get_env_prop() function 56869d45e364 kconfig: fix the rule of mainmenu_stmt symbol 00c864f8903d kconfig: allow all config targets to write auto.conf if missing 16952b77d8b5 kconfig: make syncconfig update .config regardless of sym_change_count 79123b1389cc kconfig: create directories needed for syncconfig by itself adc18acf42a1 kconfig: remove unneeded directory generation from local*config 0608182ad542 kconfig: split out useful helpers in confdata.c a2ff4040151a kconfig: rename file_write_dep and move it to confdata.c 5accd7f3360e kconfig: handle format string before calling conf_message_callback() 693359f7ac90 kconfig: rename SYMBOL_AUTO to SYMBOL_NO_WRITE 4ab3b80159d4 kconfig: check for pkg-config on make {menu,n,g,x}config 8377bd2b9ee1 kbuild: Rename HOST_LOADLIBES to KBUILD_HOSTLDLIBS Signed-off-by: Chris Packham <judge.packham@gmail.com>
Diffstat (limited to 'kconfig/conf.c')
-rw-r--r--kconfig/conf.c46
1 files changed, 28 insertions, 18 deletions
diff --git a/kconfig/conf.c b/kconfig/conf.c
index abd5238..a0db354 100644
--- a/kconfig/conf.c
+++ b/kconfig/conf.c
@@ -475,6 +475,7 @@ int main(int ac, char **av)
int opt;
const char *name, *defconfig_file = NULL /* gcc uninit */;
struct stat tmpstat;
+ int no_conf_write = 0;
tty_stdio = isatty(0) && isatty(1);
@@ -486,6 +487,11 @@ int main(int ac, char **av)
input_mode = (enum input_mode)opt;
switch (opt) {
case syncconfig:
+ /*
+ * syncconfig is invoked during the build stage.
+ * Suppress distracting "configuration written to ..."
+ */
+ conf_set_message_callback(NULL);
sync_kconfig = 1;
break;
case defconfig:
@@ -612,13 +618,14 @@ int main(int ac, char **av)
}
if (sync_kconfig) {
- if (conf_get_changed()) {
- name = getenv("KCONFIG_NOSILENTUPDATE");
- if (name && *name) {
+ name = getenv("KCONFIG_NOSILENTUPDATE");
+ if (name && *name) {
+ if (conf_get_changed()) {
fprintf(stderr,
"\n*** The configuration requires explicit update.\n\n");
return 1;
}
+ no_conf_write = 1;
}
}
@@ -663,30 +670,33 @@ int main(int ac, char **av)
break;
}
- if (sync_kconfig) {
- /* syncconfig is used during the build so we shall update autoconf.
- * All other commands are only used to generate a config.
- */
- if (conf_get_changed() && conf_write(NULL)) {
- fprintf(stderr, "\n*** Error during writing of the configuration.\n\n");
- exit(1);
- }
- /* 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 (input_mode == savedefconfig) {
if (conf_write_defconfig(defconfig_file)) {
fprintf(stderr, "n*** Error while saving defconfig to: %s\n\n",
defconfig_file);
return 1;
}
} else if (input_mode != listnewconfig) {
- if (conf_write(NULL)) {
+ if (!no_conf_write && conf_write(NULL)) {
fprintf(stderr, "\n*** Error during writing of the configuration.\n\n");
exit(1);
}
+
+ /*
+ * Create auto.conf if it does not exist.
+ * This prevents GNU Make 4.1 or older from emitting
+ * "include/config/auto.conf: No such file or directory"
+ * in the top-level Makefile
+ *
+ * syncconfig always creates or updates auto.conf because it is
+ * used during the build.
+ */
+ /* In crosstool-NG, we do not use the autoconf stuff
+ if (conf_write_autoconf(sync_kconfig) && sync_kconfig) {
+ fprintf(stderr,
+ "\n*** Error during sync of the configuration.\n\n");
+ return 1;
+ }*/
}
return 0;
}