From: Bruce Richardson Date: Thu, 29 Mar 2018 13:54:34 +0000 (+0100) Subject: examples: allow building all as part of meson build X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=038e5ecc76578a9ca54cc7f8e211b5253093287c;p=dpdk.git 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 Tested-by: Harry van Haaren --- diff --git a/examples/meson.build b/examples/meson.build index 2c6b3f889c..16c3ab0052 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