xref: /dpdk/drivers/net/mana/meson.build (revision 8d7596cad7abb413c25f6782fe62fd0d388b8b94)
1# SPDX-License-Identifier: BSD-3-Clause
2# Copyright(c) 2022 Microsoft Corporation
3
4if not is_linux or not (dpdk_conf.has('RTE_ARCH_X86') or dpdk_conf.has('RTE_ARCH_ARM64'))
5    build = false
6    reason = 'only supported on x86 or arm64 Linux'
7    subdir_done()
8endif
9
10deps += ['pci', 'bus_pci', 'net', 'eal', 'kvargs']
11
12sources += files(
13        'gdma.c',
14        'mana.c',
15        'mp.c',
16        'mr.c',
17        'rx.c',
18        'tx.c',
19)
20
21libnames = ['ibverbs', 'mana']
22libs = []
23foreach libname:libnames
24    lib = dependency('lib' + libname, required:false)
25    if not lib.found()
26        lib = cc.find_library(libname, required:false)
27    endif
28    if lib.found()
29        libs += lib
30        ext_deps += lib
31    else
32        build = false
33        reason = 'missing dependency, "' + libname + '"'
34        subdir_done()
35    endif
36endforeach
37
38required_symbols = [
39    ['infiniband/manadv.h', 'manadv_set_context_attr'],
40    ['infiniband/manadv.h', 'manadv_init_obj'],
41    ['infiniband/manadv.h', 'MANADV_CTX_ATTR_BUF_ALLOCATORS'],
42    ['infiniband/manadv.h', 'MANADV_OBJ_QP'],
43    ['infiniband/manadv.h', 'MANADV_OBJ_CQ'],
44    ['infiniband/manadv.h', 'MANADV_OBJ_RWQ'],
45]
46
47foreach arg:required_symbols
48    if not cc.has_header_symbol(arg[0], arg[1], dependencies: libs, args: cflags)
49        build = false
50        reason = 'missing symbol "' + arg[1] + '" in "' + arg[0] + '"'
51        subdir_done()
52    endif
53endforeach
54