Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 37 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:
- name: Install wasm32 target
run: rustup target add wasm32-unknown-unknown
- name: Compile WASM
run: cargo build --release --target wasm32-unknown-unknown -p wasm
run: cargo build --release --target wasm32-unknown-unknown -p dojo-wasm

ensure-c:
name: Check C bindings compilation
Expand All @@ -64,7 +64,42 @@ jobs:
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Compile C bindings
run: cargo build --release -p c
run: cargo build --release -p dojo-c

ensure-uniffi:
name: Check UniFFI bindings compilation
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
# Install system dependencies
- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y libdbus-1-dev pkg-config
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.RUST_VERSION }}
- uses: Swatinem/rust-cache@v2
- uses: arduino/setup-protoc@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Compile UniFFI library
run: cargo build --release -p dojo-uniffi
- name: Build UniFFI bindgen tools
run: |
cargo build --release --bin uniffi-bindgen-swift
cargo build --release --bin uniffi-bindgen-python
cargo build --release --bin uniffi-bindgen-kotlin
- name: Generate Swift bindings
run: ./target/release/uniffi-bindgen-swift
- name: Generate Python bindings
run: ./target/release/uniffi-bindgen-python
- name: Generate Kotlin bindings
run: ./target/release/uniffi-bindgen-kotlin
- name: Verify bindings generated
run: |
test -f bindings/swift/DojoEngine.swift || exit 1
test -f bindings/python/dojo.py || exit 1
test -f bindings/kotlin/com/dojoengine/dojo/dojo.kt || exit 1
echo "✓ All UniFFI bindings generated successfully"

clippy:
runs-on: ubuntu-latest
Expand Down
102 changes: 102 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,108 @@ jobs:
torii-wasm-no-modules.tar.gz
torii-wasm-web.tar.gz

build-uniffi:
name: Build UniFFI bindings
needs: prepare
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: ubuntu-latest
platform: linux
target: x86_64-unknown-linux-gnu
lib_name: libdojo_uniffi.so
- os: macos-latest
platform: darwin
target: x86_64-apple-darwin
lib_name: libdojo_uniffi.dylib
- os: macos-latest
platform: darwin
target: aarch64-apple-darwin
lib_name: libdojo_uniffi.dylib
- os: windows-latest
platform: windows
target: x86_64-pc-windows-msvc
lib_name: dojo_uniffi.dll

steps:
- uses: actions/checkout@v3

- uses: dtolnay/rust-toolchain@master
name: Rust Toolchain Setup
with:
targets: ${{ matrix.target }}
toolchain: ${{ env.RUST_VERSION }}

- uses: Swatinem/rust-cache@v1
with:
cache-on-failure: true

- uses: arduino/setup-protoc@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: Install system dependencies (Linux)
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y libdbus-1-dev pkg-config

- name: Install target
run: rustup target add ${{ matrix.target }}

- name: Build UniFFI library
run: cargo build --release --target ${{ matrix.target }} -p dojo-uniffi

- name: Build bindgen tools
run: |
cargo build --release --target ${{ matrix.target }} --bin uniffi-bindgen-swift
cargo build --release --target ${{ matrix.target }} --bin uniffi-bindgen-python
cargo build --release --target ${{ matrix.target }} --bin uniffi-bindgen-kotlin

- name: Generate Swift bindings
shell: bash
run: |
if [[ "${{ runner.os }}" == "Windows" ]]; then
./target/${{ matrix.target }}/release/uniffi-bindgen-swift.exe
else
./target/${{ matrix.target }}/release/uniffi-bindgen-swift
fi

- name: Generate Python bindings
shell: bash
run: |
if [[ "${{ runner.os }}" == "Windows" ]]; then
./target/${{ matrix.target }}/release/uniffi-bindgen-python.exe
else
./target/${{ matrix.target }}/release/uniffi-bindgen-python
fi

- name: Generate Kotlin bindings
shell: bash
run: |
if [[ "${{ runner.os }}" == "Windows" ]]; then
./target/${{ matrix.target }}/release/uniffi-bindgen-kotlin.exe
else
./target/${{ matrix.target }}/release/uniffi-bindgen-kotlin
fi

- name: Package UniFFI bindings
shell: bash
run: |
mkdir -p dojo-uniffi-${{ matrix.target }}
cp target/${{ matrix.target }}/release/${{ matrix.lib_name }} dojo-uniffi-${{ matrix.target }}/
cp -r bindings/swift dojo-uniffi-${{ matrix.target }}/
cp -r bindings/python dojo-uniffi-${{ matrix.target }}/
cp -r bindings/kotlin dojo-uniffi-${{ matrix.target }}/
cp -r examples dojo-uniffi-${{ matrix.target }}/
tar -czvf dojo-uniffi-${{ matrix.target }}.tar.gz dojo-uniffi-${{ matrix.target }}/

- name: Create release
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
dojo-uniffi-${{ matrix.target }}.tar.gz

build-and-release:
name: ${{ matrix.job.target }} (${{ matrix.job.os }})
needs: prepare
Expand Down
Loading
Loading