From d2069d5d07b9b3268c9e12d6e92fc7f8c2d35619 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Mon, 2 Mar 2026 21:32:12 +0100 Subject: [PATCH] build script for local stencil builds updated for ARM64, ARM-Thumb and ARM-CortexM-Thumb --- tools/build.sh | 45 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/tools/build.sh b/tools/build.sh index 4af186a..28679fd 100644 --- a/tools/build.sh +++ b/tools/build.sh @@ -4,10 +4,10 @@ set -eu ARCH=${1:-x86_64} case "$ARCH" in - (x86_64|arm-v6|arm-v7|arm-v7-thumb|arm-v7m-thumb|all) + (x86_64|arm64|arm-v6|arm-v7|arm-v7-thumb|arm-v7m-thumb|all) ;; (*) - echo "Usage: $0 [x86_64|arm-v6|arm-v7|arm-v6-thumb|arm-v7m-thumb|all]" + echo "Usage: $0 [x86_64|arm64|arm-v6|arm-v7|arm-v6-thumb|arm-v7m-thumb|all]" exit 1 ;; esac @@ -42,13 +42,44 @@ if [[ "$ARCH" == "x86_64" || "$ARCH" == "all" ]]; then -o build/runner/coparun fi +####################################### +# ARM 64 +####################################### +if [[ "$ARCH" == "arm64" || "$ARCH" == "all" ]]; then + echo "--------------arm64----------------" + + LIBGCC=$(aarch64-linux-gnu-gcc -print-libgcc-file-name) + + aarch64-linux-gnu-gcc -fno-pic -ffunction-sections \ + -c $SRC -O3 -o build/stencils/stencils.o + + aarch64-linux-gnu-ld -r \ + build/stencils/stencils.o \ + build/musl/musl_objects_arm64.o \ + $LIBGCC \ + -o $DEST/stencils_arm64_O3.o + + aarch64-linux-gnu-objdump -d -x \ + $DEST/stencils_arm64_O3.o \ + > build/stencils/stencils_arm64_O3.asm + + aarch64-linux-gnu-gcc \ + -Wall -Wextra -Wconversion -Wsign-conversion -static \ + -Wshadow -Wstrict-overflow -O3 \ + -DENABLE_LOGGING \ + src/coparun/runmem.c \ + src/coparun/coparun.c \ + src/coparun/mem_man.c \ + -o build/runner/coparun-arm64 +fi + ####################################### # ARM v6 ####################################### if [[ "$ARCH" == "arm-v6" || "$ARCH" == "all" ]]; then echo "--------------arm-v6 32 bit----------------" - LIBGCC=$(arm-none-eabi-gcc -print-libgcc-file-name) + LIBGCC=$(arm-none-eabi-gcc -march=armv6 -mfpu=vfp -mfloat-abi=hard -marm -print-libgcc-file-name) arm-none-eabi-gcc -fno-pic -ffunction-sections \ -march=armv6 -mfpu=vfp -mfloat-abi=hard -marm \ @@ -81,7 +112,7 @@ fi if [[ "$ARCH" == "arm-v7" || "$ARCH" == "all" ]]; then echo "--------------arm-v7 32 bit----------------" - LIBGCC=$(arm-none-eabi-gcc -print-libgcc-file-name) + LIBGCC=$(arm-none-eabi-gcc -march=armv7-a -mfpu=neon-vfpv3 -mfloat-abi=hard -marm -print-libgcc-file-name) arm-none-eabi-gcc -fno-pic -ffunction-sections \ -march=armv7-a -mfpu=neon-vfpv3 -mfloat-abi=hard -marm \ @@ -114,7 +145,7 @@ fi if [[ "$ARCH" == "arm-v7-thumb" || "$ARCH" == "all" ]]; then echo "--------------arm-v7a-thumb 32 bit----------------" - LIBGCC=$(arm-none-eabi-gcc -print-libgcc-file-name) + LIBGCC=$(arm-none-eabi-gcc -march=armv7 -mfpu=vfp3 -mthumb -print-libgcc-file-name) arm-none-eabi-gcc -fno-pic -ffunction-sections \ -march=armv7-a -mfpu=neon-vfpv3 -mfloat-abi=hard -mthumb \ @@ -122,7 +153,7 @@ if [[ "$ARCH" == "arm-v7-thumb" || "$ARCH" == "all" ]]; then arm-none-eabi-ld -r \ build/stencils/stencils.o \ - build/musl/musl_objects_armv7.o \ + build/musl/musl_objects_armv7thumb.o \ $LIBGCC \ -o $DEST/stencils_armv7thumb_O3.o @@ -147,7 +178,7 @@ fi if [[ "$ARCH" == "arm-v7m-thumb" || "$ARCH" == "all" ]]; then echo "--------------arm-v7m-thumb 32 bit----------------" - LIBGCC=$(arm-none-eabi-gcc -print-libgcc-file-name) + LIBGCC=$(arm-none-eabi-gcc -march=armv7e-m -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -print-libgcc-file-name) arm-none-eabi-gcc -fno-pic -ffunction-sections \ -march=armv7e-m -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb \