numam-dpdk/app/meson.build
Markus Theil ab2bb5044c build: select applications to build
Makes apps configurable from meson, like already possible for drivers.

Signed-off-by: Markus Theil <markus.theil@tu-ilmenau.de>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
2022-10-28 14:27:48 +02:00

92 lines
2.3 KiB
Meson

# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2017-2019 Intel Corporation
enabled_apps = get_option('enable_apps')
disabled_apps = get_option('disable_apps')
apps = [
'dumpcap',
'pdump',
'proc-info',
'test-acl',
'test-bbdev',
'test-cmdline',
'test-compress-perf',
'test-crypto-perf',
'test-eventdev',
'test-fib',
'test-flow-perf',
'test-gpudev',
'test-pipeline',
'test-pmd',
'test-regex',
'test-sad',
]
default_cflags = machine_args + ['-DALLOW_EXPERIMENTAL_API']
default_ldflags = []
if get_option('default_library') == 'static' and not is_windows
default_ldflags += ['-Wl,--export-dynamic']
endif
foreach app:apps
build = enabled_apps == '' or enabled_apps.contains(app)
# let disabled_apps override enabled_apps
if disabled_apps != ''
build = build and not disabled_apps.contains(app)
endif
name = app
sources = []
includes = []
cflags = default_cflags
ldflags = default_ldflags
objs = [] # other object files to link against, used e.g. for
# instruction-set optimized versions of code
# use "deps" for internal DPDK dependencies, and "ext_deps" for
# external package/library requirements
ext_deps = []
deps = []
if not build
continue
endif
subdir(name)
if build
dep_objs = []
foreach d:deps
var_name = get_option('default_library') + '_rte_' + d
if not is_variable(var_name)
build = false
message('Missing dependency "@0@" for app "@1@"'.format(d, name))
break
endif
dep_objs += [get_variable(var_name)]
endforeach
endif
if not build
continue
endif
link_libs = []
if get_option('default_library') == 'static'
link_libs = dpdk_static_libraries + dpdk_drivers
endif
executable('dpdk-' + name,
sources,
c_args: cflags,
link_args: ldflags,
link_whole: link_libs,
dependencies: ext_deps + dep_objs,
include_directories: includes,
install_rpath: join_paths(get_option('prefix'), driver_install_path),
install: true)
endforeach
# special case the autotests
subdir('test')