From: David Marchand <david.marchand@redhat.com>
To: dev@dpdk.org
Cc: bruce.richardson@intel.com, markus.theil@tu-ilmenau.de
Subject: [PATCH] build: list selected applications
Date: Fri, 28 Oct 2022 14:34:19 +0200 [thread overview]
Message-ID: <20221028123419.1482918-1-david.marchand@redhat.com> (raw)
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
next reply other threads:[~2022-10-28 12:34 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-28 12:34 David Marchand [this message]
2022-10-28 13:35 ` Bruce Richardson
2022-10-28 16:30 ` Markus Theil
2022-11-14 10:33 ` David Marchand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221028123419.1482918-1-david.marchand@redhat.com \
--to=david.marchand@redhat.com \
--cc=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
--cc=markus.theil@tu-ilmenau.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).