160 lines
6.6 KiB
YAML
160 lines
6.6 KiB
YAML
name: Windows CI
|
|
|
|
on: [pull_request]
|
|
|
|
# Every time you make a push to your PR, it cancel immediately the previous checks,
|
|
# and start a new one. The other runner will be available more quickly to your PR.
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build:
|
|
name: ${{ matrix.name }} ${{ matrix.build_type }}
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
env:
|
|
CTEST_OUTPUT_ON_FAILURE: ON
|
|
CTEST_PARALLEL_LEVEL: 2
|
|
CMAKE_BUILD_TYPE: ${{ matrix.build_type }}
|
|
GTSAM_BUILD_UNSTABLE: ${{ matrix.build_unstable }}
|
|
BOOST_VERSION: 1.72.0
|
|
BOOST_EXE: boost_1_72_0-msvc-14.2
|
|
|
|
strategy:
|
|
fail-fast: true
|
|
matrix:
|
|
# Github Actions requires a single row to be added to the build matrix.
|
|
# See https://help.github.com/en/articles/workflow-syntax-for-github-actions.
|
|
name: [
|
|
windows-2019-cl,
|
|
]
|
|
|
|
build_type: [
|
|
Debug,
|
|
Release
|
|
]
|
|
|
|
build_unstable: [ON]
|
|
include:
|
|
- name: windows-2019-cl
|
|
os: windows-2019
|
|
compiler: cl
|
|
platform: 64
|
|
|
|
steps:
|
|
- name: Install Dependencies
|
|
shell: powershell
|
|
run: |
|
|
iwr -useb get.scoop.sh -outfile 'install_scoop.ps1'
|
|
.\install_scoop.ps1 -RunAsAdmin
|
|
|
|
scoop install cmake --global # So we don't get issues with CMP0074 policy
|
|
scoop install ninja --global
|
|
|
|
if ("${{ matrix.compiler }}".StartsWith("clang")) {
|
|
scoop install llvm --global
|
|
}
|
|
|
|
if ("${{ matrix.compiler }}" -eq "gcc") {
|
|
# Chocolatey GCC is broken on the windows-2019 image.
|
|
# See: https://github.com/DaanDeMeyer/doctest/runs/231595515
|
|
# See: https://github.community/t5/GitHub-Actions/Something-is-wrong-with-the-chocolatey-installed-version-of-gcc/td-p/32413
|
|
scoop install gcc --global
|
|
echo "CC=gcc" >> $GITHUB_ENV
|
|
echo "CXX=g++" >> $GITHUB_ENV
|
|
|
|
} elseif ("${{ matrix.compiler }}" -eq "clang") {
|
|
echo "CC=clang" >> $GITHUB_ENV
|
|
echo "CXX=clang++" >> $GITHUB_ENV
|
|
|
|
} else {
|
|
echo "CC=${{ matrix.compiler }}" >> $env:GITHUB_ENV
|
|
echo "CXX=${{ matrix.compiler }}" >> $env:GITHUB_ENV
|
|
|
|
}
|
|
|
|
# Scoop modifies the PATH so we make the modified PATH global.
|
|
echo "$env:PATH" >> $env:GITHUB_PATH
|
|
|
|
- name: Install Boost
|
|
shell: powershell
|
|
run: |
|
|
# Snippet from: https://github.com/actions/virtual-environments/issues/2667
|
|
$BOOST_PATH = "C:\hostedtoolcache\windows\Boost\$env:BOOST_VERSION\x86_64"
|
|
|
|
# Use the prebuilt binary for Windows
|
|
$Url = "https://sourceforge.net/projects/boost/files/boost-binaries/$env:BOOST_VERSION/$env:BOOST_EXE-${{matrix.platform}}.exe"
|
|
(New-Object System.Net.WebClient).DownloadFile($Url, "$env:TEMP\boost.exe")
|
|
Start-Process -Wait -FilePath "$env:TEMP\boost.exe" "/SILENT","/SP-","/SUPPRESSMSGBOXES","/DIR=$BOOST_PATH"
|
|
|
|
# Set the BOOST_ROOT variable
|
|
echo "BOOST_ROOT=$BOOST_PATH" >> $env:GITHUB_ENV
|
|
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Setup msbuild
|
|
uses: ilammy/msvc-dev-cmd@v1
|
|
with:
|
|
arch: x${{ matrix.platform }}
|
|
|
|
- name: Configuration
|
|
shell: bash
|
|
run: |
|
|
export CMAKE_GENERATOR=Ninja
|
|
cmake -E remove_directory build
|
|
cmake -B build \
|
|
-S . \
|
|
-DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF \
|
|
-DGTSAM_ALLOW_DEPRECATED_SINCE_V43=OFF \
|
|
-DBOOST_ROOT="${BOOST_ROOT}" \
|
|
-DBOOST_INCLUDEDIR="${BOOST_ROOT}\boost\include" \
|
|
-DBOOST_LIBRARYDIR="${BOOST_ROOT}\lib"
|
|
|
|
- name: Build
|
|
shell: bash
|
|
run: |
|
|
# Since Visual Studio is a multi-generator, we need to use --config
|
|
# https://stackoverflow.com/a/24470998/1236990
|
|
cmake --build build -j4 --config ${{ matrix.build_type }} --target gtsam
|
|
cmake --build build -j4 --config ${{ matrix.build_type }} --target gtsam_unstable
|
|
|
|
- name: Test
|
|
shell: bash
|
|
run: |
|
|
# Run GTSAM tests
|
|
cmake --build build -j4 --config ${{ matrix.build_type }} --target check.base
|
|
cmake --build build -j4 --config ${{ matrix.build_type }} --target check.basis
|
|
cmake --build build -j4 --config ${{ matrix.build_type }} --target check.discrete
|
|
cmake --build build -j4 --config ${{ matrix.build_type }} --target check.geometry
|
|
cmake --build build -j4 --config ${{ matrix.build_type }} --target check.inference
|
|
cmake --build build -j4 --config ${{ matrix.build_type }} --target check.linear
|
|
cmake --build build -j4 --config ${{ matrix.build_type }} --target check.navigation
|
|
cmake --build build -j4 --config ${{ matrix.build_type }} --target check.sam
|
|
cmake --build build -j4 --config ${{ matrix.build_type }} --target check.sfm
|
|
cmake --build build -j4 --config ${{ matrix.build_type }} --target check.symbolic
|
|
cmake --build build -j4 --config ${{ matrix.build_type }} --target check.hybrid
|
|
cmake --build build -j4 --config ${{ matrix.build_type }} --target check.nonlinear
|
|
cmake --build build -j4 --config ${{ matrix.build_type }} --target check.slam
|
|
|
|
# Run GTSAM_UNSTABLE tests
|
|
cmake --build build -j4 --config ${{ matrix.build_type }} --target check.base_unstable
|
|
# Compile. Fail with exception
|
|
# cmake --build build -j4 --config ${{ matrix.build_type }} --target check.geometry_unstable
|
|
# Compile. Fail with exception
|
|
# cmake --build build -j4 --config ${{ matrix.build_type }} --target check.linear_unstable
|
|
# Compile. Fail with exception
|
|
# cmake --build build -j4 --config ${{ matrix.build_type }} --target check.discrete_unstable
|
|
# Compile. Fail with exception
|
|
# cmake --build build -j4 --config ${{ matrix.build_type }} --target check.dynamics_unstable
|
|
# Compile. Fail with exception
|
|
# cmake --build build -j4 --config ${{ matrix.build_type }} --target check.nonlinear_unstable
|
|
# Compile. Fail with exception
|
|
# cmake --build build -j4 --config ${{ matrix.build_type }} --target check.slam_unstable
|
|
# Compile. Fail with exception
|
|
# cmake --build build -j4 --config ${{ matrix.build_type }} --target check.partition
|
|
|
|
# Run all tests
|
|
# cmake --build build -j1 --config ${{ matrix.build_type }} --target check
|