Skip to content

Update the OpenXR headers to 1.0.34 so we can use some of the new fea… #180

Update the OpenXR headers to 1.0.34 so we can use some of the new fea…

Update the OpenXR headers to 1.0.34 so we can use some of the new fea… #180

# Workflow to automatically create the godot openxr loaders addon
name: Build on push
on: [push, pull_request]
jobs:
build:
name: Building for ${{ matrix.name }} (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: true
matrix:
include:
- name: Linux (x86_64)
os: ubuntu-20.04
platform: linux
flags: arch=x86_64
artifact_name: build-files-linux-x86_64
artifact_path: aar/demo/addons/godotopenxrvendors/.bin/linux/*/*/*.so
# Not sure how to cross compile these
# - name: Linux (arm64)
# os: ubuntu-20.04
# platform: linux
# flags: arch=arm64
# artifact_name: build-files-linux-arm64
# artifact_path: aar/demo/addons/godotopenxrvendors/.bin/linux/*/*/*.so
# - name: Linux (rv64)
# os: ubuntu-20.04
# platform: linux
# flags: arch=rv64
# artifact_name: build-files-linux-rv64
# artifact_path: aar/demo/addons/godotopenxrvendors/.bin/linux/*/*/*.so
- name: Windows
os: windows-latest
platform: windows
artifact_name: build-files-windows
artifact_path: aar/demo/addons/godotopenxrvendors/.bin/windows/*/*/*.dll
- name: MacOS
os: macos-11
platform: macos
flags: arch=universal
artifact_name: build-files-macos
artifact_path: aar/demo/addons/godotopenxrvendors/.bin/macos/*/*.framework
- name: Android AAR
os: ubuntu-20.04
platform: android
flags: arch=arm64
artifact_name: build-files-android-aar
artifact_path: aar/demo/addons/godotopenxrvendors/.bin/android/*/*.aar
- name: Android SO
os: ubuntu-20.04
platform: android
flags: arch=arm64
artifact_name: build-files-android-so
artifact_path: aar/demo/addons/godotopenxrvendors/.bin/android/*/*/*.so
# Note, to satisfy the asset library we need to make sure our zip files have a root folder
# this is why we checkout into aar and build into asset
steps:
- name: Checkout
uses: actions/checkout@v3
with:
path: aar
submodules: recursive
- name: Set up Python (for SCons)
uses: actions/setup-python@v4
with:
python-version: "3.x"
- name: Android dependencies
uses: nttld/setup-ndk@v1
with:
ndk-version: r23c
link-to-sdk: true
- name: Install scons
run: |
python -m pip install scons==4.0.0
- name: Create extension library
run: |
cd aar
scons platform=${{ matrix.platform }} target=template_debug ${{ matrix.flags }}
scons platform=${{ matrix.platform }} target=template_release ${{ matrix.flags }}
cd ..
# On Android we build our loaders and build our extension with gradlew
- name: Setup java
uses: actions/setup-java@v3
with:
java-version: 17
distribution: "adopt"
if: matrix.platform == 'android'
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@v1
if: matrix.platform == 'android'
- name: Create Godot-CPP library
run: |
cd aar/thirdparty/godot-cpp
scons platform=${{ matrix.platform }} target=template_debug arch=arm64
scons platform=${{ matrix.platform }} target=template_release arch=arm64
scons platform=${{ matrix.platform }} target=template_debug arch=x86_64
scons platform=${{ matrix.platform }} target=template_release arch=x86_64
cd ../../..
if: matrix.platform == 'android'
- name: Create Godot OpenXR Vendors AARs
run: |
cd aar
./gradlew build
cd ..
if: matrix.platform == 'android'
- name: Upload build files (artifacts)
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.artifact_name }}
path: |
${{ matrix.artifact_path }}
# GODOT 4.2 ADDON GENERATION SECTION
asset:
name: Assembling the asset
runs-on: ubuntu-20.04
needs: build
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- name: Checkout
uses: actions/checkout@v3
with:
path: aar
- name: Download all workflow run artifacts
uses: actions/download-artifact@v3
- name: Create Godot OpenXR Vendors Addon
run: |
mkdir asset
cp -r aar/demo/addons asset
cp aar/CHANGES.md asset/addons/godotopenxrvendors/GodotOpenXRVendors_CHANGES.md
- name: Adding vendor licences
run: |
mkdir -p asset/addons/godotopenxrvendors/meta/
cp aar/godotopenxrmeta/LICENSE.txt asset/addons/godotopenxrvendors/meta/
mkdir -p asset/addons/godotopenxrvendors/pico/
cp aar/godotopenxrpico/libs/pico_openxr_sdk/arm64-v8a/README.md asset/addons/godotopenxrvendors/pico/LICENSE.md
mkdir -p asset/addons/godotopenxrvendors/khronos/
cp aar/godotopenxrkhronos/LICENSE asset/addons/godotopenxrvendors/khronos/LICENSE
- name: Copying artifacts
run: |
mkdir -p asset/addons/godotopenxrvendors/.bin/android/
cp -r build-files-android-aar/* asset/addons/godotopenxrvendors/.bin/android/
cp -r build-files-android-so/* asset/addons/godotopenxrvendors/.bin/android/
mkdir -p asset/addons/godotopenxrvendors/.bin/linux/
cp -r build-files-linux-x86_64/* asset/addons/godotopenxrvendors/.bin/linux/
mkdir -p asset/addons/godotopenxrvendors/.bin/windows/
cp -r build-files-windows/* asset/addons/godotopenxrvendors/.bin/windows/
mkdir -p asset/addons/godotopenxrvendors/.bin/macos/
cp -r build-files-macos/* asset/addons/godotopenxrvendors/.bin/macos/
- name: Create Godot OpenXR Vendor addon artifact
uses: actions/upload-artifact@v3
with:
name: GodotOpenXRVendorsAddon
path: |
asset
- name: Zip addon
run: |
zip -qq -r godotopenxrvendorsaddon.zip asset
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
- name: Create and upload asset
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts: "godotopenxrvendorsaddon.zip"
omitNameDuringUpdate: true
omitBodyDuringUpdate: true
omitDraftDuringUpdate: true
omitPrereleaseDuringUpdate: true
token: ${{ secrets.GITHUB_TOKEN }}
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')