Index: trunk/ppImage/src/ppImageOptions.c
===================================================================
--- trunk/ppImage/src/ppImageOptions.c	(revision 14209)
+++ trunk/ppImage/src/ppImageOptions.c	(revision 14223)
@@ -18,4 +18,6 @@
 
     // actions which ppImage should perform
+    options->doMaskBuild     = false;	// Build internal mask
+    options->doWeightBuild   = false;	// Build internal weight
     options->doMask          = false;	// Mask bad pixels
     options->doNonLin        = false;	// Non-linearity correction
@@ -180,4 +182,8 @@
     }
 
+    // for these images, even if not required otherwise
+    options->doMaskBuild = psMetadataLookupBool(NULL, recipe, "MASK.BUILD");
+    options->doWeightBuild = psMetadataLookupBool(NULL, recipe, "WEIGHT.BUILD");
+
     // Mask recipe options
     options->doMask = psMetadataLookupBool(NULL, recipe, "MASK");
@@ -190,4 +196,5 @@
     options->flatMask = pmConfigMask("FLAT", config);
     options->blankMask = pmConfigMask("BLANK", config);
+    // XXX should it be an error for these to not exist?
 
     options->doBias = psMetadataLookupBool(NULL, recipe, "BIAS");
@@ -225,4 +232,10 @@
     }
 
+    // even if not requested explicitly, if any of these are set, build an internal mask and weight:
+    if (options->doMask || options->doShutter || options->doFlat || options->doPhotom) {
+	options->doMaskBuild = true;
+	options->doWeightBuild = true;
+    }
+
     options->BaseFITS       = psMetadataLookupBool(NULL, recipe, "BASE.FITS");
     options->BaseMaskFITS   = psMetadataLookupBool(NULL, recipe, "BASE.MASK.FITS");
