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