cf59165dcb
As with the lib and drivers directories, we can use "continue" keyword to reduce the indentation level of the majority of the foreach block. At the same time, we can also replace tab indentation with spaces. Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
133 lines
3.6 KiB
Meson
133 lines
3.6 KiB
Meson
# SPDX-License-Identifier: BSD-3-Clause
|
|
# Copyright(c) 2017-2019 Intel Corporation
|
|
|
|
link_whole_libs = []
|
|
if get_option('default_library') == 'static'
|
|
link_whole_libs = dpdk_static_libraries + dpdk_drivers
|
|
endif
|
|
|
|
# list of all example apps. Keep 1-3 per line, in alphabetical order.
|
|
all_examples = [
|
|
'bbdev_app',
|
|
'bond',
|
|
'cmdline',
|
|
'distributor',
|
|
'ethtool',
|
|
'eventdev_pipeline',
|
|
'fips_validation',
|
|
'flow_classify',
|
|
'flow_filtering',
|
|
'helloworld',
|
|
'ioat',
|
|
'ip_fragmentation',
|
|
'ip_pipeline',
|
|
'ip_reassembly',
|
|
'ipsec-secgw',
|
|
'ipv4_multicast',
|
|
'kni',
|
|
'l2fwd',
|
|
'l2fwd-cat',
|
|
'l2fwd-crypto',
|
|
'l2fwd-event',
|
|
'l2fwd-jobstats',
|
|
'l2fwd-keepalive',
|
|
'l3fwd',
|
|
'l3fwd-acl',
|
|
'l3fwd-graph',
|
|
'l3fwd-power',
|
|
'link_status_interrupt',
|
|
'multi_process/client_server_mp/mp_client',
|
|
'multi_process/client_server_mp/mp_server',
|
|
'multi_process/hotplug_mp',
|
|
'multi_process/simple_mp',
|
|
'multi_process/symmetric_mp',
|
|
'ntb',
|
|
'packet_ordering',
|
|
'performance-thread/l3fwd-thread',
|
|
'performance-thread/pthread_shim',
|
|
'pipeline',
|
|
'ptpclient',
|
|
'qos_meter',
|
|
'qos_sched',
|
|
'rxtx_callbacks',
|
|
'server_node_efd/node',
|
|
'server_node_efd/server',
|
|
'service_cores',
|
|
'skeleton',
|
|
'timer',
|
|
'vdpa',
|
|
'vhost',
|
|
'vhost_blk',
|
|
'vhost_crypto',
|
|
'vm_power_manager',
|
|
'vm_power_manager/guest_cli',
|
|
'vmdq',
|
|
'vmdq_dcb',
|
|
]
|
|
|
|
# on install, skip copying all meson.build files
|
|
ex_file_excludes = ['meson.build']
|
|
foreach ex:all_examples
|
|
ex_file_excludes += [ex + '/meson.build']
|
|
endforeach
|
|
|
|
if get_option('examples') == ''
|
|
subdir_done()
|
|
endif
|
|
|
|
if get_option('examples').to_lower() == 'all'
|
|
examples = all_examples
|
|
allow_skips = true # don't flag an error if we can't build an app
|
|
else
|
|
examples = get_option('examples').split(',')
|
|
allow_skips = false # error out if we can't build a requested app
|
|
endif
|
|
default_cflags = machine_args
|
|
if cc.has_argument('-Wno-format-truncation')
|
|
default_cflags += '-Wno-format-truncation'
|
|
endif
|
|
default_ldflags = dpdk_extra_ldflags
|
|
if get_option('default_library') == 'static' and not is_windows
|
|
default_ldflags += ['-Wl,--export-dynamic']
|
|
endif
|
|
|
|
foreach example: examples
|
|
name = example.split('/')[-1]
|
|
build = true
|
|
sources = []
|
|
allow_experimental_apis = false
|
|
cflags = default_cflags
|
|
ldflags = default_ldflags
|
|
|
|
ext_deps = []
|
|
includes = [include_directories(example)]
|
|
deps = ['eal', 'mempool', 'net', 'mbuf', 'ethdev', 'cmdline']
|
|
subdir(example)
|
|
|
|
if not build
|
|
if not allow_skips
|
|
error('Cannot build requested example "' + name + '"')
|
|
endif
|
|
message('Skipping example "' + name + '"')
|
|
continue
|
|
endif
|
|
|
|
dep_objs = ext_deps
|
|
foreach d:deps
|
|
var_name = get_option('default_library') + '_rte_' + d
|
|
if not is_variable(var_name)
|
|
error('Missing dependency "@0@" for example "@1@"'.format(d, name))
|
|
endif
|
|
dep_objs += [get_variable(var_name)]
|
|
endforeach
|
|
if allow_experimental_apis
|
|
cflags += '-DALLOW_EXPERIMENTAL_API'
|
|
endif
|
|
executable('dpdk-' + name, sources,
|
|
include_directories: includes,
|
|
link_whole: link_whole_libs,
|
|
link_args: ldflags,
|
|
c_args: cflags,
|
|
dependencies: dep_objs)
|
|
endforeach
|