summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile4
-rwxr-xr-xbin/extract_git_sha110
-rw-r--r--src/mesa/main/version.c7
3 files changed, 20 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index a1ab65ef0c4..be9567987a9 100644
--- a/Makefile
+++ b/Makefile
@@ -5,7 +5,10 @@ TOP = .
SUBDIRS = src
+# The git command below generates an empty string when we're not
+# building in a GIT tree (i.e., building from a release tarball).
default: $(TOP)/configs/current
+ @$(TOP)/bin/extract_git_sha1
@for dir in $(SUBDIRS) ; do \
if [ -d $$dir ] ; then \
(cd $$dir && $(MAKE)) || exit 1 ; \
@@ -199,6 +202,7 @@ MAIN_FILES = \
$(DIRECTORY)/aclocal.m4 \
$(DIRECTORY)/bin/config.guess \
$(DIRECTORY)/bin/config.sub \
+ $(DIRECTORY)/bin/extract_git_sha1 \
$(DIRECTORY)/bin/install-sh \
$(DIRECTORY)/bin/mklib \
$(DIRECTORY)/bin/minstall \
diff --git a/bin/extract_git_sha1 b/bin/extract_git_sha1
new file mode 100755
index 00000000000..e6e6731a36c
--- /dev/null
+++ b/bin/extract_git_sha1
@@ -0,0 +1,10 @@
+#!/bin/sh
+touch src/mesa/main/git_sha1.h
+if which git > /dev/null; then
+ # Extract the 7-digit "short" SHA1 for the current HEAD, convert
+ # it to a string, and wrap it in a #define. This is used in
+ # src/mesa/main/version.c to put the GIT SHA1 in the GL_VERSION string.
+ git log -n 1 --oneline |\
+ sed 's/^\([^ ]*\) .*/#define MESA_GIT_SHA1 "git-\1"/' \
+ > src/mesa/main/git_sha1.h
+fi
diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c
index c7a0d69a4f0..80fa0c244eb 100644
--- a/src/mesa/main/version.c
+++ b/src/mesa/main/version.c
@@ -25,6 +25,7 @@
#include "imports.h"
#include "mtypes.h"
#include "version.h"
+#include "git_sha1.h"
@@ -185,7 +186,11 @@ compute_version(struct gl_context *ctx)
ctx->VersionString = (char *) malloc(max);
if (ctx->VersionString) {
_mesa_snprintf(ctx->VersionString, max,
- "%u.%u Mesa " MESA_VERSION_STRING,
+ "%u.%u Mesa " MESA_VERSION_STRING
+#ifdef MESA_GIT_SHA1
+ " (" MESA_GIT_SHA1 ")"
+#endif
+ ,
ctx->VersionMajor, ctx->VersionMinor);
}
}