name: Build # Scaffolding CI: proves the CMake toolchain configures and builds on all # three platforms the design doc names. It does not yet link livekit-ffi # or produce a real OBS-installable package -- see README.md. on: push: pull_request: jobs: linux: name: Linux (ubuntu-latest) runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install build dependencies run: | sudo apt-get update -qq sudo apt-get install -y -qq cmake ninja-build libobs-dev - name: Configure run: cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release - name: Build run: cmake --build build - name: Test (core library) run: ctest --test-dir build --output-on-failure macos: name: macOS (macos-latest) runs-on: macos-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install build dependencies run: brew install cmake ninja - name: Configure # libobs is not expected to be found here yet (no Homebrew # formula / SDK download wired up in this pass) -- the top-level # CMakeLists.txt falls back to building only the core library in # that case. See README.md. run: cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release - name: Build run: cmake --build build - name: Test (core library) run: ctest --test-dir build --output-on-failure windows: name: Windows (windows-latest) runs-on: windows-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install build dependencies # winvm-builder is a self-hosted act_runner labeled # "windows-latest" -- it is NOT the GitHub-hosted windows-latest # image, so none of the tools that image preinstalls (cmake # included) can be assumed present. Confirmed by a first CI run # on this repo: "cmake : The term 'cmake' is not recognized...". # lukka/get-cmake downloads a pinned cmake+ninja binary and adds # it to PATH for this job, with no admin/choco dependency. uses: lukka/get-cmake@latest - name: Configure # Same story as macOS: no OBS SDK available yet on this runner, # so this proves the core library + MSVC toolchain only. run: cmake -S . -B build -DCMAKE_BUILD_TYPE=Release - name: Build run: cmake --build build --config Release - name: Test (core library) run: ctest --test-dir build -C Release --output-on-failure