mirror of
https://github.com/ceres-solver/ceres-solver.git
synced 2026-08-29 08:34:37 +08:00
06bfe6ffac
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
88 lines
2.4 KiB
YAML
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
|