aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEneas U de Queiroz <cotequeiroz@gmail.com>2020-04-07 17:07:24 -0300
committerPetr Štetiar <ynezz@true.cz>2020-04-09 12:51:10 +0200
commit3204430e38f1a2ba7fda9471720a2a1042adf5e0 (patch)
tree09c37c01356709c5596609e22616f7d9f208a79c
parentdcf3e63a35d05e7e5103819c0f17195bfafe9baa (diff)
downloadupstream-3204430e38f1a2ba7fda9471720a2a1042adf5e0.tar.gz
upstream-3204430e38f1a2ba7fda9471720a2a1042adf5e0.tar.bz2
upstream-3204430e38f1a2ba7fda9471720a2a1042adf5e0.zip
build: add option to warn on recursive dependency
This addes the option to treat recursive dependencies as warnings instead of errors, by running make with WARN_RECURSIVE_DEP=1. Note that the script/config targets will not get rebuilt when you add or remove WARN_RECURSIVE_DEP while running make. One must run 'make config-clean' before building config with a different setting. Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
-rw-r--r--include/toplevel.mk2
-rw-r--r--scripts/config/README4
-rw-r--r--scripts/config/symbol.c5
3 files changed, 10 insertions, 1 deletions
diff --git a/include/toplevel.mk b/include/toplevel.mk
index 2965f75c7c..def80503dd 100644
--- a/include/toplevel.mk
+++ b/include/toplevel.mk
@@ -102,7 +102,7 @@ prepare-tmpinfo: FORCE
ifneq ($(DISTRO_PKG_CONFIG),)
scripts/config/%onf: export PATH:=$(dir $(DISTRO_PKG_CONFIG)):$(PATH)
endif
-scripts/config/%onf: CFLAGS+= -O2
+scripts/config/%onf: CFLAGS+= -O2 $(if $(WARN_RECURSIVE_DEP),-DWARN_RECURSIVE_DEP)
scripts/config/%onf:
@$(_SINGLE)$(SUBMAKE) -s -C scripts/config $(notdir $@) CC="$(HOSTCC_WRAPPER)"
diff --git a/scripts/config/README b/scripts/config/README
index ac5f094ff2..81243e8016 100644
--- a/scripts/config/README
+++ b/scripts/config/README
@@ -16,6 +16,10 @@ OpenWrt Buildroot:
- reverted an upstream change that avoids writing symbols that are not
visible to .config, which breaks OpenWrt busybox's '.config' generation
logic.
+ - add a compilation option (-DWARN_RECURSIVE_DEP) to treat recursive deps
+ as a warning, avoiding a complete build failure because of unrelated or
+ minor recursive deps, or making a scrict check before commiting a change
+ that may cause one.
- use pre-built *.lex.c *.tab.[ch] files by default, to avoid depending on
flex & bison. Rebuild/remove these files only if running make with
BUILD_SHIPPED_FILES defined
diff --git a/scripts/config/symbol.c b/scripts/config/symbol.c
index b1dd9be29d..5c6f540314 100644
--- a/scripts/config/symbol.c
+++ b/scripts/config/symbol.c
@@ -1250,6 +1250,11 @@ struct symbol *sym_check_deps(struct symbol *sym)
sym->flags &= ~SYMBOL_CHECK;
}
+#ifdef WARN_RECURSIVE_DEP
+ if (sym2 && sym2 == sym)
+ sym2 = NULL;
+#endif
+
return sym2;
}