Browse Source

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 <[email protected]>
Eneas U de Queiroz 5 years ago
parent
commit
3204430e38
3 changed files with 10 additions and 1 deletions
  1. 1 1
      include/toplevel.mk
  2. 4 0
      scripts/config/README
  3. 5 0
      scripts/config/symbol.c

+ 1 - 1
include/toplevel.mk

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

+ 4 - 0
scripts/config/README

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

+ 5 - 0
scripts/config/symbol.c

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