[dpdk-dev,2/8] build: add detection and use of libnuma

Message ID 20171017161220.59941-3-bruce.richardson@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Bruce Richardson
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Bruce Richardson Oct. 17, 2017, 4:12 p.m. UTC
  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(+)
  

Patch

diff --git a/config/meson.build b/config/meson.build
index 542fea4de..ce26a29f0 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 c0ceacd61..0d1ebad2f 100644
--- a/lib/librte_eal/linuxapp/eal/meson.build
+++ b/lib/librte_eal/linuxapp/eal/meson.build
@@ -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)
diff --git a/lib/librte_vhost/meson.build b/lib/librte_vhost/meson.build
index 9674dd056..c62c9ead2 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
 sources = files('fd_man.c', 'iotlb.c', 'socket.c', 'vhost.c', 'vhost_user.c',
 		'virtio_net.c')