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>
master
Eneas U de Queiroz 4 years ago committed by Petr Štetiar
parent dcf3e63a35
commit 3204430e38

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

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

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

Loading…
Cancel
Save