v0.5.0: Windows/ARM64 and Linux/ARM64 cross targets, .deb/.msi packaging

- Cross toolchains: llvm-mingw-aarch64 (Windows ARM64; SDL3 staged from MSYS2's
  clangarm64 repo since SDL ships no MinGW ARM64 dev package) and
  clang-aarch64-linux-gnu (Linux ARM64; arm64 libc++/SDL3 via dpkg multiarch).
- Distro images: Dockerfile.linux-arm64, Dockerfile.win-arm64, Dockerfile.debian
  and Dockerfile.debian-arm64 (Debian 13 with upstream CMake, whose 3.31 gate
  cannot enable import std).
- Packaging via CPack: .deb for Ubuntu 26.04 and Debian 13 on amd64 and arm64
  (dependencies derived by dpkg-shlibdeps), portable .zip/.tar.gz, and a
  Windows .msi built with wixl (msitools) straight from the Linux cross image.
  wixl 0.106 lacks arm64, so Windows/ARM64 ships the portable zip only.
- CMake: parameterize the SDL3 MinGW triple, add install() + CPack config.
- CI: build/package jobs for both arm64 targets and both Debian packages;
  existing Linux/Windows jobs now also emit the .deb / .zip + .msi.
- scripts/: build-linux-arm64, build-windows-arm64, build-debian,
  build-debian-arm64.
This commit is contained in:
EnderTheCoder
2026-09-28 20:38:40 +08:00
parent 3caf18409b
commit d0ae4c76ba
18 changed files with 842 additions and 14 deletions
+5 -2
View File
@@ -29,6 +29,8 @@ RUN --mount=type=cache,target=/var/lib/apt,sharing=locked \
clang-21 \
clang-tools-21 \
cmake \
dpkg-dev \
file \
gdb \
git \
libc++-21-dev \
@@ -45,9 +47,10 @@ ENV CXX=clang++-21
WORKDIR /work
COPY . .
RUN cmake -S . -B build/linux -G Ninja -DCMAKE_BUILD_TYPE=Release \
RUN cmake -S . -B build/linux -G Ninja -DCMAKE_BUILD_TYPE=Release -DOPENRA3_DISTRO_TAG=ubuntu26.04 \
&& cmake --build build/linux -j \
&& ctest --test-dir build/linux --output-on-failure
&& ctest --test-dir build/linux --output-on-failure \
&& (cd build/linux && cpack -G DEB)
# deploy target: runtime dependencies + final binary, minimal and fast.
FROM ubuntu:26.04 AS deploy