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