From 5ed3766981600785bcee40932feb0a4a186dfa7f Mon Sep 17 00:00:00 2001 From: Bruce Richardson Date: Tue, 8 Oct 2019 15:36:28 +0100 Subject: [PATCH 1/1] drivers: process shared link dependencies as for libs For the public APIs of DPDK libraries we run checks for correct use of experimental tags, and also do dynamic generation of the version file to its window's equivalent. Although must drivers don't export APIs, some do, so these checks are relevant and should be copied from lib/meson.build to drivers/meson.build. Signed-off-by: Bruce Richardson Acked-by: Luca Boccassi --- drivers/meson.build | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/drivers/meson.build b/drivers/meson.build index 156d2dc717..823e3ef839 100644 --- a/drivers/meson.build +++ b/drivers/meson.build @@ -145,14 +145,37 @@ foreach class:dpdk_driver_classes version_map = '@0@/@1@/@2@_version.map'.format( meson.current_source_dir(), drv_path, lib_name) + implib = dir_name + '.dll.a' + + def_file = custom_target(lib_name + '_def', + command: [map_to_def_cmd, '@INPUT@', '@OUTPUT@'], + input: version_map, + output: '@0@_exports.def'.format(lib_name)) + lk_deps = [version_map, def_file] + if is_windows + lk_args = ['-Wl,/def:' + def_file.full_path(), + '-Wl,/implib:lib\\' + implib] + else + lk_args = ['-Wl,--version-script=' + version_map] + # on unix systems check the output of the + # experimental syms script, using it as a + # dependency of the .so build + lk_deps += custom_target(lib_name + '.exp_chk', + command: [check_experimental_syms, + version_map, '@INPUT@'], + capture: true, + input: static_lib, + output: lib_name + '.exp_chk') + endif + shared_lib = shared_library(lib_name, sources, objects: objs, include_directories: includes, dependencies: shared_deps, c_args: cflags, - link_args: '-Wl,--version-script=' + version_map, - link_depends: version_map, + link_args: lk_args, + link_depends: lk_deps, version: lib_version, soversion: so_version, install: true, -- 2.20.1