#
# When performing an ABI check the following options are applied:
#
# --no-unreferenced-symbols: Exclude symbols which are not referenced by
# any debug information.  Without this _init() and _fini() are incorrectly
# reported on CentOS7 for libuutil.so.
#
# --headers-dir1: Limit ABI checks to public OpenZFS headers, otherwise
# changes in public system headers are also reported.
#
# --suppressions: Honor a suppressions file for each library to provide
# a mechanism for suppressing harmless warnings.
#

PHONY += checkabi storeabi

checkabi:
	for lib in $(lib_LTLIBRARIES) ; do \
		abidiff --no-unreferenced-symbols \
		    --headers-dir1 ../../include \
		    --suppressions $${lib%.la}.suppr \
		    $${lib%.la}.abi .libs/$${lib%.la}.so ; \
	done

storeabi:
	cd .libs ; \
	for lib in $(lib_LTLIBRARIES) ; do \
		abidw --no-show-locs \
		--no-corpus-path \
		--no-comp-dir-path \
		--type-id-style hash \
		$${lib%.la}.so > ../$${lib%.la}.abi ; \
	done
