DATESTAMP := $(shell date +"%d%m%Y_%H%M%S")

# ===========================================
# Build information variables
# ===========================================

DATESTAMP := $(shell date +"%Y%m%d_%H%M%S")
GITHASH   := $(shell git rev-parse --short HEAD 2>/dev/null || echo "no-git")
GITORG    := $(shell git remote -v)
GITBRANCH := $(shell git branch --show-current)
HOSTNAME  := $(shell hostname)
PWD       := $(shell pwd)
USER      := $(shell echo $$USER)

# Optional: define version manually or via a file
VERSION   := 1.0.0

# Path to generated header
BUILDINFO_H = build_info.h

# ===========================================
# Rule to auto-generate the header
# ===========================================
.PHONY: buildinfo
buildinfo:
	@echo "Generating $(BUILDINFO_H)"
	@echo "/* Auto-generated: DO NOT EDIT */"              >  $(BUILDINFO_H)
	@echo "#ifndef BUILD_INFO_H"                          >> $(BUILDINFO_H)
	@echo "#define BUILD_INFO_H"                          >> $(BUILDINFO_H)
	@echo ""                                              >> $(BUILDINFO_H)
	@echo "#define BUILD_DATE      \"$(DATESTAMP)\""      >> $(BUILDINFO_H)
	@echo "#define BUILD_GIT_HASH  \"$(GITHASH)\""        >> $(BUILDINFO_H)
	@echo "#define BUILD_HOST      \"$(HOSTNAME)\""       >> $(BUILDINFO_H)
	@echo "#define BUILD_PWD       \"$(PWD)\""            >> $(BUILDINFO_H)
	@echo "#define BUILD_USER      \"$(USER)\""           >> $(BUILDINFO_H)
	@echo "#define BUILD_VERSION   \"$(VERSION)\""        >> $(BUILDINFO_H)
	@echo "#define GITORG          \"$(GITORG)\""         >> $(BUILDINFO_H)
	@echo "#define GITBRANCH       \"$(GITBRANCH)\""      >> $(BUILDINFO_H)
	@echo ""                                              >> $(BUILDINFO_H)
	@echo "#endif /* BUILD_INFO_H */"                     >> $(BUILDINFO_H)


