util/getversion,meson: Add script to allow version info with Meson

Add `util/getversion.sh` that retrieves version information from a
`versioninfo.inc` (what we use for releases) if present or uses
`util/getrevision.sh` if not.

Let Meson use it for flashrom's version. It seems Meson doesn't
generate the manual page at all, so the `--man-date` command is
currently unused.

Change-Id: I401e5638509c4a573bc0cb17ebc5fa76df9700b5
Signed-off-by: Nico Huber <nico.h@gmx.de>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/35561
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Mario Limonciello <superm1@gmail.com>
Reviewed-by: Richard Hughes <hughsient@gmail.com>
Reviewed-by: David Hendricks <david.hendricks@gmail.com>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
diff --git a/meson.build b/meson.build
index d1f663f..b63875e 100644
--- a/meson.build
+++ b/meson.build
@@ -1,5 +1,5 @@
 project('flashromutils', 'c',
-  version : '1.0',
+  version : run_command('util/getversion.sh', '-v').stdout().strip(),
   license : 'GPL-2.0',
   meson_version : '>=0.47.0',
   default_options : ['warning_level=2', 'c_std=c99'],
diff --git a/util/getversion.sh b/util/getversion.sh
new file mode 100755
index 0000000..d3810d2
--- /dev/null
+++ b/util/getversion.sh
@@ -0,0 +1,71 @@
+#!/bin/sh
+#
+# This file is part of the flashrom project.
+#
+# 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.
+#
+
+version() {
+	if [ -r versioninfo.inc ]; then
+		v=$(sed -n 's/^VERSION = //p' versioninfo.inc)
+	else
+		v=$($(dirname ${0})/getrevision.sh --revision)
+		if [ $? -ne 0 ]; then
+			v='unknown'
+		fi
+	fi
+
+	echo ${v}
+}
+
+mandate() {
+	if [ -r versioninfo.inc ]; then
+		d=$(sed -n 's/^MAN_DATE = //p' versioninfo.inc)
+	else
+		d=$($(dirname ${0})/getrevision.sh --date flashrom.8.tmpl)
+		if [ $? -ne 0 ]; then
+			d='unknown'
+		fi
+	fi
+
+	echo ${d}
+}
+
+show_help() {
+	echo "Usage:
+	${0} <command>
+
+Commands
+    -h or --help
+        this message
+    -v or --version
+        return current/release flashrom version
+    -m or --man-date
+        return current/release date of the manual page
+"
+}
+
+if [ $# -ne 1 ]; then
+	show_help
+	echo "Error: Only exactly one command allowed.">&2
+	exit 1
+fi
+
+case $1 in
+	-h|--help)	show_help;;
+	-m|--man-date)	mandate;;
+	-v|--version)	version;;
+	*)
+		show_help
+		echo "Error: Invalid option: $1"
+		exit 1
+		;;
+esac