aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test cases/common/72 build always/main.c7
-rw-r--r--test cases/common/72 build always/meson.build15
-rw-r--r--test cases/common/72 build always/version.c.in3
-rw-r--r--test cases/common/72 build always/version.h3
-rwxr-xr-xtest cases/common/72 build always/version_gen.py29
5 files changed, 57 insertions, 0 deletions
diff --git a/test cases/common/72 build always/main.c b/test cases/common/72 build always/main.c
new file mode 100644
index 0000000..f8d9ac9
--- /dev/null
+++ b/test cases/common/72 build always/main.c
@@ -0,0 +1,7 @@
+#include<stdio.h>
+#include"version.h"
+
+int main(int argc, char **argv) {
+ printf("Version is %s.\n", version_string);
+ return 0;
+}
diff --git a/test cases/common/72 build always/meson.build b/test cases/common/72 build always/meson.build
new file mode 100644
index 0000000..7cb2e4b
--- /dev/null
+++ b/test cases/common/72 build always/meson.build
@@ -0,0 +1,15 @@
+project('run always', 'c')
+
+version = '1.0.0'
+
+vgen = find_program('version_gen.py')
+
+version_src = custom_target('Version string',
+input : 'version.c.in',
+output : 'version.c',
+command : [vgen, '@INPUT@', '@OUTPUT@', version],
+build_always : true,
+)
+
+executable('versionprinter', 'main.c', version_src,
+include_directories : include_directories('.'))
diff --git a/test cases/common/72 build always/version.c.in b/test cases/common/72 build always/version.c.in
new file mode 100644
index 0000000..619e517
--- /dev/null
+++ b/test cases/common/72 build always/version.c.in
@@ -0,0 +1,3 @@
+#include"version.h"
+
+const char *version_string = "@VERSION@";
diff --git a/test cases/common/72 build always/version.h b/test cases/common/72 build always/version.h
new file mode 100644
index 0000000..d3fe5c6
--- /dev/null
+++ b/test cases/common/72 build always/version.h
@@ -0,0 +1,3 @@
+#pragma once
+
+const char *version_string;
diff --git a/test cases/common/72 build always/version_gen.py b/test cases/common/72 build always/version_gen.py
new file mode 100755
index 0000000..34e8da3
--- /dev/null
+++ b/test cases/common/72 build always/version_gen.py
@@ -0,0 +1,29 @@
+#!/usr/bin/python3
+
+import sys, os, subprocess
+
+def generate(infile, outfile, fallback):
+ workdir = os.path.split(infile)[0]
+ if workdir == '':
+ workdir = '.'
+ p = subprocess.Popen(['git', 'describe'], cwd=workdir, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ (stdo, _) = p.communicate()
+ # If we are working off an extracted tarball, git version number is not available.
+ if p.returncode == 0:
+ version = stdo.decode().strip()
+ else:
+ version = fallback
+ newdata = open(infile).read().replace('@VERSION@', version)
+ try:
+ olddata = open(outfile).read()
+ if olddata == newdata:
+ return
+ except Exception:
+ pass
+ open(outfile, 'w').write(newdata)
+
+if __name__ == '__main__':
+ infile = sys.argv[1]
+ outfile = sys.argv[2]
+ fallback = sys.argv[3]
+ generate(infile, outfile, fallback)