Index: trunk/psModules/configure.ac
===================================================================
--- trunk/psModules/configure.ac	(revision 23792)
+++ trunk/psModules/configure.ac	(revision 23794)
@@ -307,7 +307,6 @@
 
 IPP_VERSION(PSMODULES)
-AC_SUBST(PSMODULES_VERSION,[$PSMODULES_VERSION])
-AC_SUBST(PSMODULES_BRANCH,[$PSMODULES_BRANCH])
-AC_SUBST(PSMODULES_SOURCE,[$PSMODULES_SOURCE])
+AM_CONDITIONAL([HAVE_SVNVERSION], [test "x$SVNVERSION" != x])
+AM_CONDITIONAL([HAVE_SVN], [test "x$SVN" != x])
 
 dnl ------- enable -Werror after all of the probes have run ---------
Index: trunk/psModules/src/config/Makefile.am
===================================================================
--- trunk/psModules/src/config/Makefile.am	(revision 23792)
+++ trunk/psModules/src/config/Makefile.am	(revision 23794)
@@ -1,10 +1,26 @@
 noinst_LTLIBRARIES = libpsmodulesconfig.la
 
+if HAVE_SVNVERSION
+PSMODULES_VERSION=`$(SVNVERSION) ../..`
+else
+PSMODULES_VERSION="UNKNOWN"
+endif
+
+if HAVE_SVN
+PSMODULES_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 }'`
+PSMODULES_SOURCE=`$(SVN) info | $(SED) -n -e 's/Repository UUID: // p'`
+else
+PSMODULES_BRANCH="UNKNOWN"
+PSMODULES_SOURCE="UNKNOWN"
+endif
+
 # Force recompilation of pmVersion.c, since it gets the version information
-pmVersion.c: FORCE
-	touch pmVersion.c
+pmVersion.c: pmVersionDefinitions.h
+pmVersionDefinitions.h: pmVersionDefinitions.h.in FORCE
+	-$(RM) pmVersionDefinitions.h
+	$(SED) -e "s|@PSMODULES_VERSION@|\"$(PSMODULES_VERSION)\"|" -e "s|@PSMODULES_BRANCH@|\"$(PSMODULES_BRANCH)\"|" -e "s|@PSMODULES_SOURCE@|\"$(PSMODULES_SOURCE)\"|" pmVersionDefinitions.h.in > pmVersionDefinitions.h
 FORCE: ;
 
-libpsmodulesconfig_la_CPPFLAGS = $(SRCINC) $(PSMODULES_CFLAGS) -DPSMODULES_VERSION=$(PSMODULES_VERSION) -DPSMODULES_BRANCH=$(PSMODULES_BRANCH) -DPSMODULES_SOURCE=$(PSMODULES_SOURCE)
+libpsmodulesconfig_la_CPPFLAGS = $(SRCINC) $(PSMODULES_CFLAGS)
 libpsmodulesconfig_la_LDFLAGS  = -release $(PACKAGE_VERSION)
 libpsmodulesconfig_la_SOURCES  = \
@@ -31,6 +47,6 @@
 
 # Error codes.
-BUILT_SOURCES = pmErrorCodes.h pmErrorCodes.c
-CLEANFILES = *~ pmErrorCodes.h pmErrorCodes.c
+BUILT_SOURCES = pmErrorCodes.h pmErrorCodes.c pmVersionDefinitions.h
+CLEANFILES = *~ pmErrorCodes.h pmErrorCodes.c pmVersionDefinitions.h
 
 pmErrorCodes.h : pmErrorCodes.dat pmErrorCodes.h.in
Index: trunk/psModules/src/config/pmVersion.c
===================================================================
--- trunk/psModules/src/config/pmVersion.c	(revision 23792)
+++ trunk/psModules/src/config/pmVersion.c	(revision 23794)
@@ -7,4 +7,5 @@
 #include <pslib.h>
 #include "pmVersion.h"
+#include "pmVersionDefinitions.h"
 
 #ifndef PSMODULES_VERSION
@@ -18,11 +19,8 @@
 #endif
 
-#define xstr(s) str(s)
-#define str(s) #s
-
 psString psModulesVersion(void)
 {
     char *value = NULL;
-    psStringAppend(&value, "%s@%s", xstr(PSMODULES_BRANCH), xstr(PSMODULES_VERSION));
+    psStringAppend(&value, "%s@%s", PSMODULES_BRANCH, PSMODULES_VERSION);
     return value;
 }
@@ -30,5 +28,5 @@
 psString psModulesSource(void)
 {
-    return psStringCopy(xstr(PSMODULES_SOURCE));
+    return psStringCopy(PSMODULES_SOURCE);
 }
 
Index: trunk/psModules/src/config/pmVersionDefinitions.h.in
===================================================================
--- trunk/psModules/src/config/pmVersionDefinitions.h.in	(revision 23794)
+++ trunk/psModules/src/config/pmVersionDefinitions.h.in	(revision 23794)
@@ -0,0 +1,8 @@
+#ifndef PM_VERSION_DEFINITIONS_H
+#define PM_VERSION_DEFINITIONS_H
+
+#define PSMODULES_VERSION @PSMODULES_VERSION@ // SVN version
+#define PSMODULES_BRANCH  @PSMODULES_BRANCH@  // SVN branch
+#define PSMODULES_SOURCE  @PSMODULES_SOURCE@  // SVN source
+
+#endif
