125 lines
4.2 KiB
YAML
125 lines
4.2 KiB
YAML
name: LANCommander.Launcher.Legacy
|
|
|
|
on:
|
|
push:
|
|
branches: [main, feature/legacy-launcher]
|
|
paths:
|
|
- 'LANCommander.Launcher.Legacy/**'
|
|
- 'LANCommander.SDK.Cpp/**'
|
|
- '.github/workflows/LANCommander.Launcher.Legacy.yml'
|
|
pull_request:
|
|
branches: [main]
|
|
paths:
|
|
- 'LANCommander.Launcher.Legacy/**'
|
|
- 'LANCommander.SDK.Cpp/**'
|
|
- '.github/workflows/LANCommander.Launcher.Legacy.yml'
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build-win9x:
|
|
name: Build (Win9x / MinGW-w64 i686)
|
|
runs-on: windows-latest
|
|
|
|
defaults:
|
|
run:
|
|
shell: msys2 {0}
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
# ---------------------------------------------------------------
|
|
# MSYS2 with MinGW32 (i686) toolchain
|
|
# ---------------------------------------------------------------
|
|
- name: Setup MSYS2
|
|
uses: msys2/setup-msys2@v2
|
|
with:
|
|
msystem: MINGW32
|
|
update: false
|
|
install: >-
|
|
mingw-w64-i686-gcc
|
|
mingw-w64-i686-cmake
|
|
mingw-w64-i686-make
|
|
make
|
|
|
|
# ---------------------------------------------------------------
|
|
# Vendor dependencies (cJSON, miniz, Allegro 4 source)
|
|
# ---------------------------------------------------------------
|
|
- name: Download vendor dependencies
|
|
shell: pwsh
|
|
run: ./setup-vendor.ps1
|
|
|
|
# ---------------------------------------------------------------
|
|
# Build Allegro 4 from source (static, no addons)
|
|
# ---------------------------------------------------------------
|
|
- name: Build Allegro 4
|
|
run: |
|
|
ALLEGRO_SRC="LANCommander.Launcher.Legacy/vendor/allegro4/allegro5-4.4.3.1"
|
|
ALLEGRO_BUILD="LANCommander.Launcher.Legacy/build-allegro-win9x"
|
|
ALLEGRO_PREFIX="$(pwd)/LANCommander.Launcher.Legacy/allegro4-win9x"
|
|
|
|
cmake -S "$ALLEGRO_SRC" -B "$ALLEGRO_BUILD" \
|
|
-G "MinGW Makefiles" \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCMAKE_INSTALL_PREFIX="$ALLEGRO_PREFIX" \
|
|
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
|
|
-DSHARED=OFF \
|
|
-DWANT_EXAMPLES=OFF \
|
|
-DWANT_TOOLS=OFF \
|
|
-DWANT_TESTS=OFF \
|
|
-DWANT_ALLEGROGL=OFF \
|
|
-DWANT_LOADPNG=OFF \
|
|
-DWANT_LOGG=OFF \
|
|
-DWANT_JPGALLEG=OFF \
|
|
-DWANT_FRAMEWORKS=OFF
|
|
|
|
mingw32-make -C "$ALLEGRO_BUILD" -j$(nproc)
|
|
mingw32-make -C "$ALLEGRO_BUILD" install
|
|
|
|
# ---------------------------------------------------------------
|
|
# Build the launcher
|
|
# ---------------------------------------------------------------
|
|
- name: Build launcher
|
|
run: |
|
|
LAUNCHER_DIR="LANCommander.Launcher.Legacy"
|
|
LAUNCHER_BUILD="$LAUNCHER_DIR/build-win9x"
|
|
ALLEGRO_PREFIX="$(pwd)/$LAUNCHER_DIR/allegro4-win9x"
|
|
|
|
cmake -S "$LAUNCHER_DIR" -B "$LAUNCHER_BUILD" \
|
|
-G "MinGW Makefiles" \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DALLEGRO_STATIC=ON \
|
|
-DTARGET_WIN9X=ON \
|
|
-DALLEGRO_ROOT="$ALLEGRO_PREFIX"
|
|
|
|
mingw32-make -C "$LAUNCHER_BUILD" -j$(nproc)
|
|
|
|
# ---------------------------------------------------------------
|
|
# Package
|
|
# ---------------------------------------------------------------
|
|
- name: Package artifacts
|
|
run: |
|
|
mkdir -p out-win9x
|
|
|
|
LAUNCHER_EXE=$(find LANCommander.Launcher.Legacy/build-win9x -name "launcher.exe" | head -1)
|
|
cp "$LAUNCHER_EXE" out-win9x/LANCommander.exe
|
|
strip out-win9x/LANCommander.exe
|
|
|
|
# Bundle GDI+ redistributable (MinGW CRT is statically linked)
|
|
if [ -f "$MINGW_PREFIX/bin/gdiplus.dll" ]; then
|
|
cp "$MINGW_PREFIX/bin/gdiplus.dll" out-win9x/
|
|
echo "Bundled: gdiplus.dll"
|
|
fi
|
|
|
|
# Show PE info for verification
|
|
objdump -p out-win9x/LANCommander.exe | grep -i "Version\|Subsystem" || true
|
|
|
|
echo ""
|
|
ls -lh out-win9x/
|
|
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: LANCommander-Legacy-Win9x
|
|
path: out-win9x/
|
|
if-no-files-found: error
|