From f3eeed27ffe3b8521d45940df587385c50069056 Mon Sep 17 00:00:00 2001 From: Bruce Richardson Date: Thu, 12 Oct 2017 15:02:27 +0100 Subject: [PATCH] build: detect and use libnuma DPDK has an optional dependency on libnuma, so manage that through the build system, by dynamically detecting the presence of the needed library and header files. Since this library is used by both EAL and vhost, check for the presence at the top level in the config directory. Signed-off-by: Bruce Richardson Reviewed-by: Luca Boccassi --- config/meson.build | 10 ++++++++++ lib/librte_eal/linuxapp/eal/meson.build | 3 +++ lib/librte_vhost/meson.build | 3 +++ 3 files changed, 16 insertions(+) diff --git a/config/meson.build b/config/meson.build index 2e0f581f87..f0d74d4a39 100644 --- a/config/meson.build +++ b/config/meson.build @@ -37,6 +37,16 @@ add_project_arguments('-march=@0@'.format(machine), language: 'c') add_project_link_arguments('-lm', language: 'c') dpdk_extra_ldflags += '-lm' +# check for libraries used in multiple places in DPDK +has_libnuma = 0 +numa_dep = cc.find_library('numa', required: false) +if numa_dep.found() and cc.has_header('numaif.h') + dpdk_conf.set10('RTE_HAS_LIBNUMA', true) + has_libnuma = 1 + add_project_link_arguments('-lnuma', language: 'c') + dpdk_extra_ldflags += '-lnuma' +endif + # add -include rte_config to cflags add_project_arguments('-include', 'rte_config.h', language: 'c') diff --git a/lib/librte_eal/linuxapp/eal/meson.build b/lib/librte_eal/linuxapp/eal/meson.build index d4be55714d..9f1cbbfe0b 100644 --- a/lib/librte_eal/linuxapp/eal/meson.build +++ b/lib/librte_eal/linuxapp/eal/meson.build @@ -47,6 +47,9 @@ sources = ['eal_alarm.c', ] eal_extra_link_arg = '-ldl' +if has_libnuma == 1 + dpdk_conf.set10('RTE_EAL_NUMA_AWARE_HUGEPAGES', true) +endif if get_option('per_library_versions') lib_version = '@0@.1'.format(version) diff --git a/lib/librte_vhost/meson.build b/lib/librte_vhost/meson.build index 529b0aea3b..6ae4d36ba8 100644 --- a/lib/librte_vhost/meson.build +++ b/lib/librte_vhost/meson.build @@ -32,6 +32,9 @@ if host_machine.system() != 'linux' build = false endif +if has_libnuma == 1 + dpdk_conf.set10('RTE_LIBRTE_VHOST_NUMA', true) +endif version = 4 allow_experimental_apis = true sources = files('fd_man.c', 'iotlb.c', 'socket.c', 'vhost.c', 'vhost_user.c', -- 2.20.1