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/setup-vulkan-sdk@v1.2.0 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/setup-vulkan-sdk@v1.2.0 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/setup-vulkan-sdk@v1.2.0 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 steps: - 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/setup-vulkan-sdk@v1.2.0 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 steps: - uses: actions/checkout@v2 - name: Fetch submodules run: git submodule update --init --recursive - name: Setup Vulkan SDK uses: humbletim/setup-vulkan-sdk@v1.2.0 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 steps: - 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 steps: - 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/setup-vulkan-sdk@v1.2.0 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'