Skip to content

Fixed updating to a temp branch and testing clang instead of tcc #299

Fixed updating to a temp branch and testing clang instead of tcc

Fixed updating to a temp branch and testing clang instead of tcc #299

Workflow file for this run

name: GenerateBuilds
on:
push:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
generate-port-o2r:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Extract Project Version
id: extract_version
run: |
VERSION=$(grep -oP '^\s*project\s*\([^)]*VERSION\s+\K[0-9\.]+' CMakeLists.txt)
echo "Found version: $VERSION"
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
- name: Install dependencies
run: sudo apt-get install gcc g++ git cmake ninja-build lsb-release
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2.13
with:
key: ${{ runner.os }}-o2r-ccache-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-o2r-ccache-${{ github.ref }}
${{ runner.os }}-o2r-ccache-
- name: Cache build folders
uses: actions/cache@v5
with:
key: ${{ runner.os }}-o2r-build-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-o2r-build-${{ github.ref }}
${{ runner.os }}-o2r-build-
path: |
Torch/cmake-build-release
- name: Generate ghostship.o2r
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
make -C Torch type=release -j3
Torch/cmake-build-release/torch pack port ghostship.o2r o2r -u ${{ steps.extract_version.outputs.version }}
- uses: actions/upload-artifact@v4
with:
name: ghostship.o2r
path: ghostship.o2r
retention-days: 1
build-windows:
needs: generate-port-o2r
runs-on: windows-2022
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup MSVC
uses: ilammy/msvc-dev-cmd@v1
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install Python dependencies
run: pip install -r libultraship/requirements.txt
- name: Cache vcpkg
uses: actions/cache@v4
with:
key: ${{ runner.os }}-vcpkg-x64-static-${{ hashFiles('CMakeLists.txt', 'cmake/automate-vcpkg.cmake') }}
restore-keys: |
${{ runner.os }}-vcpkg-x64-static-
path: |
build/x64/vcpkg
build/x64/vcpkg_installed
build/x64/vcpkg/downloads
- name: Cache LLVM prebuilt (Windows FetchContent)
uses: actions/cache@v4
with:
key: ${{ runner.os }}-llvm-prebuilt-18.1.8-x64
path: build/x64/_deps/llvm_prebuilt-src
- name: Install Vulkan SDK
uses: humbletim/setup-vulkan-sdk@v1.2.1
with:
vulkan-query-version: 1.3.280.0
vulkan-components: Vulkan-Headers, Vulkan-Loader, Glslang, SPIRV-Tools, Shaderc
vulkan-use-cache: true
- name: Build
run: |
$env:VCPKG_ROOT=""
cmake -S . -B "build/x64" -G "Visual Studio 17 2022" -T v143 -A x64 -DCMAKE_BUILD_TYPE=Release -DPython3_EXECUTABLE="$(python -c 'import sys; print(sys.executable)')"
cmake --build ./build/x64 --config Release --parallel 10
- name: Download ghostship.o2r
uses: actions/download-artifact@v4
with:
name: ghostship.o2r
path: ./build/x64/Release
- name: Create Package
run: |
mkdir debug
if (-Not (Test-Path "build/x64/Release/.clang")) { Write-Error "ERROR: .clang not found in build/x64/Release/"; exit 1 }
mv build/x64/Release/.clang .clang
mv build/x64/Release/Ghostship.exe .
mv build/x64/Release/ghostship.o2r .
mv build/x64/Release/*.pdb debug/
if (Test-Path "$env:VULKAN_SDK/Bin/shaderc_shared.dll") { Copy-Item "$env:VULKAN_SDK/Bin/shaderc_shared.dll" . }
mv README.md readme.txt
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/mdqinc/SDL_GameControllerDB/master/gamecontrollerdb.txt" -OutFile "gamecontrollerdb.txt"
- name: Upload build
uses: actions/upload-artifact@v4
with:
name: Ghostship-windows
include-hidden-files: true
path: |
.clang
Ghostship.exe
shaderc_shared.dll
ghostship.o2r
debug
readme.txt
config.yml
assets
gamecontrollerdb.txt
build-macos:
needs: generate-port-o2r
runs-on: macos-14
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Configure ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
create-symlink: true
save: ${{ github.ref_name == github.event.repository.default_branch }}
key: ${{ runner.os }}-14-ccache-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-14-ccache-${{ github.ref }}
${{ runner.os }}-14-ccache
# Needed to apply sudo for macports cache restore
# - name: Install gtar wrapper
# run: |
# sudo mv /opt/homebrew/bin/gtar /opt/homebrew/bin/gtar.orig
# sudo cp .github/workflows/gtar /opt/homebrew/bin/gtar
# sudo chmod +x /opt/homebrew/bin/gtar
- name: Restore Cached MacPorts
id: restore-cache-macports
uses: actions/cache/restore@v4
with:
key: ${{ runner.os }}-14-macports-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-14-macports-${{ github.ref }}
${{ runner.os }}-14-macports-
path: /opt/local/
- name: Install MacPorts (if necessary)
run: |
if command -v /opt/local/bin/port 2>&1 >/dev/null; then
echo "MacPorts already installed"
else
echo "Installing MacPorts"
wget https://github.com/macports/macports-base/releases/download/v2.11.5/MacPorts-2.11.5-14-Sonoma.pkg
sudo installer -pkg ./MacPorts-2.11.5-14-Sonoma.pkg -target /
fi
echo "/opt/local/bin:/opt/local/sbin" >> "$GITHUB_PATH"
- name: Install Python dependencies
run: python3 -m pip install -r libultraship/requirements.txt --break-system-packages || python3 -m pip install -r libultraship/requirements.txt
- name: Install dependencies
run: |
brew uninstall --ignore-dependencies libpng
sudo port install libsdl2 +universal libsdl2_net +universal libpng +universal glew +universal libzip +universal nlohmann-json +universal tinyxml2 +universal libogg +universal libopus +universal opusfile +universal libvorbis +universal mbedtls +universal
# llvm provides libclang-cpp.dylib + libLLVM.dylib for scripting;
# not from MacPorts because it ships arm64-only dylibs on this runner.
# molten-vk/vulkan-*/shaderc enable the Vulkan rendering backend.
brew install ninja llvm molten-vk vulkan-headers vulkan-loader shaderc
- name: Build
run: |
export PATH="/usr/lib/ccache:/opt/homebrew/opt/ccache/libexec:/usr/local/opt/ccache/libexec:$PATH"
cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release -DPython3_EXECUTABLE=$(which python3)
cmake --build build-cmake --config Release --parallel 10
- name: Download ghostship.o2r
uses: actions/download-artifact@v4
with:
name: ghostship.o2r
path: ./build-cmake
- name: Create Package
run: |
(cd build-cmake && cpack)
mv _packages/*.dmg Ghostship.dmg
ls -la build-cmake/.clang || (echo "ERROR: .clang not found in build-cmake/" && exit 1)
cp -r build-cmake/.clang .clang
mv README.md readme.txt
- name: Publish packaged artifacts
uses: actions/upload-artifact@v4
with:
name: Ghostship-mac
include-hidden-files: true
path: |
.clang
Ghostship.dmg
readme.txt
- name: Save Cache MacPorts
if: ${{ github.ref_name == github.event.repository.default_branch }}
uses: actions/cache/save@v4
with:
key: ${{ steps.restore-cache-macports.outputs.cache-primary-key }}
path: /opt/local/
build-linux:
needs: generate-port-o2r
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Update machine
run: sudo apt update
- name: Install dependencies
run: sudo apt-get install gcc g++ git cmake ninja-build lsb-release libsdl2-dev libpng-dev libsdl2-net-dev libzip-dev zipcmp zipmerge ziptool nlohmann-json3-dev libtinyxml2-dev libspdlog-dev libboost-dev libopengl-dev libogg-dev libvorbis-dev libmbedtls-dev llvm-dev libclang-dev clang libvulkan-dev libshaderc-dev
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2.14
with:
key: linux-ccache-${{ github.ref }}-${{ github.sha }}
restore-keys: |
linux-ccache-${{ github.ref }}
linux-ccache-
- name: Cache build folders
uses: actions/cache@v5
with:
key: linux-build-${{ github.ref }}-${{ github.sha }}
restore-keys: |
linux-build-${{ github.ref }}
linux-build-
path: |
SDL2-2.30.3
tinyxml2-10.0.0
libzip-1.10.1
- name: Install latest SDL
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
if [ ! -d "SDL2-2.30.3" ]; then
wget https://www.libsdl.org/release/SDL2-2.30.3.tar.gz
tar -xzf SDL2-2.30.3.tar.gz
fi
cd 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/
- name: Install latest tinyxml2
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
wget https://github.com/leethomason/tinyxml2/archive/refs/tags/10.0.0.tar.gz
tar -xzf 10.0.0.tar.gz
cd tinyxml2-10.0.0
mkdir -p build
cd build
cmake ..
make
sudo make install
- name: Install libzip without crypto
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
if [ ! -d "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
fi
cd 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: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install Python dependencies
run: pip install -r libultraship/requirements.txt
- name: Download ghostship.o2r
uses: actions/download-artifact@v4
with:
name: ghostship.o2r
path: ./build-cmake
- name: Build
run: |
cmake -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DPython3_EXECUTABLE=$(which python3)
cmake --build build-cmake --config Release -j3
(cd build-cmake && cpack -G External)
wget -O gamecontrollerdb.txt https://raw.githubusercontent.com/mdqinc/SDL_GameControllerDB/master/gamecontrollerdb.txt
mv README.md readme.txt
mv build-cmake/*.appimage ghostship.appimage
ls -la build-cmake/.clang || (echo "ERROR: .clang not found in build-cmake/" && exit 1)
cp -r build-cmake/.clang .clang
- name: Upload build
uses: actions/upload-artifact@v4
with:
name: Ghostship-linux
include-hidden-files: true
path: |
.clang
ghostship.appimage
config.yml
readme.txt
assets
gamecontrollerdb.txt
build-switch:
needs: generate-port-o2r
runs-on: ubuntu-latest
container:
image: devkitpro/devkita64:20260219
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y ninja-build
sudo apt-get remove -y cmake
sudo dkp-pacman -R --noconfirm switch-tinyxml2 # devkitPro's tinyxml2 is too old and causes build issues
export CFLAGS="${CFLAGS} -include strings.h" # weird libzip error (pulled in by LUS) that only happens in CI and not for SoH
git -C libultraship remote add nx https://github.com/Net64DD/libultraship.git
git -C libultraship fetch nx
git -C libultraship checkout nx/main-nx-nightly
wget https://github.com/Kitware/CMake/releases/download/v3.28.3/cmake-3.28.3-linux-x86_64.sh -O /tmp/cmake.sh
sudo sh /tmp/cmake.sh --prefix=/usr/local/ --exclude-subdir
cmake -H. -Bbuild-switch -GNinja -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/Switch.cmake -DCMAKE_BUILD_TYPE:STRING=Release
cmake --build build-switch --config Release -j3
wget -O gamecontrollerdb.txt https://raw.githubusercontent.com/mdqinc/SDL_GameControllerDB/refs/heads/master/gamecontrollerdb.txt
mv README.md readme.txt
mv build-switch/*.nro Ghostship.nro
- name: Download ghostship.o2r
uses: actions/download-artifact@v4
with:
name: ghostship.o2r
- name: Upload build
uses: actions/upload-artifact@v4
with:
name: Ghostship-switch
path: |
Ghostship.nro
ghostship.o2r
config.yml
assets
gamecontrollerdb.txt