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>
This commit is contained in:
Eneas U de Queiroz 2020-04-07 17:07:24 -03:00 committed by Petr Štetiar
parent dcf3e63a35
commit 3204430e38
3 changed files with 10 additions and 1 deletions

View File

@ -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)"

View File

@ -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

View File

@ -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;
}