On Tue, Feb 11, 2020 at 02:19:42AM +0100, Thomas Monjalon wrote: > If ibverbs_link is dlopen, the PMD and application should not > be linked with ibverbs, but the glue library is. > Unfortunately the ibverbs dependency was exported in the > variable ext_deps, so there were overlinking. > > It is fixed by not exporting the dependency in ext_deps, > and recreating a limited dependency object for cflags only. > > Fixes: 1dd7c7e38c19 ("net/mlx4: support meson build") > Fixes: 96d7c62a70c7 ("net/mlx5: support meson build") > Cc: sta...@dpdk.org > > Signed-off-by: Thomas Monjalon <tho...@monjalon.net> > --- > drivers/common/mlx5/meson.build | 6 ++++-- > drivers/net/mlx4/meson.build | 6 ++++-- > 2 files changed, 8 insertions(+), 4 deletions(-) > > diff --git a/drivers/common/mlx5/meson.build b/drivers/common/mlx5/meson.build > index 2bb2a83c45..2956fc20e2 100644 > --- a/drivers/common/mlx5/meson.build > +++ b/drivers/common/mlx5/meson.build > @@ -30,7 +30,7 @@ foreach libname:libnames > endif > if lib.found() > libs += lib > - if not static_ibverbs > + if not static_ibverbs and not dlopen_ibverbs > ext_deps += lib > endif > else > @@ -38,10 +38,12 @@ foreach libname:libnames > reason = 'missing dependency, "' + libname + '"' > endif > endforeach > -if build and static_ibverbs > +if build and (static_ibverbs or dlopen_ibverbs) > # Build without adding shared libs to Requires.private > ibv_cflags = run_command(pkgconf, '--cflags', 'libibverbs').stdout() > ext_deps += declare_dependency(compile_args: ibv_cflags.split()) > +endif > +if build and static_ibverbs > # Add static deps ldflags to internal apps and Libs.private > ibv_ldflags = run_command(ldflags_ibverbs_static, check:true).stdout() > ext_deps += declare_dependency(link_args:ibv_ldflags.split())
One small suggestion: Since out minimum version of meson is 0.47.1, we can use subdir_done() function. Putting subdir_done() immediately after build=false will simplify things as you won't need to continually check the build variable in each if statement. /Bruce