mirror of
https://github.com/HarbourMasters/Shipwright
synced 2026-08-12 12:18:32 -04:00
5730fdb73d
SOH_TOOLS_ONLY returns from the root CMakeLists once the asset tools are declared, before libultraship and soh are added, so a configure that only needs soh-o2r-packer never reaches LUS's find_package(SDL2 REQUIRED). That lets generate-soh-otr drop building SDL2 from source, SDL2_net, and the deps cache that existed to hold the SDL2 tarball -- eleven steps down to six. Verified a tools-only build produces the archive with all 1,042 entries matching. The tool targets move above the sub-projects so the early return can sit between them; they only ever needed torch. The packer creates its output directory, which previously came for free from soh's build directory.
243 lines
8.2 KiB
YAML
243 lines
8.2 KiB
YAML
name: generate-builds
|
|
on:
|
|
push:
|
|
pull_request:
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
jobs:
|
|
|
|
generate-soh-otr:
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- name: Git Checkout
|
|
uses: actions/checkout@v7
|
|
with:
|
|
submodules: true
|
|
- name: Configure ccache
|
|
uses: hendrikmuhs/ccache-action@v1.2.23
|
|
with:
|
|
save: ${{ github.ref_name == github.event.repository.default_branch }}
|
|
key: ${{ runner.os }}-otr-ccache-${{ github.ref }}-${{ github.sha }}
|
|
restore-keys: |
|
|
${{ runner.os }}-otr-ccache-${{ github.ref }}
|
|
${{ runner.os }}-otr-ccache
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y $(cat linux-build-deps/apt.txt)
|
|
- name: Add ccache to PATH
|
|
run: |
|
|
echo "/usr/lib/ccache" >> "$GITHUB_PATH"
|
|
echo "/usr/local/opt/ccache/libexec" >> "$GITHUB_PATH"
|
|
- name: Generate soh.o2r
|
|
run: |
|
|
cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release -DSOH_TOOLS_ONLY=ON
|
|
cmake --build build-cmake --config Release --target GenerateSohOtr -j3
|
|
- name: Upload soh.o2r
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: soh.o2r
|
|
path: soh.o2r
|
|
retention-days: 3
|
|
|
|
build-macos:
|
|
needs: generate-soh-otr
|
|
runs-on: macos-14
|
|
steps:
|
|
- name: Git Checkout
|
|
uses: actions/checkout@v7
|
|
with:
|
|
submodules: true
|
|
- name: Setup Macports
|
|
uses: melusina-org/setup-macports@v1
|
|
with:
|
|
parameters: '.github/macports.yml'
|
|
- name: Configure ccache
|
|
uses: hendrikmuhs/ccache-action@v1.2.23
|
|
with:
|
|
key: ${{ runner.os }} # ccache-macos-{{ timestamp }}
|
|
max-size: "2G"
|
|
evict-old-files: job
|
|
save: ${{ github.ref_name == github.event.repository.default_branch }}
|
|
- name: Download soh.o2r
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: soh.o2r
|
|
path: build-cmake/soh
|
|
- name: Build SoH
|
|
run: |
|
|
cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DBUILD_REMOTE_CONTROL=1
|
|
cmake --build build-cmake -j
|
|
(cd build-cmake && cpack)
|
|
|
|
mv _packages/*.dmg SoH.dmg
|
|
mv README.md readme.txt
|
|
- name: Upload build
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: soh-mac
|
|
path: |
|
|
SoH.dmg
|
|
readme.txt
|
|
|
|
build-linux:
|
|
needs: generate-soh-otr
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- name: Git Checkout
|
|
uses: actions/checkout@v7
|
|
with:
|
|
submodules: true
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y $(cat linux-build-deps/apt.txt)
|
|
- name: Configure ccache
|
|
uses: hendrikmuhs/ccache-action@v1.2.23
|
|
with:
|
|
save: ${{ github.ref_name == github.event.repository.default_branch }}
|
|
key: ${{ runner.os }}-ccache-${{ github.ref }}-${{ github.sha }}
|
|
restore-keys: |
|
|
${{ runner.os }}-ccache-${{ github.ref }}
|
|
${{ runner.os }}-ccache
|
|
- name: Restore Cached deps folder
|
|
id: restore-cache-deps
|
|
uses: actions/cache/restore@v5
|
|
with:
|
|
key: ${{ runner.os }}-deps-${{ github.ref }}-${{ github.sha }}
|
|
restore-keys: |
|
|
${{ runner.os }}-deps-${{ github.ref }}-
|
|
${{ runner.os }}-deps-
|
|
path: deps
|
|
- name: Create deps folder
|
|
run: mkdir -p deps
|
|
- name: Add ccache to PATH
|
|
run: |
|
|
echo "/usr/lib/ccache" >> "$GITHUB_PATH"
|
|
echo "/usr/local/opt/ccache/libexec" >> "$GITHUB_PATH"
|
|
- name: Install latest SDL
|
|
run: |
|
|
if [ ! -d "deps/SDL2-2.30.3" ]; then
|
|
wget https://github.com/libsdl-org/SDL/releases/download/release-2.30.3/SDL2-2.30.3.tar.gz
|
|
tar -xzf SDL2-2.30.3.tar.gz -C deps
|
|
fi
|
|
cd deps/SDL2-2.30.3
|
|
./configure --enable-hidapi-libusb
|
|
make -j 10
|
|
sudo make install
|
|
sudo cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/
|
|
- uses: ./.github/actions/install-sdl2-net
|
|
- name: Copy SDL libs to multiarch dir
|
|
run: sudo cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/
|
|
- name: Remove distro tinyxml2
|
|
run: sudo apt-get remove libtinyxml2-dev
|
|
- uses: ./.github/actions/install-tinyxml2
|
|
- name: Install libzip without crypto
|
|
run: |
|
|
sudo apt-get remove -y libzip-dev
|
|
if [ ! -d "deps/libzip-1.10.1" ]; then
|
|
wget https://github.com/nih-at/libzip/releases/download/v1.10.1/libzip-1.10.1.tar.gz
|
|
tar -xzf libzip-1.10.1.tar.gz -C deps
|
|
fi
|
|
cd deps/libzip-1.10.1
|
|
mkdir -p build
|
|
cd build
|
|
cmake .. -DENABLE_COMMONCRYPTO=OFF -DENABLE_GNUTLS=OFF -DENABLE_MBEDTLS=OFF -DENABLE_OPENSSL=OFF
|
|
make
|
|
sudo make install
|
|
sudo cp -av /usr/local/lib/libzip* /lib/x86_64-linux-gnu/
|
|
- name: Download soh.o2r
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: soh.o2r
|
|
path: build-cmake/soh
|
|
- name: Build SoH
|
|
run: |
|
|
cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_REMOTE_CONTROL=1
|
|
cmake --build build-cmake --config Release -j3
|
|
(cd build-cmake && cpack -G External)
|
|
|
|
mv README.md readme.txt
|
|
mv build-cmake/*.appimage soh.appimage
|
|
env:
|
|
CC: gcc-12
|
|
CXX: g++-12
|
|
- name: Upload build
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: soh-linux
|
|
path: |
|
|
soh.appimage
|
|
readme.txt
|
|
- name: Save Cache deps folder
|
|
if: ${{ github.ref_name == github.event.repository.default_branch }}
|
|
uses: actions/cache/save@v5
|
|
with:
|
|
key: ${{ steps.restore-cache-deps.outputs.cache-primary-key }}
|
|
path: deps
|
|
|
|
build-windows:
|
|
needs: generate-soh-otr
|
|
runs-on: windows-latest
|
|
steps:
|
|
- name: Install dependencies
|
|
run: |
|
|
choco install ninja -y
|
|
Remove-Item -Path "C:\ProgramData\Chocolatey\bin\ccache.exe" -Force -ErrorAction SilentlyContinue
|
|
- name: Git Checkout
|
|
uses: actions/checkout@v7
|
|
with:
|
|
submodules: true
|
|
- name: Configure sccache
|
|
uses: hendrikmuhs/ccache-action@v1.2.23
|
|
with:
|
|
variant: sccache
|
|
max-size: "2G"
|
|
evict-old-files: job
|
|
save: ${{ github.ref_name == github.event.repository.default_branch }}
|
|
key: ${{ runner.os }}-ccache-${{ github.ref }}-${{ github.sha }}
|
|
restore-keys: |
|
|
${{ runner.os }}-ccache-${{ github.ref }}
|
|
${{ runner.os }}-ccache
|
|
- name: Restore Cached VCPKG folder
|
|
id: restore-cache-vcpkg
|
|
uses: actions/cache/restore@v5
|
|
with:
|
|
key: ${{ runner.os }}-vcpkg-${{ github.ref }}-${{ github.sha }}
|
|
restore-keys: |
|
|
${{ runner.os }}-vcpkg-${{ github.ref }}-
|
|
${{ runner.os }}-vcpkg-
|
|
path: vcpkg
|
|
- name: Configure Developer Command Prompt
|
|
uses: ilammy/msvc-dev-cmd@v1
|
|
- name: Download soh.o2r
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: soh.o2r
|
|
path: build-windows/soh
|
|
- name: Build SoH
|
|
env:
|
|
VCPKG_ROOT: ${{github.workspace}}/vcpkg
|
|
run: |
|
|
set $env:PATH="$env:USERPROFILE/.cargo/bin;$env:PATH"
|
|
cmake -S . -B build-windows -G Ninja -DCMAKE_MAKE_PROGRAM=ninja -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DBUILD_REMOTE_CONTROL=1
|
|
cmake --build build-windows --config Release --parallel 10
|
|
|
|
(cd build-windows && cpack)
|
|
cd ..
|
|
mv _packages/*.zip _packages/soh-windows.zip
|
|
- name: Unzip package
|
|
run: Expand-Archive -Path _packages/soh-windows.zip -DestinationPath soh-windows
|
|
- name: Upload build
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: soh-windows
|
|
path: soh-windows
|
|
- name: Save Cache VCPKG folder
|
|
if: ${{ github.ref_name == github.event.repository.default_branch }}
|
|
uses: actions/cache/save@v5
|
|
with:
|
|
key: ${{ steps.restore-cache-vcpkg.outputs.cache-primary-key }}
|
|
path: vcpkg
|