From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <dev-bounces@dpdk.org> Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id A9B44A317C for <public@inbox.dpdk.org>; Thu, 17 Oct 2019 16:32:16 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 205941E956; Thu, 17 Oct 2019 16:32:07 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id AE38E1E899 for <dev@dpdk.org>; Thu, 17 Oct 2019 16:32:03 +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 orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 17 Oct 2019 07:32:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,308,1566889200"; d="scan'208";a="396282117" Received: from silpixa00399498.ir.intel.com (HELO silpixa00399498.ger.corp.intel.com) ([10.237.223.151]) by fmsmga005.fm.intel.com with ESMTP; 17 Oct 2019 07:32:01 -0700 From: Anatoly Burakov <anatoly.burakov@intel.com> To: dev@dpdk.org Cc: Marcin Baran <marcinx.baran@intel.com>, Thomas Monjalon <thomas@monjalon.net>, Bruce Richardson <bruce.richardson@intel.com>, john.mcnamara@intel.com, david.marchand@redhat.com, Pawel Modrak <pawelx.modrak@intel.com> Date: Thu, 17 Oct 2019 15:31:51 +0100 Message-Id: <b12026333ebcd94c86e1d26a0afa24eb35ddf5bf.1571322634.git.anatoly.burakov@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <cover.1571322634.git.anatoly.burakov@intel.com> References: <cover.1571322634.git.anatoly.burakov@intel.com> In-Reply-To: <cover.1571322634.git.anatoly.burakov@intel.com> References: <cover.1571245316.git.anatoly.burakov@intel.com> <cover.1571322634.git.anatoly.burakov@intel.com> Subject: [dpdk-dev] [PATCH v4 01/10] config: change ABI versioning to global X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions <dev.dpdk.org> List-Unsubscribe: <https://mails.dpdk.org/options/dev>, <mailto:dev-request@dpdk.org?subject=unsubscribe> List-Archive: <http://mails.dpdk.org/archives/dev/> List-Post: <mailto:dev@dpdk.org> List-Help: <mailto:dev-request@dpdk.org?subject=help> List-Subscribe: <https://mails.dpdk.org/listinfo/dev>, <mailto:dev-request@dpdk.org?subject=subscribe> Errors-To: dev-bounces@dpdk.org Sender: "dev" <dev-bounces@dpdk.org> From: Marcin Baran <marcinx.baran@intel.com> As per new ABI policy, all of the libraries are now versioned using one global ABI version. Changes in this patch implement the necessary steps to enable that. Signed-off-by: Marcin Baran <marcinx.baran@intel.com> Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com> Acked-by: Bruce Richardson <bruce.richardson@intel.com> --- Notes: v3: - Removed Windows support from Makefile changes - Removed unneeded path conversions from meson files buildtools/meson.build | 2 ++ config/ABI_VERSION | 1 + config/meson.build | 4 +++- drivers/meson.build | 20 ++++++++++++-------- lib/meson.build | 18 +++++++++++------- meson_options.txt | 2 -- mk/rte.lib.mk | 13 ++++--------- 7 files changed, 33 insertions(+), 27 deletions(-) create mode 100644 config/ABI_VERSION diff --git a/buildtools/meson.build b/buildtools/meson.build index 32c79c1308..78ce69977d 100644 --- a/buildtools/meson.build +++ b/buildtools/meson.build @@ -12,3 +12,5 @@ if python3.found() else map_to_def_cmd = ['meson', 'runpython', files('map_to_def.py')] endif + +is_experimental_cmd = [find_program('grep', 'findstr'), '^DPDK_'] diff --git a/config/ABI_VERSION b/config/ABI_VERSION new file mode 100644 index 0000000000..9a7c1e503f --- /dev/null +++ b/config/ABI_VERSION @@ -0,0 +1 @@ +20.0 diff --git a/config/meson.build b/config/meson.build index a27f731f85..374735590c 100644 --- a/config/meson.build +++ b/config/meson.build @@ -18,6 +18,8 @@ endforeach # depending on the configuration options pver = meson.project_version().split('.') major_version = '@0@.@1@'.format(pver.get(0), pver.get(1)) +abi_version = run_command(find_program('cat', 'more'), + files('ABI_VERSION')).stdout().strip() # extract all version information into the build configuration dpdk_conf.set('RTE_VER_YEAR', pver.get(0).to_int()) @@ -37,7 +39,7 @@ endif pmd_subdir_opt = get_option('drivers_install_subdir') if pmd_subdir_opt.contains('<VERSION>') - pmd_subdir_opt = major_version.join(pmd_subdir_opt.split('<VERSION>')) + pmd_subdir_opt = abi_version.join(pmd_subdir_opt.split('<VERSION>')) endif driver_install_path = join_paths(get_option('libdir'), pmd_subdir_opt) eal_pmd_path = join_paths(get_option('prefix'), driver_install_path) diff --git a/drivers/meson.build b/drivers/meson.build index 2ed2e95411..fd628d9587 100644 --- a/drivers/meson.build +++ b/drivers/meson.build @@ -110,12 +110,19 @@ foreach class:dpdk_driver_classes output: out_filename, depends: [pmdinfogen, tmp_lib]) - if get_option('per_library_versions') - lib_version = '@0@.1'.format(version) - so_version = '@0@'.format(version) + version_map = '@0@/@1@/@2@_version.map'.format( + meson.current_source_dir(), + drv_path, lib_name) + + is_experimental = run_command(is_experimental_cmd, + files(version_map)).returncode() + + if is_experimental != 0 + lib_version = '0.1' + so_version = '0' else - lib_version = major_version - so_version = major_version + lib_version = abi_version + so_version = abi_version endif # now build the static driver @@ -128,9 +135,6 @@ foreach class:dpdk_driver_classes install: true) # now build the shared driver - version_map = '@0@/@1@/@2@_version.map'.format( - meson.current_source_dir(), - drv_path, lib_name) shared_lib = shared_library(lib_name, sources, objects: objs, diff --git a/lib/meson.build b/lib/meson.build index e5ff838934..e626da778c 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -97,12 +97,18 @@ foreach l:libraries cflags += '-DALLOW_EXPERIMENTAL_API' endif - if get_option('per_library_versions') - lib_version = '@0@.1'.format(version) - so_version = '@0@'.format(version) + version_map = '@0@/@1@/rte_@2@_version.map'.format( + meson.current_source_dir(), dir_name, name) + + is_experimental = run_command(is_experimental_cmd, + files(version_map)).returncode() + + if is_experimental != 0 + lib_version = '0.1' + so_version = '0' else - lib_version = major_version - so_version = major_version + lib_version = abi_version + so_version = abi_version endif # first build static lib @@ -120,8 +126,6 @@ foreach l:libraries # then use pre-build objects to build shared lib sources = [] objs += static_lib.extract_all_objects(recursive: false) - version_map = '@0@/@1@/rte_@2@_version.map'.format( - meson.current_source_dir(), dir_name, name) implib = dir_name + '.dll.a' def_file = custom_target(name + '_def', diff --git a/meson_options.txt b/meson_options.txt index 448f3e63dc..000e38fd98 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -28,8 +28,6 @@ option('max_lcores', type: 'integer', value: 128, description: 'maximum number of cores/threads supported by EAL') option('max_numa_nodes', type: 'integer', value: 4, description: 'maximum number of NUMA nodes supported by EAL') -option('per_library_versions', type: 'boolean', value: true, - description: 'true: each lib gets its own version number, false: DPDK version used for each lib') option('tests', type: 'boolean', value: true, description: 'build unit tests') option('use_hpet', type: 'boolean', value: false, diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk index 4df8849a08..e1ea292b6e 100644 --- a/mk/rte.lib.mk +++ b/mk/rte.lib.mk @@ -11,20 +11,15 @@ EXTLIB_BUILD ?= n # VPATH contains at least SRCDIR VPATH += $(SRCDIR) -ifneq ($(CONFIG_RTE_MAJOR_ABI),) -ifneq ($(LIBABIVER),) -LIBABIVER := $(CONFIG_RTE_MAJOR_ABI) -endif +ifneq ($(shell grep "^DPDK_" $(SRCDIR)/$(EXPORT_MAP)),) +LIBABIVER := $(shell cat $(RTE_SRCDIR)/config/ABI_VERSION) +else +LIBABIVER := 0 endif ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y) LIB := $(patsubst %.a,%.so.$(LIBABIVER),$(LIB)) ifeq ($(EXTLIB_BUILD),n) -ifeq ($(CONFIG_RTE_MAJOR_ABI),) -ifeq ($(CONFIG_RTE_NEXT_ABI),y) -LIB := $(LIB).1 -endif -endif CPU_LDFLAGS += --version-script=$(SRCDIR)/$(EXPORT_MAP) endif endif -- 2.17.1