mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
This is increasingly difficult to maintain, and has very limited benefit. Modern coprocessors with enough horsepower to run Java applications can use the Gradle or Bazel build systems instead.
91 lines
3.1 KiB
YAML
91 lines
3.1 KiB
YAML
name: CMake
|
|
|
|
on: [pull_request, push]
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
SCCACHE_WEBDAV_ENDPOINT: "https://frcmaven.wpi.edu/artifactory/wpilib-generic-cache-cmake-local"
|
|
SCCACHE_WEBDAV_KEY_PREFIX: "sccache"
|
|
|
|
jobs:
|
|
build:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- os: ubuntu-24.04
|
|
name: Linux
|
|
container: wpilib/systemcore-cross-ubuntu:2027-24.04
|
|
flags: "--preset with-sccache -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON"
|
|
- os: macOS-15
|
|
name: macOS
|
|
container: ""
|
|
flags: "--preset with-sccache -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON"
|
|
- os: windows-2022
|
|
name: Windows
|
|
container: ""
|
|
flags: '--preset with-sccache -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DUSE_SYSTEM_FMTLIB=ON -DUSE_SYSTEM_LIBUV=ON -DUSE_SYSTEM_EIGEN=OFF -DCMAKE_TOOLCHAIN_FILE="$Env:RUNNER_WORKSPACE/vcpkg/scripts/buildsystems/vcpkg.cmake" -DVCPKG_INSTALL_OPTIONS=--clean-after-build -DVCPKG_TARGET_TRIPLET=x64-windows-release -DVCPKG_HOST_TRIPLET=x64-windows-release'
|
|
|
|
name: "Build - ${{ matrix.name }}"
|
|
runs-on: ${{ matrix.os }}
|
|
container: ${{ matrix.container }}
|
|
steps:
|
|
- name: Install dependencies (Linux)
|
|
if: runner.os == 'Linux'
|
|
run: sudo apt-get update && sudo apt-get install -y libopencv-dev ninja-build
|
|
|
|
- name: Setup avahi-daemon
|
|
if: runner.os == 'Linux'
|
|
run: |
|
|
sudo service dbus start
|
|
sudo avahi-daemon -D
|
|
|
|
- name: Install dependencies (macOS)
|
|
if: runner.os == 'macOS'
|
|
run: brew install opencv ninja
|
|
|
|
- uses: ilammy/msvc-dev-cmd@v1.13.0
|
|
if: runner.os == 'Windows'
|
|
|
|
- name: Install CMake (Windows only)
|
|
if: runner.os == 'Windows'
|
|
uses: lukka/get-cmake@v3.29.3
|
|
|
|
- name: Install sccache
|
|
uses: mozilla-actions/sccache-action@v0.0.10
|
|
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Run vcpkg (Windows only)
|
|
if: runner.os == 'Windows'
|
|
uses: lukka/run-vcpkg@v11.5
|
|
with:
|
|
vcpkgDirectory: ${{ runner.workspace }}/vcpkg
|
|
vcpkgGitCommitId: 74e6536215718009aae747d86d84b78376bf9e09 # HEAD on 2025-10-17
|
|
|
|
- name: configure
|
|
run: cmake ${{ matrix.flags }}
|
|
env:
|
|
SCCACHE_WEBDAV_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }}
|
|
SCCACHE_WEBDAV_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }}
|
|
|
|
- name: build
|
|
run: cmake --build build-cmake --parallel $(nproc)
|
|
env:
|
|
SCCACHE_WEBDAV_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }}
|
|
SCCACHE_WEBDAV_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }}
|
|
|
|
- name: test
|
|
if: runner.os != 'Windows'
|
|
working-directory: build-cmake
|
|
run: ctest --output-on-failure
|
|
|
|
- name: test (windows)
|
|
if: runner.os == 'Windows'
|
|
working-directory: build-cmake
|
|
# UnitTest_test segfaults on exit occasionally
|
|
run: ctest --output-on-failure -E 'UnitTest'
|