diff --git a/contrib/src/argon2/SHA512SUMS b/contrib/src/argon2/SHA512SUMS
new file mode 100644
index 0000000000000000000000000000000000000000..17edd3f6e2234e05b85c1b6de238ea726e3000b2
--- /dev/null
+++ b/contrib/src/argon2/SHA512SUMS
@@ -0,0 +1 @@
+5a88ce7e796594f3f5008001de315469f96b3761c01b6db139416dcf6b784f462884d026fb6a557bcb2a14ebe1eb55b84e57b7df12240ee70f8d8fb0f2c294d2  argon2-1eea0104e7cb2a38c617cf90ffa46ce5db6aceda.tar.gz
diff --git a/contrib/src/argon2/rules.mak b/contrib/src/argon2/rules.mak
index c382916b87c79b0fb54068742e9a3b310ba2e2be..0f5804dfc244c002c2a4e4ace91e51fdcbb19abf 100644
--- a/contrib/src/argon2/rules.mak
+++ b/contrib/src/argon2/rules.mak
@@ -10,16 +10,14 @@ $(TARBALLS)/argon2-$(ARGON2_VERSION).tar.gz:
 	$(call download,$(ARGON2_URL))
 
 .sum-argon2: argon2-$(ARGON2_VERSION).tar.gz
-	$(warning $@ not implemented)
-	touch $@
 
-argon2: argon2-$(ARGON2_VERSION).tar.gz .sum-argon2
+argon2: argon2-$(ARGON2_VERSION).tar.gz
 	$(UNPACK)
 	mv phc-winner-argon2-$(ARGON2_VERSION) argon2-$(ARGON2_VERSION)
 	$(APPLY) $(SRC)/argon2/pkgconfig.patch
 	$(MOVE)
 
-.argon2: argon2
+.argon2: argon2 .sum-argon2
 	cd $< && sed -i'.orig' -e 's|@PREFIX@|$(PREFIX)|' -e "s|@HOST_MULTIARCH@||" -e "s|@UPSTREAM_VER@|$(ARGON2_VERSION)|" libargon2.pc
 	cd $< && mkdir -p $(PREFIX)/lib/pkgconfig/ && cp libargon2.pc $(PREFIX)/lib/pkgconfig/
 	cd $< && $(HOSTVARS) $(MAKE) libs PREFIX="$(PREFIX)" OPTTARGET="no-opt" LIB_SH=""
diff --git a/contrib/src/ffmpeg/SHA512SUMS b/contrib/src/ffmpeg/SHA512SUMS
new file mode 100644
index 0000000000000000000000000000000000000000..1b68e46424f2453ec6c698982252fe3ddf5ed9d5
--- /dev/null
+++ b/contrib/src/ffmpeg/SHA512SUMS
@@ -0,0 +1,2 @@
+aefd6e8ba9d3499fbb6f840c96dd08f5e9d305e6cb937e51108173355b8726444438b93a364835280dd26e2fa390fb53e1e194acc5b06f7e85a8bda23b7b5b0c  ffmpeg-18516d3e695980525bd9758dc7b8a8e36cd3f09e.tar.gz
+dae90e0ea346ea109006669e850a3136b6bc1e461d0407de8193a860d3c9fd3e36ad9f788b4b255b9884d25a97aae40b124c6118ef34c5f4185ff14156f9f33c  ffmpeg-n3.3.3.tar.gz
diff --git a/contrib/src/ffmpeg/rules.mak b/contrib/src/ffmpeg/rules.mak
index 7606c02d44841319f26600895d00101c6103f8e7..b1db5d1311e86fb683dc294882be165ddb832f6a 100644
--- a/contrib/src/ffmpeg/rules.mak
+++ b/contrib/src/ffmpeg/rules.mak
@@ -196,10 +196,8 @@ $(TARBALLS)/ffmpeg-$(FFMPEG_HASH).tar.gz:
 	$(call download,$(FFMPEG_URL))
 
 .sum-ffmpeg: ffmpeg-$(FFMPEG_HASH).tar.gz
-	$(warning $@ is not implemented.)
-	touch $@
 
-ffmpeg: ffmpeg-$(FFMPEG_HASH).tar.gz .sum-ffmpeg
+ffmpeg: ffmpeg-$(FFMPEG_HASH).tar.gz
 	rm -Rf $@ $@-$(FFMPEG_HASH)
 	mkdir -p $@-$(FFMPEG_HASH)
 	(cd $@-$(FFMPEG_HASH) && tar x $(if ${BATCH_MODE},,-v) --strip-components=1 -f ../$<)
@@ -214,7 +212,7 @@ endif
 endif
 	$(MOVE)
 
-.ffmpeg: ffmpeg
+.ffmpeg: ffmpeg .sum-ffmpeg
 	cd $< && $(HOSTVARS) ./configure \
 		--extra-cflags="$(CFLAGS)" \
 		--extra-ldflags="$(LDFLAGS)" $(FFMPEGCONF) \
