85 lines
3.4 KiB
YAML
85 lines
3.4 KiB
YAML
name: Windows CI
|
|
|
|
on: [pull_request]
|
|
|
|
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 }}
|
|
strategy:
|
|
fail-fast: false
|
|
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: [
|
|
#TODO This build keeps timing out, need to understand why.
|
|
# windows-2016-cl,
|
|
windows-2019-cl,
|
|
]
|
|
|
|
build_type: [Debug, Release]
|
|
build_unstable: [ON]
|
|
include:
|
|
|
|
#TODO This build keeps timing out, need to understand why.
|
|
# - name: windows-2016-cl
|
|
# os: windows-2016
|
|
# compiler: cl
|
|
|
|
- name: windows-2019-cl
|
|
os: windows-2019
|
|
compiler: cl
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@master
|
|
- name: Install (Windows)
|
|
if: runner.os == 'Windows'
|
|
shell: powershell
|
|
run: |
|
|
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
|
|
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 }}" >> $GITHUB_ENV
|
|
echo "CXX=${{ matrix.compiler }}" >> $GITHUB_ENV
|
|
}
|
|
# Scoop modifies the PATH so we make the modified PATH global.
|
|
echo "$env:PATH" >> $GITHUB_PATH
|
|
- name: Build (Windows)
|
|
if: runner.os == 'Windows'
|
|
run: |
|
|
cmake -E remove_directory build
|
|
echo "BOOST_ROOT_1_72_0: ${env:BOOST_ROOT_1_72_0}"
|
|
cmake -B build -S . -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF -DBOOST_ROOT="${env:BOOST_ROOT_1_72_0}" -DBOOST_INCLUDEDIR="${env:BOOST_ROOT_1_72_0}\boost\include" -DBOOST_LIBRARYDIR="${env:BOOST_ROOT_1_72_0}\lib"
|
|
cmake --build build --config ${{ matrix.build_type }} --target gtsam
|
|
cmake --build build --config ${{ matrix.build_type }} --target gtsam_unstable
|
|
cmake --build build --config ${{ matrix.build_type }} --target wrap
|
|
cmake --build build --config ${{ matrix.build_type }} --target check.base
|
|
cmake --build build --config ${{ matrix.build_type }} --target check.base_unstable
|
|
cmake --build build --config ${{ matrix.build_type }} --target check.linear
|
|
- name: Upload build directory
|
|
uses: actions/upload-artifact@v2
|
|
if: matrix.build_type == 'Release'
|
|
with:
|
|
name: gtsam-${{ matrix.name }}-${{ matrix.build_type }}
|
|
path: ${{ github.workspace }}/build/
|