github actions: cross-compile arm64 builds

This commit is contained in:
barbudreadmon committed 2026-10-23 08:47:35 +02:00
1 parent dcc157bd04
commit c89fdfe3ab
3 files changed
+22 -20

No files matched your search

+18 -16
View File
@@ -24,6 +24,8 @@ env:
WINDOWS_X86_32_DEBUG_ARTIFACT: windows-x86_32-debug
WINDOWS_X86_32_DEBUG_ARTIFACT_PATH: windows-x86_32-debug.txt
WINDOWS_X86_32_DEBUG_ARCHIVE_ARTIFACT: windows-x86_32-debug-archive
# Forced version (future versions might drop ARMv8.0 support ?)
LLVM_MINGW_VERSION: "20261020"
WINDOWS_ARM64_ARTIFACT: windows-arm64
WINDOWS_ARM64_ARTIFACT_PATH: windows-arm64.txt
WINDOWS_ARM64_ARCHIVE_ARTIFACT: windows-arm64-archive
@@ -264,24 +266,24 @@ jobs:
build_windows_arm64:
name: Build (Windows ARM64)
runs-on: windows-11-arm
runs-on: ubuntu-latest
continue-on-error: true
defaults:
run:
shell: msys2 {0}
shell: bash {0}
steps:
- name: Install dependencies
uses: msys2/setup-msys2@v2
with:
update: true
install: msys2-devel base-devel mingw-w64-clang-aarch64-toolchain zip wget perl
msystem: CLANGARM64
run: |
name=llvm-mingw-${LLVM_MINGW_VERSION}-ucrt-ubuntu-22.04-x86_64
curl -fsSL https://github.com/mstorsjo/llvm-mingw/releases/download/${LLVM_MINGW_VERSION}/${name}.tar.xz | tar -xJ -C $HOME
echo "$HOME/${name}/bin" >> $GITHUB_PATH
- name: Clone
uses: actions/checkout@v4
- name: Build
id: create_windows_arm64_archive
run: |
make -j$(nproc) mingwarm64 SKIPDEPEND=1 RELEASEBUILD=1
set -e
make -j$(nproc) mingwccarm64 SKIPDEPEND=1 RELEASEBUILD=1
archive_file="${{ env.WINDOWS_ARM64_ARTIFACT }}.zip"
echo "archive_file=${archive_file}" >> $GITHUB_OUTPUT
zip --junk-paths "${archive_file}" fbneoarm64.exe src/license.txt fbahelpfilesrc/fbneo.chm whatsnew.html
@@ -303,24 +305,24 @@ jobs:
build_windows_arm64_debug:
name: Build (Windows ARM64 Debug)
runs-on: windows-11-arm
runs-on: ubuntu-latest
continue-on-error: true
defaults:
run:
shell: msys2 {0}
shell: bash {0}
steps:
- name: Install dependencies
uses: msys2/setup-msys2@v2
with:
update: true
install: msys2-devel base-devel mingw-w64-clang-aarch64-toolchain zip wget perl
msystem: CLANGARM64
run: |
name=llvm-mingw-${LLVM_MINGW_VERSION}-ucrt-ubuntu-22.04-x86_64
curl -fsSL https://github.com/mstorsjo/llvm-mingw/releases/download/${LLVM_MINGW_VERSION}/${name}.tar.xz | tar -xJ -C $HOME
echo "$HOME/${name}/bin" >> $GITHUB_PATH
- name: Clone
uses: actions/checkout@v4
- name: Build
id: create_windows_arm64_debug_archive
run: |
make -j$(nproc) mingwarm64 SKIPDEPEND=1
set -e
make -j$(nproc) mingwccarm64 SKIPDEPEND=1
archive_file="${{ env.WINDOWS_ARM64_DEBUG_ARTIFACT }}.zip"
echo "archive_file=${archive_file}" >> $GITHUB_OUTPUT
zip --junk-paths "${archive_file}" fbneoarm64d.exe src/license.txt fbahelpfilesrc/fbneo.chm whatsnew.html
+1
View File
@@ -103,6 +103,7 @@ mingwcc64: FORCE
@$(MAKE) -s -f makefile.mingw BUILD_X64_EXE=1 GCC510=1 BORKYCRT=1 HOST_CC=gcc HOST_CXX=g++ CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ WINDRES=x86_64-w64-mingw32-windres
# Native Windows ARM64 build with MSYS2 (CLANGARM64 environment)
# note: MSYS2 can't produce binaries for ARMv8.0
mingwarm64: FORCE
@$(MAKE) -s -f makefile.mingw BUILD_ARM64_EXE=1 GCC510=1 BORKYCRT=1
+3 -4
View File
@@ -276,21 +276,20 @@ endif
ifdef GCC510
ifdef BUILD_ARM64_EXE
GCCOPTFLAGS =
# keep ARMv8.0 compatibility (MSYS2 supports only ARMv8.1 and will ignore this)
GCCOPTFLAGS = -march=armv8-a
else
GCCOPTFLAGS = -ffloat-store -fforce-addr -finline-limit=1200 -fthread-jumps -fexpensive-optimizations
GCCOPTFLAGS = -ffloat-store -fforce-addr -finline-limit=1200 -fthread-jumps -fexpensive-optimizations -mwindows
endif
CFLAGS = -pipe \
-std=gnu99 -O3 $(GCCOPTFLAGS) \
-mwindows \
-Wall -Wno-long-long -Wno-sign-compare -Wno-uninitialized -Wno-unused \
-Wno-sequence-point -Wno-pedantic \
$(DEF) $(incdir)
CXXFLAGS = -pipe \
-std=gnu++11 -O3 $(GCCOPTFLAGS) \
-mwindows \
-fcheck-new \
-Wall -W -pedantic -Wshadow -Wno-long-long -Wno-write-strings \
-Wunknown-pragmas -Wundef -Wno-conversion -Wno-missing-braces -Wno-multichar \