From 97af579397311618ca9d66e39923639140b877f2 Mon Sep 17 00:00:00 2001 From: Gale Faraday Date: Wed, 6 Aug 2025 16:20:43 -0500 Subject: [PATCH] feat(version): added support for building version information --- .gitignore | 3 +++ Makefile | 13 +++++++++++-- genver.sh | 17 +++++++++++++++++ src/version.h | 5 +++++ 4 files changed, 36 insertions(+), 2 deletions(-) create mode 100755 genver.sh create mode 100644 src/version.h diff --git a/.gitignore b/.gitignore index 602bc80..136f000 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ bbs build/ + +# Machine generated files: +src/version.c diff --git a/Makefile b/Makefile index 0e1cc61..9ada612 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,10 @@ # Makefile for Amber's BBS Interface # Buildsys by Gale Faraday -.PHONY: all clean run +# `generate` must be called before `all` to build version information and other +# machine generated files. + +.PHONY: all clean run generate .SUFFIXES: .DEFAULT_GOAL := all @@ -11,6 +14,7 @@ TARGET := $(shell basename $(CURDIR)) SOURCES := src/ BUILD := build/ +GENABLES := $(SOURCES)version.c OBJS := $(patsubst $(SOURCES)%.c,$(BUILD)%.o,$(wildcard $(SOURCES)*.c)) EXECUTABLE := $(TARGET) @@ -27,7 +31,12 @@ run: $(EXECUTABLE) .IGNORE: clean clean: - @rm -rvf $(BUILD) $(EXECUTABLE) + @rm -rvf $(BUILD) $(EXECUTABLE) $(GENABLES) + +generate: $(GENABLES) + +$(GENABLES): genver.sh + ./genver.sh $(EXECUTABLE): $(OBJS) $(LD) $(LDFLAGS) -o $@ $^ diff --git a/genver.sh b/genver.sh new file mode 100755 index 0000000..e9038a1 --- /dev/null +++ b/genver.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +# Script to generate version information file + +# Current git tag +TAG="$(git describe --always --dirty --tags)" + +# Output filename +OUTFILE='src/version.c' + +sed -e "s//$TAG/g" < "$OUTFILE" +/* Build version information. This file generated by genver.sh */ + +const char GIT_HASH[] = ""; +const char CC_VERSION[] = __VERSION__; +const char BUILD_DATE[] = __DATE__; +EOF diff --git a/src/version.h b/src/version.h new file mode 100644 index 0000000..fcb477c --- /dev/null +++ b/src/version.h @@ -0,0 +1,5 @@ +/* Header for version information constants */ + +extern const char GIT_HASH[]; +extern const char CC_VERSION[]; +extern const char BUILD_DATE[];