From: Tobias Brunner Date: Tue, 5 May 2020 14:19:09 +0000 (+0200) Subject: configure: Optionally use version information obtained from Git in executables X-Git-Tag: 5.9.0rc1~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2e522952c77d9795da68b28f0b4268b6771c5141;p=thirdparty%2Fstrongswan.git 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). --- diff --git a/Makefile.am b/Makefile.am index 958edc6fe2..762a51c140 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 \ diff --git a/configure.ac b/configure.ac index d71ddeb38c..6ee47f584c 100644 --- a/configure.ac +++ b/configure.ac @@ -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 # =============================================== diff --git a/scripts/Makefile.am b/scripts/Makefile.am index a793800b7b..82d92ef791 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -1,3 +1,5 @@ +EXTRA_DIST = git-version + AM_CPPFLAGS = \ -I$(top_srcdir)/src/libstrongswan \ -I$(top_srcdir)/src/libtls \ diff --git a/scripts/git-version b/scripts/git-version new file mode 100755 index 0000000000..f92d0718f4 --- /dev/null +++ b/scripts/git-version @@ -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