chiark / gitweb /
build-sys: add make check-api-unused
[elogind.git] / Makefile.am
index ffb10d69c37a78be45bd56eaaf698fbc3dc26684..a67f18b77a5eeb574bcb5dd9633ff0076f0d703d 100644 (file)
@@ -2020,7 +2020,7 @@ tests += \
        test-bus-objects \
        test-event
 
-noinst_PROGRAMS += \
+bin_PROGRAMS += \
        busctl
 
 test_bus_marshal_SOURCES = \
@@ -4578,3 +4578,23 @@ check-api-docs: $(lib_LTLIBRARIES) man
                        echo "‣ Symbol $$symbol() lacks documentation." ; \
                fi ; \
         done
+
+OBJECT_VARIABLES:=$(filter %_OBJECTS,$(.VARIABLES))
+ALL_OBJECTS:=$(foreach v,$(OBJECT_VARIABLES),$($(v)))
+
+defined: $(ALL_OBJECTS)
+       $(AM_V_GEN)for f in $(ALL_OBJECTS) ; do \
+               nm -g --undefined-only `echo $(builddir)/"$$f" | sed -e 's,\([^/]*\).lo$$,.libs/\1.o,'` ; \
+       done | cut -c 20- | cut -d @ -f 1 | sort -u > $(builddir)/undefined
+
+undefined:
+       $(AM_V_GEN)for f in $(ALL_OBJECTS) ; do \
+               nm -g --defined-only `echo $(builddir)/"$$f" | sed -e 's,\([^/]*\).lo$$,.libs/\1.o,'` ; \
+       done | cut -c 20- | cut -d @ -f 1 | sort -u > $(builddir)/defined
+
+CLEANFILES += \
+       defined \
+       undefined
+
+check-api-unused: defined undefined
+       diff -u undefined defined | grep ^+ | grep -v ^+++ | cut -c2-