[PATCH v3 2/4] build: support function versioning for drivers
Dariusz Sosnowski
dsosnowski at nvidia.com
Thu Jun 25 18:12:10 CEST 2026
> -----Original Message-----
> From: David Marchand <david.marchand at redhat.com>
> Sent: Thursday, June 25, 2026 4:46 PM
> To: Dariusz Sosnowski <dsosnowski at nvidia.com>
> Cc: Bruce Richardson <bruce.richardson at intel.com>; dev at dpdk.org; Yu Jiang
> <yux.jiang at intel.com>
> Subject: Re: [PATCH v3 2/4] build: support function versioning for drivers
>
> External email: Use caution opening links or attachments
>
>
> On Thu, 25 Jun 2026 at 15:34, Dariusz Sosnowski <dsosnowski at nvidia.com>
> wrote:
> >
> > Add support for enabling function versioning (through
> > use_function_versioning meson variable) for drivers, similar to
> > libraries.
> >
> > Signed-off-by: Dariusz Sosnowski <dsosnowski at nvidia.com>
> > ---
> > drivers/meson.build | 21 ++++++++++++++++++++-
> > 1 file changed, 20 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/meson.build b/drivers/meson.build index
> > 4d95604ecd..8f3ab490ee 100644
> > --- a/drivers/meson.build
> > +++ b/drivers/meson.build
> > @@ -171,6 +171,7 @@ foreach subpath:subdirs
> > pkgconfig_extra_libs = []
> > testpmd_sources = []
> > require_iova_in_mbuf = true
> > + use_function_versioning = false
> > # for handling base code files which may need extra cflags
> > base_sources = []
> > base_cflags = []
> > @@ -273,6 +274,13 @@ foreach subpath:subdirs
> > endif
> > dpdk_conf.set(lib_name.to_upper(), 1)
> >
> > + if developer_mode and is_windows and use_function_versioning
> > + message('@0@: Function versioning is not supported by
> Windows.'.format(name))
> > + endif
> > + if use_function_versioning
> > + cflags += '-DRTE_USE_FUNCTION_VERSIONING'
> > + endif
> > +
> > dpdk_extra_ldflags += pkgconfig_extra_libs
> >
> > dpdk_headers += headers
> > @@ -363,7 +371,18 @@ foreach subpath:subdirs
> > depends: [version_map])
> > endif
> >
> > - shared_lib = shared_library(lib_name, sources_pmd_info,
> > + if not use_function_versioning or is_windows
> > + # Use pre-built objects and pmdinfo sources to build shared library.
> > + shared_sources = sources_pmd_info
> > + else
> > + # For compat we need to rebuild with RTE_BUILD_SHARED_LIB
> defined.
> > + # Use original sources and pmdinfo sources.
> > + cflags += '-DRTE_BUILD_SHARED_LIB'
> > + shared_sources = sources + sources_pmd_info
> > + objs = []
> > + endif
> > +
> > + shared_lib = shared_library(lib_name, shared_sources,
> > objects: objs,
> > include_directories: includes,
> > dependencies: shared_deps,
>
> Older meson version don't like this form:
>
> drivers/meson.build:381:12: ERROR: Invalid use of addition: can only
> concatenate list (not "CustomTargetHolder") to list
>
> It seems to work with something like:
>
> diff --git a/drivers/meson.build b/drivers/meson.build index
> 8f3ab490ee..79c215a7c8 100644
> --- a/drivers/meson.build
> +++ b/drivers/meson.build
> @@ -373,12 +373,12 @@ foreach subpath:subdirs
>
> if not use_function_versioning or is_windows
> # Use pre-built objects and pmdinfo sources to build shared library.
> - shared_sources = sources_pmd_info
> + shared_sources = [sources_pmd_info]
> else
> # For compat we need to rebuild with RTE_BUILD_SHARED_LIB defined.
> # Use original sources and pmdinfo sources.
> cflags += '-DRTE_BUILD_SHARED_LIB'
> - shared_sources = sources + sources_pmd_info
> + shared_sources = sources + [sources_pmd_info]
> objs = []
> endif
Thank you for review.
Fixed in v4.
More information about the dev
mailing list