Merge pull request #11 from GeniusVentures/get-blocks #99
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: Release Build CI | |
# Controls when the workflow will run | |
# Triggers the workflow on push or pull request events and manually from the Actions tab | |
on: | |
push: | |
branches: | |
- develop | |
- main | |
pull_request: | |
branches: | |
- develop | |
- main | |
workflow_dispatch: | |
jobs: | |
Windows: | |
runs-on: windows-latest | |
steps: | |
- name: Get branch name | |
id: branch-name | |
uses: tj-actions/branch-names@v6 | |
- name: Install Windows host dependencies | |
run: | | |
choco install ccache -A | |
- name: Install bindgen | |
run: cargo install cbindgen | |
- name: Add Rust wasm target | |
run: rustup target add wasm32-unknown-emscripten | |
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | |
- name: Checkout GeniusSDK repository | |
uses: actions/checkout@v3 | |
with: | |
path: 'GeniusSDK' | |
submodules: "recursive" | |
- name: Check if branch exists in SuperGenius | |
id: check_supergenius | |
uses: tj-actions/branch-names@v6 | |
with: | |
repo: 'GeniusVentures/SuperGenius' | |
branch: ${{ steps.branch-name.outputs.current_branch }} | |
- name: Checkout SuperGenius repository | |
uses: actions/checkout@v3 | |
with: | |
repository: 'GeniusVentures/SuperGenius' | |
path: 'SuperGenius' | |
submodules: "recursive" | |
ref: ${{ steps.check_supergenius.outputs.branch_exists == 'true' && steps.branch-name.outputs.current_branch || 'develop' }} | |
- name: Check if branch exists in thirdparty | |
id: check_thirdparty | |
uses: tj-actions/branch-names@v6 | |
with: | |
repo: 'GeniusVentures/thirdparty' | |
branch: ${{ steps.branch-name.outputs.current_branch }} | |
- name: Check out thirdparty repository | |
uses: actions/checkout@v3 | |
with: | |
repository: 'GeniusVentures/thirdparty' | |
path: 'thirdparty' | |
submodules: 'recursive' | |
ref: ${{ steps.check_thirdparty.outputs.branch_exists == 'true' && steps.branch-name.outputs.current_branch || 'develop' }} | |
- name: Thirdparty Create Build Directory | |
run: cmake -E make_directory ${{github.workspace}}/thirdparty/build/Windows/Release | |
- name: Thirdparty Configure CMake | |
working-directory: ${{github.workspace}}/thirdparty/build/Windows/Release | |
run: cmake -S .. -DCMAKE_BUILD_TYPE=Release | |
- name: Thirdparty Compile | |
working-directory: ${{github.workspace}}/thirdparty/build/Windows/Release | |
run: cmake --build . --config Release -j | |
- name: SuperGenius Create Build Directory | |
run: cmake -E make_directory ${{github.workspace}}/SuperGenius/build/Windows/Release | |
- name: SuperGenius Configure CMake | |
working-directory: ${{github.workspace}}/SuperGenius/build/Windows/Release | |
run: cmake -S .. -G "Visual Studio 17 2022" -A x64 -DCMAKE_BUILD_TYPE=Release -DTHIRDPARTY_DIR=${{github.workspace}}/thirdparty/ | |
- name: SuperGenius Compile | |
working-directory: ${{github.workspace}}/SuperGenius/build/Windows/Release | |
run: cmake --build . --config Release -j | |
- name: SuperGenius install | |
working-directory: ${{github.workspace}}/SuperGenius/build/Windows/Release | |
run: cmake --install . | |
- name: Create Build Directory | |
run: cmake -E make_directory ${{github.workspace}}/GeniusSDK/build/Windows/Release | |
- name: Configure CMake | |
working-directory: ${{github.workspace}}/GeniusSDK/build/Windows/Release | |
run: cmake -S .. -G "Visual Studio 17 2022" -A x64 -DCMAKE_BUILD_TYPE=Release -DTHIRDPARTY_DIR=${{github.workspace}}/thirdparty/ -DSUPERGENIUS_SRC_DIR=${{github.workspace}}/SuperGenius/ | |
- name: Compile | |
working-directory: ${{github.workspace}}/GeniusSDK/build/Windows/Release | |
run: cmake --build . --config Release -j | |
- name: Create install directory | |
working-directory: ${{github.workspace}}/GeniusSDK/build/Windows/Release | |
run: cmake --install . | |
- name: Compressing Build Artifacts | |
working-directory: ${{github.workspace}}/GeniusSDK | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
run: | | |
shopt -s extglob | |
rm -rf !(build) .[!.]* ..?* | |
cd build | |
rm -rf !(Windows) .[!.]* ..?* | |
cd Windows | |
rm -rf !(Release) .[!.]* ..?* | |
cd Release | |
rm -rf !(GeniusSDK) .[!.]* ..?* | |
cd $GITHUB_WORKSPACE | |
tar -czvf GeniusSDK.tar.gz GeniusSDK/ | |
shell: bash | |
- name: Set Release Variables | |
id: vars | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
run: | | |
OS_NAME=Windows | |
BRANCH_NAME=${GITHUB_REF#refs/heads/} | |
BUILD_TYPE=Release | |
FILE_NAME="${OS_NAME}-${BRANCH_NAME}-${BUILD_TYPE}.tar.gz" | |
echo "RELEASE_TAG=${OS_NAME}-${BRANCH_NAME}-${BUILD_TYPE}-${GITHUB_SHA::7}" >> $GITHUB_ENV | |
echo "RELEASE_NAME=${OS_NAME} ${BRANCH_NAME} ${BUILD_TYPE} (${GITHUB_SHA::7})" >> $GITHUB_ENV | |
echo "FILE_NAME=$FILE_NAME" >> $GITHUB_ENV | |
shell: bash | |
- name: Rename Artifact | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
run: mv GeniusSDK.tar.gz ${{ env.FILE_NAME }} | |
shell: bash | |
- name: Create GitHub Release | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
id: create_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GNUS_TOKEN_1 }} | |
with: | |
tag_name: ${{ env.RELEASE_TAG }} | |
release_name: ${{ env.RELEASE_NAME }} | |
draft: false | |
prerelease: false | |
- name: Upload Release Asset | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GNUS_TOKEN_1 }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ${{ env.FILE_NAME }} | |
asset_name: ${{ env.FILE_NAME }} | |
asset_content_type: application/gzip | |
Linux: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Get branch name | |
id: branch-name | |
uses: tj-actions/branch-names@v6 | |
- name: Set clang as the default compiler | |
run: | | |
sudo update-alternatives --install /usr/bin/cc cc $(which clang) 100 | |
sudo update-alternatives --install /usr/bin/c++ c++ $(which clang++) 100 | |
sudo update-alternatives --set cc $(which clang) | |
sudo update-alternatives --set c++ $(which clang++) | |
- name: Install Linux host dependencies | |
run: | | |
sudo apt install ccache ninja-build -y | |
sudo apt install vulkan-tools vulkan-validationlayers-dev libvulkan-dev -y | |
echo "CMAKE_GENERATOR=Ninja" >> $GITHUB_ENV | |
- name: Install bindgen | |
run: cargo install cbindgen | |
- name: Add Rust wasm target | |
run: rustup target add wasm32-unknown-emscripten | |
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | |
- name: Check out GeniusSDK repository | |
uses: actions/checkout@v3 | |
with: | |
path: 'GeniusSDK' | |
submodules: "recursive" | |
- name: Check if branch exists in SuperGenius | |
id: check_supergenius | |
uses: tj-actions/branch-names@v6 | |
with: | |
repo: 'GeniusVentures/SuperGenius' | |
branch: ${{ steps.branch-name.outputs.current_branch }} | |
- name: Checkout SuperGenius repository | |
uses: actions/checkout@v3 | |
with: | |
repository: 'GeniusVentures/SuperGenius' | |
path: 'SuperGenius' | |
submodules: "recursive" | |
ref: ${{ steps.check_supergenius.outputs.branch_exists == 'true' && steps.branch-name.outputs.current_branch || 'develop' }} | |
- name: Check if branch exists in thirdparty | |
id: check_thirdparty | |
uses: tj-actions/branch-names@v6 | |
with: | |
repo: 'GeniusVentures/thirdparty' | |
branch: ${{ steps.branch-name.outputs.current_branch }} | |
- name: Check out thirdparty repository | |
uses: actions/checkout@v3 | |
with: | |
repository: 'GeniusVentures/thirdparty' | |
path: 'thirdparty' | |
submodules: 'recursive' | |
ref: ${{ steps.check_thirdparty.outputs.branch_exists == 'true' && steps.branch-name.outputs.current_branch || 'develop' }} | |
- name: Thirdparty Create Build Directory | |
run: cmake -E make_directory ${{github.workspace}}/thirdparty/build/Linux/Release | |
- name: Thirdparty Configure CMake | |
working-directory: ${{github.workspace}}/thirdparty/build/Linux/Release | |
run: cmake -S .. -DCMAKE_BUILD_TYPE=Release | |
- name: Thirdparty Compile | |
working-directory: ${{github.workspace}}/thirdparty/build/Linux/Release | |
run: cmake --build . --config Release -j | |
- name: SuperGenius Create Build Directory | |
run: cmake -E make_directory ${{github.workspace}}/SuperGenius/build/Linux/Release | |
- name: SuperGenius Configure CMake | |
working-directory: ${{github.workspace}}/SuperGenius/build/Linux/Release | |
run: cmake -S .. -DCMAKE_BUILD_TYPE=Release -DTHIRDPARTY_DIR=${{github.workspace}}/thirdparty/ | |
- name: SuperGenius Compile | |
working-directory: ${{github.workspace}}/SuperGenius/build/Linux/Release | |
run: cmake --build . --config Release -j | |
- name: SuperGenius install | |
working-directory: ${{github.workspace}}/SuperGenius/build/Linux/Release | |
run: cmake --install . | |
- name: Create Build Directory | |
run: cmake -E make_directory ${{github.workspace}}/GeniusSDK/build/Linux/Release | |
- name: Configure CMake | |
working-directory: ${{github.workspace}}/GeniusSDK/build/Linux/Release | |
run: cmake -S .. -DCMAKE_BUILD_TYPE=Release -DTHIRDPARTY_DIR=${{github.workspace}}/thirdparty/ -DSUPERGENIUS_SRC_DIR=${{github.workspace}}/SuperGenius/ | |
- name: Compile | |
working-directory: ${{github.workspace}}/GeniusSDK/build/Linux/Release | |
run: cmake --build . --config Release -j | |
- name: Create install directory | |
working-directory: ${{github.workspace}}/GeniusSDK/build/Linux/Release | |
run: cmake --install . | |
- name: Compressing Build Artifacts | |
working-directory: ${{github.workspace}}/GeniusSDK | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
run: | | |
shopt -s extglob | |
rm -rf !(build) .[!.]* ..?* | |
cd build | |
rm -rf !(Linux) .[!.]* ..?* | |
cd Linux | |
rm -rf !(Release) .[!.]* ..?* | |
cd Release | |
rm -rf !(GeniusSDK) .[!.]* ..?* | |
cd ${{github.workspace}} | |
tar -czvf GeniusSDK.tar.gz GeniusSDK/ | |
- name: Set Release Variables | |
id: vars | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
run: | | |
OS_NAME=Linux | |
BRANCH_NAME=${GITHUB_REF#refs/heads/} | |
BUILD_TYPE=Release | |
FILE_NAME="${OS_NAME}-${BRANCH_NAME}-${BUILD_TYPE}.tar.gz" | |
echo "RELEASE_TAG=${OS_NAME}-${BRANCH_NAME}-${BUILD_TYPE}-${GITHUB_SHA::7}" >> $GITHUB_ENV | |
echo "RELEASE_NAME=${OS_NAME} ${BRANCH_NAME} ${BUILD_TYPE} (${GITHUB_SHA::7})" >> $GITHUB_ENV | |
echo "FILE_NAME=$FILE_NAME" >> $GITHUB_ENV | |
- name: Rename Artifact | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
run: mv GeniusSDK.tar.gz ${{ env.FILE_NAME }} | |
- name: Create GitHub Release | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
id: create_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GNUS_TOKEN_1 }} | |
with: | |
tag_name: ${{ env.RELEASE_TAG }} | |
release_name: ${{ env.RELEASE_NAME }} | |
draft: false | |
prerelease: false | |
- name: Upload Release Asset | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GNUS_TOKEN_1 }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ${{ env.FILE_NAME }} | |
asset_name: ${{ env.FILE_NAME }} | |
asset_content_type: application/gzip | |
Android: | |
runs-on: ubuntu-latest | |
env: | |
ANDROID_NDK_HOME: ${{github.workspace}}/android-ndk/android-ndk-r25b | |
ANDROID_TOOLCHAIN: ${{github.workspace}}/android-ndk/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin | |
NDK_URL: "https://dl.google.com/android/repository/android-ndk-r25b-linux.zip" | |
CC: clang | |
steps: | |
- name: Get branch name | |
id: branch-name | |
uses: tj-actions/branch-names@v6 | |
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | |
- name: Checkout GeniusSDK repository | |
uses: actions/checkout@v3 | |
with: | |
path: 'GeniusSDK' | |
submodules: "recursive" | |
- name: Download Android NDK | |
run: | | |
mkdir "${{github.workspace}}/android-ndk" | |
cd "${{github.workspace}}/android-ndk" | |
curl -o ndk.zip ${{ env.NDK_URL }} | |
unzip ndk.zip | |
rm ndk.zip | |
- name: Install bindgen | |
run: cargo install cbindgen | |
- name: Add Rust wasm target | |
run: rustup target add wasm32-unknown-emscripten | |
- name: Add Android toolchain | |
run: | | |
rustup target add aarch64-linux-android | |
- name: Check if branch exists in SuperGenius | |
id: check_supergenius | |
uses: tj-actions/branch-names@v6 | |
with: | |
repo: 'GeniusVentures/SuperGenius' | |
branch: ${{ steps.branch-name.outputs.current_branch }} | |
- name: Checkout SuperGenius repository | |
uses: actions/checkout@v3 | |
with: | |
repository: 'GeniusVentures/SuperGenius' | |
path: 'SuperGenius' | |
submodules: "recursive" | |
ref: ${{ steps.check_supergenius.outputs.branch_exists == 'true' && steps.branch-name.outputs.current_branch || 'develop' }} | |
- name: Check if branch exists in thirdparty | |
id: check_thirdparty | |
uses: tj-actions/branch-names@v6 | |
with: | |
repo: 'GeniusVentures/thirdparty' | |
branch: ${{ steps.branch-name.outputs.current_branch }} | |
- name: Check out thirdparty repository | |
uses: actions/checkout@v3 | |
with: | |
repository: 'GeniusVentures/thirdparty' | |
path: 'thirdparty' | |
submodules: 'recursive' | |
ref: ${{ steps.check_thirdparty.outputs.branch_exists == 'true' && steps.branch-name.outputs.current_branch || 'develop' }} | |
- name: Thirdparty Create Build Directory | |
run: cmake -E make_directory ${{github.workspace}}/thirdparty/build/Android/Release/arm64-v8a | |
- name: Thirdparty Configure CMake | |
working-directory: ${{github.workspace}}/thirdparty/build/Android/Release/arm64-v8a | |
run: | | |
export ANDROID_NDK=${{env.ANDROID_NDK_HOME}} | |
export ANDROID_NDK_HOME=${{env.ANDROID_NDK_HOME}} | |
export ANDROID_TOOLCHAIN=${{env.ANDROID_TOOLCHAIN}} | |
export PATH=${{env.ANDROID_TOOLCHAIN}}:$PATH | |
echo $PATH | |
echo $CC | |
ls -la $ANDROID_TOOLCHAIN | |
echo "Check clang path:" | |
which clang | |
env | |
cmake -S ../../ -DANDROID_ABI="arm64-v8a" -DCMAKE_ANDROID_NDK=$ANDROID_NDK -DANDROID_TOOLCHAIN=clang -DCMAKE_BUILD_TYPE=Release | |
- name: Thirdparty Compile | |
working-directory: ${{github.workspace}}/thirdparty/build/Android/Release/arm64-v8a | |
run: make -j8 | |
- name: SuperGenius Create Build Directory | |
run: cmake -E make_directory ${{github.workspace}}/SuperGenius/build/Android/Release/arm64-v8a | |
- name: SuperGenius Configure CMake | |
working-directory: ${{github.workspace}}/SuperGenius/build/Android/Release/arm64-v8a | |
run: | | |
export ANDROID_NDK=${{env.ANDROID_NDK_HOME}} | |
export ANDROID_NDK_HOME=${{env.ANDROID_NDK_HOME}} | |
export ANDROID_TOOLCHAIN=${{env.ANDROID_TOOLCHAIN}} | |
export PATH=${{env.ANDROID_TOOLCHAIN}}:$PATH | |
echo $PATH | |
echo $CC | |
ls -la $ANDROID_TOOLCHAIN | |
echo "Check clang path:" | |
which clang | |
env | |
cmake -S ../../ -DANDROID_ABI="arm64-v8a" -DCMAKE_BUILD_TYPE=Release -DCMAKE_ANDROID_NDK=$ANDROID_NDK -DANDROID_TOOLCHAIN=clang -DTHIRDPARTY_DIR=${{github.workspace}}/thirdparty/ | |
- name: SuperGenius Compile | |
working-directory: ${{github.workspace}}/SuperGenius/build/Android/Release/arm64-v8a | |
run: make -j8 | |
- name: SuperGenius Install | |
working-directory: ${{github.workspace}}/SuperGenius/build/Android/Release/arm64-v8a | |
run: cmake --install . | |
- name: Create Build Directory | |
run: cmake -E make_directory ${{github.workspace}}/GeniusSDK/build/Android/Release/arm64-v8a | |
- name: Configure CMake | |
working-directory: ${{github.workspace}}/GeniusSDK/build/Android/Release/arm64-v8a | |
run: | | |
export ANDROID_NDK=${{env.ANDROID_NDK_HOME}} | |
export ANDROID_NDK_HOME=${{env.ANDROID_NDK_HOME}} | |
export ANDROID_TOOLCHAIN=${{env.ANDROID_TOOLCHAIN}} | |
export PATH=${{env.ANDROID_TOOLCHAIN}}:$PATH | |
echo $PATH | |
echo $CC | |
ls -la $ANDROID_TOOLCHAIN | |
echo "Check clang path:" | |
which clang | |
env | |
cmake -S ../../ -DANDROID_ABI="arm64-v8a" -DCMAKE_BUILD_TYPE=Release -DCMAKE_ANDROID_NDK=$ANDROID_NDK -DANDROID_TOOLCHAIN=clang -DTHIRDPARTY_DIR=${{github.workspace}}/thirdparty/ -DSUPERGENIUS_SRC_DIR=${{github.workspace}}/SuperGenius/ | |
- name: Compile | |
working-directory: ${{github.workspace}}/GeniusSDK/build/Android/Release/arm64-v8a | |
run: make -j8 | |
- name: Install | |
working-directory: ${{github.workspace}}/GeniusSDK/build/Android/Release/arm64-v8a | |
run: cmake --install . | |
- name: Compressing Build Artifacts | |
working-directory: ${{github.workspace}}/GeniusSDK | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
run: | | |
shopt -s extglob | |
rm -rf !(build) .[!.]* ..?* | |
cd build | |
rm -rf !(Android) .[!.]* ..?* | |
cd Android | |
rm -rf !(Release) .[!.]* ..?* | |
cd Release | |
rm -rf !(arm64-v8a) .[!.]* ..?* | |
cd arm64-v8a | |
rm -rf !(GeniusSDK) .[!.]* ..?* | |
cd ${{github.workspace}} | |
tar -czvf GeniusSDK.tar.gz GeniusSDK/ | |
- name: Set Release Variables | |
id: vars | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
run: | | |
OS_NAME=Android-arm64-v8a | |
BRANCH_NAME=${GITHUB_REF#refs/heads/} | |
BUILD_TYPE=Release | |
FILE_NAME="${OS_NAME}-${BRANCH_NAME}-${BUILD_TYPE}.tar.gz" | |
echo "RELEASE_TAG=${OS_NAME}-${BRANCH_NAME}-${BUILD_TYPE}-${GITHUB_SHA::7}" >> $GITHUB_ENV | |
echo "RELEASE_NAME=${OS_NAME} ${BRANCH_NAME} ${BUILD_TYPE} (${GITHUB_SHA::7})" >> $GITHUB_ENV | |
echo "FILE_NAME=$FILE_NAME" >> $GITHUB_ENV | |
- name: Rename Artifact | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
run: mv GeniusSDK.tar.gz ${{ env.FILE_NAME }} | |
- name: Create GitHub Release | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
id: create_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GNUS_TOKEN_1 }} | |
with: | |
tag_name: ${{ env.RELEASE_TAG }} | |
release_name: ${{ env.RELEASE_NAME }} | |
draft: false | |
prerelease: false | |
- name: Upload Release Asset | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GNUS_TOKEN_1 }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ${{ env.FILE_NAME }} | |
asset_name: ${{ env.FILE_NAME }} | |
asset_content_type: application/gzip | |
MacOS: | |
runs-on: macos-latest | |
steps: | |
- name: Get branch name | |
id: branch-name | |
uses: tj-actions/branch-names@v6 | |
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | |
- name: Checkout GeniusSDK repository | |
uses: actions/checkout@v3 | |
with: | |
path: 'GeniusSDK' | |
submodules: "recursive" | |
# Workaround for arm64 build | |
- name: Ensure latest macOS SDK is used | |
run: | | |
sudo xcode-select --switch "$(find /Applications -mindepth 1 -maxdepth 1 ! -type l | grep "Xcode_[\.0-9]*app" | sort -V | tail -1)/Contents/Developer" | |
sudo rm -Rf /Library/Developer/CommandLineTools/SDKs/* | |
- name: Install bindgen | |
run: cargo install cbindgen | |
- name: Add Rust wasm target | |
run: rustup target add wasm32-unknown-emscripten | |
- name: Add Darwin rust toolchain | |
run: rustup target add x86_64-apple-darwin | |
- name: Check if branch exists in SuperGenius | |
id: check_supergenius | |
uses: tj-actions/branch-names@v6 | |
with: | |
repo: 'GeniusVentures/SuperGenius' | |
branch: ${{ steps.branch-name.outputs.current_branch }} | |
- name: Checkout SuperGenius repository | |
uses: actions/checkout@v3 | |
with: | |
repository: 'GeniusVentures/SuperGenius' | |
path: 'SuperGenius' | |
submodules: "recursive" | |
ref: ${{ steps.check_supergenius.outputs.branch_exists == 'true' && steps.branch-name.outputs.current_branch || 'develop' }} | |
- name: Check if branch exists in thirdparty | |
id: check_thirdparty | |
uses: tj-actions/branch-names@v6 | |
with: | |
repo: 'GeniusVentures/thirdparty' | |
branch: ${{ steps.branch-name.outputs.current_branch }} | |
- name: Check out thirdparty repository | |
uses: actions/checkout@v3 | |
with: | |
repository: 'GeniusVentures/thirdparty' | |
path: 'thirdparty' | |
submodules: 'recursive' | |
ref: ${{ steps.check_thirdparty.outputs.branch_exists == 'true' && steps.branch-name.outputs.current_branch || 'develop' }} | |
- name: Thirdparty Create Build Directory | |
run: cmake -E make_directory ${{github.workspace}}/thirdparty/build/OSX/Release | |
- name: Thirdparty Configure CMake | |
working-directory: ${{github.workspace}}/thirdparty/build/OSX/Release | |
run: cmake -S .. -DCMAKE_BUILD_TYPE=Release | |
- name: Thirdparty Compile | |
working-directory: ${{github.workspace}}/thirdparty/build/OSX/Release | |
run: make -j8 | |
- name: SuperGenius Create Build Directory | |
run: cmake -E make_directory ${{github.workspace}}/SuperGenius/build/OSX/Release | |
- name: SuperGenius Configure CMake | |
working-directory: ${{github.workspace}}/SuperGenius/build/OSX/Release | |
run: cmake -S .. -DCMAKE_BUILD_TYPE=Release -DTHIRDPARTY_DIR=${{github.workspace}}/thirdparty/ | |
- name: SuperGenius Compile | |
working-directory: ${{github.workspace}}/SuperGenius/build/OSX/Release | |
run: make -j8 | |
- name: SuperGenius Install | |
working-directory: ${{github.workspace}}/SuperGenius/build/OSX/Release | |
run: cmake --install . | |
- name: Create Build Directory | |
run: cmake -E make_directory ${{github.workspace}}/GeniusSDK/build/OSX/Release | |
- name: Configure CMake | |
working-directory: ${{github.workspace}}/GeniusSDK/build/OSX/Release | |
run: cmake -S .. -DCMAKE_BUILD_TYPE=Release -DTHIRDPARTY_DIR=${{github.workspace}}/thirdparty/ -DSUPERGENIUS_SRC_DIR=${{github.workspace}}/SuperGenius/ | |
- name: Compile | |
working-directory: ${{github.workspace}}/GeniusSDK/build/OSX/Release | |
run: make -j8 | |
- name: Install | |
working-directory: ${{github.workspace}}/GeniusSDK/build/OSX/Release | |
run: cmake --install . | |
- name: Compressing Build Artifacts | |
working-directory: ${{github.workspace}}/GeniusSDK | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
run: | | |
shopt -s extglob | |
rm -rf !(build) .[!.]* ..?* | |
cd build | |
rm -rf !(OSX) .[!.]* ..?* | |
cd OSX | |
rm -rf !(Release) .[!.]* ..?* | |
cd Release | |
rm -rf !(GeniusSDK) .[!.]* ..?* | |
cd ${{github.workspace}} | |
tar -czvf GeniusSDK.tar.gz GeniusSDK/ | |
- name: Set Release Variables | |
id: vars | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
run: | | |
OS_NAME=OSX | |
BRANCH_NAME=${GITHUB_REF#refs/heads/} | |
BUILD_TYPE=Release | |
FILE_NAME="${OS_NAME}-${BRANCH_NAME}-${BUILD_TYPE}.tar.gz" | |
echo "RELEASE_TAG=${OS_NAME}-${BRANCH_NAME}-${BUILD_TYPE}-${GITHUB_SHA::7}" >> $GITHUB_ENV | |
echo "RELEASE_NAME=${OS_NAME} ${BRANCH_NAME} ${BUILD_TYPE} (${GITHUB_SHA::7})" >> $GITHUB_ENV | |
echo "FILE_NAME=$FILE_NAME" >> $GITHUB_ENV | |
- name: Rename Artifact | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
run: mv GeniusSDK.tar.gz ${{ env.FILE_NAME }} | |
- name: Create GitHub Release | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
id: create_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GNUS_TOKEN_1 }} | |
with: | |
tag_name: ${{ env.RELEASE_TAG }} | |
release_name: ${{ env.RELEASE_NAME }} | |
draft: false | |
prerelease: false | |
- name: Upload Release Asset | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GNUS_TOKEN_1 }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ${{ env.FILE_NAME }} | |
asset_name: ${{ env.FILE_NAME }} | |
asset_content_type: application/gzip | |
iOS: | |
runs-on: macos-latest | |
steps: | |
- name: Get branch name | |
id: branch-name | |
uses: tj-actions/branch-names@v6 | |
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | |
- name: Checkout GeniusSDK repository | |
uses: actions/checkout@v3 | |
with: | |
path: 'GeniusSDK' | |
submodules: "recursive" | |
- name: Install Ninja | |
run: | | |
brew install ccache ninja | |
echo "CMAKE_GENERATOR=Ninja" >> $GITHUB_ENV | |
- name: Install bindgen | |
run: cargo install cbindgen | |
- name: Add Rust wasm target | |
run: rustup target add wasm32-unknown-emscripten | |
- name: Add iOS toolchain | |
run: | | |
rustup toolchain install nightly-aarch64-apple-darwin | |
rustup component add rust-src --toolchain nightly-aarch64-apple-darwin | |
rustup target add aarch64-apple-ios | |
- name: Check if branch exists in SuperGenius | |
id: check_supergenius | |
uses: tj-actions/branch-names@v6 | |
with: | |
repo: 'GeniusVentures/SuperGenius' | |
branch: ${{ steps.branch-name.outputs.current_branch }} | |
- name: Checkout SuperGenius repository | |
uses: actions/checkout@v3 | |
with: | |
repository: 'GeniusVentures/SuperGenius' | |
path: 'SuperGenius' | |
submodules: "recursive" | |
ref: ${{ steps.check_supergenius.outputs.branch_exists == 'true' && steps.branch-name.outputs.current_branch || 'develop' }} | |
- name: Check if branch exists in thirdparty | |
id: check_thirdparty | |
uses: tj-actions/branch-names@v6 | |
with: | |
repo: 'GeniusVentures/thirdparty' | |
branch: ${{ steps.branch-name.outputs.current_branch }} | |
- name: Check out thirdparty repository | |
uses: actions/checkout@v3 | |
with: | |
repository: 'GeniusVentures/thirdparty' | |
path: 'thirdparty' | |
submodules: 'recursive' | |
ref: ${{ steps.check_thirdparty.outputs.branch_exists == 'true' && steps.branch-name.outputs.current_branch || 'develop' }} | |
- name: Thirdparty Create Build Directory | |
run: cmake -E make_directory ${{github.workspace}}/thirdparty/build/iOS/Release | |
- name: Thirdparty Configure CMake | |
working-directory: ${{github.workspace}}/thirdparty/build/iOS/Release | |
run: cmake -S .. -DCMAKE_BUILD_TYPE=Release -DPLATFORM=OS64 | |
- name: Thirdparty Compile | |
working-directory: ${{github.workspace}}/thirdparty/build/iOS/Release | |
run: cmake --build . -j --config Release | |
- name: SuperGenius Create Build Directory | |
run: cmake -E make_directory ${{github.workspace}}/SuperGenius/build/iOS/Release | |
- name: SuperGenius Configure CMake | |
working-directory: ${{github.workspace}}/SuperGenius/build/iOS/Release | |
run: cmake -S .. -DCMAKE_BUILD_TYPE=Release -DPLATFORM=OS64 -DTHIRDPARTY_DIR=${{github.workspace}}/thirdparty/ | |
- name: SuperGenius Compile | |
working-directory: ${{github.workspace}}/SuperGenius/build/iOS/Release | |
run: cmake --build . -j --config Release | |
- name: SuperGenius Install | |
working-directory: ${{github.workspace}}/SuperGenius/build/iOS/Release | |
run: cmake --install . | |
- name: Create Build Directory | |
run: cmake -E make_directory ${{github.workspace}}/GeniusSDK/build/iOS/Release | |
- name: Configure CMake | |
working-directory: ${{github.workspace}}/GeniusSDK/build/iOS/Release | |
run: cmake -S .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../iOS.cmake -DiOS_ABI=arm64-v8a -DIOS_ARCH="arm64" -DENABLE_ARC=0 -DENABLE_BITCODE=0 -DENABLE_VISIBILITY=1 -DCMAKE_OSX_ARCHITECTURES=arm64 -DCMAKE_SYSTEM_PROCESSOR=arm64 -DTHIRDPARTY_DIR=${{github.workspace}}/thirdparty/ -DSUPERGENIUS_SRC_DIR=${{github.workspace}}/SuperGenius/ | |
- name: Compile | |
working-directory: ${{github.workspace}}/GeniusSDK/build/iOS/Release | |
run: cmake --build . -j --config Release | |
- name: Install | |
working-directory: ${{github.workspace}}/GeniusSDK/build/iOS/Release | |
run: cmake --install . | |
- name: Compressing Build Artifacts | |
working-directory: ${{github.workspace}}/GeniusSDK | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
run: | | |
shopt -s extglob | |
rm -rf !(build) .[!.]* ..?* | |
cd build | |
rm -rf !(iOS) .[!.]* ..?* | |
cd iOS | |
rm -rf !(Release) .[!.]* ..?* | |
cd Release | |
rm -rf !(GeniusSDK) .[!.]* ..?* | |
cd ${{github.workspace}} | |
tar -czvf GeniusSDK.tar.gz GeniusSDK/ | |
- name: Set Release Variables | |
id: vars | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
run: | | |
OS_NAME=iOS | |
BRANCH_NAME=${GITHUB_REF#refs/heads/} | |
BUILD_TYPE=Release | |
FILE_NAME="${OS_NAME}-${BRANCH_NAME}-${BUILD_TYPE}.tar.gz" | |
echo "RELEASE_TAG=${OS_NAME}-${BRANCH_NAME}-${BUILD_TYPE}-${GITHUB_SHA::7}" >> $GITHUB_ENV | |
echo "RELEASE_NAME=${OS_NAME} ${BRANCH_NAME} ${BUILD_TYPE} (${GITHUB_SHA::7})" >> $GITHUB_ENV | |
echo "FILE_NAME=$FILE_NAME" >> $GITHUB_ENV | |
- name: Rename Artifact | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
run: mv GeniusSDK.tar.gz ${{ env.FILE_NAME }} | |
- name: Create GitHub Release | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
id: create_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GNUS_TOKEN_1 }} | |
with: | |
tag_name: ${{ env.RELEASE_TAG }} | |
release_name: ${{ env.RELEASE_NAME }} | |
draft: false | |
prerelease: false | |
- name: Upload Release Asset | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GNUS_TOKEN_1 }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ${{ env.FILE_NAME }} | |
asset_name: ${{ env.FILE_NAME }} | |
asset_content_type: application/gzip | |