From: David Lamparter Date: Tue, 28 Apr 2020 11:17:20 +0000 (+0200) Subject: build: extract xrefs X-Git-Tag: base_8.0~307^2~5 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=a1e6ab1e9334a4f266cd7133f1deb2193811f386;p=matthieu%2Ffrr.git build: extract xrefs Signed-off-by: David Lamparter --- diff --git a/.gitignore b/.gitignore index fbbb04b60c..97349769ad 100644 --- a/.gitignore +++ b/.gitignore @@ -59,6 +59,7 @@ *.cg.json *.cg.dot *.cg.svg +*.xref ### gcov outputs diff --git a/lib/subdir.am b/lib/subdir.am index 15c6492140..96d5fcba30 100644 --- a/lib/subdir.am +++ b/lib/subdir.am @@ -441,6 +441,26 @@ SUFFIXES += _clippy.c .c_clippy.c: $(AM_V_CLIPPY) $(CLIPPY) $(top_srcdir)/python/clidef.py -o $@ $< +# xrelfo, the ELF xref extractor + +AM_V_XRELFO = $(am__v_XRELFO_$(V)) +am__v_XRELFO_ = $(am__v_XRELFO_$(AM_DEFAULT_VERBOSITY)) +am__v_XRELFO_0 = @echo " XRELFO " $@; +am__v_XRELFO_1 = + +SUFFIXES += .xref +%.xref: % $(CLIPPY) + $(AM_V_XRELFO) $(CLIPPY) $(top_srcdir)/python/xrelfo.py -Wlog-format -o $@ $< + +# dependencies added in python/makefile.py +frr.xref: + $(AM_V_XRELFO) $(CLIPPY) $(top_srcdir)/python/xrelfo.py -o $@ $^ +all-am: frr.xref + +clean-xref: + -rm -rf $(xrefs) frr.xref +clean-local: clean-xref + ## automake's "ylwrap" is a great piece of GNU software... not. .l.c: $(AM_V_LEX)$(am__skiplex) $(LEXCOMPILE) $< diff --git a/python/makefile.py b/python/makefile.py index 10c73df72d..44658013b3 100644 --- a/python/makefile.py +++ b/python/makefile.py @@ -31,6 +31,10 @@ clippy_scan = mv["clippy_scan"].strip().split() for clippy_file in clippy_scan: assert clippy_file.endswith(".c") +xref_targets = [] +for varname in ["bin_PROGRAMS", "sbin_PROGRAMS", "lib_LTLIBRARIES", "module_LTLIBRARIES"]: + xref_targets.extend(mv[varname].strip().split()) + # check for files using clippy but not listed in clippy_scan if args.dev_build: basepath = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) @@ -124,6 +128,14 @@ out_lines.append("# clippy{\n# main clippy targets") for clippy_file in clippy_scan: out_lines.append(clippydep.substitute(clippybase=clippy_file[:-2])) +out_lines.append("") +out_lines.append("xrefs = %s" % (" ".join(["%s.xref" % target for target in xref_targets]))) +out_lines.append("frr.xref: $(xrefs)") +out_lines.append("") + +#frr.xref: $(bin_PROGRAMS) $(sbin_PROGRAMS) $(lib_LTLIBRARIES) $(module_LTLIBRARIES) +# $(AM_V_XRELFO) $(CLIPPY) $(top_srcdir)/python/xrelfo.py -o $@ $^ + out_lines.append("") out_lines.extend(bcdeps) out_lines.append("")