From: Bruce Richardson Date: Tue, 24 Sep 2019 12:04:14 +0000 (+0100) Subject: port: fix pcap support with meson X-Git-Url: http://git.droids-corp.org/?p=dpdk.git;a=commitdiff_plain;h=268fa581b1ffbd3077279c18f5a86992b747a9c0 port: fix pcap support with meson 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 Signed-off-by: Bruce Richardson Tested-by: Cristian Bidea --- diff --git a/config/meson.build b/config/meson.build index 6a6ab503eb..e1ebdad261 100644 --- a/config/meson.build +++ b/config/meson.build @@ -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') diff --git a/drivers/net/pcap/meson.build b/drivers/net/pcap/meson.build index 910dfab9bc..b680710aa0 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 ae5f3b7d03..a232cb587b 100644 --- a/lib/librte_port/meson.build +++ b/lib/librte_port/meson.build @@ -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')