-define mg-generate
- $(call gload,$(target))\
- $(if $(filter $(mg-scout-oid)$(aname)$(target),$?),\
- $(info mage: warning: Manually created/modified file at $(target) overrides rule.)\
- $(eval $(target)@cmd:=)$(eval $(target)@warnings:=)$(eval $(target)@deps:=)\
- ,\
- $(if $?$(if $(wildcard $(target)),,x)$(mg-check-cmd),\
- $(eval $(target)@gloaded:=)$(eval $(target)@changed:=1)$(info $(cmd))\
- @trap 'rm -f $(target).tmp $@.tmp' EXIT &&\
- exec 3>$@.tmp && $(mg-assign-cmd) >&3 &&\
- set -o pipefail && { $(mg-run-cmd) | tee /dev/fd/4 | $(mg-wrap-warnings) >&3; } 4>&1 &&\
- $(mg-maybe-move-target) && mv -f $@.tmp $@\
- ))
-endef
-
-# Pieces of mg-generate that I factored out to make mg-generate more readable.
-mg-assign-cmd=echo $(call sq,$(call fmt-make-assignment,$(target)@cmd,$(cmd)))
-mg-run-cmd={ ($(cmd)) 2>&1 && { [ -r $(target).tmp ] || { echo 'mage: error: Command for $(target) succeeded without creating it!'; false; }; }; }
-mg-wrap-warnings=sed -re '1s/^/$(target)@warnings:=$$(empty)/; 1!s/^/$(target)@warnings+=$$(nl)/'
-mg-maybe-move-target={ cmp -s $(target) $(target).tmp || echo >$@ && mv -f $(target).tmp $(target); }
-
-# $(call mg-rule,target,static prerequisites,cmd,[dep converter])
-# Defines a rule with a dependency-logging command.
-# I haven't decided on the format for the dep converter yet.
-dlc-static-run-oid:=$(newoid)
-define mg-define-rule-dlc
-$(eval
-
-# Copied stuff from mg-define-rule to modify as necessary
-
-## Define some target-specific variables.
-## It might look like we could use $*, but $1 most likely isn't %.
-#$1.g: target = $$(@:.g=)
-#$1.g: cmd = $(call mg-translate-cmd,$3)
-#$1.g: mg@ = $$(target).tmp
-#$1.g: mg^ = $$(filter-out MG-% /./%,$$^)
-#$1.g: mg+ = $$(filter-out MG-% /./%,$$+)
-#$1.g: mg< = $$(firstword $$(mg^))
-
-#
-$1.g: MG-FORCE | $$$$(dlc-first-run-oid)$$$$(aname)$1.g $$$$(call dlc-setup-tgt,$(newoid))
-
-## Rule for the genfile. Evidently all the prerequisites we want second-expanded
-## have to go on the same rule.
-#$1.g: $2 $$$$(mg-scout-target) MG-FORCE
-# $$(mg-generate)
-
-
-$(mg-file-from-genfile)
-)
+# If not:
+# 1. If there were warnings, replay them. (HMMM To stderr?)
+# HMMM .tmp in displayed command looks ugly
+define mg-rule-cmd
+ $(if $(filter $(mg-scout-oid)$(aname)$@,$($@@gq)),\
+ $(info Mage: warning: Manually created/modified file at $@ overrides rule.)\
+ ,$(call gload,$@)$(if $($@@gq)$(if $(wildcard $@),,x)$(mg-check-cmd),\
+ $(eval $@@gloaded:=)$(info $(cmd))\
+ @trap 'rm -f $@.tmp $@.g.tmp' EXIT &&\
+ exec 3>$@.g.tmp && $(mg-assign-cmd) >&3 &&\
+ set -o pipefail && { $(mg-run-cmd) | tee /dev/fd/4 | $(mg-wrap-warnings) >&3; } 4>&1 &&\
+ $(mg-maybe-move-target) && mv -f $@.g.tmp $@.g\
+ ,$(if $($@@warnings),\
+ $(info $($@@cmd) # Mage warning replay$(nl)$($@@warnings))\
+ )))