From: David Marchand Date: Sat, 6 Nov 2021 08:53:04 +0000 (+0100) Subject: examples: skip build when missing dependencies X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=f01ca13fca6dde68fa3962269c5cddb7e8e7f1d7;p=dpdk.git examples: skip build when missing dependencies 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 Acked-by: Bruce Richardson --- 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..bac9b76007 100644 --- a/examples/meson.build +++ b/examples/meson.build @@ -104,6 +104,19 @@ foreach example: examples 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 + '"') @@ -112,14 +125,6 @@ foreach example: examples continue endif - dep_objs = ext_deps - foreach d:deps - var_name = get_option('default_library') + '_rte_' + d - if not is_variable(var_name) - error('Missing dependency "@0@" for example "@1@"'.format(d, name)) - endif - dep_objs += [get_variable(var_name)] - endforeach if allow_experimental_apis cflags += '-DALLOW_EXPERIMENTAL_API' endif diff --git a/examples/vhost_crypto/meson.build b/examples/vhost_crypto/meson.build index 720f42dd70..1c294c286f 100644 --- a/examples/vhost_crypto/meson.build +++ b/examples/vhost_crypto/meson.build @@ -6,11 +6,6 @@ # To build this example as a standalone application with an already-installed # DPDK instance, use 'make' -build = dpdk_conf.has('RTE_LIB_VHOST') -if not build - subdir_done() -endif - allow_experimental_apis = true deps += ['vhost', 'cryptodev'] sources = files( diff --git a/examples/vm_power_manager/guest_cli/meson.build b/examples/vm_power_manager/guest_cli/meson.build index 666eef94ae..a69f809e3b 100644 --- a/examples/vm_power_manager/guest_cli/meson.build +++ b/examples/vm_power_manager/guest_cli/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 - deps += ['power'] sources = files( diff --git a/examples/vm_power_manager/meson.build b/examples/vm_power_manager/meson.build index c15bad6609..b866d8fd54 100644 --- a/examples/vm_power_manager/meson.build +++ b/examples/vm_power_manager/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 - deps += ['power'] if dpdk_conf.has('RTE_NET_BNXT')