DPDK patches and discussions
 help / color / mirror / Atom feed
* [PATCH] build: list selected applications
@ 2022-10-28 12:34 David Marchand
  2022-10-28 13:35 ` Bruce Richardson
  2022-10-28 16:30 ` Markus Theil
  0 siblings, 2 replies; 4+ messages in thread
From: David Marchand @ 2022-10-28 12:34 UTC (permalink / raw)
  To: dev; +Cc: bruce.richardson, markus.theil

With the addition of enable/disable_apps meson options, it is a bit
harder to figure out which application is built, and why.

Display the list of applications in the same way we do for drivers and
libraries.

Signed-off-by: David Marchand <david.marchand@redhat.com>
---
 app/meson.build | 37 +++++++++++++++++++++++++++----------
 meson.build     | 23 +++++++++++++++++++++--
 2 files changed, 48 insertions(+), 12 deletions(-)

diff --git a/app/meson.build b/app/meson.build
index 96b9a78d3a..c3eea8acbd 100644
--- a/app/meson.build
+++ b/app/meson.build
@@ -1,8 +1,14 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017-2019 Intel Corporation
 
-enabled_apps = get_option('enable_apps')
-disabled_apps = get_option('disable_apps')
+disable_apps = ',' + get_option('disable_apps')
+disable_apps = run_command(list_dir_globs, disable_apps, check: true).stdout().split()
+
+enable_apps = ',' + get_option('enable_apps')
+enable_apps = run_command(list_dir_globs, enable_apps, check: true).stdout().split()
+if enable_apps.length() == 0
+    enable_apps = run_command(list_dir_globs, '*', check: true).stdout().split()
+endif
 
 apps = [
         'dumpcap',
@@ -29,13 +35,12 @@ if get_option('default_library') == 'static' and not is_windows
     default_ldflags += ['-Wl,--export-dynamic']
 endif
 
+enabled_apps = [] # used to print summary at the end
+
 foreach app:apps
-    build = enabled_apps == '' or enabled_apps.contains(app)
-    # let disabled_apps override enabled_apps
-    if disabled_apps != ''
-        build = build and not disabled_apps.contains(app)
-    endif
     name = app
+    build = true
+    reason = '<unknown reason>' # set if build == false to explain
     sources = []
     includes = []
     cflags = default_cflags
@@ -48,11 +53,17 @@ foreach app:apps
     ext_deps = []
     deps = []
 
-    if not build
-        continue
+    if not enable_apps.contains(app)
+        build = false
+        reason = 'not in enabled apps build config'
+    elif disable_apps.contains(app)
+        build = false
+        reason = 'explicitly disabled via build config'
     endif
 
-    subdir(name)
+    if build
+        subdir(name)
+    endif
 
     if build
         dep_objs = []
@@ -60,6 +71,7 @@ foreach app:apps
             var_name = get_option('default_library') + '_rte_' + d
             if not is_variable(var_name)
                 build = false
+                reason = 'missing internal dependency, "@0@"'.format(d)
                 message('Missing dependency "@0@" for app "@1@"'.format(d, name))
                 break
             endif
@@ -68,9 +80,14 @@ foreach app:apps
     endif
 
     if not build
+        if reason != ''
+            dpdk_apps_disabled += app
+            set_variable(app.underscorify() + '_disable_reason', reason)
+        endif
         continue
     endif
 
+    enabled_apps += app
     link_libs = []
     if get_option('default_library') == 'static'
         link_libs = dpdk_static_libraries + dpdk_drivers
diff --git a/meson.build b/meson.build
index d1cf039297..f91d652bc5 100644
--- a/meson.build
+++ b/meson.build
@@ -42,6 +42,7 @@ dpdk_driver_classes = []
 dpdk_drivers = []
 dpdk_extra_ldflags = []
 dpdk_libs_deprecated = []
+dpdk_apps_disabled = []
 dpdk_libs_disabled = []
 dpdk_drvs_disabled = []
 testpmd_drivers_sources = []
@@ -115,8 +116,21 @@ if meson.is_subproject()
     subdir('buildtools/subproject')
 endif
 
-# final output, list all the libs and drivers to be built
-# this does not affect any part of the build, for information only.
+# Final output, list all the parts to be built.
+# This does not affect any part of the build, for information only.
+output_message = '\n=================\nApplications Enabled\n=================\n'
+output_message += '\napps:\n\t'
+output_count = 0
+foreach app:enabled_apps
+    output_message += app + ', '
+    output_count += 1
+    if output_count == 8
+        output_message += '\n\t'
+        output_count = 0
+    endif
+endforeach
+message(output_message + '\n')
+
 output_message = '\n=================\nLibraries Enabled\n=================\n'
 output_message += '\nlibs:\n\t'
 output_count = 0
@@ -147,6 +161,11 @@ endforeach
 message(output_message + '\n')
 
 output_message = '\n=================\nContent Skipped\n=================\n'
+output_message += '\napps:\n\t'
+foreach app:dpdk_apps_disabled
+    reason = get_variable(app.underscorify() + '_disable_reason')
+    output_message += app + ':\t' + reason + '\n\t'
+endforeach
 output_message += '\nlibs:\n\t'
 foreach lib:dpdk_libs_disabled
     reason = get_variable(lib.underscorify() + '_disable_reason')
-- 
2.37.3


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] build: list selected applications
  2022-10-28 12:34 [PATCH] build: list selected applications David Marchand
