diff --git a/.github/workflows/nightly-release.yml b/.github/workflows/nightly-release.yml index 6f39f0521..df1b09365 100644 --- a/.github/workflows/nightly-release.yml +++ b/.github/workflows/nightly-release.yml @@ -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 diff --git a/makefile b/makefile index 21a5132d1..ec5e0417b 100644 --- a/makefile +++ b/makefile @@ -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 diff --git a/makefile.mingw b/makefile.mingw index d977ed6cc..59c2dda03 100644 --- a/makefile.mingw +++ b/makefile.mingw @@ -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 \