diff --git a/contrib/src/libarchive/rules.mak b/contrib/src/libarchive/rules.mak
index ebbb801802e307635f5d08425dee0d061fe3d2f8..7483293fe459842f0b491f66130d5e8956e423f2 100644
--- a/contrib/src/libarchive/rules.mak
+++ b/contrib/src/libarchive/rules.mak
@@ -28,7 +28,7 @@ libarchive: libarchive-$(LIBARCHIVE_VERSION).tar.xz .sum-libarchive
 	$(UNPACK)
 	$(MOVE)
 
-.libarchive: libarchive toolchain.cmake
+.libarchive: libarchive toolchain.cmake .sum-libarchive
 	cd $< && mkdir -p buildlib
 ifdef HAVE_ANDROID
 	cd $< && cp -R contrib/android/include/* $(PREFIX)/include
diff --git a/contrib/src/llhttp/rules.mak b/contrib/src/llhttp/rules.mak
index 3bec129792268cb70ccecf33be1853fb226a1f04..1d992e078adf67b6551429153e8b466a5777d9c6 100644
--- a/contrib/src/llhttp/rules.mak
+++ b/contrib/src/llhttp/rules.mak
@@ -30,9 +30,9 @@ llhttp: llhttp-$(LLHTTP_VERSION).tar.gz
 	$(UNPACK)
 	mv llhttp-release-v$(LLHTTP_VERSION) $@
 
-.llhttp: llhttp .sum-llhttp
+.sum-llhttp: llhttp-$(LLHTTP_VERSION).tar.gz
+
+.llhttp: llhttp toolchain.cmake .sum-llhttp
 	cd $< && mkdir -p build && cd build && $(HOSTVARS) $(CMAKE) $(LLHTTP_CMAKECONF) ..
 	cd $</build && $(MAKE) && $(MAKE) install
 	touch $@
-
-.sum-llhttp: llhttp-$(LLHTTP_VERSION).tar.gz
diff --git a/contrib/src/opendht/rules.mak b/contrib/src/opendht/rules.mak
index f1c302fc9bb6cd55755e61a3f460b542312ca097..772558e9256cb0504f6ec4a4bfee47caf11cd22b 100644
--- a/contrib/src/opendht/rules.mak
+++ b/contrib/src/opendht/rules.mak
@@ -28,7 +28,7 @@ opendht: opendht-$(OPENDHT_VERSION).tar.gz
 	$(UNPACK)
 	$(MOVE)
 
-.opendht: opendht .sum-opendht
+.opendht: opendht toolchain.cmake .sum-opendht
 	cd $< && mkdir -p build
 	cd $< && cd build && $(HOSTVARS) $(CMAKE) $(OPENDHT_CONF) ..
 	cd $< && cd build && $(MAKE) install
diff --git a/contrib/src/restinio/rules.mak b/contrib/src/restinio/rules.mak
index dd6108313968b6ec655e5a7ded3e37a3bb37dc88..0150090468c7bd64dd84afce0002ea396ce08158 100644
--- a/contrib/src/restinio/rules.mak
+++ b/contrib/src/restinio/rules.mak
@@ -41,7 +41,7 @@ restinio: restinio-$(RESTINIO_VERSION).tar.bz2 expected.hpp
 	mkdir -p $(PREFIX)/include/nonstd
 	cp $(TARBALLS)/expected.hpp $(PREFIX)/include/nonstd/expected.hpp
 
-.restinio: restinio .sum-restinio
+.restinio: restinio toolchain.cmake .sum-restinio
 	cd $</dev && $(HOSTVARS) $(CMAKE) $(RESTINIO_CMAKECONF) .
 	cd $</dev && $(MAKE) install
 	touch $@
diff --git a/contrib/src/yaml-cpp/rules.mak b/contrib/src/yaml-cpp/rules.mak
index 415034b6de0cf9df323f9693a78050543e2dec29..0daa40603972152d0a9ca5c4ae6393f9f25bff67 100644
--- a/contrib/src/yaml-cpp/rules.mak
+++ b/contrib/src/yaml-cpp/rules.mak
@@ -26,6 +26,7 @@ yaml-cpp: yaml-cpp-$(YAML_CPP_VERSION).tar.gz .sum-yaml-cpp
 	$(MOVE)
 
 .yaml-cpp: yaml-cpp toolchain.cmake
-	cd $< && $(HOSTVARS) $(CMAKE) . $(YAML_CPP_CMAKECONF)
-	cd $< && $(MAKE) install
+	cd $< && mkdir -p build
+	cd $< && cd build && $(HOSTVARS) $(CMAKE) .. $(YAML_CPP_CMAKECONF)
+	cd $< && cd build && $(MAKE) install
 	touch $@