Index: trunk/ppMerge/src/ppMergeVersion.c
===================================================================
--- trunk/ppMerge/src/ppMergeVersion.c	(revision 21244)
+++ trunk/ppMerge/src/ppMergeVersion.c	(revision 23126)
@@ -22,22 +22,40 @@
 #include "ppMergeVersion.h"
 
-static const char *cvsTag = "$Name: not supported by cvs2svn $";///< CVS tag name
-
 psString ppMergeVersion(void)
 {
-    psString version = NULL;            ///< Version, to return
-    psStringAppend(&version, "%s-%s",PACKAGE_NAME,PACKAGE_VERSION);
-    return version;
+#ifndef PPMERGE_VERSION
+#error "PPMERGE_VERSION is not set"
+#endif
+#ifndef PPMERGE_BRANCH
+#error "PPMERGE_BRANCH is not set"
+#endif
+    return psStringCopy(PPMERGE_BRANCH "@" PPMERGE_VERSION);
+}
+
+psString ppMergeSource(void)
+{
+#ifndef PPMERGE_SOURCE
+#error "PPMERGE_SOURCE is not set"
+#endif
+    return psStringCopy(PPMERGE_SOURCE);
 }
 
 psString ppMergeVersionLong(void)
 {
-    psString version = ppMergeVersion(); ///< Version, to return
-    psString tag = psStringStripCVS(cvsTag, "Name"); ///< CVS tag
-    psStringAppend(&version, " (cvs tag %s) %s, %s", tag, __DATE__, __TIME__);
-    psFree(tag);
+    psString version = ppMergeVersion();  // Version, to return
+    psString source = ppMergeSource();    // Source
+
+    psStringPrepend(&version, "ppMerge ");
+    psStringAppend(&version, " from %s, built %s, %s", source, __DATE__, __TIME__);
+    psFree(source);
+
+#ifdef __OPTIMIZE__
+    psStringAppend(&version, " optimised");
+#else
+    psStringAppend(&version, " unoptimised");
+#endif
+
     return version;
-}
-
+};
 
 void ppMergeVersionMetadata(psMetadata *metadata)