diff --git a/contrib/src/msgpack/SHA512SUMS b/contrib/src/msgpack/SHA512SUMS
new file mode 100644
index 0000000000000000000000000000000000000000..235cc1e8b33fe58f57bf9fcc3f003d82300153c6
--- /dev/null
+++ b/contrib/src/msgpack/SHA512SUMS
@@ -0,0 +1 @@
+aab8357e494bb5aa7407b53e5e650382869ea95812a6677e085530d5f27cde6946fbfd0095b19608c75163dbb82de9ccb6a695234e7c03659fc6efc2da300e19  msgpack-c-cpp-2.1.5.tar.gz
diff --git a/contrib/src/msgpack/rules.mak b/contrib/src/msgpack/rules.mak
index 89b222d6d3909b9a3cbf1adec5a44f11cb4491d3..2c0479271b7f634c657b17af9a29d0fb65270ab2 100644
--- a/contrib/src/msgpack/rules.mak
+++ b/contrib/src/msgpack/rules.mak
@@ -16,14 +16,12 @@ $(TARBALLS)/msgpack-c-$(MSGPACK_VERSION).tar.gz:
 	$(call download,$(MSGPACK_URL))
 
 .sum-msgpack: msgpack-c-$(MSGPACK_VERSION).tar.gz
-	$(warning $@ not implemented)
-	touch $@
 
-msgpack: msgpack-c-$(MSGPACK_VERSION).tar.gz .sum-msgpack
+msgpack: msgpack-c-$(MSGPACK_VERSION).tar.gz
 	$(UNPACK)
 	$(MOVE)
 
-.msgpack: msgpack toolchain.cmake
+.msgpack: msgpack toolchain.cmake .sum-msgpack
 	cd $< && $(HOSTVARS) $(CMAKE) . $(MSGPACK_CMAKECONF)
 	cd $< && $(MAKE) install
 	touch $@
diff --git a/contrib/src/opendht/SHA512SUMS b/contrib/src/opendht/SHA512SUMS
new file mode 100644
index 0000000000000000000000000000000000000000..655f36e2edeb984b16ec2ed982ffdf4cf27a0df0
--- /dev/null
+++ b/contrib/src/opendht/SHA512SUMS
@@ -0,0 +1 @@
+af2a3be1305a47043b932339545da7c947266e3120b6bedea3d5c837c5a6d4eb55d85a3008ba0ca7e90501a2c4ca9bc84c3c3d7fb1b0f8e2a6bcd0d5fe1ba3dd  opendht-fcaaa01b2d40011df650cd092cb841e825c4e49c.tar.gz
diff --git a/contrib/src/opendht/rules.mak b/contrib/src/opendht/rules.mak
index 66f0df2a8104474a5315d55311a89785c673ba52..981e806dee792fc57d40d88e1ab2947e2dfa3935 100644
--- a/contrib/src/opendht/rules.mak
+++ b/contrib/src/opendht/rules.mak
@@ -22,15 +22,13 @@ $(TARBALLS)/opendht-$(OPENDHT_VERSION).tar.gz:
 	$(call download,$(OPENDHT_URL))
 
 .sum-opendht: opendht-$(OPENDHT_VERSION).tar.gz
-	$(warning $@ not implemented)
-	touch $@
 
-opendht: opendht-$(OPENDHT_VERSION).tar.gz .sum-opendht
+opendht: opendht-$(OPENDHT_VERSION).tar.gz
 	$(UNPACK)
 	$(UPDATE_AUTOCONFIG) && cd $(UNPACK_DIR)
 	$(MOVE)
 
-.opendht: opendht
+.opendht: opendht .sum-opendht
 	mkdir -p $</m4 && $(RECONF)
 	cd $< && $(HOSTVARS) ./configure --disable-tools --disable-python --disable-doc $(HOSTCONF)
 	cd $< && $(MAKE) install
diff --git a/contrib/src/secp256k1/SHA512SUMS b/contrib/src/secp256k1/SHA512SUMS
new file mode 100644
index 0000000000000000000000000000000000000000..e166392cba97afdedf9e1da54b0c3dd5787fecb3
--- /dev/null
+++ b/contrib/src/secp256k1/SHA512SUMS
@@ -0,0 +1 @@
+54e0c446ae63105800dfaf23dc934734f196c91f275db0455e58a36926c29ecc51a13d9b1eb2e45bc86199120c3c472ec7b39086787a49ce388a4df462a870bc  secp256k1-0b7024185045a49a1a6a4c5615bf31c94f63d9c4.tar.gz
diff --git a/contrib/src/secp256k1/rules.mak b/contrib/src/secp256k1/rules.mak
index d47405ae819864b944755e85a9a202dbbb949a39..c5681629d29f6f3858538e38d411914352948ecd 100644
--- a/contrib/src/secp256k1/rules.mak
+++ b/contrib/src/secp256k1/rules.mak
@@ -13,14 +13,12 @@ $(TARBALLS)/secp256k1-$(SECP256K1_VERSION).tar.gz:
 	$(call download,$(SECP256K1_URL))
 
 .sum-secp256k1: secp256k1-$(SECP256K1_VERSION).tar.gz
-	$(warning $@ not implemented)
-	touch $@
 
