Skip to content

Commit

Permalink
build: improve dependency handling
Browse files Browse the repository at this point in the history
Whenever possible (if the library ships a pkg-config file) use meson's
dependency() function to look for it, as it will automatically add it
to the Requires.private list if needed, to allow for static builds to
succeed for reverse dependencies of DPDK. Otherwise the recursive
dependencies are not parsed, and users doing static builds have to
resolve them manually by themselves.
When using this API avoid additional checks that are superfluous and
take extra time, and avoid adding the linker flag manually which causes
it to be duplicated.

Signed-off-by: Luca Boccassi <bluca@debian.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Tested-by: Bruce Richardson <bruce.richardson@intel.com>
  • Loading branch information
bluca authored and tmonjalo committed Feb 27, 2019
1 parent eded3f9 commit e30b4e5
Show file tree
Hide file tree
Showing 10 changed files with 15 additions and 18 deletions.
1 change: 0 additions & 1 deletion drivers/compress/zlib/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,5 @@ endif
deps += 'bus_vdev'
sources = files('zlib_pmd.c', 'zlib_pmd_ops.c')
ext_deps += dep
pkgconfig_extra_libs += '-lz'

allow_experimental_apis = true
1 change: 0 additions & 1 deletion drivers/crypto/ccp/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,3 @@ sources = files('rte_ccp_pmd.c',
'ccp_pmd_ops.c')

ext_deps += dep
pkgconfig_extra_libs += '-lcrypto'
1 change: 0 additions & 1 deletion drivers/crypto/openssl/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,3 @@ allow_experimental_apis = true
deps += 'bus_vdev'
sources = files('rte_openssl_pmd.c', 'rte_openssl_pmd_ops.c')
ext_deps += dep
pkgconfig_extra_libs += '-lcrypto'
1 change: 0 additions & 1 deletion drivers/crypto/qat/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,5 @@ if dep.found()
'qat_sym.c',
'qat_sym_session.c')
qat_ext_deps += dep
pkgconfig_extra_libs += '-lcrypto'
qat_cflags += '-DBUILD_QAT_SYM'
endif
9 changes: 5 additions & 4 deletions drivers/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,11 @@ foreach class:driver_classes
# set up internal deps. Drivers can append/override as necessary
deps = std_deps
# ext_deps: Stores external library dependency got
# using dependency() or cc.find_library(). For most cases, we
# probably also need to specify the "-l" flags in
# pkgconfig_extra_libs variable too, so that it can be reflected
# in the pkgconfig output for static builds
# using dependency() (preferred) or find_library().
# For the find_library() case (but not with dependency()) we also
# need to specify the "-l" flags in pkgconfig_extra_libs variable
# too, so that it can be reflected in the pkgconfig output for
# static builds.
ext_deps = []
pkgconfig_extra_libs = []

Expand Down
2 changes: 1 addition & 1 deletion drivers/net/bnx2x/meson.build
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2018 Intel Corporation

dep = cc.find_library('z', required: false)
dep = dependency('zlib', required: false)
build = dep.found()
ext_deps += dep
cflags += '-DZLIB_CONST'
Expand Down
6 changes: 3 additions & 3 deletions drivers/net/mlx4/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ if pmd_dlopen
]
endif
libs = [
cc.find_library('mnl', required:false),
cc.find_library('mlx4', required:false),
cc.find_library('ibverbs', required:false),
dependency('libmnl', required:false),
dependency('libmlx4', required:false),
dependency('libibverbs', required:false),
]
build = true
foreach lib:libs
Expand Down
6 changes: 3 additions & 3 deletions drivers/net/mlx5/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ if pmd_dlopen
]
endif
libs = [
cc.find_library('mnl', required:false),
cc.find_library('mlx5', required:false),
cc.find_library('ibverbs', required:false),
dependency('libmnl', required:false),
dependency('libmlx5', required:false),
dependency('libibverbs', required:false),
]
build = true
foreach lib:libs
Expand Down
4 changes: 2 additions & 2 deletions lib/librte_bpf/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ install_headers = files('bpf_def.h',

deps += ['mbuf', 'net', 'ethdev']

dep = cc.find_library('elf', required: false)
if dep.found() == true and cc.has_header('libelf.h', dependencies: dep)
dep = dependency('libelf', required: false)
if dep.found()
sources += files('bpf_load_elf.c')
ext_deps += dep
endif
2 changes: 1 addition & 1 deletion lib/librte_telemetry/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ headers = files('rte_telemetry.h', 'rte_telemetry_internal.h', 'rte_telemetry_pa
deps += ['metrics', 'ethdev']
cflags += '-DALLOW_EXPERIMENTAL_API'

jansson = cc.find_library('jansson', required: false)
jansson = dependency('jansson', required: false)
if jansson.found()
ext_deps += jansson
dpdk_app_link_libraries += ['telemetry']
Expand Down

0 comments on commit e30b4e5

Please sign in to comment.