只改makefile将git hash 编译时间 版本信息 编译到程序中

在makefile添加一行,目的是在编译器编译时,产生一个全局字符串常量。程序中会去调用这个常量。
 
源文件:opensbi/Makefile
只需要这么写:
 
OPENSBI_VERSION_GIT=$(shell slogan="CET v0.1"`git log -1 --pretty=format:" git hash:%h"`" build at:"`date '+%F %T'`; echo $$slogan})
 
git describe --dirty --always 更好
 
看makefile后边这两句就可以发现,实际编译时 -D 起的作用。
GENFLAGS    +=  -DOPENSBI_VERSION_GIT="\"$(OPENSBI_VERSION_GIT)\""
CFLAGS      +=  $(GENFLAGS)
 
写程序时,直接把 OPENSBI_VERSION_GIT 当作一个编译器预定义宏来用。
sbi_printf("\nOpenSBI %s\n", OPENSBI_VERSION_GIT);
 
 
或者这样:
makefile:
OPENSBI_VERSION_GIT=$(shell echo "$(OPENSBI_SLOGAN)")
 
build.sh:
    OPENSBI_SLOGAN="CET 0.1"`git log -1 --pretty=format:" git hash:%h"`" build at:"`date '+%F %T'`

    make PLATFORM=andes/ae350 PLATFORM_RISCV_ISA=rv64imacxv5 \
    FW_PAYLOAD_PATH=${LINUX_FW_PATH} FW_PAYLOAD_FDT_PATH=${LINUX_DTB_PATH} \
    OPENSBI_SLOGAN="${OPENSBI_SLOGAN}"
 
posted @ 2021-07-05 15:00  园友1683564  阅读(434)  评论(0编辑  收藏  举报