87 lines
3.6 KiB
YAML
87 lines
3.6 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 }}
|
||
BOOST_ROOT: C:\hostedtoolcache\windows\Boost\1.67.0\x86_64
|
||
|
||
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: Install
|
||
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: Install Boost
|
||
run: |
|
||
# Snippet from: https://github.com/actions/virtual-environments/issues/2667
|
||
# Use the boost_1_67_0-msvc-14.1-64.exe for Windows 2016
|
||
$Url = "https://sourceforge.net/projects/boost/files/boost-binaries/1.67.0/boost_1_67_0-msvc-14.1-64.exe"
|
||
(New-Object System.Net.WebClient).DownloadFile($Url, "$env:TEMP\boost.exe")
|
||
Start-Process -Wait -FilePath "$env:TEMP\boost.exe" "/SILENT","/SP-","/SUPPRESSMSGBOXES","/DIR=C:\hostedtoolcache\windows\Boost\1.67.0\x86_64"
|
||
|
||
- name: Checkout
|
||
uses: actions/checkout@v2
|
||
|
||
- name: Build
|
||
run: |
|
||
cmake -E remove_directory build
|
||
cmake -B build -S . -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF -DBOOST_ROOT="${env:BOOST_ROOT}" -DBOOST_INCLUDEDIR="${env:BOOST_ROOT}\boost\include" -DBOOST_LIBRARYDIR="${env:BOOST_ROOT}\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
|