[U-Boot] [PATCH v2] Enable expression support for CONFIG_BOARD_SIZE_LIMIT
Wolfgang Denk
wd at denx.de
Fri Dec 7 19:27:51 UTC 2018
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 $@ ) | \
+ awk 'BEGIN { getline limit } \
+ { if ($$1 > limit) { \
+ printf "%s exceeds file size limit:\n", $$2; \
+ printf " limit: %d bytes\n", limit; \
+ printf " actual: %d bytes\n", $$1; \
+ printf " excess: %d bytes\n", $$1 - limit; \
+ exit 1; } }'
else
BOARD_SIZE_CHECK =
endif
diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile
index 53d9e5f42b..36d1ecc732 100644
--- a/arch/arm/mach-imx/Makefile
+++ b/arch/arm/mach-imx/Makefile
@@ -60,15 +60,14 @@ endif
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 $@ ) | \
+ awk 'BEGIN { getline limit } \
+ { if ($$1 > limit) { \
+ printf "%s exceeds file size limit:\n", $$2; \
+ printf " limit: %d bytes\n", limit; \
+ printf " actual: %d bytes\n", $$1; \
+ printf " excess: %d bytes\n", $$1 - limit; \
+ exit 1; } }'
else
BOARD_SIZE_CHECK =
endif
--
2.19.2
More information about the U-Boot
mailing list