xref: /dpdk/drivers/net/mana/meson.build (revision 8d7596cad7abb413c25f6782fe62fd0d388b8b94)
1517ed6e2SLong Li# SPDX-License-Identifier: BSD-3-Clause
2517ed6e2SLong Li# Copyright(c) 2022 Microsoft Corporation
3517ed6e2SLong Li
47649794dSLong Liif not is_linux or not (dpdk_conf.has('RTE_ARCH_X86') or dpdk_conf.has('RTE_ARCH_ARM64'))
5517ed6e2SLong Li    build = false
67649794dSLong Li    reason = 'only supported on x86 or arm64 Linux'
7517ed6e2SLong Li    subdir_done()
8517ed6e2SLong Liendif
9517ed6e2SLong Li
10517ed6e2SLong Lideps += ['pci', 'bus_pci', 'net', 'eal', 'kvargs']
11517ed6e2SLong Li
12517ed6e2SLong Lisources += files(
1356dd45c0SLong Li        'gdma.c',
14517ed6e2SLong Li        'mana.c',
15517ed6e2SLong Li        'mp.c',
160f5db3c6SLong Li        'mr.c',
175f705ac2SLong Li        'rx.c',
18410333daSLong Li        'tx.c',
19517ed6e2SLong Li)
20517ed6e2SLong Li
21517ed6e2SLong Lilibnames = ['ibverbs', 'mana']
22*8d7596caSShreesh Adigalibs = []
23517ed6e2SLong Liforeach libname:libnames
24df1982dfSThomas Monjalon    lib = dependency('lib' + libname, required:false)
25df1982dfSThomas Monjalon    if not lib.found()
26517ed6e2SLong Li        lib = cc.find_library(libname, required:false)
27df1982dfSThomas Monjalon    endif
28517ed6e2SLong Li    if lib.found()
29*8d7596caSShreesh Adiga        libs += lib
30517ed6e2SLong Li        ext_deps += lib
31517ed6e2SLong Li    else
32517ed6e2SLong Li        build = false
33517ed6e2SLong Li        reason = 'missing dependency, "' + libname + '"'
34517ed6e2SLong Li        subdir_done()
35517ed6e2SLong Li    endif
36517ed6e2SLong Liendforeach
37517ed6e2SLong Li
38517ed6e2SLong Lirequired_symbols = [
39517ed6e2SLong Li    ['infiniband/manadv.h', 'manadv_set_context_attr'],
40517ed6e2SLong Li    ['infiniband/manadv.h', 'manadv_init_obj'],
41517ed6e2SLong Li    ['infiniband/manadv.h', 'MANADV_CTX_ATTR_BUF_ALLOCATORS'],
42517ed6e2SLong Li    ['infiniband/manadv.h', 'MANADV_OBJ_QP'],
43517ed6e2SLong Li    ['infiniband/manadv.h', 'MANADV_OBJ_CQ'],
44517ed6e2SLong Li    ['infiniband/manadv.h', 'MANADV_OBJ_RWQ'],
45517ed6e2SLong Li]
46517ed6e2SLong Li
47517ed6e2SLong Liforeach arg:required_symbols
48*8d7596caSShreesh Adiga    if not cc.has_header_symbol(arg[0], arg[1], dependencies: libs, args: cflags)
49517ed6e2SLong Li        build = false
50517ed6e2SLong Li        reason = 'missing symbol "' + arg[1] + '" in "' + arg[0] + '"'
51517ed6e2SLong Li        subdir_done()
52517ed6e2SLong Li    endif
53517ed6e2SLong Liendforeach
54