aboutsummaryrefslogtreecommitdiff
path: root/m4
diff options
context:
space:
mode:
authorMarc Schink <jaylink-dev@marcschink.de>2016-10-11 16:35:29 +0200
committerMarc Schink <jaylink-dev@marcschink.de>2016-10-25 21:49:32 +0200
commitcec02b8a258f91c8c6a4a088af02d165b90e95dc (patch)
tree2cf951146df63bf8dd2554d3ebabb4c88b7acbe8 /m4
parent7b3f7bf1086b79de4830c719d8265c3546f07e07 (diff)
downloadlibjaylink-cec02b8a258f91c8c6a4a088af02d165b90e95dc.zip
libjaylink-cec02b8a258f91c8c6a4a088af02d165b90e95dc.tar.gz
libjaylink-cec02b8a258f91c8c6a4a088af02d165b90e95dc.tar.bz2
Append Git revision hash to package version
Append the short Git revision hash of the current commit to the package version if there is no release tag for the package version on it and Git is available. This makes the package version more informative and allows the distinction between development and release versions. This code is inspired by, but not derived from, a patch from Daniel Elstner for the libsigrok project. Signed-off-by: Marc Schink <jaylink-dev@marcschink.de>
Diffstat (limited to 'm4')
-rw-r--r--m4/jaylink.m463
1 files changed, 63 insertions, 0 deletions
diff --git a/m4/jaylink.m4 b/m4/jaylink.m4
new file mode 100644
index 0000000..409fc9f
--- /dev/null
+++ b/m4/jaylink.m4
@@ -0,0 +1,63 @@
+##
+## This file is part of the libjaylink project.
+##
+## Copyright (C) 2016 Marc Schink <jaylink-dev@marcschink.de>
+##
+## This program is free software: you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation, either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program. If not, see <http://www.gnu.org/licenses/>.
+##
+
+# serial 20161011
+
+## _JAYLINK_SET_PACKAGE_VERSION(prefix, version, major, minor, micro)
+##
+m4_define([_JAYLINK_SET_PACKAGE_VERSION], [
+ m4_assert([$# == 5])
+
+ # Get the short Git revision hash of the current commit.
+ git_version=`git rev-parse --short HEAD 2> /dev/null`
+
+ # Try to get the release tag for the package version from the current
+ # commit.
+ tag=`git describe --match "$2" --exact-match 2> /dev/null`
+
+ version=$2
+
+ # If Git is available, append the short Git revision hash of the
+ # current commit to the version string if there is no release tag for
+ # the package version on it.
+ AS_IF([test -n "$git_version" && test -z "$tag"],
+ [version="$version-git-$git_version"])
+
+ AC_SUBST([$1_MAJOR], [$3])
+ AC_SUBST([$1_MINOR], [$4])
+ AC_SUBST([$1_MICRO], [$5])
+ AC_SUBST([$1], [$version])
+])
+
+## JAYLINK_SET_PACKAGE_VERSION(prefix, version)
+##
+## Parse the package version string of the format <major>.<minor>.<micro> and
+## set the variables <prefix>_{MAJOR,MINOR,MICRO} to their corresponding
+## values.
+##
+## Set the variable <prefix> to the package version string. If Git is
+## available, append the short Git revision hash of the current commit to the
+## version string if there is no release tag for the package version on it.
+##
+AC_DEFUN([JAYLINK_SET_PACKAGE_VERSION], [
+ m4_assert([$# == 2])
+
+ _JAYLINK_SET_PACKAGE_VERSION([$1], [$2],
+ m4_unquote(m4_split(m4_expand([$2]), [\.])))
+])