drivers/crypto: return error for not supported SA lifetime
[dpdk.git] / examples / meson.build
index 2c6b3f8..bac9b76 100644 (file)
 # SPDX-License-Identifier: BSD-3-Clause
-# Copyright(c) 2017 Intel Corporation
+# Copyright(c) 2017-2019 Intel Corporation
 
-driver_libs = []
+link_whole_libs = []
 if get_option('default_library') == 'static'
-       driver_libs = dpdk_drivers
+    link_whole_libs = dpdk_static_libraries + dpdk_drivers
 endif
 
-execinfo = cc.find_library('execinfo', required: false)
-foreach example: get_option('examples').split(',')
-       name = example
-       sources = []
-       allow_experimental_apis = false
-       cflags = machine_args
-       ext_deps = [execinfo]
-       includes = [include_directories(example)]
-       deps = ['eal', 'mempool', 'net', 'mbuf', 'ethdev', 'cmdline']
-       subdir(example)
-
-       dep_objs = ext_deps
-       foreach d:deps
-               dep_objs += [get_variable(get_option('default_library') + '_rte_' + d)]
-       endforeach
-       if allow_experimental_apis
-               cflags += '-DALLOW_EXPERIMENTAL_API'
-       endif
-       executable('dpdk-' + name, sources,
-               include_directories: includes,
-               link_whole: driver_libs,
-               link_args: dpdk_extra_ldflags,
-               c_args: cflags,
-               dependencies: dep_objs)
+# list of all example apps. Keep 1-3 per line, in alphabetical order.
+all_examples = [
+        'bbdev_app',
+        'bond',
+        'cmdline',
+        'distributor',
+        'dma',
+        'ethtool',
+        'eventdev_pipeline',
+        'fips_validation',
+        'flow_classify',
+        'flow_filtering',
+        'helloworld',
+        '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 build
+        dep_objs = ext_deps
+        foreach d:deps
+            var_name = get_option('default_library') + '_rte_' + d
+            if not is_variable(var_name)
+                build = false
+                message('Missing dependency "@0@" for example "@1@"'.format(d, name))
+                break
+            endif
+            dep_objs += [get_variable(var_name)]
+        endforeach
+    endif
+
+    if not build
+        if not allow_skips
+            error('Cannot build requested example "' + name + '"')
+        endif
+        message('Skipping example "' + name + '"')
+        continue
+    endif
+
+    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