Index: /trunk/ppStack/configure.ac
===================================================================
--- /trunk/ppStack/configure.ac	(revision 14403)
+++ /trunk/ppStack/configure.ac	(revision 14404)
@@ -17,7 +17,8 @@
 AC_SYS_LARGEFILE 
 
-PKG_CHECK_MODULES([PSLIB], [pslib >= 1.0.0])
+PKG_CHECK_MODULES([PSLIB],    [pslib >= 1.0.0])
 PKG_CHECK_MODULES([PSMODULE], [psmodules >= 1.0.0])
-PKG_CHECK_MODULES([PPSTATS], [ppStats >= 1.0.0]) 
+PKG_CHECK_MODULES([PSPHOT],   [psphot >= 0.8.0]) 
+PKG_CHECK_MODULES([PPSTATS],  [ppStats >= 1.0.0]) 
 
 IPP_STDOPTS
Index: /trunk/ppStack/src/Makefile.am
===================================================================
--- /trunk/ppStack/src/Makefile.am	(revision 14403)
+++ /trunk/ppStack/src/Makefile.am	(revision 14404)
@@ -1,6 +1,6 @@
 bin_PROGRAMS = ppStack
 
-ppStack_CFLAGS 	= $(PSMODULE_CFLAGS) $(PSLIB_CFLAGS) $(PPSTATS_CFLAGS)$(PPSTACK_CFLAGS)
-ppStack_LDFLAGS = $(PSMODULE_LIBS) $(PSLIB_LIBS) $(PPSTATS_LIBS) $(PPSTACK_LIBS)
+ppStack_CFLAGS 	= $(PSLIB_CFLAGS) $(PSMODULE_CFLAGS) $(PSPHOT_CFLAGS) $(PPSTATS_CFLAGS) $(PPSTACK_CFLAGS)
+ppStack_LDFLAGS = $(PSLIB_LIBS)   $(PSMODULE_LIBS)   $(PSPHOT_LIBS)   $(PPSTATS_LIBS)   $(PPSTACK_LIBS)
 
 ppStack_SOURCES =		\
Index: /trunk/ppStack/src/ppStackArguments.c
===================================================================
--- /trunk/ppStack/src/ppStackArguments.c	(revision 14403)
+++ /trunk/ppStack/src/ppStackArguments.c	(revision 14404)
@@ -9,4 +9,6 @@
 
 #include "ppStack.h"
+
+// XXX add in the version info as in ppImage
 
 // Print usage information and die
@@ -109,4 +111,7 @@
     psMetadataAddU8(arguments,  PS_LIST_TAIL, "-mask-blank", 0, "Mask value for blank region", 0);
 
+    // XXX I want to get this from the recipe as well.  (same for everything else...)
+    psMetadataAddBool(arguments, PS_LIST_TAIL, "-photom", 0, "Mask value for blank region", FALSE);
+
     if (argc == 1 || !psArgumentParse(arguments, &argc, argv) || argc != 3) {
         usage(argv[0], arguments, config);
Index: /trunk/ppStack/src/ppStackCamera.c
===================================================================
--- /trunk/ppStack/src/ppStackCamera.c	(revision 14403)
+++ /trunk/ppStack/src/ppStackCamera.c	(revision 14404)
@@ -223,4 +223,21 @@
     }
 
+    // For photometry, we operate on the chip-mosaicked image
+    // we create a copy of the mosaicked image for psphot so we can write out a clean image
+    bool mdok = false;
+    bool doPhotom = psMetadataLookupBool(&mdok, config->arguments, "PHOTOM"); // perform photometry
+    if (doPhotom) {
+        // this file is just used as a carrier; output files (eg, PSPHOT.RESID) are defined by
+        // psphotDefineFiles
+        pmFPAfile *psphotInput = pmFPAfileDefineFromFPA (config, output->fpa, 1, 1, "PSPHOT.INPUT");
+        PS_ASSERT (psphotInput, false);
+
+        // define associated psphot input/output files
+        if (!psphotDefineFiles (config, psphotInput)) {
+            psError(PSPHOT_ERR_CONFIG, false, "Trouble defining the additional input/output files for psphot");
+            return false;
+        }
+    }
+
     return true;
 }
Index: /trunk/ppStack/src/ppStackLoop.c
===================================================================
--- /trunk/ppStack/src/ppStackLoop.c	(revision 14403)
+++ /trunk/ppStack/src/ppStackLoop.c	(revision 14404)
@@ -8,4 +8,5 @@
 #include <psmodules.h>
 #include <ppStats.h>
+#include <psphot.h>
 
 #include "ppStack.h"
@@ -37,4 +38,6 @@
         return false;
     }
+
+    bool doPhotom = psMetadataLookupBool(&mdok, config->arguments, "PHOTOM"); // perform photometry
 
     pmFPAview *view = pmFPAviewAlloc(0); // Pointer into FPA hierarchy
@@ -80,4 +83,11 @@
                 }
 
+		if (doPhotom) {
+		  if (!psphotReadout (config, view)) {
+                    psError(psErrorCodeLast(), false, "failure in psphotReadout for stacked image\n");
+                    return false;
+		  }
+		}
+
                 if (!pmFPAfileIOChecks(config, view, PM_FPA_BEFORE)) {
                     return false;
Index: /trunk/ppSub/src/Makefile.am
===================================================================
--- /trunk/ppSub/src/Makefile.am	(revision 14403)
+++ /trunk/ppSub/src/Makefile.am	(revision 14404)
@@ -1,5 +1,5 @@
 bin_PROGRAMS = ppSub
 ppSub_CPPFLAGS = $(PSLIB_CFLAGS) $(PSMODULE_CFLAGS) $(PPSTATS_CFLAGS) $(PSPHOT_CFLAGS) $(PPSUB_CFLAGS)
-ppSub_LDFLAGS = $(PSLIB_LIBS) $(PSMODULE_LIBS) $(PPSTATS_LIBS) $(PSPHOT_LIBS) $(PPSUB_LIBS)
+ppSub_LDFLAGS  = $(PSLIB_LIBS)   $(PSMODULE_LIBS)   $(PPSTATS_LIBS)   $(PSPHOT_LIBS)   $(PPSUB_LIBS)
 
 ppSub_SOURCES =			\
Index: /trunk/ppSub/src/ppSubLoop.c
===================================================================
--- /trunk/ppSub/src/ppSubLoop.c	(revision 14403)
+++ /trunk/ppSub/src/ppSubLoop.c	(revision 14404)
@@ -8,4 +8,5 @@
 #include <psmodules.h>
 #include <ppStats.h>
+#include <psphot.h>
 
 #include "ppSub.h"
@@ -53,4 +54,9 @@
     }
 
+    bool doPhotom = false;
+    if (psMetadataLookup(config->arguments, "PSPHOT.PSF")) {
+        doPhotom = true;
+    }
+    
     pmFPAview *view = pmFPAviewAlloc(0); // Pointer into FPA hierarchy
     pmHDU *lastHDU = NULL;              // Last HDU that was updated
@@ -129,4 +135,11 @@
                 }
 
+		if (doPhotom) {
+		  if (!psphotReadout (config, view)) {
+                    psError(psErrorCodeLast(), false, "failure in psphotReadout for stacked image\n");
+                    return false;
+		  }
+		}
+
                 if (!pmFPAfileIOChecks(config, view, PM_FPA_BEFORE)) {
                     return false;
