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..79c215a7c8 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, -- 2.47.3

