DPDK patches and discussions
 help / color / mirror / Atom feed
From: luca.boccassi@gmail.com
To: dev@dpdk.org
Cc: bruce.richardson@intel.com, thomas@monjalon.net
Subject: [dpdk-dev] [PATCH v8 2/6] build: use dependency() instead of find_library()
Date: Tue, 26 Feb 2019 17:46:33 +0000	[thread overview]
Message-ID: <20190226174637.27452-2-luca.boccassi@gmail.com> (raw)
In-Reply-To: <20190226174637.27452-1-luca.boccassi@gmail.com>

From: Luca Boccassi <bluca@debian.org>

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>
---
v2: split libbsd change in a separate commit, remove CC to stable
    as a meson bump will be required
v4: update comment in drivers/meson.build to clarify role of
    pkgconfig_extra_libs
v5: remove -lz from drivers/compress/zlib
v7: remove change from pcap pmd, as it's causing issues with
    cross-compilation due to missing pkg-config file

 drivers/compress/zlib/meson.build  | 1 -
 drivers/crypto/ccp/meson.build     | 1 -
 drivers/crypto/openssl/meson.build | 1 -
 drivers/crypto/qat/meson.build     | 1 -
 drivers/meson.build                | 9 +++++----
 drivers/net/bnx2x/meson.build      | 2 +-
 drivers/net/mlx4/meson.build       | 6 +++---
 drivers/net/mlx5/meson.build       | 6 +++---
 lib/librte_bpf/meson.build         | 4 ++--
 lib/librte_telemetry/meson.build   | 2 +-
 10 files changed, 15 insertions(+), 18 deletions(-)

diff --git a/drivers/compress/zlib/meson.build b/drivers/compress/zlib/meson.build
index 7748de2df..b036703c7 100644
--- a/drivers/compress/zlib/meson.build
+++ b/drivers/compress/zlib/meson.build
@@ -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
diff --git a/drivers/crypto/ccp/meson.build b/drivers/crypto/ccp/meson.build
index e43b00591..915c4c854 100644
--- a/drivers/crypto/ccp/meson.build
+++ b/drivers/crypto/ccp/meson.build
@@ -18,4 +18,3 @@ sources = files('rte_ccp_pmd.c',
 		'ccp_pmd_ops.c')
 
 ext_deps += dep
-pkgconfig_extra_libs += '-lcrypto'
diff --git a/drivers/crypto/openssl/meson.build b/drivers/crypto/openssl/meson.build
index 77a6596d7..d56a32366 100644
--- a/drivers/crypto/openssl/meson.build
+++ b/drivers/crypto/openssl/meson.build
@@ -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'
diff --git a/drivers/crypto/qat/meson.build b/drivers/crypto/qat/meson.build
index 9cc98d2c2..21f969735 100644
--- a/drivers/crypto/qat/meson.build
+++ b/drivers/crypto/qat/meson.build
@@ -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
diff --git a/drivers/meson.build b/drivers/meson.build
index e37d4fe2b..69d0556d3 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -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 = []
 
