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),) ifneq ($(DISTRO_PKG_CONFIG),)
scripts/config/%onf: export PATH:=$(dir $(DISTRO_PKG_CONFIG)):$(PATH) scripts/config/%onf: export PATH:=$(dir $(DISTRO_PKG_CONFIG)):$(PATH)
endif endif
scripts/config/%onf: CFLAGS+= -O2 scripts/config/%onf: CFLAGS+= -O2 $(if $(WARN_RECURSIVE_DEP),-DWARN_RECURSIVE_DEP)
scripts/config/%onf: scripts/config/%onf:
@$(_SINGLE)$(SUBMAKE) -s -C scripts/config $(notdir $@) CC="$(HOSTCC_WRAPPER)" @$(_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 - reverted an upstream change that avoids writing symbols that are not
visible to .config, which breaks OpenWrt busybox's '.config' generation visible to .config, which breaks OpenWrt busybox's '.config' generation
logic. 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 - 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 flex & bison. Rebuild/remove these files only if running make with
BUILD_SHIPPED_FILES defined BUILD_SHIPPED_FILES defined

View File

@ -1250,6 +1250,11 @@ struct symbol *sym_check_deps(struct symbol *sym)
sym->flags &= ~SYMBOL_CHECK; sym->flags &= ~SYMBOL_CHECK;
} }
#ifdef WARN_RECURSIVE_DEP
if (sym2 && sym2 == sym)
sym2 = NULL;
#endif
return sym2; return sym2;
} }