只改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}"