diff --git a/drivers/net/bnx2x/meson.build b/drivers/net/bnx2x/meson.build
index e3c688869..dd189ffc4 100644
--- a/drivers/net/bnx2x/meson.build
+++ b/drivers/net/bnx2x/meson.build
@@ -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'
diff --git a/drivers/net/mlx4/meson.build b/drivers/net/mlx4/meson.build
index 4bccd68e0..b4f9672e7 100644
--- a/drivers/net/mlx4/meson.build
+++ b/drivers/net/mlx4/meson.build
@@ -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
diff --git a/drivers/net/mlx5/meson.build b/drivers/net/mlx5/meson.build
index 4540c455b..0cf2f0873 100644
--- a/drivers/net/mlx5/meson.build
+++ b/drivers/net/mlx5/meson.build
@@ -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
diff --git a/lib/librte_bpf/meson.build b/lib/librte_bpf/meson.build
index bc0cd78f9..c3b1f698e 100644
--- a/lib/librte_bpf/meson.build
+++ b/lib/librte_bpf/meson.build
@@ -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
diff --git a/lib/librte_telemetry/meson.build b/lib/librte_telemetry/meson.build
index 9492f544e..cafb26f08 100644
--- a/lib/librte_telemetry/meson.build
+++ b/lib/librte_telemetry/meson.build
@@ -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']
-- 
2.20.1

  reply	other threads:[~2019-02-26 17:46 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-03 17:57 [dpdk-dev] [PATCH 1/2] build: use static deps of libs for pkg-config libs.private Luca Boccassi
2019-01-03 17:57 ` [dpdk-dev] [PATCH 2/2] build: use dependency() instead of find_library() Luca Boccassi
2019-01-07 14:28   ` Bruce Richardson
2019-01-07 16:39     ` [dpdk-dev] [dpdk-stable] " Luca Boccassi
2019-01-07 16:55       ` Bruce Richardson
2019-01-07 17:03         ` [dpdk-dev] [dpdk-techboard] " Thomas Monjalon
2019-01-07 17:45           ` [dpdk-dev] [dpdk-stable] [dpdk-techboard] " Thomas Monjalon
2019-01-07 21:09             ` Luca Boccassi
2019-01-07 22:03               ` Luca Boccassi
2019-01-11 11:10         ` [dpdk-dev] [dpdk-stable] " Luca Boccassi
2019-01-11 11:52           ` Bruce Richardson
2019-01-11 12:39             ` Luca Boccassi
2019-01-11 14:24               ` Bruce Richardson
2019-01-11 14:56                 ` Luca Boccassi
2019-01-11 15:49                   ` Bruce Richardson
2019-01-11 16:27                     ` Luca Boccassi
2019-01-11 12:38 ` [dpdk-dev] [PATCH v2 1/3] build: use static deps of libs for pkg-config libs.private Luca Boccassi
2019-01-11 12:38   ` [dpdk-dev] [PATCH v2 2/3] build: use dependency() instead of find_library() Luca Boccassi
2019-01-11 12:38   ` [dpdk-dev] [PATCH v2 3/3] build: bump minimum Meson to 0.47.1 and use dependency() for libbsd Luca Boccassi
2019-01-11 14:27     ` Bruce Richardson
2019-01-11 14:30       ` Bruce Richardson
2019-01-11 15:04         ` Luca Boccassi
2019-01-11 15:50           ` Bruce Richardson
2019-01-11 16:14             ` Luca Boccassi
2019-01-11 16:26 ` [dpdk-dev] [PATCH v3 1/4] build: bump minimum Meson version to 0.47.1 Luca Boccassi
2019-01-11 16:26   ` [dpdk-dev] [PATCH v3 2/4] build: use dependency() instead of find_library() Luca Boccassi
2019-01-11 17:21     ` Bruce Richardson
2019-01-11 18:16       ` Luca Boccassi
2019-01-11 21:49         ` Bruce Richardson
2019-01-11 16:26   ` [dpdk-dev] [PATCH v3 3/4] build: reorder libraries and build eal before cmdline Luca Boccassi
2019-01-11 17:22     ` Bruce Richardson
2019-01-11 16:26   ` [dpdk-dev] [PATCH v3 4/4] build: use dependency() for libbsd instead of manual append to ldflags Luca Boccassi
2019-01-11 17:24     ` Bruce Richardson
2019-01-11 17:17   ` [dpdk-dev] [PATCH v3 1/4] build: bump minimum Meson version to 0.47.1 Bruce Richardson
2019-01-11 18:22 ` [dpdk-dev] [PATCH v4 " Luca Boccassi
2019-01-11 18:22   ` [dpdk-dev] [PATCH v4 2/4] build: use dependency() instead of find_library() Luca Boccassi
2019-01-11 18:22   ` [dpdk-dev] [PATCH v4 3/4] build: reorder libraries and build eal before cmdline Luca Boccassi
2019-01-11 18:22   ` [dpdk-dev] [PATCH v4 4/4] build: use dependency() for libbsd instead of manual append to ldflags Luca Boccassi
2019-01-22 13:10 ` [dpdk-dev] [PATCH v5 1/4] build: bump minimum Meson version to 0.47.1 Luca Boccassi
2019-01-22 13:10   ` [dpdk-dev] [PATCH v5 2/4] build: use dependency() instead of find_library() Luca Boccassi
2019-01-22 13:46     ` Bruce Richardson
2019-01-22 14:09       ` Luca Boccassi
2019-01-22 14:24         ` Bruce Richardson
2019-01-22 14:25     ` Bruce Richardson
2019-01-22 13:10   ` [dpdk-dev] [PATCH v5 3/4] build: reorder libraries and build eal before cmdline Luca Boccassi
2019-01-22 13:10   ` [dpdk-dev] [PATCH v5 4/4] build: use dependency() for libbsd instead of manual append to ldflags Luca Boccassi
2019-01-22 13:42   ` [dpdk-dev] [PATCH v5 1/4] build: bump minimum Meson version to 0.47.1 Bruce Richardson
2019-02-06 17:08 ` [dpdk-dev] [PATCH v6 1/5] " Luca Boccassi
2019-02-06 17:08   ` [dpdk-dev] [PATCH v6 2/5] build: use dependency() instead of find_library() Luca Boccassi
2019-02-12 11:15     ` Thomas Monjalon
2019-02-12 11:31       ` Bruce Richardson
2019-02-12 11:36         ` Thomas Monjalon
2019-02-12 11:43           ` Bruce Richardson
2019-02-12 14:47             ` Thomas Monjalon
2019-02-12 15:03               ` Bruce Richardson
2019-02-12 16:21                 ` Thomas Monjalon
2019-02-13 10:49                   ` Luca Boccassi
2019-02-13 11:10                     ` Thomas Monjalon
2019-02-13 13:45                       ` Luca Boccassi
2019-02-13 11:48                     ` Luca Boccassi
2019-02-06 17:08   ` [dpdk-dev] [PATCH v6 3/5] build: reorder libraries and build eal before cmdline Luca Boccassi
2019-02-06 17:08   ` [dpdk-dev] [PATCH v6 4/5] build: use dependency() for libbsd instead of manual append to ldflags Luca Boccassi
2019-02-06 17:08   ` [dpdk-dev] [PATCH v6 5/5] build: use integers for numerical options Luca Boccassi
2019-02-08 14:44     ` Bruce Richardson
2019-02-13 11:54 ` [dpdk-dev] [PATCH v7 1/5] build: bump minimum Meson version to 0.47.1 Luca Boccassi
2019-02-13 11:54   ` [dpdk-dev] [PATCH v7 2/5] build: use dependency() instead of find_library() Luca Boccassi
2019-02-13 15:35     ` Bruce Richardson
2019-02-13 11:54   ` [dpdk-dev] [PATCH v7 3/5] build: reorder libraries and build eal before cmdline Luca Boccassi
2019-02-13 11:54   ` [dpdk-dev] [PATCH v7 4/5] build: use dependency() for libbsd instead of manual append to ldflags Luca Boccassi
2019-02-13 11:54   ` [dpdk-dev] [PATCH v7 5/5] build: use integers for numerical options Luca Boccassi
2019-02-26 17:46 ` [dpdk-dev] [PATCH v8 1/6] build: bump minimum Meson version to 0.47.1 luca.boccassi
2019-02-26 17:46   ` luca.boccassi [this message]
2019-02-26 17:46   ` [dpdk-dev] [PATCH v8 3/6] build: reorder libraries and build eal before cmdline luca.boccassi
2019-02-26 17:46   ` [dpdk-dev] [PATCH v8 4/6] build: use dependency() for libbsd instead of manual append to ldflags luca.boccassi
2019-02-26 17:46   ` [dpdk-dev] [PATCH v8 5/6] build: use integers for numerical options luca.boccassi
2019-02-26 17:46   ` [dpdk-dev] [PATCH v8 6/6] build: use dependency for pcap and fallback to find_library luca.boccassi
2019-02-26 17:49     ` Luca Boccassi
2019-02-27  8:33       ` Thomas Monjalon
2019-02-27  9:47         ` Bruce Richardson
2019-02-27 10:50           ` Luca Boccassi
2019-02-27 10:56             ` Thomas Monjalon
2019-02-27 12:03               ` Luca Boccassi
2019-02-27 13:53                 ` Bruce Richardson
2019-02-28 17:40                   ` Bruce Richardson
2019-03-01 13:13                     ` Thomas Monjalon
2019-03-01 15:13                       ` Luca Boccassi
2019-03-01 13:22     ` Thomas Monjalon
2019-02-27 11:29   ` [dpdk-dev] [PATCH v8 1/6] build: bump minimum Meson version to 0.47.1 Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190226174637.27452-2-luca.boccassi@gmail.com \
    --to=luca.boccassi@gmail.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=thomas@monjalon.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).