From a2a7763ac7651e64c3928ba0a13be9317bd48c4d Mon Sep 17 00:00:00 2001 From: Palmer Dabbelt Date: Sat, 17 Aug 2019 19:41:09 +0530 Subject: [PATCH] Include `git describe` in OpenSBI OpenSBI includes a version, but that is only updated when tagged. For users that are using the git releases we instead end up with an ambiguous version number, which makes it hard to figure out what everyone is using. This patch checks for a git directory and prints out the result of `git describe`, which is a mix of pretty and unambiguous. Signed-off-by: Palmer Dabbelt Signed-off-by: Anup Patel Reviewed-by: Bin Meng Tested-by: Bin Meng --- Makefile | 4 ++++ lib/sbi/sbi_init.c | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/Makefile b/Makefile index 78c28c0..9784598 100644 --- a/Makefile +++ b/Makefile @@ -65,6 +65,7 @@ export firmware_dir=$(CURDIR)/firmware # Find library version OPENSBI_VERSION_MAJOR=`grep "define OPENSBI_VERSION_MAJOR" $(include_dir)/sbi/sbi_version.h | sed 's/.*MAJOR.*\([0-9][0-9]*\)/\1/'` OPENSBI_VERSION_MINOR=`grep "define OPENSBI_VERSION_MINOR" $(include_dir)/sbi/sbi_version.h | sed 's/.*MINOR.*\([0-9][0-9]*\)/\1/'` +OPENSBI_VERSION_GIT=$(shell if [ -d $(src_dir)/.git ]; then git describe; fi) # Setup compilation commands ifdef CROSS_COMPILE @@ -151,6 +152,9 @@ endif # Setup compilation commands flags GENFLAGS = -I$(platform_src_dir)/include GENFLAGS += -I$(include_dir) +ifneq ($(OPENSBI_VERSION_GIT),) +GENFLAGS += -DOPENSBI_VERSION_GIT="\"$(OPENSBI_VERSION_GIT)\"" +endif GENFLAGS += $(libsbiutils-genflags-y) GENFLAGS += $(platform-genflags-y) GENFLAGS += $(firmware-genflags-y) diff --git a/lib/sbi/sbi_init.c b/lib/sbi/sbi_init.c index 4f47a6c..4663a30 100644 --- a/lib/sbi/sbi_init.c +++ b/lib/sbi/sbi_init.c @@ -34,8 +34,13 @@ static void sbi_boot_prints(struct sbi_scratch *scratch, u32 hartid) const struct sbi_platform *plat = sbi_platform_ptr(scratch); misa_string(str, sizeof(str)); +#ifdef OPENSBI_VERSION_GIT + sbi_printf("\nOpenSBI %s (%s %s)\n", OPENSBI_VERSION_GIT, + __DATE__, __TIME__); +#else sbi_printf("\nOpenSBI v%d.%d (%s %s)\n", OPENSBI_VERSION_MAJOR, OPENSBI_VERSION_MINOR, __DATE__, __TIME__); +#endif sbi_printf(BANNER);