[3/3] drivers: process shared lib link dependencies as for libs

Message ID 20191008143628.46054-4-bruce.richardson@intel.com
State New
Delegated to: Thomas Monjalon
Headers show
Series
  • Add scanning for experimental symbols to meson
Related show

Checks

Context Check Description
ci/Intel-compilation success Compilation OK
ci/checkpatch success coding style OK

Commit Message

Bruce Richardson Oct. 8, 2019, 2:36 p.m.
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 <bruce.richardson@intel.com>
---
 drivers/meson.build | 27 +++++++++++++++++++++++++--
 1 file changed, 25 insertions(+), 2 deletions(-)

Patch

diff --git a/drivers/meson.build b/drivers/meson.build
index 2ed2e9541..fd5a8aa59 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -131,14 +131,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_objs,
 				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,