makefile的常用技巧

  1. echo打印
ifeq (,$(findstring s,$(MAKEFLAGS)))
XECHO = echo
else
XECHO = :
endif

......

@$(XECHO) Generating $@

执行make显示打印,make -s不显示打印。

  1. 限制文件大小
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
else
BOARD_SIZE_CHECK =
endif

$(obj)u-boot.bin:   $(obj)u-boot
        $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
        $(BOARD_SIZE_CHECK)

定义CONFIG_BOARD_SIZE_LIMIT可以自动检测目标文件的大小是否超出,防止镜像超出分区最大容量。

  1. 定义当前时间
@LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"' > timestamp_autogenerated.h
@LC_ALL=C date +'#define U_BOOT_TIME "%T"' >> timestamp_autogenerated.h

timestamp_autogenerated.h写入#define U_BOOT_DATE "Jan 29 2019"

你可能感兴趣的:(makefile的常用技巧)