Build: Improve Arm 32-bit cross-comp./packaging

- Set CPU_TYPE=arm if performing a 32-bit build on an AArch64 system.
  This eliminates the need to use a CMake toolchain file.
- Set RPMARCH=armv7hl if building on a 32-bit Arm system with an FPU.
- Set RPMARCH=armv7hl and DEBARCH=armhf if performing a 32-bit build
  using a gnueabihf toolchain.
- If performing a 32-bit Arm build, generate a 32-bit supplementary DEB
  package for AArch64 systems.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0692717..94efdcc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -55,10 +55,12 @@
     set(CMAKE_SYSTEM_PROCESSOR ${CPU_TYPE})
   endif()
 elseif(CMAKE_SYSTEM_PROCESSOR_LC STREQUAL "aarch64" OR
-  CMAKE_SYSTEM_PROCESSOR_LC MATCHES "arm*64*")
-  set(CPU_TYPE arm64)
-elseif(CMAKE_SYSTEM_PROCESSOR_LC MATCHES "arm*")
-  set(CPU_TYPE arm)
+  CMAKE_SYSTEM_PROCESSOR_LC MATCHES "arm*")
+  if(BITS EQUAL 64)
+    set(CPU_TYPE arm64)
+  else()
+    set(CPU_TYPE arm)
+  endif()
 elseif(CMAKE_SYSTEM_PROCESSOR_LC MATCHES "ppc*" OR
   CMAKE_SYSTEM_PROCESSOR_LC MATCHES "powerpc*")
   set(CPU_TYPE powerpc)
diff --git a/cmakescripts/BuildPackages.cmake b/cmakescripts/BuildPackages.cmake
index b98fa93..277c72f 100644
--- a/cmakescripts/BuildPackages.cmake
+++ b/cmakescripts/BuildPackages.cmake
@@ -23,11 +23,18 @@
 if(CPU_TYPE STREQUAL "x86_64")
   set(DEBARCH amd64)
 elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "armv7*")
+  set(RPMARCH armv7hl)
   set(DEBARCH armhf)
 elseif(CPU_TYPE STREQUAL "arm64")
   set(DEBARCH ${CPU_TYPE})
 elseif(CPU_TYPE STREQUAL "arm")
-  set(DEBARCH armel)
+  if(CMAKE_C_COMPILER MATCHES "gnueabihf")
+    set(RPMARCH armv7hl)
+    set(DEBARCH armhf)
+  else()
+    set(RPMARCH armel)
+    set(DEBARCH armel)
+  endif()
 elseif(CMAKE_SYSTEM_PROCESSOR_LC STREQUAL "ppc64le")
   set(DEBARCH ppc64el)
 elseif(CPU_TYPE STREQUAL "powerpc" AND BITS EQUAL 32)
diff --git a/release/makedpkg.in b/release/makedpkg.in
index 77836dd..a7ff7c2 100755
--- a/release/makedpkg.in
+++ b/release/makedpkg.in
@@ -54,7 +54,11 @@
 
 	if [ $SUPPLEMENT = 1 ]; then
 		PKGNAME=$PKGNAME\32
-		DEBARCH=amd64
+		if [ "$DEBARCH" = "i386" ]; then
+			DEBARCH=amd64
+		else
+			DEBARCH=arm64
+		fi
 	fi
 
 	umask 022
@@ -110,6 +114,8 @@
 fi
 
 makedeb 0
-if [ "$DEBARCH" = "i386" ]; then makedeb 1; fi
+if [ "$DEBARCH" = "i386" -o "$DEBARCH" = "armel" -o "$DEBARCH" = "armhf" ]; then
+	makedeb 1
+fi
 
 exit