On Thu, 25 Jun 2026 at 15:34, Dariusz Sosnowski <[email protected]> wrote:
>
> Add support for enabling function versioning
> (through use_function_versioning meson variable) for drivers,
> similar to libraries.
>
> Signed-off-by: Dariusz Sosnowski <[email protected]>
> ---
> 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
--
David Marchand