Index: trunk/psLib/autogen.sh
===================================================================
--- trunk/psLib/autogen.sh	(revision 23787)
+++ trunk/psLib/autogen.sh	(revision 23793)
@@ -19,5 +19,5 @@
 fi
 
-ACLOCAL="aclocal $ACLOCAL_FLAGS"
+ACLOCAL="aclocal -I `pwd`/m4 $ACLOCAL_FLAGS"
 AUTOHEADER=autoheader
 AUTOMAKE=automake
Index: trunk/psLib/configure.ac
===================================================================
--- trunk/psLib/configure.ac	(revision 23787)
+++ trunk/psLib/configure.ac	(revision 23793)
@@ -341,8 +341,5 @@
 CPPFLAGS=${TMP_CPPFLAGS}
 
-IPP_VERSION(PSLIB)
-AC_SUBST(PSLIB_VERSION,[$PSLIB_VERSION])
-AC_SUBST(PSLIB_BRANCH,[$PSLIB_BRANCH])
-AC_SUBST(PSLIB_SOURCE,[$PSLIB_SOURCE])
+IPP_VERSION
 
 dnl ------- enable -Werror after all of the probes have run ---------
Index: trunk/psLib/m4/ipp_stdopts.m4
===================================================================
--- trunk/psLib/m4/ipp_stdopts.m4	(revision 23787)
+++ trunk/psLib/m4/ipp_stdopts.m4	(revision 23793)
@@ -50,20 +50,10 @@
 	)
 	
-	[$1]_VERSION="UNKNOWN"
-	[$1]_BRANCH="UNKNOWN"
-	[$1]_SOURCE="UNKNOWN"
 	AS_IF([test "x$enable_version" = xtrue],
 		[AC_PATH_PROG([SVNVERSION], [svnversion])
-		AC_PATH_PROG([SVN], [svn])
-		AC_PROG_SED
-		AS_IF([test "x$SVNVERSION" != x], [$1]_VERSION=`$SVNVERSION`)
-		AS_IF([test "x$SVN" != x],
-			[[$1]_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 }'`
-			[$1]_SOURCE=`$SVN info | $SED -n -e 's/Repository UUID: // p'`])
-		]
+		AC_PATH_PROG([SVN], [svn])]
 	)
-	
-dnl	AC_SUBST([$1]_VERSION,[[$1]_VERSION])
-dnl	AC_SUBST([$1]_BRANCH,[[$1]_BRANCH])
-dnl	AC_SUBST([$1]_SOURCE,[[$1]_SOURCE])
+	AC_PROG_SED
+	AM_CONDITIONAL([HAVE_SVNVERSION], [test "x$SVNVERSION" != x])
+	AM_CONDITIONAL([HAVE_SVN], [test "x$SVN" != x])
 ])
Index: trunk/psLib/src/sys/Makefile.am
===================================================================
--- trunk/psLib/src/sys/Makefile.am	(revision 23787)
+++ trunk/psLib/src/sys/Makefile.am	(revision 23793)
@@ -3,10 +3,26 @@
 noinst_LTLIBRARIES = libpslibsys.la
 
+if HAVE_SVNVERSION
+PSLIB_VERSION=`$(SVNVERSION) ../..`
+else
+PSLIB_VERSION="UNKNOWN"
+endif
+
+if HAVE_SVN
+PSLIB_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 }'`
+PSLIB_SOURCE=`$(SVN) info | $(SED) -n -e 's/Repository UUID: // p'`
+else
+PSLIB_BRANCH="UNKNOWN"
+PSLIB_SOURCE="UNKNOWN"
+endif
+
 # Force recompilation of psConfigure.c, since it gets the version information
-psConfigure.c: FORCE
-	touch psConfigure.c
+psConfigure.c: psVersionDefinitions.h
+psVersionDefinitions.h: psVersionDefinitions.h.in FORCE
+	-$(RM) psVersionDefinitions.h
+	$(SED) -e "s|@PSLIB_VERSION@|\"$(PSLIB_VERSION)\"|" -e "s|@PSLIB_BRANCH@|\"$(PSLIB_BRANCH)\"|" -e "s|@PSLIB_SOURCE@|\"$(PSLIB_SOURCE)\"|" psVersionDefinitions.h.in > psVersionDefinitions.h
 FORCE: ;
 
-libpslibsys_la_CPPFLAGS = $(SRCINC) $(PSLIB_CFLAGS) $(CFITSIO_CFLAGS) -DPSLIB_VERSION=$(PSLIB_VERSION) -DPSLIB_BRANCH=$(PSLIB_BRANCH) -DPSLIB_SOURCE=$(PSLIB_SOURCE)
+libpslibsys_la_CPPFLAGS = $(SRCINC) $(PSLIB_CFLAGS) $(CFITSIO_CFLAGS)
 libpslibsys_la_SOURCES = \
 	psAbort.c \
@@ -24,7 +40,7 @@
 	strcasestr.c
 
-EXTRA_DIST = sys.i psErrorCodes.c.in psErrorCodes.h.in
+EXTRA_DIST = sys.i psErrorCodes.c.in psErrorCodes.h.in psVersion.h
 
-BUILT_SOURCES = psErrorCodes.c
+BUILT_SOURCES = psErrorCodes.c psVersion.h
 
 psErrorCodes.c: ../psErrorCodes_$(PS_LANG).dat psErrorCodes.c.in psErrorCodes.h
Index: trunk/psLib/src/sys/psConfigure.c
===================================================================
--- trunk/psLib/src/sys/psConfigure.c	(revision 23787)
+++ trunk/psLib/src/sys/psConfigure.c	(revision 23793)
@@ -44,4 +44,6 @@
 #include "psMemory.h"
 
+#include "psVersionDefinitions.h"
+
 static char *memCheckName = NULL;       // Filename to which to write results of mem check
 static FILE *memCheckFile = NULL;       // File to which to write results of mem check
@@ -57,11 +59,8 @@
 #endif
 
-#define xstr(s) str(s)
-#define str(s) #s
-
 psString psLibVersion(void)
 {
     char *value = NULL;
-    psStringAppend(&value, "%s@%s", xstr(PSLIB_BRANCH), xstr(PSLIB_VERSION));
+    psStringAppend(&value, "%s@%s", PSLIB_BRANCH, PSLIB_VERSION);
     return value;
 }
@@ -69,5 +68,5 @@
 psString psLibSource(void)
 {
-    return psStringCopy(xstr(PSLIB_SOURCE));
+    return psStringCopy(PSLIB_SOURCE);
 }
 
Index: trunk/psLib/src/sys/psVersionDefinitions.h.in
===================================================================
--- trunk/psLib/src/sys/psVersionDefinitions.h.in	(revision 23793)
+++ trunk/psLib/src/sys/psVersionDefinitions.h.in	(revision 23793)
@@ -0,0 +1,8 @@
+#ifndef PS_VERSION_DEFINITIONS_H
+#define PS_VERSION_DEFINITIONS_H
+
+#define PSLIB_VERSION @PSLIB_VERSION@ // SVN version
+#define PSLIB_BRANCH  @PSLIB_BRANCH@  // SVN branch
+#define PSLIB_SOURCE  @PSLIB_SOURCE@  // SVN source
+
+#endif
