]> git.droids-corp.org - dpdk.git/commitdiff
build: allow recursive disabling of libraries
authorBruce Richardson <bruce.richardson@intel.com>
Wed, 19 Jan 2022 18:09:57 +0000 (18:09 +0000)
committerDavid Marchand <david.marchand@redhat.com>
Fri, 21 Jan 2022 11:05:14 +0000 (12:05 +0100)
Align the code in lib/meson.build with that in drivers/meson.build to
enable recursive disabling of libraries, i.e. if library b depends on
library a, disable library b if a is disabled (either explicitly or
implicitly). This allows libraries to be optional even if other DPDK
libs depend on them, something that was not previously possible.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Morten Brørup <mb@smartsharesystems.com>
Acked-by: David Marchand <david.marchand@redhat.com>
lib/meson.build

index fbaa6ef7c2975576a939f43087864d1fde93908d..af4662e9429b29d5235e1270d8c26841727d9165 100644 (file)
@@ -134,23 +134,29 @@ foreach l:libraries
         warning('Library name, "@0@", and directory name, "@1@", do not match'.format(name, l))
     endif
 
-    if not build
-        dpdk_libs_disabled += name
-        set_variable(name.underscorify() + '_disable_reason', reason)
-        continue
-    endif
-
     shared_deps = ext_deps
     static_deps = ext_deps
     foreach d:deps
+        if not build
+            break
+        endif
         if not is_variable('shared_rte_' + d)
-            error('Missing internal dependency "@0@" for @1@ [@2@]'
+            build = false
+            reason = 'missing internal dependency, "@0@"'.format(d)
+            message('Disabling @1@ [@2@]: missing internal dependency "@0@"'
                     .format(d, name, 'lib/' + l))
+        else
+            shared_deps += [get_variable('shared_rte_' + d)]
+            static_deps += [get_variable('static_rte_' + d)]
         endif
-        shared_deps += [get_variable('shared_rte_' + d)]
-        static_deps += [get_variable('static_rte_' + d)]
     endforeach
 
+    if not build
+        dpdk_libs_disabled += name
+        set_variable(name.underscorify() + '_disable_reason', reason)
+        continue
+    endif
+
     enabled_libs += name
     dpdk_conf.set('RTE_LIB_' + name.to_upper(), 1)
     install_headers(headers)