examples: skip build when missing dependencies
authorDavid Marchand <david.marchand@redhat.com>
Sat, 6 Nov 2021 08:53:04 +0000 (09:53 +0100)
committerDavid Marchand <david.marchand@redhat.com>
Wed, 10 Nov 2021 10:42:34 +0000 (11:42 +0100)
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.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
examples/distributor/meson.build
examples/kni/meson.build
examples/l3fwd-power/meson.build
examples/meson.build
examples/vhost_crypto/meson.build
examples/vm_power_manager/guest_cli/meson.build
examples/vm_power_manager/meson.build

index 9df5992..ca1eca9 100644 (file)
@@ -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(
index 1c0bf99..6bd4eb5 100644 (file)
@@ -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',
index 0f69bb7..624ef5e 100644 (file)
@@ -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(
index d50f09d..bac9b76 100644 (file)
@@ -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
index 720f42d..1c294c2 100644 (file)
@@ -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(
index 666eef9..a69f809 100644 (file)
@@ -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(
index c15bad6..b866d8f 100644 (file)
@@ -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')