diff --git a/abuild.in b/abuild.in
index e5809dca872b8c2d790f87e494e8f5a6d1b26e37..b16970719269dd71a882cfaf9e660f57676bc1a8 100755
--- a/abuild.in
+++ b/abuild.in
@@ -576,6 +576,21 @@ trace_apk_deps() {
 	done
 }
 
+# check that noarch is set if needed
+arch_check() {
+	local name=$1
+	local dir="$2"
+	if [ -z "$(scanelf -R "$dir" | head -n 1)" ]; then
+		[ "$arch" = "noarch" ] && return 0
+		warning "No elf files found for $name so arch should probably be set to \"noarch\""
+	else
+		[ "$arch" != "noarch" ] && return 0
+		error "Elf files found so arch must not be set to \"noarch\""
+		return 1
+	fi
+	return 0
+}
+
 create_apks() {
 	local file
 	getpkgver || return 1
@@ -586,6 +601,7 @@ create_apks() {
 		local apk=$name-$ver.apk
 		local datadir="$pkgbasedir"/$name
 
+		arch_check "$name" "$datadir" || return 1
 		trace_apk_deps "$name" "$dir" || return 1
 		msg "Creating $apk..."
 		(