Index: trunk/psphot/src/Makefile.am
===================================================================
--- trunk/psphot/src/Makefile.am	(revision 23790)
+++ trunk/psphot/src/Makefile.am	(revision 23805)
@@ -1,10 +1,26 @@
 lib_LTLIBRARIES = libpsphot.la
 
+if HAVE_SVNVERSION
+PSPHOT_VERSION=`$(SVNVERSION) ../..`
+else
+PSPHOT_VERSION="UNKNOWN"
+endif
+
+if HAVE_SVN
+PSPHOT_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 }'`
+PSPHOT_SOURCE=`$(SVN) info | $(SED) -n -e 's/Repository UUID: // p'`
+else
+PSPHOT_BRANCH="UNKNOWN"
+PSPHOT_SOURCE="UNKNOWN"
+endif
+
 # Force recompilation of psphotVersion.c, since it gets the version information
-psphotVersion.c: FORCE
-	touch psphotVersion.c
+psphotVersion.c: psphotVersionDefinitions.h
+psphotVersionDefinitions.h: psphotVersionDefinitions.h.in FORCE
+	-$(RM) psphotVersionDefinitions.h
+	$(SED) -e "s|@PSPHOT_VERSION@|\"$(PSPHOT_VERSION)\"|" -e "s|@PSPHOT_BRANCH@|\"$(PSPHOT_BRANCH)\"|" -e "s|@PSPHOT_SOURCE@|\"$(PSPHOT_SOURCE)\"|" psphotVersionDefinitions.h.in > psphotVersionDefinitions.h
 FORCE: ;
 
-libpsphot_la_CFLAGS = $(PSPHOT_CFLAGS) $(PSMODULE_CFLAGS) $(PSLIB_CFLAGS) -DPSPHOT_VERSION=$(PSPHOT_VERSION) -DPSPHOT_BRANCH=$(PSPHOT_BRANCH) -DPSPHOT_SOURCE=$(PSPHOT_SOURCE)
+libpsphot_la_CFLAGS = $(PSPHOT_CFLAGS) $(PSMODULE_CFLAGS) $(PSLIB_CFLAGS)
 libpsphot_la_LDFLAGS = $(PSPHOT_LIBS) $(PSMODULE_LIBS) $(PSLIB_LIBS)
 
@@ -125,5 +141,5 @@
 
 # Error codes.
-BUILT_SOURCES = psphotErrorCodes.h psphotErrorCodes.c
+BUILT_SOURCES = psphotErrorCodes.h psphotErrorCodes.c psphotVersionDefinitions.h
 CLEANFILES = psphotErrorCodes.h psphotErrorCodes.c
 EXTRA_DIST = psphotErrorCodes.dat psphotErrorCodes.c.in psphotErrorCodes.h.in \
Index: trunk/psphot/src/psphotVersion.c
===================================================================
--- trunk/psphot/src/psphotVersion.c	(revision 23790)
+++ trunk/psphot/src/psphotVersion.c	(revision 23805)
@@ -1,3 +1,4 @@
 #include "psphotInternal.h"
+#include "psphotVersionDefinitions.h"
 
 #ifdef HAVE_KAPA
@@ -15,11 +16,8 @@
 #endif
 
-#define xstr(s) str(s)
-#define str(s) #s
-
 psString psphotVersion(void)
 {
     char *value = NULL;
-    psStringAppend(&value, "%s@%s", xstr(PSPHOT_BRANCH), xstr(PSPHOT_VERSION));
+    psStringAppend(&value, "%s@%s", PSPHOT_BRANCH, PSPHOT_VERSION);
     return value;
 }
@@ -27,5 +25,5 @@
 psString psphotSource(void)
 {
-    return psStringCopy(xstr(PSPHOT_SOURCE));
+    return psStringCopy(PSPHOT_SOURCE);
 }
 
Index: trunk/psphot/src/psphotVersionDefinitions.h.in
===================================================================
--- trunk/psphot/src/psphotVersionDefinitions.h.in	(revision 23805)
+++ trunk/psphot/src/psphotVersionDefinitions.h.in	(revision 23805)
@@ -0,0 +1,8 @@
+#ifndef PSPHOT_VERSION_DEFINITIONS_H
+#define PSPHOT_VERSION_DEFINITIONS_H
+
+#define PSPHOT_VERSION @PSPHOT_VERSION@ // SVN version
+#define PSPHOT_BRANCH  @PSPHOT_BRANCH@  // SVN branch
+#define PSPHOT_SOURCE  @PSPHOT_SOURCE@  // SVN source
+
+#endif
