ci and build scripts updated for armv7

This commit is contained in:
Nicolas 2025-11-23 17:46:03 +01:00 committed by Nicolas Kruse
parent 4c4e83a18e
commit 8db2c41e1b
8 changed files with 94 additions and 21 deletions

View File

@ -61,5 +61,34 @@ jobs:
run: echo "IMAGE_NAME=ghcr.io/${GITHUB_REPOSITORY_OWNER,,}/arm64_test:1" >> $GITHUB_ENV run: echo "IMAGE_NAME=ghcr.io/${GITHUB_REPOSITORY_OWNER,,}/arm64_test:1" >> $GITHUB_ENV
- name: Build & Push Docker image - name: Build & Push Docker image
run: docker buildx build --platform linux/arm64 --push -t $IMAGE_NAME tools/arm64_test/ run: docker buildx build --platform linux/arm64 --push -t $IMAGE_NAME tools/qemu_test/
docker-build-armv7:
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: arm
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Set image name
run: echo "IMAGE_NAME=ghcr.io/${GITHUB_REPOSITORY_OWNER,,}/armv7_test:1" >> $GITHUB_ENV
- name: Build & Push Docker image
run: docker buildx build --platform linux/arm/v7 --push -t $IMAGE_NAME tools/qemu_test/

View File

