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

Message ID 20191008143628.46054-4-bruce.richardson@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series Add scanning for experimental symbols to meson |

Checks

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

Commit Message

Bruce Richardson Oct. 8, 2019, 2:36 p.m. UTC
  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,