# Validate that the project builds on Ubuntu and macOS (no model download). name: CI Build on: pull_request: workflow_dispatch: jobs: build: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest] steps: - name: Checkout uses: actions/checkout@v4 with: submodules: recursive - name: Build (Ubuntu) if: matrix.os == 'ubuntu-latest' run: | sudo apt-get update -qq sudo apt-get install -y -qq cmake build-essential pkg-config libopenblas-dev mkdir build && cd build cmake .. -DGGML_BLAS=ON cmake --build . --config Release -j$(nproc) - name: Build (macOS) if: matrix.os == 'macos-latest' run: | mkdir build && cd build cmake .. cmake --build . --config Release -j$(sysctl -n hw.ncpu) - name: Smoke test run: | ./build/ace-lm --help 2>&1 | head -5 ./build/ace-synth --help 2>&1 | head -5 ./build/quantize --help 2>&1 | head -3 lint: name: Lint & Static Analysis runs-on: ubuntu-latest if: github.event_name == 'pull_request' steps: - uses: actions/checkout@v4 - name: Install lint tools run: | sudo apt-get update -qq sudo apt-get install -y -qq clang-format clang-tidy cppcheck - name: Run clang-format (check mode) run: | find . \ \( -path './.git' -o -path './ggml' -o -path './build' -o -path './vendor' -o -path './mp3' \) -prune -o \ -type f \( -name '*.c' -o -name '*.h' -o -name '*.cc' -o -name '*.cpp' -o -name '*.hpp' \) \ -print0 | xargs -0 clang-format --dry-run --Werror - name: Run cppcheck run: | cppcheck --enable=all --error-exitcode=1 --inline-suppr \ --suppress=missingIncludeSystem \ --suppress=missingInclude \ --suppress=cstyleCast \ --suppress=constVariable \ --suppress=constVariablePointer \ --suppress=constParameterPointer \ --suppress=variableScope \ --suppress=uselessCallsSubstr \ --suppress=useStlAlgorithm \ --suppress=shiftNegativeLHS \ -i ggml -i build -i .git -i mp3 \ .