BetterAchievements MacOS Bindings #3632
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: 'Verify bindings syntax' | |
on: [push, pull_request] | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v3 | |
- name: Restore cache | |
id: codegen-cache | |
uses: actions/cache@v3 | |
with: | |
path: bin | |
key: codegen-${{ hashFiles('codegen/**') }} | |
- name: Build Codegen binary | |
if: steps.codegen-cache.outputs.cache-hit != 'true' | |
run: | | |
cmake ./codegen -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=./bin -B build | |
cmake --build build --config RelWithDebInfo | |
cmake --install build | |
- name: Upload Codegen binary | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Codegen | |
path: bin/Codegen | |
verify: | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v3 | |
- name: Download Codegen binary | |
uses: actions/download-artifact@v3 | |
with: | |
name: Codegen | |
- name: Verify | |
run: 'chmod +x ./Codegen && ./Codegen Win32 bindings/2.200 out' | |
test-members: | |
# dont bother running member test if broma isnt even valid | |
needs: verify | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- name: Windows | |
os: windows-2022 | |
prefixes: '' | |
extra_flags: > | |
-A x64 | |
-D USE_HACKY_SCRIPT=ON | |
- name: Android32 | |
os: ubuntu-latest | |
prefixes: '' | |
extra_flags: > | |
-DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake | |
-DANDROID_ABI=armeabi-v7a | |
-DANDROID_PLATFORM=android-23 | |
-G Ninja | |
-D USE_HACKY_SCRIPT=ON | |
- name: Android64 | |
os: ubuntu-latest | |
prefixes: '' | |
extra_flags: > | |
-DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_LATEST_HOME/build/cmake/android.toolchain.cmake | |
-DANDROID_ABI=arm64-v8a | |
-DANDROID_PLATFORM=android-23 | |
-G Ninja | |
-D USE_HACKY_SCRIPT=ON | |
- name: macOS (x64) | |
os_identifier: mac | |
os: macos-latest | |
extra_flags: > | |
-DCMAKE_C_COMPILER=clang | |
-DCMAKE_CXX_COMPILER=clang++ | |
-DCMAKE_BUILD_TYPE=Debug | |
-DCMAKE_OSX_ARCHITECTURES=x86_64 | |
-D USE_HACKY_SCRIPT=ON | |
- name: macOS (ARM) | |
os_identifier: mac-arm | |
os: macos-latest | |
extra_flags: > | |
-DCMAKE_C_COMPILER=clang | |
-DCMAKE_CXX_COMPILER=clang++ | |
-DCMAKE_BUILD_TYPE=Debug | |
-DCMAKE_OSX_ARCHITECTURES=arm64 | |
-D USE_HACKY_SCRIPT=ON | |
- name: iOS | |
os_identifier: ios | |
os: macos-latest | |
extra_flags: > | |
-DCMAKE_C_COMPILER=clang | |
-DCMAKE_CXX_COMPILER=clang++ | |
-DCMAKE_BUILD_TYPE=Debug | |
-DCMAKE_OSX_ARCHITECTURES=arm64 | |
-DCMAKE_OSX_DEPLOYMENT_TARGET=14.0 | |
-DCMAKE_SYSTEM_NAME=iOS | |
-D USE_HACKY_SCRIPT=ON | |
name: Test Offsets ${{ matrix.config.name }} | |
runs-on: ${{ matrix.config.os }} | |
steps: | |
- name: Checkout bindings | |
uses: actions/checkout@v4 | |
- name: Checkout geode | |
uses: actions/checkout@v4 | |
with: | |
repository: geode-sdk/geode | |
# TODO: this is temporary | |
ref: main | |
path: geode | |
- name: Set up codegen binary cache | |
id: codegen-cache | |
uses: actions/cache@v3 | |
with: | |
path: build/bindings/codegen | |
# cache by os since for android32 and 64 the codegen binary is the same | |
key: codegen-${{ hashFiles('codegen/**') }}-${{ matrix.config.os }} | |
- name: Set up android env | |
run: > | |
sudo apt install ninja-build && | |
sudo add-apt-repository ppa:ubuntu-toolchain-r/test && | |
sudo apt-get update && | |
sudo apt-get install --only-upgrade libstdc++6 | |
if: matrix.config.os == 'ubuntu-latest' | |
- name: Set GEODE_SDK | |
shell: bash | |
run: echo "GEODE_SDK=${{ github.workspace }}/geode" >> $GITHUB_ENV | |
- name: Configure CMake | |
shell: bash | |
run: > | |
cmake -B build -S test/members | |
-D SKIP_BUILDING_CODEGEN=${{ steps.codegen-cache.outputs.cache-hit }} | |
${{ matrix.config.extra_flags }} | |
# SKIP_BUILDING_CODEGEN will skip building codegen if finds a cached binary, | |
# locally you dont need to set it | |
# USE_HACKY_SCRIPT will use the python script and some hackery to print the | |
# offsets in a nicer way. it is also not required | |
- name: Build member test | |
run: | | |
cmake --build build --config RelWithDebInfo --parallel --target TestMembers | |
- name: Show Errors | |
run: python test/members/check.py build |