@ 2022-10-28 13:35 ` Bruce Richardson
  2022-10-28 16:30 ` Markus Theil
  1 sibling, 0 replies; 4+ messages in thread
From: Bruce Richardson @ 2022-10-28 13:35 UTC (permalink / raw)
  To: David Marchand; +Cc: dev, markus.theil

On Fri, Oct 28, 2022 at 02:34:19PM +0200, David Marchand wrote:
> With the addition of enable/disable_apps meson options, it is a bit
> harder to figure out which application is built, and why.
> 
> Display the list of applications in the same way we do for drivers and
> libraries.
> 
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> ---
Acked-by: Bruce Richardson <bruce.richardson@intel.com>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] build: list selected applications
  2022-10-28 12:34 [PATCH] build: list selected applications David Marchand
  2022-10-28 13:35 ` Bruce Richardson
@ 2022-10-28 16:30 ` Markus Theil
  2022-11-14 10:33   ` David Marchand
  1 sibling, 1 reply; 4+ messages in thread
From: Markus Theil @ 2022-10-28 16:30 UTC (permalink / raw)
  To: David Marchand, dev; +Cc: bruce.richardson

[-- Attachment #1: Type: text/plain, Size: 381 bytes --]

On 10/28/22 14:34, David Marchand wrote:
> With the addition of enable/disable_apps meson options, it is a bit
> harder to figure out which application is built, and why.
>
> Display the list of applications in the same way we do for drivers and
> libraries.
>
> Signed-off-by: David Marchand<david.marchand@redhat.com>
> ---
|Reviewed-by: Markus Theil <markus.theil@secunet.com>
|

[-- Attachment #2: Type: text/html, Size: 971 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] build: list selected applications
  2022-10-28 16:30 ` Markus Theil
@ 2022-11-14 10:33   ` David Marchand
  0 siblings, 0 replies; 4+ messages in thread
From: David Marchand @ 2022-11-14 10:33 UTC (permalink / raw)
  To: David Marchand; +Cc: dev, bruce.richardson, Markus Theil

On Fri, Oct 28, 2022 at 6:30 PM Markus Theil <markus.theil@tu-ilmenau.de> wrote:
> On 10/28/22 14:34, David Marchand wrote:
>
> With the addition of enable/disable_apps meson options, it is a bit
> harder to figure out which application is built, and why.
>
> Display the list of applications in the same way we do for drivers and
> libraries.
>
> Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
> Reviewed-by: Markus Theil <markus.theil@secunet.com>

Applied, thanks.


-- 
David Marchand


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-11-14 10:33 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-28 12:34 [PATCH] build: list selected applications David Marchand
2022-10-28 13:35 ` Bruce Richardson
2022-10-28 16:30 ` Markus Theil
2022-11-14 10:33   ` David Marchand

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).