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