make one workflow for multiple platforms build #1
Workflow file for this run
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: Panda 3ds CI | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
jobs: | |
android-x64: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
build_type: | |
- release | |
steps: | |
- name: Set BUILD_TYPE variable | |
run: echo "BUILD_TYPE=${{ matrix.build_type }}" >> $GITHUB_ENV | |
- uses: actions/checkout@v4 | |
- name: Fetch submodules | |
run: git submodule update --init --recursive | |
- name: Setup Vulkan SDK | |
uses: humbletim/[email protected] | |
with: | |
vulkan-query-version: latest | |
vulkan-use-cache: true | |
vulkan-components: Vulkan-Headers, Vulkan-Loader, SPIRV-Tools, Glslang | |
- name: Setup Java | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: '17' | |
- name: Configure CMake | |
run: cmake -B ${{github.workspace}}/build -DBUILD_HYDRA_CORE=1 -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake -DANDROID_ABI=x86_64 -DENABLE_VULKAN=0 -DENABLE_USER_BUILD=ON | |
- name: Build | |
run: | | |
# Apply patch for GLES compatibility | |
git apply ./.github/gles.patch | |
# Build the project with CMake | |
cmake --build ${{github.workspace}}/build --config ${{ env.BUILD_TYPE }} | |
# Strip the generated library and move it to the appropriate location | |
${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip --strip-unneeded ./build/libAlber.so | |
mv ./build/libAlber.so ./src/pandroid/app/src/main/jniLibs/x86_64/ | |
# Build the Android app with Gradle | |
cd src/pandroid | |
./gradlew assemble${{ env.BUILD_TYPE }} | |
cd ../.. | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Android APKs (x86-64) | |
path: | | |
./src/pandroid/app/build/outputs/apk/${{ env.BUILD_TYPE }}/app-${{ env.BUILD_TYPE }}.apk | |
android-arm64: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
build_type: | |
- release | |
steps: | |
- name: Set BUILD_TYPE variable | |
run: echo "BUILD_TYPE=${{ matrix.build_type }}" >> $GITHUB_ENV | |
- uses: actions/checkout@v4 | |
- name: Fetch submodules | |
run: git submodule update --init --recursive | |
- name: Setup Vulkan SDK | |
uses: humbletim/[email protected] | |
with: | |
vulkan-query-version: latest | |
vulkan-use-cache: true | |
vulkan-components: Vulkan-Headers, Vulkan-Loader, SPIRV-Tools, Glslang | |
- name: Setup Java | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'zulu' | |
java-version: '17' | |
- name: Configure CMake | |
run: cmake -B ${{github.workspace}}/build -DBUILD_HYDRA_CORE=1 -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DENABLE_VULKAN=0 -DENABLE_USER_BUILD=ON -DCMAKE_CXX_FLAGS="-march=armv8-a+crypto" | |
- name: Build | |
run: | | |
# Apply patch for GLES compatibility | |
git apply ./.github/gles.patch | |
# Build the project with CMake | |
cmake --build ${{github.workspace}}/build --config ${{ env.BUILD_TYPE }} | |
# Strip the generated library and move it to the appropriate location | |
${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip --strip-unneeded ./build/libAlber.so | |
mv ./build/libAlber.so ./src/pandroid/app/src/main/jniLibs/arm64-v8a/ | |
# Build the Android app with Gradle | |
cd src/pandroid | |
./gradlew assemble${{ env.BUILD_TYPE }} | |
ls -R app/build/outputs | |
cd ../.. | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Android APKs (arm64) | |
path: | | |
./src/pandroid/app/build/outputs/apk/${{ env.BUILD_TYPE }}/app-${{ env.BUILD_TYPE }}.apk | |
windows-Build: | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
build_type: | |
- release | |
steps: | |
- name: Set BUILD_TYPE variable | |
run: echo "BUILD_TYPE=${{ matrix.build_type }}" >> $GITHUB_ENV | |
- uses: actions/checkout@v4 | |
- name: Fetch submodules | |
run: git submodule update --init --recursive | |
- name: Setup Vulkan SDK | |
uses: humbletim/[email protected] | |
with: | |
vulkan-query-version: latest | |
vulkan-use-cache: true | |
vulkan-components: Vulkan-Headers, Vulkan-Loader, SPIRV-Tools, Glslang | |
- name: Configure CMake | |
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DENABLE_USER_BUILD=ON | |
- name: Build | |
# Build your program with the given configuration | |
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} | |
- name: Upload executable | |
uses: actions/upload-artifact@v2 | |
with: | |
name: Windows executable | |
path: './build/Release/Alber.exe' | |
HTTP-Server-Build: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
build_type: | |
- release | |
steps: | |
- name: Set BUILD_TYPE variable | |
run: echo "BUILD_TYPE=${{ matrix.build_type }}" >> $GITHUB_ENV | |
- uses: actions/checkout@v2 | |
- name: Fetch submodules | |
run: git submodule update --init --recursive | |
- name: Install newer Clang | |
run: | | |
wget https://apt.llvm.org/llvm.sh | |
chmod +x ./llvm.sh | |
sudo ./llvm.sh 17 | |
- name: Setup Vulkan SDK | |
uses: humbletim/[email protected] | |
with: | |
vulkan-query-version: latest | |
vulkan-use-cache: true | |
vulkan-components: Vulkan-Headers, Vulkan-Loader, SPIRV-Tools, Glslang | |
- name: Configure CMake | |
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. | |
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type | |
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_C_COMPILER=clang-17 -DCMAKE_CXX_COMPILER=clang++-17 -DENABLE_USER_BUILD=ON -DENABLE_HTTP_SERVER=ON | |
- name: Build | |
# Build your program with the given configuration | |
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} | |
MacOs-Build: | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
build_type: | |
- release | |
steps: | |
- name: Set BUILD_TYPE variable | |
run: echo "BUILD_TYPE=${{ matrix.build_type }}" >> $GITHUB_ENV | |
- uses: actions/checkout@v2 | |
- name: Fetch submodules | |
run: git submodule update --init --recursive | |
- name: Setup Vulkan SDK | |
uses: humbletim/[email protected] | |
with: | |
vulkan-query-version: latest | |
vulkan-use-cache: true | |
vulkan-components: Vulkan-Headers, Vulkan-Loader, SPIRV-Tools, Glslang | |
- name: Configure CMake | |
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. | |
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type | |
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DENABLE_USER_BUILD=ON | |
- name: Build | |
# Build your program with the given configuration | |
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} | |
- name: Install bundle dependencies | |
run: brew install dylibbundler imagemagick | |
- name: Run bundle script | |
run: ./.github/mac-bundle.sh | |
- name: Sign the App | |
run: codesign --force -s - -vvvv Alber.app | |
- name: Zip it up | |
run: zip -r Alber Alber.app | |
- name: Upload MacOS App | |
uses: actions/upload-artifact@v2 | |
with: | |
name: MacOS Alber App Bundle | |
path: 'Alber.zip' | |
Linux-AppImage-Build: | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
build_type: | |
- release | |
steps: | |
- name: Set BUILD_TYPE variable | |
run: echo "BUILD_TYPE=${{ matrix.build_type }}" >> $GITHUB_ENV | |
- uses: actions/checkout@v2 | |
- name: Fetch submodules | |
run: git submodule update --init --recursive | |
- name: Install misc packages | |
run: sudo apt-get update && sudo apt install libx11-dev libgl1-mesa-glx mesa-common-dev libfuse2 | |
- name: Install newer Clang | |
run: | | |
wget https://apt.llvm.org/llvm.sh | |
chmod +x ./llvm.sh | |
sudo ./llvm.sh 17 | |
- name: Setup Vulkan SDK | |
run: | | |
wget -qO - http://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo apt-key add - | |
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-focal.list http://packages.lunarg.com/vulkan/lunarg-vulkan-focal.list | |
sudo apt update | |
sudo apt install vulkan-sdk | |
- name: Configure CMake | |
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. | |
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type | |
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_C_COMPILER=clang-17 -DCMAKE_CXX_COMPILER=clang++-17 -DENABLE_USER_BUILD=ON | |
- name: Build | |
# Build your program with the given configuration | |
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} | |
- name: Run AppImage packaging script | |
run: ./.github/linux-appimage.sh | |
- name: Upload executable | |
uses: actions/upload-artifact@v2 | |
with: | |
name: Linux executable | |
path: './Alber-x86_64.AppImage' | |
Linux-Build: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
build_type: | |
- release | |
steps: | |
- name: Set BUILD_TYPE variable | |
run: echo "BUILD_TYPE=${{ matrix.build_type }}" >> $GITHUB_ENV | |
- uses: actions/checkout@v2 | |
- name: Fetch submodules | |
run: git submodule update --init --recursive | |
- name: Install misc packages | |
run: sudo apt-get update && sudo apt install libx11-dev libgl1-mesa-glx mesa-common-dev | |
- name: Install newer Clang | |
run: | | |
wget https://apt.llvm.org/llvm.sh | |
chmod +x ./llvm.sh | |
sudo ./llvm.sh 17 | |
- name: Setup Vulkan SDK | |
uses: humbletim/[email protected] | |
with: | |
vulkan-query-version: latest | |
vulkan-use-cache: true | |
vulkan-components: Vulkan-Headers, Vulkan-Loader, SPIRV-Tools, Glslang | |
- name: Configure CMake | |
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. | |
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type | |
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_C_COMPILER=clang-17 -DCMAKE_CXX_COMPILER=clang++-17 -DENABLE_USER_BUILD=ON | |
- name: Build | |
# Build your program with the given configuration | |
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} | |
- name: Upload executable | |
uses: actions/upload-artifact@v2 | |
with: | |
name: Linux executable | |
path: './build/Alber' |