port: fix missing pcap support with meson

Message ID 20190924120414.67793-1-bruce.richardson@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series port: fix missing pcap support with meson |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/iol-dpdk_compile_spdk success Compile Testing PASS
ci/iol-dpdk_compile_ovs success Compile Testing PASS
ci/iol-dpdk_compile success Compile Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS

Commit Message

Bruce Richardson Sept. 24, 2019, 12:04 p.m. UTC
  The meson build was missing the define to enable pcap port support if
libpcap (development) package was found on the build platform. Rather than
duplicating the checks for libpcap found in the pcap net PMD build file, we
can move the checks to the top-level config directory and reference the
RTE_PCAP_PORT setting elsewhere in the build.

Bugzilla ID: 351
Fixes: 5b9656b157d3 ("lib: build with meson")

Cc: stable@dpdk.org
Reported-by: Cristian Bidea <cristian.bidea@keysight.com>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 config/meson.build           | 13 +++++++++++++
 drivers/net/pcap/meson.build | 18 +++---------------
 lib/librte_port/meson.build  |  4 ++++
 3 files changed, 20 insertions(+), 15 deletions(-)
  

Comments

Bruce Richardson Sept. 24, 2019, 3:19 p.m. UTC | #1
On Tue, Sep 24, 2019 at 01:04:14PM +0100, Bruce Richardson wrote:
> The meson build was missing the define to enable pcap port support if
> libpcap (development) package was found on the build platform. Rather than
> duplicating the checks for libpcap found in the pcap net PMD build file, we
> can move the checks to the top-level config directory and reference the
> RTE_PCAP_PORT setting elsewhere in the build.
> 
> Bugzilla ID: 351
> Fixes: 5b9656b157d3 ("lib: build with meson")
> 
> Cc: stable@dpdk.org
> Reported-by: Cristian Bidea <cristian.bidea@keysight.com>
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>

Based on response given in bugzilla
[https://bugs.dpdk.org/show_bug.cgi?id=351]

Tested-by: Cristian Bidea <cristian.bidea@keysight.com>

Just adding here so it shows up in patchwork.

/Bruce
  
Thomas Monjalon Oct. 27, 2019, 11:57 a.m. UTC | #2
24/09/2019 17:19, Bruce Richardson:
> On Tue, Sep 24, 2019 at 01:04:14PM +0100, Bruce Richardson wrote:
> > The meson build was missing the define to enable pcap port support if
> > libpcap (development) package was found on the build platform. Rather than
> > duplicating the checks for libpcap found in the pcap net PMD build file, we
> > can move the checks to the top-level config directory and reference the
> > RTE_PCAP_PORT setting elsewhere in the build.
> > 
> > Bugzilla ID: 351
> > Fixes: 5b9656b157d3 ("lib: build with meson")
> > 
> > Cc: stable@dpdk.org
> > Reported-by: Cristian Bidea <cristian.bidea@keysight.com>
> > Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> 
> Based on response given in bugzilla
> [https://bugs.dpdk.org/show_bug.cgi?id=351]
> 
> Tested-by: Cristian Bidea <cristian.bidea@keysight.com>
> 
> Just adding here so it shows up in patchwork.

Applied, thanks
  

Patch

diff --git a/config/meson.build b/config/meson.build
index 2bafea530..f9ae632cf 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -138,6 +138,19 @@  if libbsd.found()
 	dpdk_conf.set('RTE_USE_LIBBSD', 1)
 endif
 
+# check for pcap
+pcap_dep = dependency('pcap', required: false)
+if pcap_dep.found()
+	# pcap got a pkg-config file only in 1.9.0 and before that meson uses
+	# an internal pcap-config finder, which is not compatible with
+	# cross-compilation, so try to fallback to find_library
+	pcap_dep = cc.find_library('pcap', required: false)
+endif
+if pcap_dep.found() and cc.has_header('pcap.h', dependencies: pcap_dep)
+	dpdk_conf.set('RTE_PORT_PCAP', 1)
+	dpdk_extra_ldflags += '-lpcap'
+endif
+
 # add -include rte_config to cflags
 add_project_arguments('-include', 'rte_config.h', language: 'c')
 
diff --git a/drivers/net/pcap/meson.build b/drivers/net/pcap/meson.build
index 910dfab9b..b680710aa 100644
--- a/drivers/net/pcap/meson.build
+++ b/drivers/net/pcap/meson.build
@@ -1,21 +1,9 @@ 
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-pcap_dep = dependency('pcap', required: false)
-if pcap_dep.found()
-	build = true
-else
-	# pcap got a pkg-config file only in 1.9.0 and before that meson uses
-	# an internal pcap-config finder, which is not compatible with
-	# cross-compilation, so try to fallback to find_library
-	pcap_dep = cc.find_library('pcap', required: false)
-	if pcap_dep.found() and cc.has_header('pcap.h', dependencies: pcap_dep)
-		build = true
-		pkgconfig_extra_libs += '-lpcap'
-	else
-		build = false
-		reason = 'missing dependency, "libpcap"'
-	endif
+if not dpdk_conf.has('RTE_PORT_PCAP')
+	build = false
+	reason = 'missing dependency, "libpcap"'
 endif
 sources = files('rte_eth_pcap.c')
 ext_deps += pcap_dep
diff --git a/lib/librte_port/meson.build b/lib/librte_port/meson.build
index 0d11456f0..1b48127c1 100644
--- a/lib/librte_port/meson.build
+++ b/lib/librte_port/meson.build
@@ -23,6 +23,10 @@  headers = files(
 	'rte_port_sym_crypto.h')
 deps += ['ethdev', 'sched', 'ip_frag', 'cryptodev']
 
+if dpdk_conf.has('RTE_PORT_PCAP')
+	ext_deps += pcap_dep # dependency provided in config/meson.build
+endif
+
 if dpdk_conf.has('RTE_LIBRTE_KNI')
 	sources += files('rte_port_kni.c')
 	headers += files('rte_port_kni.h')