name: MacOS Build on: workflow_call: inputs: cmakePreset: required: true type: string cachePrefix: required: true type: string uploadArtifacts: required: false type: boolean default: false jobs: build: name: Intel runs-on: macos-15-intel timeout-minutes: 120 steps: # minimal checkout if we're NOT uploading artifacts - name: Checkout Repository if: ${{ ! inputs.uploadArtifacts }} uses: actions/checkout@v6 # full checkout with tags if we ARE uploading artifacts - name: Checkout Repository with Tags if: ${{ inputs.uploadArtifacts }} uses: actions/checkout@v6 with: fetch-depth: 0 fetch-tags: true - name: Install Package Dependencies env: HOMEBREW_NO_INSTALL_CLEANUP: 1 HOMEBREW_NO_ANALYTICS: 1 run: | if ! brew install ninja nasm; then brew update brew install ninja nasm fi - name: Setup sccache uses: hendrikmuhs/ccache-action@v1.2.23 with: variant: sccache key: macos-15-intel-${{ inputs.cachePrefix }}-${{ inputs.cmakePreset }}-${{ github.sha }} restore-keys: macos-15-intel-${{ inputs.cachePrefix }}-${{ inputs.cmakePreset }} max-size: 1000M - name: CMake Generation env: CC: clang CXX: clang++ run: | cmake -B build --preset=${{ inputs.cmakePreset }} \ -DCMAKE_C_COMPILER_LAUNCHER=sccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=sccache - name: Build Project run: cmake --build build --parallel $((`sysctl -n hw.logicalcpu`)) - name: List libraries of gk run: otool -L ./build/game/gk - name: Run Tests run: ./test.sh - name: Prepare artifacts if: ${{ inputs.uploadArtifacts }} run: | strip ./build/goalc/goalc strip ./build/decompiler/extractor strip ./build/game/gk strip ./build/lsp/lsp - name: Upload artifact uses: actions/upload-artifact@v7 if: ${{ inputs.uploadArtifacts }} with: name: opengoal-macos-${{ inputs.cachePrefix }} if-no-files-found: error path: | ./build/goalc/goalc ./build/decompiler/extractor ./build/game/gk ./build/lsp/lsp