build: fix MS linker flag with meson 0.54
authorNick Connolly <nick.connolly@mayadata.io>
Sat, 31 Oct 2020 06:44:55 +0000 (06:44 +0000)
committerThomas Monjalon <thomas@monjalon.net>
Fri, 13 Nov 2020 14:13:16 +0000 (15:13 +0100)
Meson versions >= 0.54.0 include support for handling /implib
with msvc link. Specifying it explicitly causes failures when
linking against the dll. Tested using Link 14.27.29112.0 and
Clang 11.0.0.

There were a number of changes to the way that import libraries
are handled between 0.47.1 and 0.54.0. Only make the change
for >= 0.54.0, leaving the behaviour unchanged for earlier
versions.

Fixes: 77cca7ccec13 ("build: fix drivers library path on Windows")
Cc: stable@dpdk.org
Signed-off-by: Nick Connolly <nick.connolly@mayadata.io>
Tested-by: Ranjit Menon <ranjit.menon@intel.com>
Acked-by: Ranjit Menon <ranjit.menon@intel.com>
Acked-by: Khoa To <khot@microsoft.com>
drivers/meson.build
lib/meson.build

index 4bb7e92..6b50f72 100644 (file)
@@ -186,8 +186,10 @@ foreach subpath:subdirs
                        lk_deps = [version_map, def_file, mingw_map]
                        if is_windows
                                if is_ms_linker
-                                       lk_args = ['-Wl,/def:' + def_file.full_path(),
-                                               '-Wl,/implib:drivers\\' + implib]
+                                       lk_args = ['-Wl,/def:' + def_file.full_path()]
+                                       if meson.version().version_compare('<0.54.0')
+                                               lk_args += ['-Wl,/implib:drivers\\' + implib]
+                                       endif
                                else
                                        lk_args = ['-Wl,--version-script=' + mingw_map.full_path()]
                                endif
index 1bb0197..ed00f89 100644 (file)
@@ -157,8 +157,10 @@ foreach l:libraries
                                output: '@0@_mingw.map'.format(libname))
 
                        if is_ms_linker
-                               lk_args = ['-Wl,/def:' + def_file.full_path(),
-                                       '-Wl,/implib:lib\\' + implib]
+                               lk_args = ['-Wl,/def:' + def_file.full_path()]
+                               if meson.version().version_compare('<0.54.0')
+                                       lk_args += ['-Wl,/implib:lib\\' + implib]
+                               endif
                        else
                                if is_windows
                                        lk_args = ['-Wl,--version-script=' + mingw_map.full_path()]