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_64') 5 build = false 6 reason = 'only supported on x86_64 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'] 22foreach libname:libnames 23 lib = dependency('lib' + libname, required:false) 24 if not lib.found() 25 lib = cc.find_library(libname, required:false) 26 endif 27 if lib.found() 28 ext_deps += lib 29 else 30 build = false 31 reason = 'missing dependency, "' + libname + '"' 32 subdir_done() 33 endif 34endforeach 35 36required_symbols = [ 37 ['infiniband/manadv.h', 'manadv_set_context_attr'], 38 ['infiniband/manadv.h', 'manadv_init_obj'], 39 ['infiniband/manadv.h', 'MANADV_CTX_ATTR_BUF_ALLOCATORS'], 40 ['infiniband/manadv.h', 'MANADV_OBJ_QP'], 41 ['infiniband/manadv.h', 'MANADV_OBJ_CQ'], 42 ['infiniband/manadv.h', 'MANADV_OBJ_RWQ'], 43] 44 45foreach arg:required_symbols 46 if not cc.has_header_symbol(arg[0], arg[1]) 47 build = false 48 reason = 'missing symbol "' + arg[1] + '" in "' + arg[0] + '"' 49 subdir_done() 50 endif 51endforeach 52