configure: Optionally use version information obtained from Git in executables

The variable GIT_VERSION is always defined, either obtained from Git or
a file that is embedded in tarballs when they are built.  Optionally,
that version is declared as VERSION in config.h so it will be used e.g. in
the daemons when they print the version number.

There is a check that should catch missing tags (i.e. if the version number
in AC_INIT() isn't a prefix of the version obtained via Git).
This commit is contained in:
Tobias Brunner 2020-05-05 16:19:09 +02:00
parent f77e8c171c
commit 2e522952c7
4 changed files with 37 additions and 0 deletions

View File

@ -38,6 +38,9 @@ Android.common.mk : Android.common.mk.in configure.ac
-e "s:\@PACKAGE_VERSION\@:$(PACKAGE_VERSION):" \
$(srcdir)/$@.in > $@
dist-hook:
@echo $(GIT_VERSION) > $(distdir)/.tarball-git-version
Doxyfile : Doxyfile.in
$(AM_V_GEN) \
sed \

View File

@ -326,6 +326,7 @@ ARG_ENABL_SET([tss-tss2], [enable the use of the TSS 2.0 Trusted Software
# compile options
ARG_ENABL_SET([coverage], [enable lcov coverage report generation.])
ARG_ENABL_SET([git-version], [use output of 'git describe' as version information in executables.])
ARG_ENABL_SET([leak-detective], [enable malloc hooks to find memory leaks.])
ARG_ENABL_SET([lock-profiler], [enable lock/mutex profiling code.])
ARG_ENABL_SET([log-thread-ids], [use thread ID, if available, instead of an incremented value starting from 1, to identify threads.])
@ -1384,6 +1385,21 @@ if test "x$ss_cv_static_plugin_constructors" = xyes; then
fi
fi
AC_MSG_CHECKING([version from Git repository])
AC_SUBST(GIT_VERSION, [$($srcdir/scripts/git-version "$srcdir")])
case "$GIT_VERSION" in
"$PACKAGE_VERSION"*)
AC_MSG_RESULT([$GIT_VERSION])
;;
*)
AC_MSG_ERROR([$PACKAGE_VERSION is not a prefix of $GIT_VERSION, tag missing?])
;;
esac
if test x$git_version = xtrue; then
AC_DEFINE_UNQUOTED(VERSION, ["$GIT_VERSION"])
fi
# ===============================================
# collect plugin list for strongSwan components
# ===============================================

View File

@ -1,3 +1,5 @@
EXTRA_DIST = git-version
AM_CPPFLAGS = \
-I$(top_srcdir)/src/libstrongswan \
-I$(top_srcdir)/src/libtls \

16
scripts/git-version Executable file
View File

@ -0,0 +1,16 @@
#!/bin/sh
SRCDIR=$1
TARBALL=$SRCDIR/.tarball-git-version
if test -f $TARBALL; then
V=$(cat $TARBALL)
elif test -d $SRCDIR/.git; then
V=$(git -C $SRCDIR describe --tags HEAD 2>/dev/null)
fi
if test -z "$V"; then
V="UNKNOWN"
fi
echo $V