-secp256k1: secp256k1-$(SECP256K1_VERSION).tar.gz .sum-secp256k1
+secp256k1: secp256k1-$(SECP256K1_VERSION).tar.gz
 	$(UNPACK)
 	$(MOVE)
 
-.secp256k1: secp256k1
+.secp256k1: secp256k1 .sum-secp256k1
 	$(RECONF)
 	cd $< && $(HOSTVARS) ./configure $(HOSTCONF) --disable-tests --disable-exhaustive-tests
 	cd $< && $(MAKE) CFLAGS+="-USECP256K1_BUILD" install
diff --git a/contrib/src/speex/SHA512SUMS b/contrib/src/speex/SHA512SUMS
new file mode 100644
index 0000000000000000000000000000000000000000..d3057722550a177c371c98f1e7a927ee672bf62e
--- /dev/null
+++ b/contrib/src/speex/SHA512SUMS
@@ -0,0 +1 @@
+2e2d8ea186d26ca37ff27883772384fd4689cfdee12d91babe46b179507d2c6e5b64bac90adb7359c07f6a6ee2c9eab569d39266bc7ed4de8cf76cc61db87198  speex-9172c7ef85fbf058027528d48ededbc7ca847908.tar.gz
diff --git a/contrib/src/speex/rules.mak b/contrib/src/speex/rules.mak
index b8556aa75ec841ee796daef1943a907a55a800c6..92cce5ee2aa38d8f22951589b3d40ed2da3329fb 100644
--- a/contrib/src/speex/rules.mak
+++ b/contrib/src/speex/rules.mak
@@ -12,10 +12,8 @@ $(TARBALLS)/speex-$(SPEEX_HASH).tar.gz:
 	$(call download,$(SPEEX_GITURL))
 
 .sum-speex: speex-$(SPEEX_HASH).tar.gz
-	$(warning $@ not implemented)
-	touch $@
 
-speex: speex-$(SPEEX_HASH).tar.gz .sum-speex
+speex: speex-$(SPEEX_HASH).tar.gz
 	rm -Rf $@ $@-$(SPEEX_HASH)
 	mkdir -p $@-$(SPEEX_HASH)
 	$(ZCAT) "$<" | (cd $@-$(SPEEX_HASH) && tar x $(if ${BATCH_MODE},,-v) --strip-components=1)
@@ -32,7 +30,7 @@ ifeq ($(ARCH),aarch64)
 SPEEX_CONF += --disable-neon
 endif
 
-.speex: speex
+.speex: speex .sum-speex
 	mkdir -p $</m4 && $(RECONF)
 	cd $< && $(HOSTVARS) ./configure $(HOSTCONF) $(SPEEX_CONF)
 	cd $< && $(MAKE) install
diff --git a/contrib/src/speexdsp/SHA512SUMS b/contrib/src/speexdsp/SHA512SUMS
new file mode 100644
index 0000000000000000000000000000000000000000..4d79678bba61eff808926a20e57b39e0d63251c2
--- /dev/null
+++ b/contrib/src/speexdsp/SHA512SUMS
@@ -0,0 +1 @@
+08ec8c7ea0d573cf4e2b68e9dd8181e6c5a6cafdb88956a0cbf48b0a67fb1ae91d0635fae250db2c6a32368c30e93fee10740a48e36c7286664285d4c93e6f8c  speexdsp-83b63852e0e4755a8c04a1f9c87dd73b5aa6293f.tar.gz
diff --git a/contrib/src/speexdsp/rules.mak b/contrib/src/speexdsp/rules.mak
index 5be4908eb9860d1fb9daecf15a4b0fbeac3b8aa8..f648b7a7adc36abfddc06663ebad740d7cc72548 100644
--- a/contrib/src/speexdsp/rules.mak
+++ b/contrib/src/speexdsp/rules.mak
@@ -12,10 +12,8 @@ $(TARBALLS)/speexdsp-$(SPEEXDSP_HASH).tar.gz:
 	$(call download,$(SPEEXDSP_GITURL))
 
 .sum-speexdsp: speexdsp-$(SPEEXDSP_HASH).tar.gz
-	$(warning $@ not implemented)
-	touch $@
 
-speexdsp: speexdsp-$(SPEEXDSP_HASH).tar.gz .sum-speexdsp
+speexdsp: speexdsp-$(SPEEXDSP_HASH).tar.gz
 	rm -Rf $@ $@-$(SPEEXDSP_HASH)
 	mkdir -p $@-$(SPEEXDSP_HASH)
 	$(ZCAT) "$<" | (cd $@-$(SPEEXDSP_HASH) && tar x $(if ${BATCH_MODE},,-v) --strip-components=1)
@@ -40,7 +38,7 @@ SPEEXDSP_CONF += --enable-arm5e-asm
 endif
 endif
 
-.speexdsp: speexdsp
+.speexdsp: speexdsp .sum-speexdsp
 	mkdir -p $</m4 && $(RECONF)
 	cd $< && $(HOSTVARS) ./configure $(HOSTCONF) $(SPEEXDSP_CONF)
 	cd $< && $(MAKE) install