From e7aaeec596f0d7115fef09d81a284def52583433 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <slouken@libsdl.org>
Date: Sun, 20 Feb 2011 10:42:51 -0800
Subject: [PATCH] Added a revision number for easy compile-time tests.

---
 build-scripts/updaterev.sh |  2 ++
 include/SDL_revision.h     |  1 +
 include/SDL_version.h      | 10 ++++++++++
 src/SDL.c                  |  7 +++++++
 test/testver.c             | 10 ++++++----
 5 files changed, 26 insertions(+), 4 deletions(-)

diff --git a/build-scripts/updaterev.sh b/build-scripts/updaterev.sh
index a01b3343..61ae9b02 100755
--- a/build-scripts/updaterev.sh
+++ b/build-scripts/updaterev.sh
@@ -9,7 +9,9 @@ header=$outdir/include/SDL_revision.h
 
 rev=`sh showrev.sh 2>/dev/null`
 if [ "$rev" != "" -a "$rev" != "hg-0:baadf00d" ]; then
+    revnum=`echo $rev | sed 's,hg-\([0-9]*\).*,\1,'`
     echo "#define SDL_REVISION \"$rev\"" >$header.new
+    echo "#define SDL_REVISION_NUMBER $revnum" >>$header.new
     if diff $header $header.new >/dev/null 2>&1; then
         rm $header.new
     else
diff --git a/include/SDL_revision.h b/include/SDL_revision.h
index 5eb56f99..d70fd694 100644
--- a/include/SDL_revision.h
+++ b/include/SDL_revision.h
@@ -1 +1,2 @@
 #define SDL_REVISION "hg-0:aaaaaaaaaaah"
+#define SDL_REVISION_NUMBER 0
diff --git a/include/SDL_version.h b/include/SDL_version.h
index d19f5f5c..92b55e99 100644
--- a/include/SDL_version.h
+++ b/include/SDL_version.h
@@ -144,6 +144,16 @@ extern DECLSPEC void SDLCALL SDL_GetVersion(SDL_version * ver);
  */
 extern DECLSPEC const char *SDLCALL SDL_GetRevision(void);
 
+/**
+ *  \brief Get the revision number of SDL that is linked against your program.
+ *
+ *  Returns a number uniquely identifying the exact revision of the SDL
+ *  library in use. It is an incrementing number based on commits to
+ *  hg.libsdl.org.
+ */
+extern DECLSPEC int SDLCALL SDL_GetRevisionNumber(void);
+
+
 /* Ends C function definitions when using C++ */
 #ifdef __cplusplus
 /* *INDENT-OFF* */
diff --git a/src/SDL.c b/src/SDL.c
index bb63586b..6399a94c 100644
--- a/src/SDL.c
+++ b/src/SDL.c
@@ -236,6 +236,13 @@ SDL_GetRevision(void)
     return SDL_REVISION;
 }
 
+/* Get the library source revision number */
+int
+SDL_GetRevisionNumber(void)
+{
+    return SDL_REVISION_NUMBER;
+}
+
 /* Get the name of the platform */
 const char *
 SDL_GetPlatform()
diff --git a/test/testver.c b/test/testver.c
index 8fb098e9..aaabc546 100644
--- a/test/testver.c
+++ b/test/testver.c
@@ -21,11 +21,13 @@ main(int argc, char *argv[])
     printf("Compiled with SDL older than 1.3\n");
 #endif
     SDL_VERSION(&compiled);
-    printf("Compiled version: %d.%d.%d (%s)\n",
-           compiled.major, compiled.minor, compiled.patch, SDL_REVISION);
+    printf("Compiled version: %d.%d.%d.%d (%s)\n",
+           compiled.major, compiled.minor, compiled.patch,
+           SDL_REVISION_NUMBER, SDL_REVISION);
     SDL_GetVersion(&linked);
-    printf("Linked version: %d.%d.%d (%s)\n",
-           linked.major, linked.minor, linked.patch, SDL_GetRevision());
+    printf("Linked version: %d.%d.%d.%d (%s)\n",
+           linked.major, linked.minor, linked.patch,
+           SDL_GetRevisionNumber(), SDL_GetRevision());
     SDL_Quit();
     return (0);
 }
-- 
2.18.1