[dpdk-dev,2/8] build: add detection and use of libnuma
Checks
Commit Message
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 <bruce.richardson@intel.com>
---
config/meson.build | 10 ++++++++++
lib/librte_eal/linuxapp/eal/meson.build | 3 +++
lib/librte_vhost/meson.build | 3 +++
3 files changed, 16 insertions(+)
@@ -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')
@@ -50,6 +50,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)
@@ -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
sources = files('fd_man.c', 'iotlb.c', 'socket.c', 'vhost.c', 'vhost_user.c',
'virtio_net.c')