]> git.droids-corp.org - dpdk.git/commitdiff
net/mlx: add static ibverbs linkage with meson
authorThomas Monjalon <thomas@monjalon.net>
Wed, 12 Feb 2020 22:07:04 +0000 (23:07 +0100)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 14 Feb 2020 11:42:13 +0000 (12:42 +0100)
The libibverbs (and libmlx4/5) can be statically embedded
in the shared PMD library, or in the application with the static PMD.
It was supported with make build system in
commit 2c0dd7b69fb0 ("config: add static linkage of mlx dependency").

The same feature is enabled with meson when using pkg-config
(i.e. only if the call to dependency() is successful).
The fallback method for searching library with cc.find_library()
is not supported because the dependencies of the found library
would not be linked (no such info in .a file unlike .so).

The main difference, in meson build system, is the generated .pc file
giving arguments to link DPDK with the application.
Unfortunately the .pc file will not keep memory of the static linkage
option for libibverbs.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
doc/guides/nics/mlx4.rst
doc/guides/nics/mlx5.rst
drivers/common/mlx5/meson.build
drivers/net/mlx4/meson.build
meson_options.txt

index d0e8a8b2ffd4ee385af1e975caced932ba70d3ac..4b1d1aceb2bfe9263b0d7127874981048c67976d 100644 (file)
@@ -92,6 +92,10 @@ These options can be modified in the ``.config`` file.
   adds additional run-time checks and debugging messages at the cost of
   lower performance.
 
+This option is available in meson:
+
+- ``ibverbs_link`` can be ``static``, ``shared``, or ``dlopen``.
+
 Environment variables
 ~~~~~~~~~~~~~~~~~~~~~
 
index 2ea4fa95464b24e9e33d6dfe3fa4207ac117905c..5ab7c071653ece3ee62f62d15c57c5ba32fb5c9a 100644 (file)
@@ -275,6 +275,10 @@ These options can be modified in the ``.config`` file.
    64. Default armv8a configuration of make build and meson build set it to 128
    then brings performance degradation.
 
+This option is available in meson:
+
+- ``ibverbs_link`` can be ``static``, ``shared``, or ``dlopen``.
+
 Environment variables
 ~~~~~~~~~~~~~~~~~~~~~
 
index c6d4154cd0c12f56db4ae7bd15e05c7879c8ff69..206ef75ca29ec67eb08b9e3620c04a80e341f627 100644 (file)
@@ -7,6 +7,7 @@ if not is_linux
        subdir_done()
 endif
 
+static_ibverbs = (get_option('ibverbs_link') == 'static')
 pmd_dlopen = (get_option('ibverbs_link') == 'dlopen')
 LIB_GLUE_BASE = 'librte_pmd_mlx5_glue.so'
 LIB_GLUE_VERSION = '20.02.0'
@@ -22,8 +23,8 @@ endif
 libnames = [ 'mlx5', 'ibverbs' ]
 libs = []
 foreach libname:libnames
-       lib = dependency('lib' + libname, required:false)
-       if not lib.found()
+       lib = dependency('lib' + libname, static:static_ibverbs, required:false)
+       if not lib.found() and not static_ibverbs
                lib = cc.find_library(libname, required:false)
        endif
        if lib.found()
index 6d2397b3ccd4b1afbec9f06c06d6a929282de5b1..7513516764fbb6b0f5fd3e5b2178aa6b59471d90 100644 (file)
@@ -8,6 +8,7 @@ if not is_linux
        subdir_done()
 endif
 
+static_ibverbs = (get_option('ibverbs_link') == 'static')
 pmd_dlopen = (get_option('ibverbs_link') == 'dlopen')
 LIB_GLUE_BASE = 'librte_pmd_mlx4_glue.so'
 LIB_GLUE_VERSION = '18.02.0'
@@ -23,8 +24,8 @@ endif
 libnames = [ 'mlx4', 'ibverbs' ]
 libs = []
 foreach libname:libnames
-       lib = dependency('lib' + libname, required:false)
-       if not lib.found()
+       lib = dependency('lib' + libname, static:static_ibverbs, required:false)
+       if not lib.found() and not static_ibverbs
                lib = cc.find_library(libname, required:false)
        endif
        if lib.found()
index 20be15fe6b6b92188070cb3c493c48b61e23bfde..9e4923a4f115fd3d1517eb10599f0a52c80a1339 100644 (file)
@@ -14,8 +14,8 @@ option('examples', type: 'string', value: '',
        description: 'Comma-separated list of examples to build by default')
 option('flexran_sdk', type: 'string', value: '',
        description: 'Path to FlexRAN SDK optional Libraries for BBDEV device')
-option('ibverbs_link', type: 'combo', choices : ['shared', 'dlopen'], value: 'shared',
-       description: 'Linkage method (shared/dlopen) for Mellanox PMDs with ibverbs dependencies.')
+option('ibverbs_link', type: 'combo', choices : ['static', 'shared', 'dlopen'], value: 'shared',
+       description: 'Linkage method (static/shared/dlopen) for Mellanox PMDs with ibverbs dependencies.')
 option('include_subdir_arch', type: 'string', value: '',
        description: 'subdirectory where to install arch-dependent headers')
 option('kernel_dir', type: 'string', value: '',