diff --git a/Makefile.coq.local b/Makefile.coq.local index 6931cd3fa40a4641c44771262b046f5fa4a1fcd5..2693cbb8ccb7fcea8625cc6e873a35cb05603711 100644 --- a/Makefile.coq.local +++ b/Makefile.coq.local @@ -25,11 +25,16 @@ $(TESTFILES:.v=.vo): %.vo: %.v $(if $(MAKE_REF),,%.ref) $(NORMALIZER) REF="tests/$$TEST.ref"; \ fi && \ echo "COQTEST$(if $(COQ_OLD), [no ref],$(if $(MAKE_REF), [make ref],)) $<$(if $(COQ_OLD),, (ref: $$REF))" && \ + # Dump Coq output into temporary file. \ TMPFILE="$$(mktemp)" && \ $(TIMER) $(COQ_TEST) $(COQFLAGS) $(COQLIBS) -load-vernac-source $< > "$$TMPFILE" && \ - sed -f $(NORMALIZER) -i "$$TMPFILE" && \ + # `sed -i` in a way that also works on macOS. \ + sed -f $(NORMALIZER) "$$TMPFILE" > "$$TMPFILE".new && \ + mv "$$TMPFILE".new "$$TMPFILE" && \ + # Either compare temporary file with reffile or move it there. \ $(if $(COQ_OLD),true, \ $(if $(MAKE_REF),mv "$$TMPFILE" "$$REF",diff -u "$$REF" "$$TMPFILE") \ ) && \ + # Cleanup, and mark as done for make. \ rm -f "$$TMPFILE" && \ touch $@