name: Qt Build on: push: branches: - master pull_request: env: # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) BUILD_TYPE: Release jobs: Windows: runs-on: windows-latest steps: - uses: actions/checkout@v4 - name: Fetch submodules run: git submodule update --init --recursive - name: Setup Qt uses: jurplel/install-qt-action@v3 with: arch: win64_msvc2019_64 version: 6.2.0 - name: Setup Vulkan SDK uses: humbletim/setup-vulkan-sdk@main with: vulkan-query-version: 1.3.296.0 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 -DENABLE_QT_GUI=ON - name: Build run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} - name: Deploy run: | mkdir upload move build/Release/Alber.exe upload windeployqt --dir upload upload/Alber.exe - name: Upload executable uses: actions/upload-artifact@v4 with: name: Windows executable path: upload MacOS: strategy: matrix: arch: [x86_64, arm64] name: MacOS-${{ matrix.arch }} runs-on: macos-latest steps: - uses: actions/checkout@v4 - name: Fetch submodules run: git submodule update --init --recursive - name: Setup Vulkan SDK uses: humbletim/setup-vulkan-sdk@main with: vulkan-query-version: 1.3.296.0 vulkan-use-cache: true vulkan-components: Vulkan-Headers, Vulkan-Loader, SPIRV-Tools, Glslang - name: Install bundle dependencies run: | brew install dylibbundler imagemagick - name: Install Qt uses: jurplel/install-qt-action@v3 with: aqtversion: '==3.1.*' version: '6.8.1' host: 'mac' target: 'desktop' arch: 'clang_64' - name: Configure CMake run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DENABLE_USER_BUILD=ON -DENABLE_QT_GUI=ON -DCMAKE_OSX_ARCHITECTURES=${{ matrix.arch }} - name: Build run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} - name: Run bundle script run: | chmod +x .github/mac-bundle-qt.sh ./.github/mac-bundle-qt.sh - name: Sign the App run: codesign --force -s - -vvvv Alber.app - name: Zip it up run: zip -r Alber-${{ matrix.arch }} Alber.app - name: Upload MacOS App uses: actions/upload-artifact@v4 with: name: MacOS Alber App Bundle (${{ matrix.arch }}) path: Alber-${{ matrix.arch }}.zip MacOS-Universal: name: MacOS-Universal needs: [MacOS] runs-on: macos-latest steps: - name: Download x86_64 uses: actions/download-artifact@v4 with: name: MacOS Alber App Bundle (x86_64) path: x86_64 - name: Download ARM64 uses: actions/download-artifact@v4 with: name: MacOS Alber App Bundle (arm64) path: arm64 - name: Combine app bundles shell: bash run: | set -x unzip x86_64/*.zip -d x86_64 unzip arm64/*.zip -d arm64 lipo {x86_64,arm64}/Alber.app/Contents/MacOS/Alber -create -output Alber cp -v -a arm64/Alber.app Alber.app cp -v Alber Alber.app/Contents/MacOS/Alber # Mix in x86_64 files that do not appear in the ARM64 build (e.g. libvulkan) cp -v -R -n x86_64/Alber.app/* Alber.app/ || true codesign --force -s - -vvvv Alber.app zip -r -y Alber-universal.zip Alber.app - name: Upload artifact uses: actions/upload-artifact@v4 with: name: MacOS Alber App Bundle (universal) path: Alber-universal.zip Linux: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - name: Fetch submodules run: git submodule update --init --recursive - name: Install misc packages run: | sudo apt-get update && sudo apt install libx11-dev libgl1 libglx-mesa0 mesa-common-dev libfuse2 libwayland-dev libgl1-mesa-dev sudo apt update sudo apt install qt6-base-dev qt6-base-private-dev qt6-tools-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@main with: vulkan-query-version: 1.3.296.0 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}} -DCMAKE_C_COMPILER=clang-17 -DCMAKE_CXX_COMPILER=clang++-17 -DENABLE_USER_BUILD=ON -DENABLE_QT_GUI=ON - name: Build run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} - name: Run AppImage packaging script run: | chmod +x .github/linux-appimage-qt.sh ./.github/linux-appimage-qt.sh - name: Upload executable uses: actions/upload-artifact@v4 with: name: Linux executable path: './Alber-x86_64.AppImage'