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