name: Build on: push: branches: - "*" pull_request: branches: - "*" types: [opened, synchronize, reopened] concurrency: group: ${{ github.ref }} cancel-in-progress: true jobs: build-win: name: Build Windows runs-on: windows-latest strategy: fail-fast: false matrix: configuration: - Release arch: - x64 include: - arch: x64 platform: x64 steps: - name: Check out files uses: actions/checkout@v3.5.3 with: submodules: true fetch-depth: 0 # NOTE - If LFS ever starts getting used during builds, switch this to true! lfs: false - name: Add msbuild to PATH uses: microsoft/setup-msbuild@v1.3.1 - name: Install Premake5 uses: abel0b/setup-premake@v2.2 with: version: "5.0.0-beta2" - name: Generate project files run: premake5 vs2022 - name: Set up problem matching uses: ammaraskar/msvc-problem-matcher@master - name: Build ${{matrix.configuration}} ${{matrix.arch}} binaries run: msbuild /m /v:minimal /p:Configuration=${{matrix.configuration}} /p:Platform=${{matrix.platform}} build/alterware-master.sln - name: Upload ${{matrix.configuration}} ${{matrix.arch}} binaries uses: actions/upload-artifact@v3.1.2 with: name: Windows ${{matrix.configuration}} ${{matrix.arch}} binaries path: | build/bin/${{matrix.arch}}/${{matrix.configuration}}/alterware-master.exe build/bin/${{matrix.arch}}/${{matrix.configuration}}/alterware-master.pdb build-linux: name: Build Linux runs-on: ubuntu-latest strategy: fail-fast: false matrix: configuration: - Release arch: - x64 - arm64 include: - configuration: Release config: release steps: - name: Check out files uses: actions/checkout@v3.5.3 with: submodules: true fetch-depth: 0 # NOTE - If LFS ever starts getting used during builds, switch this to true! lfs: false - name: Install dependencies (x64) if: matrix.arch == 'x64' run: | sudo apt-get update sudo apt-get install libcurl4-gnutls-dev -y - name: Install crossbuild tools (arm64) if: matrix.arch == 'arm64' run: | sudo apt-get update sudo apt-get install crossbuild-essential-arm64 -y - name: Install dependencies (arm64) if: matrix.arch == 'arm64' run: | echo "deb [arch=arm64] http://ports.ubuntu.com/ jammy main multiverse universe" | sudo tee /etc/apt/sources.list echo "deb [arch=arm64] http://ports.ubuntu.com/ jammy-security main multiverse universe" | sudo tee -a /etc/apt/sources.list echo "deb [arch=arm64] http://ports.ubuntu.com/ jammy-backports main multiverse universe" | sudo tee -a /etc/apt/sources.list echo "deb [arch=arm64] http://ports.ubuntu.com/ jammy-updates main multiverse universe" | sudo tee -a /etc/apt/sources.list sudo dpkg --add-architecture arm64 sudo apt-get update sudo apt-get install libcurl4-gnutls-dev:arm64 -y - name: Install Premake5 uses: abel0b/setup-premake@v2.2 with: version: "5.0.0-beta2" - name: Generate project files run: premake5 gmake2 - name: Set up problem matching uses: ammaraskar/gcc-problem-matcher@master - name: Build ${{matrix.configuration}} ${{matrix.arch}} binaries run: | pushd build make config=${{matrix.config}}_${{matrix.arch}} -j$(nproc) env: CC: clang CXX: clang++ - name: Upload ${{matrix.configuration}} ${{matrix.arch}} binaries uses: actions/upload-artifact@v3.1.2 with: name: Linux ${{matrix.configuration}} ${{matrix.arch}} binaries path: | build/bin/${{matrix.arch}}/${{matrix.configuration}}/alterware-master build-macos: name: Build macOS runs-on: macos-13 strategy: fail-fast: false matrix: configuration: - Release arch: - x64 - arm64 include: - configuration: Release config: release - arch: x64 platform: x64 - arch: arm64 platform: arm64 steps: - name: Check out files uses: actions/checkout@v3.5.3 with: submodules: true fetch-depth: 0 # NOTE - If LFS ever starts getting used during builds, switch this to true! lfs: false - name: Install Premake5 uses: abel0b/setup-premake@v2.2 with: version: "5.0.0-beta2" - name: Generate project files run: premake5 gmake2 - name: Set up problem matching uses: ammaraskar/gcc-problem-matcher@master - name: Build ${{matrix.configuration}} ${{matrix.arch}} binaries run: | pushd build make config=${{matrix.config}}_${{matrix.arch}} -j$(sysctl -n hw.logicalcpu) - name: Upload ${{matrix.configuration}} ${{matrix.arch}} binaries uses: actions/upload-artifact@v3.1.2 with: name: macOS ${{matrix.configuration}} ${{matrix.arch}} binaries path: | build/bin/${{matrix.arch}}/${{matrix.configuration}}/alterware-master