summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--lib/subdir.am20
-rw-r--r--python/makefile.py12
3 files changed, 33 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index fbbb04b60..97349769a 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 15c649214..96d5fcba3 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 10c73df72..44658013b 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__)))
@@ -125,6 +129,14 @@ 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("")
bc_targets = []