summaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2010-10-13 22:58:23 -0400
committerWolfgang Denk <wd@denx.de>2010-10-19 23:28:53 +0200
commitf3a14d377e2fb4e48026810fbf67e189a5e5f515 (patch)
treebbc7fb26277b62bd6bd2dd9bcb1fe3f6c4025902 /Makefile
parente9319f111d366294b9a1e8b1f66875242a5de3dd (diff)
downloadtalos-obmc-uboot-f3a14d377e2fb4e48026810fbf67e189a5e5f515.tar.gz
talos-obmc-uboot-f3a14d377e2fb4e48026810fbf67e189a5e5f515.zip
Makefile: allow boards to check file size limits
Boards often have a reserved size limit on the flash where they're stored. Sometimes during upgrades or config changes, those limits are exceeded, but no one notices until they try to upgrade and the limit screws things up. Either not enough of U-Boot is written to flash (and so the reboot fails), or too much is written (and so things after it get clobbered). So allow boards to declare a size limit (in bytes) and have the build system check it while building. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile17
1 files changed, 17 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 30a564d3cb..e9c069d3fa 100644
--- a/Makefile
+++ b/Makefile
@@ -304,6 +304,21 @@ __LIBS := $(subst $(obj),,$(LIBS)) $(subst $(obj),,$(LIBBOARD))
#########################################################################
#########################################################################
+ifneq ($(CONFIG_BOARD_SIZE_LIMIT),)
+BOARD_SIZE_CHECK = \
+ @actual=`wc -c $@ | awk '{print $$1}'`; \
+ limit=$(CONFIG_BOARD_SIZE_LIMIT); \
+ if test $$actual -gt $$limit; then \
+ echo "$@ exceeds file size limit:"; \
+ echo " limit: $$limit bytes"; \
+ echo " actual: $$actual bytes"; \
+ echo " excess: $$((actual - limit)) bytes"; \
+ exit 1; \
+ fi
+else
+BOARD_SIZE_CHECK =
+endif
+
# Always append ALL so that arch config.mk's can add custom ones
ALL += $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map $(U_BOOT_NAND) $(U_BOOT_ONENAND)
@@ -317,10 +332,12 @@ $(obj)u-boot.srec: $(obj)u-boot
$(obj)u-boot.bin: $(obj)u-boot
$(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
+ $(BOARD_SIZE_CHECK)
$(obj)u-boot.ldr: $(obj)u-boot
$(CREATE_LDR_ENV)
$(LDR) -T $(CONFIG_BFIN_CPU) -c $@ $< $(LDR_FLAGS)
+ $(BOARD_SIZE_CHECK)
$(obj)u-boot.ldr.hex: $(obj)u-boot.ldr
$(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@ -I binary
OpenPOWER on IntegriCloud