Files
ceres-solver/.github/workflows/linux.yml
T
Sameer Agarwal 06bfe6ffac Remove OpenMP and No threading backends.
Since c++11, we can depend on C++ threads always being available.
With the recent work on the performance of CXX threading, the
additional complexity of maintaining multiple backends for some
minor performance delta is not worth it

https://github.com/ceres-solver/ceres-solver/issues/886

Change-Id: Idee480b22a498daec9c4366da8589aa58eaf36a1
2022-11-27 21:06:33 -08:00

88 lines
2.4 KiB
YAML

name: Linux
on: [push, pull_request]
jobs:
build:
name: ${{matrix.os}}-${{matrix.build_type}}-${{matrix.lib}}
runs-on: ubuntu-latest
container: ${{matrix.os}}
defaults:
run:
shell: bash -e -o pipefail {0}
env:
CCACHE_DIR: ${{github.workspace}}/ccache
CMAKE_GENERATOR: Ninja
DEBIAN_FRONTEND: noninteractive
strategy:
fail-fast: true
matrix:
os:
- ubuntu:20.04
- ubuntu:22.04
build_type:
- Release
lib:
- shared
- static
steps:
- uses: actions/checkout@v2
- name: Setup Dependencies
run: |
apt-get update
apt-get install -y \
build-essential \
ccache \
cmake \
libbenchmark-dev \
libblas-dev \
libeigen3-dev \
libgflags-dev \
libgoogle-glog-dev \
liblapack-dev \
libmetis-dev \
libsuitesparse-dev \
ninja-build
- name: Cache Build
id: cache-build
uses: actions/cache@v2
with:
path: ${{env.CCACHE_DIR}}
key: ${{matrix.os}}-ccache-${{matrix.build_type}}-${{matrix.lib}}-${{github.run_id}}
restore-keys: ${{matrix.os}}-ccache-${{matrix.build_type}}-${{matrix.lib}}-
- name: Setup Environment
if: matrix.build_type == 'Release'
run: |
echo 'CXXFLAGS=-flto' >> $GITHUB_ENV
- name: Configure
run: |
cmake -S . -B build_${{matrix.build_type}} \
-DBUILD_SHARED_LIBS=${{matrix.lib == 'shared'}} \
-DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
-DCMAKE_C_COMPILER_LAUNCHER=$(which ccache) \
-DCMAKE_CXX_COMPILER_LAUNCHER=$(which ccache) \
-DCMAKE_INSTALL_PREFIX=${{github.workspace}}/install
- name: Build
run: |
cmake --build build_${{matrix.build_type}} \
--config ${{matrix.build_type}}
- name: Test
run: |
cd build_${{matrix.build_type}}/
ctest --config ${{matrix.build_type}} \
--output-on-failure \
-j$(nproc)
- name: Install
run: |
cmake --build build_${{matrix.build_type}}/ \
--config ${{matrix.build_type}} \
--target install