summaryrefslogtreecommitdiff
path: root/examples/meson.build
diff options
context:
space:
mode:
authorBruce Richardson <bruce.richardson@intel.com>2018-03-29 14:54:34 +0100
committerBruce Richardson <bruce.richardson@intel.com>2018-04-17 16:09:43 +0200
commit038e5ecc76578a9ca54cc7f8e211b5253093287c (patch)
treebc0331b5ce7e5ff93a98f4fa841f806fa578cea5 /examples/meson.build
parent4f49c9f5be981b85ea8b29928c96ff4f2e02e261 (diff)
downloaddpdk-draft-windows-038e5ecc76578a9ca54cc7f8e211b5253093287c.zip
dpdk-draft-windows-038e5ecc76578a9ca54cc7f8e211b5253093287c.tar.gz
dpdk-draft-windows-038e5ecc76578a9ca54cc7f8e211b5253093287c.tar.xz
examples: allow building all as part of meson build
To test building all relevant example applications as part of a build, we add support for the "all" keyword to be passed to the "examples" build option. Since not all examples can actually be built on all systems, we also add support for the "build" option inside the sub-dirs. However, in case where "all" is not used, and a particular example is requested to be built, we will error out if building the requested app is not possible. Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Tested-by: Harry van Haaren <harry.van.haaren@intel.com>
Diffstat (limited to 'examples/meson.build')
-rw-r--r--examples/meson.build45
1 files changed, 32 insertions, 13 deletions
diff --git a/examples/meson.build b/examples/meson.build
index 2c6b3f8..16c3ab0 100644
--- a/examples/meson.build
+++ b/examples/meson.build
@@ -7,8 +7,20 @@ if get_option('default_library') == 'static'
endif
execinfo = cc.find_library('execinfo', required: false)
-foreach example: get_option('examples').split(',')
+
+allow_skips = true # don't flag an error if we can't build an app
+
+if get_option('examples').to_lower() == 'all'
+ dirs = run_command('sh', '-c',
+ 'cd $MESON_SOURCE_ROOT/$MESON_SUBDIR && for d in * ; do if [ -d $d ] ; then echo $d ; fi ; done')
+ examples = dirs.stdout().split()
+else
+ examples = get_option('examples').split(',')
+ allow_skips = false # error out if we can't build a requested app
+endif
+foreach example: examples
name = example
+ build = true
sources = []
allow_experimental_apis = false
cflags = machine_args
@@ -17,17 +29,24 @@ foreach example: get_option('examples').split(',')
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'
+ if build
+ 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)
+ elif not allow_skips
+ error('Cannot build requested example "' + name + '"')
+ else
+ message('Skipping example "' + name + '"')
endif
- executable('dpdk-' + name, sources,
- include_directories: includes,
- link_whole: driver_libs,
- link_args: dpdk_extra_ldflags,
- c_args: cflags,
- dependencies: dep_objs)
endforeach