-checksum = (cd $(TARBALLS) && $(1)sum -c -) < \
- $(SRC)/$(patsubst .sum-%,%,$@)/$(2)SUMS
-CHECK_SHA256 = $(call checksum,sha512,SHA512)
-CHECK_SHA512 = $(call checksum,sha512,SHA512)
+checksum = \
+ $(foreach f,$(filter $(TARBALLS)/%,$^), \
+ grep -- " $(f:$(TARBALLS)/%=%)$$" \
+ "$(SRC)/$(patsubst .sum-%,%,$@)/$(2)SUMS" &&) \
+ (cd $(TARBALLS) && $(1) --check /dev/stdin) < \
+ "$(SRC)/$(patsubst .sum-%,%,$@)/$(2)SUMS"
+CHECK_SHA512 = $(call checksum,$(SHA512SUM),SHA512)