From bfebe1452762c65a06992d63bebaa9152636bf64 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Wed, 23 Jul 2025 12:00:38 +0200 Subject: [PATCH] .github: add windows / mingw build add CI build on MingW / Windows. Signed-off-by: Enrico Weigelt, metux IT consult --- .../mingw32/cross-i686-w64-mingw32.txt | 20 +++++ .../scripts/mingw32/cross-prereqs-build.sh | 81 +++++++++++++++++++ .github/workflows/build-xserver.yml | 44 ++++++++++ 3 files changed, 145 insertions(+) create mode 100644 .github/scripts/mingw32/cross-i686-w64-mingw32.txt create mode 100755 .github/scripts/mingw32/cross-prereqs-build.sh diff --git a/.github/scripts/mingw32/cross-i686-w64-mingw32.txt b/.github/scripts/mingw32/cross-i686-w64-mingw32.txt new file mode 100644 index 0000000000..1c04f65476 --- /dev/null +++ b/.github/scripts/mingw32/cross-i686-w64-mingw32.txt @@ -0,0 +1,20 @@ +[binaries] +c = 'i686-w64-mingw32-gcc' +cpp = 'i686-w64-mingw32-g++' +ar = 'i686-w64-mingw32-ar' +strip = 'i686-w64-mingw32-strip' +pkgconfig = '/usr/local/bin/i686-w64-mingw32-pkg-config' +windres = 'i686-w64-mingw32-windres' +exe_wrapper = 'wine' + +[properties] +# Directory that contains 'bin', 'lib', etc for the toolchain +root = '/usr/i686-w64-mingw32' +# Directory that contains 'bin', 'lib', etc which have been cross-compiled +sys_root = '/usr/i686-w64-mingw32' + +[host_machine] +system = 'windows' +cpu_family = 'x86' +cpu = 'i686' +endian = 'little' diff --git a/.github/scripts/mingw32/cross-prereqs-build.sh b/.github/scripts/mingw32/cross-prereqs-build.sh new file mode 100755 index 0000000000..26399400bf --- /dev/null +++ b/.github/scripts/mingw32/cross-prereqs-build.sh @@ -0,0 +1,81 @@ +#!/bin/bash + +set -e +set -o xtrace + +HOST=$1 + +# Debian's cross-pkg-config wrappers are broken for MinGW targets, since +# dpkg-architecture doesn't know about MinGW target triplets. +# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=930492 +cat >/usr/local/bin/${HOST}-pkg-config <> "$GITHUB_ENV" + echo "PKG_CONFIG_PATH=$X11_PREFIX/share/pkgconfig:$X11_PREFIX/lib/$MACHINE/pkgconfig:$X11_PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH" >> "$GITHUB_ENV" + sudo chown root /bin/tar && sudo chmod u+s /bin/tar + + - name: apt cache + uses: actions/cache@v4 + with: + path: /var/cache/apt + key: apt-cache-${{ hashFiles('.github/scripts/ubuntu/install-pkg.sh') }} + restore-keys: apt-cache- + + - name: pkg install + run: sudo .github/scripts/ubuntu/install-pkg.sh + + - name: X11 prereq cache + uses: actions/cache@v4 + with: + path: | + ${{ env.X11_PREFIX }} + ${{ env.X11_BUILD_DIR }}/xts + ${{ env.X11_BUILD_DIR }}/piglit + key: ${{ runner.name }}-x11-deps-${{ hashFiles('.github/scripts/install-prereq.sh') }} + restore-keys: ${{ runner.name }}-x11-deps- + + - name: install crosscompiler + run: sudo apt-get install -y mingw-w64-tools gcc-mingw-w64 gcc-mingw-w64-i686 libz-mingw-w64-dev + + - name: cross prereq + run: sudo .github/scripts/mingw32/cross-prereqs-build.sh i686-w64-mingw32 + + - name: build + run: .gitlab-ci/meson-build.sh --run-install + xserver-build-macos: env: MESON_ARGS: -Dprefix=/tmp -Dglx=false -Dxnest=false