Index: trunk/ppStats/src/Makefile.am
===================================================================
--- trunk/ppStats/src/Makefile.am	(revision 23790)
+++ trunk/ppStats/src/Makefile.am	(revision 23802)
@@ -1,10 +1,26 @@
 lib_LTLIBRARIES = libppStats.la
 
+if HAVE_SVNVERSION
+PPSTATS_VERSION=`$(SVNVERSION) ../..`
+else
+PPSTATS_VERSION="UNKNOWN"
+endif
+
+if HAVE_SVN
+PPSTATS_BRANCH=`$(SVN) info ../.. | $(SED) -n -e '/URL:/ h' -e '/Repository Root:/ { x; H; x; s|Repository Root: \(.*\)\nURL: \1\(.*\)|\2| ; s|^/|| ; s|/[a-zA-Z]*/src.*|| ; p }'`
+PPSTATS_SOURCE=`$(SVN) info | $(SED) -n -e 's/Repository UUID: // p'`
+else
+PPSTATS_BRANCH="UNKNOWN"
+PPSTATS_SOURCE="UNKNOWN"
+endif
+
 # Force recompilation of ppStatsVersion.c, since it gets the version information
-ppStatsVersion.c: FORCE
-	touch ppStatsVersion.c
+ppStatsVersion.c: ppStatsVersionDefinitions.h
+ppStatsVersionDefinitions.h: ppStatsVersionDefinitions.h.in FORCE
+	-$(RM) ppStatsVersionDefinitions.h
+	$(SED) -e "s|@PPSTATS_VERSION@|\"$(PPSTATS_VERSION)\"|" -e "s|@PPSTATS_BRANCH@|\"$(PPSTATS_BRANCH)\"|" -e "s|@PPSTATS_SOURCE@|\"$(PPSTATS_SOURCE)\"|" ppStatsVersionDefinitions.h.in > ppStatsVersionDefinitions.h
 FORCE: ;
 
-libppStats_la_CFLAGS = $(PPSTATS_CFLAGS) $(PSMODULE_CFLAGS) $(PSLIB_CFLAGS) -DPPSTATS_VERSION=$(PPSTATS_VERSION) -DPPSTATS_BRANCH=$(PPSTATS_BRANCH) -DPPSTATS_SOURCE=$(PPSTATS_SOURCE)
+libppStats_la_CFLAGS = $(PPSTATS_CFLAGS) $(PSMODULE_CFLAGS) $(PSLIB_CFLAGS)
 libppStats_la_LDFLAGS = $(PPSTATS_LIBS) $(PSMODULE_LIBS) $(PSLIB_LIBS)
 
Index: trunk/ppStats/src/ppStatsVersion.c
===================================================================
--- trunk/ppStats/src/ppStatsVersion.c	(revision 23790)
+++ trunk/ppStats/src/ppStatsVersion.c	(revision 23802)
@@ -1,3 +1,4 @@
 #include "ppStatsInternal.h"
+#include "ppStatsVersionDefinitions.h"
 
 #ifndef PPSTATS_VERSION
@@ -11,11 +12,8 @@
 #endif
 
-#define xstr(s) str(s)
-#define str(s) #s
-
 psString ppStatsVersion(void)
 {
     char *value = NULL;
-    psStringAppend(&value, "%s@%s", xstr(PPSTATS_BRANCH), xstr(PPSTATS_VERSION));
+    psStringAppend(&value, "%s@%s", PPSTATS_BRANCH, PPSTATS_VERSION);
     return value;
 }
@@ -23,5 +21,5 @@
 psString ppStatsSource(void)
 {
-    return psStringCopy(xstr(PPSTATS_SOURCE));
+    return psStringCopy(PPSTATS_SOURCE);
 }
 
Index: trunk/ppStats/src/ppStatsVersionDefinitions.h.in
===================================================================
--- trunk/ppStats/src/ppStatsVersionDefinitions.h.in	(revision 23802)
+++ trunk/ppStats/src/ppStatsVersionDefinitions.h.in	(revision 23802)
@@ -0,0 +1,8 @@
+#ifndef PPSTATS_VERSION_DEFINITIONS_H
+#define PPSTATS_VERSION_DEFINITIONS_H
+
+#define PPSTATS_VERSION @PPSTATS_VERSION@ // SVN version
+#define PPSTATS_BRANCH  @PPSTATS_BRANCH@  // SVN branch
+#define PPSTATS_SOURCE  @PPSTATS_SOURCE@  // SVN source
+
+#endif
