diff mbox series

[v3,5/7] build: add lib abi checks to meson

Message ID 20191129210905.1865-6-kevin.laatz@intel.com (mailing list archive)
State Superseded, archived
Delegated to: David Marchand
Headers show
Series Add ABI compatibility checks to the meson build | expand

Checks

Context Check Description
ci/Intel-compilation fail Compilation issues
ci/checkpatch success coding style OK

Commit Message

Kevin Laatz Nov. 29, 2019, 9:09 p.m. UTC
This patch adds the ABI compatibility check for the lib directory to the
meson build. If enabled, the ABI compatibility checks will run for all
.so's in the lib directory (provided a matching dump file exists). The
build will fail if an ABI incompatibility is detected.

Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>

---
v2:
  - fixed conditional around abi check custom target
v3:
  - fix typo in meson option name
---
 buildtools/meson.build |  4 ++++
 lib/meson.build        | 13 +++++++++++++
 2 files changed, 17 insertions(+)
diff mbox series

Patch

diff --git a/buildtools/meson.build b/buildtools/meson.build
index 6ef2c5721..1d6915708 100644
--- a/buildtools/meson.build
+++ b/buildtools/meson.build
@@ -7,6 +7,10 @@  pmdinfo = find_program('gen-pmdinfo-cfile.sh')
 
 check_experimental_syms = find_program('check-experimental-syms.sh')
 
+if get_option('compat_checks')
+	abidiff = find_program('abidiff')
+endif
+
 # set up map-to-def script using python, either built-in or external
 python3 = import('python').find_installation(required: false)
 if python3.found()
diff --git a/lib/meson.build b/lib/meson.build
index 6ceb5e756..69ea3a2b0 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -180,6 +180,19 @@  foreach l:libraries
 					include_directories: includes,
 					dependencies: shared_deps)
 
+			if not is_windows and get_option('compat_checks')
+				custom_target(dir_name + '.abi_chk',
+					command: [abidiff,
+						meson.source_root() + '/lib/abi/'
+						+ dir_name + '.dump',
+						'@INPUT@'],
+					input: shared_lib,
+					output: dir_name + '.abi_chk',
+					capture: true,
+					install: false,
+					build_by_default: is_experimental == 0)
+			endif
+
 			dpdk_libraries = [shared_lib] + dpdk_libraries
 			dpdk_static_libraries = [static_lib] + dpdk_static_libraries
 		endif # sources.length() > 0