diff --git a/Makefile b/Makefile
index b20da8f16cf3f59572957acd5015a4e876c94350..3634d970522debdb7d101d4fb09567a73e49eddb 100644
--- a/Makefile
+++ b/Makefile
@@ -213,6 +213,9 @@ dirclean: FORCE
 export GLUON_GENERATE := $(GLUONDIR)/scripts/generate.sh
 export GLUON_CONFIGURE := $(GLUONDIR)/scripts/configure.pl
 
+export MD5SUM := $(GLUONDIR)/scripts/md5sum.sh
+export SHA512SUM := $(GLUONDIR)/scripts/sha512sum.sh
+
 
 download: FORCE
 	+$(SUBMAKE) tools/download
@@ -342,7 +345,7 @@ manifest: FORCE
 				[ -e "$$file" ] && echo \
 					'$(GLUON_$(profile)_MODEL_$(model))' \
 					"$$(echo "$$file" | sed -n -r -e 's/^gluon-$(call regex-escape,$(GLUON_SITE_CODE))-(.*)-$(call regex-escape,$(GLUON_$(profile)_MODEL_$(model)))-sysupgrade\.bin$$/\1/p')" \
-					"$$(sha512sum "$$file" | awk '{print $$1}')" \
+					"$$($(SHA512SUM) "$$file")" \
 					"$$file" && break; \
 			done; \
 		) \
diff --git a/scripts/md5sum.sh b/scripts/md5sum.sh
new file mode 100755
index 0000000000000000000000000000000000000000..6160058362303416be9ca921667629a8a189dfdc
--- /dev/null
+++ b/scripts/md5sum.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+check_command() {
+	which $1 >/dev/null 2>&1
+}
+
+if check_command md5sum; then
+	ret="$(md5sum "$@")"
+elif check_command md5; then
+	ret="$(md5 -q "$@")"
+else
+	echo "$0: no suitable md5sum implementation was found" >&1
+	exit 1
+fi
+
+[ "$?" -eq 0 ] || exit 1
+
+echo "$ret" | awk '{ print $1 }'
diff --git a/scripts/sha512sum.sh b/scripts/sha512sum.sh
new file mode 100755
index 0000000000000000000000000000000000000000..921e5c6c65c69bc68ddb9a0ff3b5b22e18b99619
--- /dev/null
+++ b/scripts/sha512sum.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+check_command() {
+	which $1 >/dev/null 2>&1
+}
+
+if check_command sha512sum; then
+	ret="$(sha512sum "$@")"
+elif check_command shasum; then
+	ret="$(shasum -a 512 "$@")"
+elif check_command cksum; then
+	ret="$(cksum -q -a sha512 "$@")"
+else
+	echo "$0: no suitable sha512sum implementation was found" >&1
+	exit 1
+fi
+
+[ "$?" -eq 0 ] || exit 1
+
+echo "$ret" | awk '{ print $1 }'