xref: /f-stack/dpdk/examples/meson.build (revision 2d9fd380)
1d30ea906Sjfb8856606# SPDX-License-Identifier: BSD-3-Clause
24418919fSjohnjiang# Copyright(c) 2017-2019 Intel Corporation
3d30ea906Sjfb8856606
40c6bd470Sfengbojianglink_whole_libs = []
5d30ea906Sjfb8856606if get_option('default_library') == 'static'
60c6bd470Sfengbojiang	link_whole_libs = dpdk_static_libraries + dpdk_drivers
7d30ea906Sjfb8856606endif
8d30ea906Sjfb8856606
9d30ea906Sjfb8856606execinfo = cc.find_library('execinfo', required: false)
10d30ea906Sjfb8856606
114418919fSjohnjiang# list of all example apps. Keep 1-3 per line, in alphabetical order.
124418919fSjohnjiangall_examples = [
134418919fSjohnjiang	'bbdev_app', 'bond',
144418919fSjohnjiang	'cmdline',
154418919fSjohnjiang	'distributor', 'ethtool',
164418919fSjohnjiang	'eventdev_pipeline',
174418919fSjohnjiang	'fips_validation', 'flow_classify',
184418919fSjohnjiang	'flow_filtering', 'helloworld',
194418919fSjohnjiang	'ioat',
204418919fSjohnjiang	'ip_fragmentation', 'ip_pipeline',
214418919fSjohnjiang	'ip_reassembly', 'ipsec-secgw',
224418919fSjohnjiang	'ipv4_multicast', 'kni',
234418919fSjohnjiang	'l2fwd', 'l2fwd-cat', 'l2fwd-event',
244418919fSjohnjiang	'l2fwd-crypto', 'l2fwd-jobstats',
254418919fSjohnjiang	'l2fwd-keepalive', 'l3fwd',
26*2d9fd380Sjfb8856606	'l3fwd-acl', 'l3fwd-power', 'l3fwd-graph',
274418919fSjohnjiang	'link_status_interrupt',
284418919fSjohnjiang	'multi_process/client_server_mp/mp_client',
294418919fSjohnjiang	'multi_process/client_server_mp/mp_server',
304418919fSjohnjiang	'multi_process/hotplug_mp',
314418919fSjohnjiang	'multi_process/simple_mp',
324418919fSjohnjiang	'multi_process/symmetric_mp',
334418919fSjohnjiang	'ntb', 'packet_ordering',
344418919fSjohnjiang	'performance-thread/l3fwd-thread',
354418919fSjohnjiang	'performance-thread/pthread_shim',
36*2d9fd380Sjfb8856606	'pipeline',
374418919fSjohnjiang	'ptpclient',
384418919fSjohnjiang	'qos_meter', 'qos_sched',
394418919fSjohnjiang	'rxtx_callbacks',
404418919fSjohnjiang	'server_node_efd/node',
414418919fSjohnjiang	'server_node_efd/server',
424418919fSjohnjiang	'service_cores',
43*2d9fd380Sjfb8856606	'skeleton',
444418919fSjohnjiang	'timer', 'vdpa',
454418919fSjohnjiang	'vhost', 'vhost_crypto',
464418919fSjohnjiang	'vhost_blk', 'vm_power_manager',
474418919fSjohnjiang	'vm_power_manager/guest_cli',
484418919fSjohnjiang	'vmdq', 'vmdq_dcb',
494418919fSjohnjiang]
504418919fSjohnjiang
514418919fSjohnjiangif get_option('examples') == ''
524418919fSjohnjiang	subdir_done()
534418919fSjohnjiangendif
54d30ea906Sjfb8856606
55d30ea906Sjfb8856606if get_option('examples').to_lower() == 'all'
564418919fSjohnjiang	examples = all_examples
574418919fSjohnjiang	allow_skips = true # don't flag an error if we can't build an app
58d30ea906Sjfb8856606else
59d30ea906Sjfb8856606	examples = get_option('examples').split(',')
60d30ea906Sjfb8856606	allow_skips = false # error out if we can't build a requested app
61d30ea906Sjfb8856606endif
62d30ea906Sjfb8856606default_cflags = machine_args
63d30ea906Sjfb8856606if cc.has_argument('-Wno-format-truncation')
64d30ea906Sjfb8856606	default_cflags += '-Wno-format-truncation'
65d30ea906Sjfb8856606endif
66d30ea906Sjfb8856606
67d30ea906Sjfb8856606foreach example: examples
684418919fSjohnjiang	name = example.split('/')[-1]
69d30ea906Sjfb8856606	build = true
70d30ea906Sjfb8856606	sources = []
71d30ea906Sjfb8856606	allow_experimental_apis = false
72d30ea906Sjfb8856606	cflags = default_cflags
73d30ea906Sjfb8856606
74d30ea906Sjfb8856606	ext_deps = [execinfo]
75d30ea906Sjfb8856606	includes = [include_directories(example)]
76d30ea906Sjfb8856606	deps = ['eal', 'mempool', 'net', 'mbuf', 'ethdev', 'cmdline']
77d30ea906Sjfb8856606	subdir(example)
78d30ea906Sjfb8856606
79d30ea906Sjfb8856606	if build
80d30ea906Sjfb8856606		dep_objs = ext_deps
81d30ea906Sjfb8856606		foreach d:deps
82d30ea906Sjfb8856606			var_name = get_option('default_library') + '_rte_' + d
83d30ea906Sjfb8856606			if not is_variable(var_name)
84d30ea906Sjfb8856606				error('Missing dependency "@0@" for example "@1@"'.format(d, name))
85d30ea906Sjfb8856606			endif
86d30ea906Sjfb8856606			dep_objs += [get_variable(var_name)]
87d30ea906Sjfb8856606		endforeach
88d30ea906Sjfb8856606		if allow_experimental_apis
89d30ea906Sjfb8856606			cflags += '-DALLOW_EXPERIMENTAL_API'
90d30ea906Sjfb8856606		endif
91d30ea906Sjfb8856606		executable('dpdk-' + name, sources,
92d30ea906Sjfb8856606			include_directories: includes,
930c6bd470Sfengbojiang			link_whole: link_whole_libs,
94d30ea906Sjfb8856606			link_args: dpdk_extra_ldflags,
95d30ea906Sjfb8856606			c_args: cflags,
96d30ea906Sjfb8856606			dependencies: dep_objs)
97d30ea906Sjfb8856606	elif not allow_skips
98d30ea906Sjfb8856606		error('Cannot build requested example "' + name + '"')
99d30ea906Sjfb8856606	else
100d30ea906Sjfb8856606		message('Skipping example "' + name + '"')
101d30ea906Sjfb8856606	endif
102d30ea906Sjfb8856606endforeach
103