Index: trunk/ppSim/src/Makefile.am
===================================================================
--- trunk/ppSim/src/Makefile.am	(revision 23790)
+++ trunk/ppSim/src/Makefile.am	(revision 23797)
@@ -1,10 +1,26 @@
 bin_PROGRAMS = ppSim ppSimSequence
 
+if HAVE_SVNVERSION
+PPSIM_VERSION=`$(SVNVERSION) ../..`
+else
+PPSIM_VERSION="UNKNOWN"
+endif
+
+if HAVE_SVN
+PPSIM_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 }'`
+PPSIM_SOURCE=`$(SVN) info | $(SED) -n -e 's/Repository UUID: // p'`
+else
+PPSIM_BRANCH="UNKNOWN"
+PPSIM_SOURCE="UNKNOWN"
+endif
+
 # Force recompilation of ppSimVersion.c, since it gets the version information
-ppSimVersion.c: FORCE
-	touch ppSimVersion.c
+ppSimVersion.c: ppSimVersionDefinitions.h
+ppSimVersionDefinitions.h: ppSimVersionDefinitions.h.in FORCE
+	-$(RM) ppSimVersionDefinitions.h
+	$(SED) -e "s|@PPSIM_VERSION@|\"$(PPSIM_VERSION)\"|" -e "s|@PPSIM_BRANCH@|\"$(PPSIM_BRANCH)\"|" -e "s|@PPSIM_SOURCE@|\"$(PPSIM_SOURCE)\"|" ppSimVersionDefinitions.h.in > ppSimVersionDefinitions.h
 FORCE: ;
 
-ppSim_CPPFLAGS = $(PSLIB_CFLAGS) $(PSMODULE_CFLAGS) $(PSPHOT_CFLAGS) $(PSASTRO_CFLAGS) $(ppSim_CFLAGS) -DPPSIM_VERSION=$(PPSIM_VERSION) -DPPSIM_BRANCH=$(PPSIM_BRANCH) -DPPSIM_SOURCE=$(PPSIM_SOURCE)
+ppSim_CPPFLAGS = $(PSLIB_CFLAGS) $(PSMODULE_CFLAGS) $(PSPHOT_CFLAGS) $(PSASTRO_CFLAGS) $(ppSim_CFLAGS)
 ppSim_LDFLAGS = $(PSLIB_LIBS) $(PSMODULE_LIBS) $(PSPHOT_LIBS) $(PSASTRO_LIBS)
 ppSim_SOURCES = \
Index: trunk/ppSim/src/ppSimVersion.c
===================================================================
--- trunk/ppSim/src/ppSimVersion.c	(revision 23790)
+++ trunk/ppSim/src/ppSimVersion.c	(revision 23797)
@@ -1,3 +1,4 @@
 #include "ppSim.h"
+#include "ppSimVersionDefinitions.h"
 
 #ifndef PPSIM_VERSION
@@ -11,11 +12,8 @@
 #endif
 
-#define xstr(s) str(s)
-#define str(s) #s
-
 psString ppSimVersion(void)
 {
     char *value = NULL;
-    psStringAppend(&value, "%s@%s", xstr(PPSIM_BRANCH), xstr(PPSIM_VERSION));
+    psStringAppend(&value, "%s@%s", PPSIM_BRANCH, PPSIM_VERSION);
     return value;
 }
@@ -23,5 +21,5 @@
 psString ppSimSource(void)
 {
-    return psStringCopy(xstr(PPSIM_SOURCE));
+    return psStringCopy(PPSIM_SOURCE);
 }
 
Index: trunk/ppSim/src/ppSimVersionDefinitions.h.in
===================================================================
--- trunk/ppSim/src/ppSimVersionDefinitions.h.in	(revision 23797)
+++ trunk/ppSim/src/ppSimVersionDefinitions.h.in	(revision 23797)
@@ -0,0 +1,8 @@
+#ifndef PPSIM_VERSION_DEFINITIONS_H
+#define PPSIM_VERSION_DEFINITIONS_H
+
+#define PPSIM_VERSION @PPSIM_VERSION@ // SVN version
+#define PPSIM_BRANCH  @PPSIM_BRANCH@  // SVN branch
+#define PPSIM_SOURCE  @PPSIM_SOURCE@  // SVN source
+
+#endif
