make-version.mk (1179B)
1 GLOBAL_DIR = $(SRC_DIR)/globals 2 ############################################################################### 3 # Versioning 4 HAS_TAG := $(shell git tag -l "v[0-9]*.[0-9]*") 5 ifeq ($(HAS_TAG),) 6 $(info No tags found. Define a tag like 'v0.1' to get versioning in build outputs) 7 else 8 VERSION = $(shell git describe --always --abbrev=4 --long) 9 VERSION_MAJOR = $(shell git describe --always --long | sed "s/^v\([0-9]\+\).*/\1/") 10 VERSION_MINOR = $(shell git describe --always --long | sed "s/^v[0-9]\+\.\([0-9]\+\).*/\1/") 11 VERSION_PATCH = $(shell git describe --always --long | sed "s/^v[0-9]\+\.[0-9]\+-\([0-9]\+\).*/\1/") 12 VERSION_HASH = $(shell git describe --always --abbrev=4 --long | sed "s/^v[0-9]\+\.[0-9]\+-[0-9]\+-\([a-z0-9]\{5\}\).*/\1/") 13 endif 14 15 VERSION_FILE = $(GLOBAL_DIR)/version.h 16 17 version: | $(VERSION_FILE) 18 $(Q)printf "// fw version: $(VERSION)\n \ 19 #include <stdint.h>\n \ 20 const uint8_t gGIT_VERSION_MAJOR = $(VERSION_MAJOR);\n \ 21 const uint8_t gGIT_VERSION_MINOR = $(VERSION_MINOR);\n \ 22 const uint8_t gGIT_VERSION_PATCH = $(VERSION_PATCH);\n \ 23 #define gGIT_VERSION_HASH \"$(VERSION_HASH)\"\n" > $(VERSION_FILE) 24 25 $(VERSION_FILE): 26 $(shell touch $(VERSION_FILE)) \