You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

18 lines
451 B

build: unify verbosity handling This change introduces a few helper variables for dealing with verbose and silent build modes: `silent`, `verbose`, `q` and `s`. The `silent` and `verbose` variables are boolean values determining whether the build system has been configured to run silently or verbosely respectively (i.e. with `--silent` or `V=1`). These two modes cannot be used together - if `silent` is truthy then `verbose` is always falsy. As such: make --silent V=1 ... results in a silent build. In addition to these boolean variables, we also introduce two new variables - `s` and `q` - for use in rule recipes to conditionally suppress the output of commands. When building silently, `s` expands to a value which disables the command that follows, and `q` expands to a value which supppresses echoing of the command: $(s)echo 'This command is neither echoed nor executed' $(q)echo 'This command is executed but not echoed' When building verbosely, `s` expands to a value which disables the command that follows, and `q` expands to nothing: $(s)echo 'This command is neither echoed nor executed' $(q)echo 'This command is executed and echoed' In all other cases, both `s` and `q` expand to a value which suppresses echoing of the command that follows: $(s)echo 'This command is executed but not echoed' $(q)echo 'This command is executed but not echoed' The `s` variable is predominantly useful for `echo` commands, where you always want to suppress echoing of the command itself, whilst `q` is more useful for all other commands. Change-Id: I8d8ff6ed714d3cb401946c52955887ed7dca602b Signed-off-by: Chris Kay <chris.kay@arm.com>
6 months ago
#
# Copyright (c) 2024, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
ifndef common-mk
common-mk := $(lastword $(MAKEFILE_LIST))
include $(dir $(common-mk))utilities.mk
silent = $(call bool,$(findstring s,$(firstword ~$(MAKEFLAGS))))
verbose = $(if $(silent),,$(call bool,$(V)))
s = @$(if $(or $(verbose),$(silent)),: )
q = $(if $(verbose),,@)
endif