Skip to content

Commit

Permalink
Add support for auto-updated version information
Browse files Browse the repository at this point in the history
The Makefile will now use a script (autoversion.sh) to update
version.h, which in turn defines a VERSION string and gets
included from common.h.

The idea is that version.h normally receives a git-describe
based identifier that represents the current checkout. In
cases where git might not be available, e.g. for builds from
a tarball, the script will instead fall back to a predefined
version (that should reflect the most recent release tag).

Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
  • Loading branch information
n1tehawk committed Oct 21, 2016
1 parent fc30490 commit 5792814
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 7 deletions.
5 changes: 3 additions & 2 deletions .gitignore
@@ -1,9 +1,10 @@
sunxi-fexc
bin2fex
fex2bin
sunxi-bootinfo
sunxi-fel
sunxi-pio
sunxi-fexc
sunxi-nand-part
sunxi-pio
version.h
*.o
*.swp
13 changes: 8 additions & 5 deletions Makefile
Expand Up @@ -61,7 +61,7 @@ all: tools target-tools
tools: $(TOOLS) $(FEXC_LINKS)
target-tools: $(TARGET_TOOLS)

misc: $(MISC_TOOLS)
misc: version.h $(MISC_TOOLS)

binfiles: $(BINFILES)

Expand All @@ -85,9 +85,9 @@ install-target-tools: $(TARGET_TOOLS)

clean:
@rm -vf $(TOOLS) $(FEXC_LINKS) $(TARGET_TOOLS) $(MISC_TOOLS)
@rm -vf *.o *.elf *.sunxi *.bin *.nm *.orig
@rm -vf version.h *.o *.elf *.sunxi *.bin *.nm *.orig

$(TOOLS) $(TARGET_TOOLS): Makefile common.h
$(TOOLS) $(TARGET_TOOLS): Makefile common.h version.h

fex2bin bin2fex: sunxi-fexc
ln -nsf $< $@
Expand Down Expand Up @@ -158,7 +158,10 @@ sunxi-meminfo: meminfo.c
sunxi-script_extractor: script_extractor.c
$(CROSS_COMPILE)gcc -g -O0 -Wall -static -o $@ $^

version.h:
@./autoversion.sh > $@

.gitignore: Makefile
@for x in $(TOOLS) $(FEXC_LINKS) $(TARGET_TOOLS) '*.o' '*.swp'; do \
@for x in $(TOOLS) $(FEXC_LINKS) $(TARGET_TOOLS) version.h '*.o' '*.swp'; do \
echo "$$x"; \
done > $@
done | sort -V > $@
18 changes: 18 additions & 0 deletions autoversion.sh
@@ -0,0 +1,18 @@
#
# This script auto-updates a VERSION string definition.
# It outputs informational messages to stderr, while the actual
# output (on stdout) can easily be redirected to a file.
#

LATEST_RELEASE="v1.3"

if VER=`git describe --tags --dirty --always`; then
echo "Setting version information: ${VER}" >&2
else
VER=${LATEST_RELEASE}
echo "Unable to determine current version (using \"${VER}\" as fallback)" >&2
fi
echo >&2

echo "/* Auto-generated information. DO NOT EDIT */"
echo "#define VERSION \"${VER}\""
2 changes: 2 additions & 0 deletions common.h
Expand Up @@ -19,6 +19,8 @@

#include <stddef.h> /* offsetof */

#include "version.h" /* auto-generated VERSION string */

/** flag function argument as unused */
#ifdef UNUSED
#elif defined(__GNUC__)
Expand Down

0 comments on commit 5792814

Please sign in to comment.