[U-Boot] [U-Boot, v2] Enable expression support for CONFIG_BOARD_SIZE_LIMIT

Tom Rini trini at konsulko.com
Fri Dec 14 19:16:42 UTC 2018


On Fri, Dec 07, 2018 at 08:27:51PM +0100, Wolfgang Denk wrote:

> So far, the use of CONFIG_BOARD_SIZE_LIMIT would only work with
> plain numeric constants.  Extend it to allow for expressions, so one
> can for example use
> 
> 	#define CONFIG_BOARD_SIZE_LIMIT	(768 << 10)
> 
> in the board configuration.
> 
> Signed-off-by: Wolfgang Denk <wd at denx.de>
> Tested-by: Fabio Estevam <festevam at gmail.com>
> 
> Cc: Fabio Estevam <festevam at gmail.com>
> Cc: Stefano Babic <sbabic at denx.de>
> Cc: Vanessa Maegima <vanessa.maegima at nxp.com>
> Cc: Otavio Salvador <otavio at ossystems.com.br>
> Cc: John Weber <john.weber at technexion.com>
> Cc: Stefan Roese <sr at denx.de>
> ---
> v2: replace bashism for evaluating expressions in CONFIG_BOARD_SIZE_LIMIT
>     by another call to awk.
> 
> Note 1: As gawk lacks an eval function and we don't want to rely on
>  bash being used as shell, we use another call to awk to evaluate the
>  expression. This has the disadvantage that we cannot use expressions
>  like "<<" which awk does not understand. OK, one could replace awk
>  by something better...
> 
> Note 2: This patch focusses on enabling this new feature.  It does
>  not addres another issue that should be solved in a later
>  commit: the duplication of the same code in Makefile and
>  arch/arm/mach-imx/Makefile
> 
> ---
>  Makefile                   | 17 ++++++++---------
>  arch/arm/mach-imx/Makefile | 17 ++++++++---------
>  2 files changed, 16 insertions(+), 18 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 0d11ff9797..87eb0fd2b1 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -774,15 +774,14 @@ LDPPFLAGS += \
>  
>  ifneq ($(CONFIG_BOARD_SIZE_LIMIT),)
>  BOARD_SIZE_CHECK = \
> -	@actual=`wc -c $@ | awk '{print $$1}'`; \
> -	limit=`printf "%d" $(CONFIG_BOARD_SIZE_LIMIT)`; \
> -	if test $$actual -gt $$limit; then \
> -		echo "$@ exceeds file size limit:" >&2 ; \
> -		echo "  limit:  $$limit bytes" >&2 ; \
> -		echo "  actual: $$actual bytes" >&2 ; \
> -		echo "  excess: $$((actual - limit)) bytes" >&2; \
> -		exit 1; \
> -	fi
> +	@(awk "END{print $$(echo $(CONFIG_BOARD_SIZE_LIMIT))}" /dev/null; wc -c $@ ) | \

So this fails with awk being provided by mawk, not gawk:
$ mawk "END{print $(echo 0xE0000)}" /dev/null;
0
$ gawk "END{print $(echo 0xE0000)}" /dev/null;
917504

And then things fail as mawk doesn't like hex.

Now, at the end of the day, I'm now not sure I agree with this patch in
concept.  When CONFIG_BOARD_SIZE_LIMIT is moved to Kconfig it will be
taking I would assume a hex input and so we don't have to worry about <<
at all.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181214/cafdb540/attachment.sig>


More information about the U-Boot mailing list