On Fri, Nov 05, 2021 at 02:30:55PM +0100, David Marchand wrote: > Trying to disable the vhost library, meson will complain it can't build > the vhost* and vdpa examples when passing -Dexamples=all. > > -Dexamples=all skips examples if the example itself announces it can't > be built (for external dependencies, internal dependencies and other > reasons). > Since examples/meson.build will evaluate the internal dependencies > in any case, let's move the check there and resolve the issue for > optional internal libraries. > > Fixes: 0bf583222297 ("lib: allow disabling optional libraries") > > Signed-off-by: David Marchand <david.march...@redhat.com>
One comment inline below, otherwise looks a good change. Acked-by: Bruce Richardson <bruce.richard...@intel.com> > --- > examples/distributor/meson.build | 6 ----- > examples/kni/meson.build | 6 ----- > examples/l3fwd-power/meson.build | 5 ---- > examples/meson.build | 24 ++++++++++++------- > examples/vhost_crypto/meson.build | 5 ---- > .../vm_power_manager/guest_cli/meson.build | 5 ---- > examples/vm_power_manager/meson.build | 5 ---- > 7 files changed, 16 insertions(+), 40 deletions(-) > > diff --git a/examples/distributor/meson.build > b/examples/distributor/meson.build > index 9df59923ce..ca1eca952e 100644 > --- a/examples/distributor/meson.build > +++ b/examples/distributor/meson.build > @@ -6,12 +6,6 @@ > # To build this example as a standalone application with an already-installed > # DPDK instance, use 'make' > > -# require the power library > -build = dpdk_conf.has('RTE_LIB_POWER') > -if not build > - subdir_done() > -endif > - > allow_experimental_apis = true > deps += ['distributor', 'power'] > sources = files( > diff --git a/examples/kni/meson.build b/examples/kni/meson.build > index 1c0bf99a49..6bd4eb50e6 100644 > --- a/examples/kni/meson.build > +++ b/examples/kni/meson.build > @@ -6,12 +6,6 @@ > # To build this example as a standalone application with an already-installed > # DPDK instance, use 'make' > > -# this app can be built if-and-only-if KNI library is buildable > -build = dpdk_conf.has('RTE_LIB_KNI') > -if not build > - subdir_done() > -endif > - > deps += ['kni', 'bus_pci'] > sources = files( > 'main.c', > diff --git a/examples/l3fwd-power/meson.build > b/examples/l3fwd-power/meson.build > index 0f69bb782c..624ef5e947 100644 > --- a/examples/l3fwd-power/meson.build > +++ b/examples/l3fwd-power/meson.build > @@ -6,11 +6,6 @@ > # To build this example as a standalone application with an already-installed > # DPDK instance, use 'make' > > -if not dpdk_conf.has('RTE_LIB_POWER') > - build = false > - subdir_done() > -endif > - > allow_experimental_apis = true > deps += ['power', 'timer', 'lpm', 'hash', 'metrics', 'telemetry'] > sources = files( > diff --git a/examples/meson.build b/examples/meson.build > index d50f09db12..35ec3471af 100644 > --- a/examples/meson.build > +++ b/examples/meson.build > @@ -104,6 +104,22 @@ foreach example: examples > deps = ['eal', 'mempool', 'net', 'mbuf', 'ethdev', 'cmdline'] > subdir(example) > > + if build > + dep_objs = ext_deps > + foreach d:deps > + if not build > + break > + endif I believe this check can be removed by just putting "break" after the "message()" call below. > + 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)) > + else > + dep_objs += [get_variable(var_name)] > + endif > + endforeach > + endif > +