port: fix pcap support with meson
authorBruce Richardson <bruce.richardson@intel.com>
Tue, 24 Sep 2019 12:04:14 +0000 (13:04 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Sun, 27 Oct 2019 16:23:02 +0000 (17:23 +0100)
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>
Tested-by: Cristian Bidea <cristian.bidea@keysight.com>
config/meson.build
drivers/net/pcap/meson.build
lib/librte_port/meson.build

index 6a6ab50..e1ebdad 100644 (file)
@@ -137,6 +137,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')
 
index 910dfab..b680710 100644 (file)
@@ -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
index ae5f3b7..a232cb5 100644 (file)
@@ -25,6 +25,10 @@ headers = files(
        'rte_port_eventdev.h')
 deps += ['ethdev', 'sched', 'ip_frag', 'cryptodev', 'eventdev']
 
+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')