From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id CACBCA3295 for ; Wed, 23 Oct 2019 11:26:36 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 8A4391C031; Wed, 23 Oct 2019 11:26:07 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id 233B61BFF2 for ; Wed, 23 Oct 2019 11:25:53 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 23 Oct 2019 02:25:53 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,220,1569308400"; d="scan'208";a="397983790" Received: from silpixa00399838.ir.intel.com (HELO silpixa00399838.ger.corp.intel.com) ([10.237.223.140]) by fmsmga005.fm.intel.com with ESMTP; 23 Oct 2019 02:25:52 -0700 From: Kevin Laatz To: dev@dpdk.org Cc: bruce.richardson@intel.com, thomas@monjalon.net, ray.kinsella@intel.com, Kevin Laatz Date: Wed, 23 Oct 2019 01:07:53 +0000 Message-Id: <20191023010754.65172-6-kevin.laatz@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191023010754.65172-1-kevin.laatz@intel.com> References: <20191023010754.65172-1-kevin.laatz@intel.com> Subject: [dpdk-dev] [RFC 5/6] build: add lib abi checks to meson X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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 Signed-off-by: Bruce Richardson --- buildtools/meson.build | 4 ++++ lib/meson.build | 17 ++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/buildtools/meson.build b/buildtools/meson.build index 1ec2c2f95..a895c791c 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('abi_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 7849ac9f7..da180fb37 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -146,7 +146,9 @@ foreach l:libraries version_map, '@INPUT@'], capture: true, input: static_lib, - output: name + '.exp_chk') + output: name + '.exp_chk', + install: false, + build_by_default: get_option('abi_compat_checks')) endif shared_lib = shared_library(libname, @@ -164,6 +166,19 @@ foreach l:libraries include_directories: includes, dependencies: shared_deps) + if is_experimental == 0 + 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: get_option('abi_compat_checks')) + endif + dpdk_libraries = [shared_lib] + dpdk_libraries dpdk_static_libraries = [static_lib] + dpdk_static_libraries endif # sources.length() > 0 -- 2.17.1