@ -2,9 +2,9 @@ name: CI Pipeline
on: on:
push: push:
branches: [main] branches: [main, dev]
pull_request: pull_request:
branches: [main] branches: [main, dev]
jobs: jobs:
build_stencils: build_stencils:
@ -149,6 +149,34 @@ jobs:
name: runner-linux-arm64 name: runner-linux-arm64
path: build/runner/* path: build/runner/*
build-armv7:
needs: [build_stencils]
runs-on: ubuntu-latest
continue-on-error: true
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: stencil-object-files
path: src/copapy/obj
- name: Set up QEMU for ARMv7
uses: docker/setup-qemu-action@v3
with:
platforms: linux/arm/v7
- name: Use ARMv7 container
run: |
docker run --rm -v $PWD:/app -w /app --platform linux/arm/v7 ghcr.io/nonannet/armv7_test:1 \
bash -lc "pip install . && \
mkdir -p build/runner && \
gcc -O3 -DENABLE_LOGGING -o build/runner/coparun src/coparun/runmem.c \
src/coparun/coparun.c src/coparun/mem_man.c && \
pytest"
- uses: actions/upload-artifact@v4
with:
name: runner-linux-armv7
path: build/runner/*
build-windows: build-windows:
needs: [build_stencils] needs: [build_stencils]
runs-on: windows-latest runs-on: windows-latest
@ -204,7 +232,7 @@ jobs:
path: build/runner/* path: build/runner/*
release-stencils: release-stencils:
needs: [build_stencils, build-ubuntu, build-windows, build-arm64] needs: [build_stencils, build-ubuntu, build-windows, build-arm64, build-armv7]
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: github.event_name == 'push' if: github.event_name == 'push'
permissions: permissions:
@ -236,7 +264,8 @@ jobs:
cp tmp/musl-object-files/* release/ cp tmp/musl-object-files/* release/
cp tmp/cross-runner/coparun-* release/ cp tmp/cross-runner/coparun-* release/
cp tmp/runner-linux/coparun release/ cp tmp/runner-linux/coparun release/
cp tmp/runner-linux-arm64/coparun release/ cp tmp/runner-linux-arm64/coparun release/coparun-aarch64
cp tmp/runner-linux-armv7/coparun release/coparun-armv7
cp tmp/runner-win/coparun*.exe release/ cp tmp/runner-win/coparun*.exe release/
TAG="${{ steps.version.outputs.version }}" TAG="${{ steps.version.outputs.version }}"

View File

@ -51,7 +51,7 @@ wsl arm-none-eabi-ld -r build/stencils/stencils.o build/musl/musl_objects_armv6.
wsl arm-none-eabi-objdump -d -x src/copapy/obj/stencils_armv6_O3.o > build/stencils/stencils_armv6_O3.asm wsl arm-none-eabi-objdump -d -x src/copapy/obj/stencils_armv6_O3.o > build/stencils/stencils_armv6_O3.asm
echo ------------------------------ echo ------------------------------
REM echo - Build runner REM echo - Build runner
REM wsl arm-none-eabi-gcc -march=armv6 -mfpu=vfp -marm -static -Wall -Wextra -Wconversion -Wsign-conversion -Wshadow -Wstrict-overflow -O3 -DENABLE_LOGGING src/coparun/runmem.c src/coparun/coparun.c src/coparun/mem_man.c -o build/runner/coparun-armv6 REM wsl arm-linux-gnueabihf-gcc -march=armv6 -mfpu=vfp -marm -static -Wall -Wextra -Wconversion -Wsign-conversion -Wshadow -Wstrict-overflow -O3 -DENABLE_LOGGING src/coparun/runmem.c src/coparun/coparun.c src/coparun/mem_man.c -o build/runner/coparun-armv6

View File

@ -1,20 +1,28 @@
#!/bin/bash #!/bin/bash
set -e set -e
set -v set -v
mkdir -p bin
mkdir -p build/stencils
mkdir -p build/runner
SRC=build/stencils/stencils.c SRC=build/stencils/stencils.c
DEST=src/copapy/obj DEST=src/copapy/obj
python3 stencils/generate_stencils.py $SRC python3 stencils/generate_stencils.py $SRC
mkdir -p $DEST mkdir -p $DEST
gcc --version
#gcc -fno-pic -c $SRC -O0 -o $DEST/stencils_x86_64_O0.o gcc -fno-pic -ffunction-sections -c $SRC -O3 -o build/stencils/stencils.o
#gcc -fno-pic -c $SRC -O1 -o $DEST/stencils_x86_64_O1.o ld -r build/stencils/stencils.o build/musl/musl_objects_x86_64.o -o $DEST/stencils_x86_64_O3.o
#gcc -fno-pic -c $SRC -O2 -o $DEST/stencils_x86_64_O2.o objdump -d -x $DEST/stencils_x86_64_O3.o > build/stencils/stencils_x86_64_O3.asm
gcc -fno-pic -c $SRC -O3 -o $DEST/stencils_x86_64_O3.o
mkdir bin -p mkdir bin -p
gcc -Wall -Wextra -Wconversion -Wsign-conversion \ gcc -Wall -Wextra -Wconversion -Wsign-conversion \
-Wshadow -Wstrict-overflow -Werror -g -O3 \ -Wshadow -Wstrict-overflow -Werror -g -O3 \
-DENABLE_LOGGING -DENABLE_LOGGING \
src/coparun/runmem.c src/coparun/coparun.c src/coparun/mem_man.c -o build/runner/coparun src/coparun/runmem.c src/coparun/coparun.c src/coparun/mem_man.c -o build/runner/coparun
#x86_64-w64-mingw32-gcc -Wall -Wextra -Wconversion -Wsign-conversion -Wshadow -Wstrict-overflow -Werror src/runner/runmem2.c -Wall -O3 -o bin/runmem2.exe
echo "--------------arm-v7 32 bit----------------"
arm-none-eabi-gcc -fno-pic -ffunction-sections -march=armv7-a -mfpu=neon-vfpv3 -mfloat-abi=hard -marm -c $SRC -O3 -o build/stencils/stencils.o
arm-none-eabi-ld -r build/stencils/stencils.o build/musl/musl_objects_armv7.o -o $DEST/stencils_armv7_O3.o
arm-none-eabi-objdump -d -x $DEST/stencils_armv7_O3.o > build/stencils/stencils_armv7_O3.asm
arm-linux-gnueabihf-gcc -march=armv7-a -mfpu=neon-vfpv3 -mfloat-abi=hard -marm -static -Wall -Wextra -Wconversion -Wsign-conversion -Wshadow -Wstrict-overflow -O3 -DENABLE_LOGGING src/coparun/runmem.c src/coparun/coparun.c src/coparun/mem_man.c -o build/runner/coparun-armv7

View File

@ -16,9 +16,9 @@ sh ../packobjs.sh i686-linux-gnu-gcc-13 i686-linux-gnu-ld /object_files/musl_obj
sh ../packobjs.sh aarch64-linux-gnu-gcc-13 aarch64-linux-gnu-ld /object_files/musl_objects_arm64.o sh ../packobjs.sh aarch64-linux-gnu-gcc-13 aarch64-linux-gnu-ld /object_files/musl_objects_arm64.o
sh ../packobjs.sh arm-none-eabi-gcc-13 arm-none-eabi-ld /object_files/musl_objects_armv6.o "-march=armv6 -mfpu=vfp -marm" sh ../packobjs.sh arm-none-eabi-gcc-13 arm-none-eabi-ld /object_files/musl_objects_armv6.o "-march=armv6 -mfpu=vfp -mfloat-abi=hard -marm"
sh ../packobjs.sh arm-none-eabi-gcc-13 arm-none-eabi-ld /object_files/musl_objects_armv7.o "-march=armv7-a -mfpu=neon-vfpv3 -marm" sh ../packobjs.sh arm-none-eabi-gcc-13 arm-none-eabi-ld /object_files/musl_objects_armv7.o "-march=armv7-a -mfpu=neon-vfpv3 -mfloat-abi=hard -marm"
#sh ../packobjs.sh mips mips-linux-gnu-gcc-13 mips-linux-gnu-ld #sh ../packobjs.sh mips mips-linux-gnu-gcc-13 mips-linux-gnu-ld

View File

@ -32,11 +32,11 @@ aarch64-linux-gnu-gcc-13 $FLAGS -$OPT -c $SRC -o $STMP
aarch64-linux-gnu-ld -r $STMP /object_files/musl_objects_arm64.o -o $DEST/stencils_arm64_$OPT.o aarch64-linux-gnu-ld -r $STMP /object_files/musl_objects_arm64.o -o $DEST/stencils_arm64_$OPT.o
# ARMv6 hardware fp # ARMv6 hardware fp
arm-none-eabi-gcc-13 -march=armv6 -mfpu=vfp -marm $FLAGS -$OPT -c $SRC -o $STMP arm-none-eabi-gcc-13 -march=armv6 -mfpu=vfp -mfloat-abi=hard -marm $FLAGS -$OPT -c $SRC -o $STMP
arm-none-eabi-ld -r $STMP /object_files/musl_objects_armv6.o -o $DEST/stencils_armv6_$OPT.o arm-none-eabi-ld -r $STMP /object_files/musl_objects_armv6.o -o $DEST/stencils_armv6_$OPT.o
# ARMv7 hardware fp # ARMv7 hardware fp
arm-none-eabi-gcc-13 -march=armv7-a -mfpu=neon-vfpv3 -marm $FLAGS -$OPT -c $SRC -o $STMP arm-none-eabi-gcc-13 -march=armv7-a -mfpu=neon-vfpv3 -mfloat-abi=hard -marm $FLAGS -$OPT -c $SRC -o $STMP
arm-none-eabi-ld -r $STMP /object_files/musl_objects_armv7.o -o $DEST/stencils_armv7_$OPT.o arm-none-eabi-ld -r $STMP /object_files/musl_objects_armv7.o -o $DEST/stencils_armv7_$OPT.o
# PowerPC64LE # PowerPC64LE

View File

@ -1,9 +1,16 @@
#!/bin/bash #!/bin/bash
source tools/build.sh set -e
set -v
objdump -d -j .text src/copapy/obj/stencils_x86_64_O3.o > build/stencils/stencils_x86_64_O3.asm sh tools/build.sh
#objdump -d -j .text src/copapy/obj/stencils_x86_64_O3.o > build/stencils/stencils_x86_64_O3.asm
python3 tools/make_example.py python3 tools/make_example.py
python3 tools/extract_code.py "build/runner/test.copapy" "build/runner/test.copapy.bin"
build/runner/coparun build/runner/test.copapy build/runner/test.copapy.bin
objdump -D -b binary -m i386:x86-64 --adjust-vma=0x1000 build/runner/test.copapy.bin > build/runner/test.copapy.asm objdump -D -b binary -m i386:x86-64 --adjust-vma=0x1000 build/runner/test.copapy.bin > build/runner/test.copapy.asm
build/runner/coparun-armv7 build/runner/test-armv7.copapy build/runner/test.copapy-armv7.bin
arm-none-eabi-objdump -D -b binary -marm --adjust-vma=0x50000 build/runner/test.copapy-armv7.bin > build/runner/test.copapy-armv7.asm