Skip to content

Commit

Permalink
Add first GitHub Actions workflow
Browse files Browse the repository at this point in the history
This resembles what we had in Travis, albeit simpler. We can add more
cases if we want to in the future though.

Signed-off-by: Rodrigo Tobar <[email protected]>
  • Loading branch information
rtobar committed Jul 10, 2024
1 parent cbf1c26 commit c32d109
Showing 1 changed file with 69 additions and 0 deletions.
69 changes: 69 additions & 0 deletions .github/workflows/build-and-test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: Build and run tests
on: [push, pull_request]

env:
CI_BUILD_DIR: build
CMAKE_PREFIX_PATH: 3rdparty/cxxtest

jobs:
build_and_test:
name: Build and test. OS=${{ matrix.os }}, build=${{ matrix.poor_build && 'poor' || 'rich' }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: ubuntu-latest
CXX: g++
omp: true
- os: ubuntu-latest
CXX: g++
poor_build: true
- os: ubuntu-latest
CXX: g++
use_r: true
- os: ubuntu-latest
CXX: clang++
omp: true
- os: macos-latest
CXX: clang++
omp: false

steps:
- uses: actions/checkout@v4
with:
submodules: true

- name: Install system dependencies (Linux)
env:
REQUIRED_DEPS: ninja-build
OPTIONAL_DEPS: ${{ ! matrix.poor_build && 'libfftw3-dev opencl-headers' || '' }}
MATH_DEPS: ${{ matrix.use_r && 'r-mathlib' || 'libgsl-dev' }}
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
sudo apt install $REQUIRED_DEPS $MATH_DEPS $OPTIONAL_DEPS
- name: Install system dependencies (MacOS)
if: ${{ matrix.os == 'macos-latest' }}
run: |
brew install ninja gsl fftw
- name: Configure
env:
LIBPROFIT_NO_OPENMP: ${{ matrix.omp && 'OFF' || 'ON' }}
LIBPROFIT_USE_R: ${{ matrix.use_r && 'ON' || 'OFF' }}
CMAKE_EXTRA_FLAGS: ${{ matrix.poor_build && '-DLIBPROFIT_NO_OPENCL=ON -DLIBPROFIT_NO_OPENMP=ON -DLIBPROFIT_NO_FFTW=ON -DLIBPROFIT_NO_SIMD=ON' || '' }}
run: |
cmake -B ${CI_BUILD_DIR} -G Ninja \
-DLIBPROFIT_NO_OPENMP=$LIBPROFIT_NO_OPENMP \
-DLIBPROFIT_TEST=ON \
-DLIBPROFIT_USE_R=$LIBPROFIT_USE_R \
$CMAKE_EXTRA_FLAGS
- name: Build
run: cmake --build ${CI_BUILD_DIR}

# Let MacOS tests fail until OpenCL issues are identified
- name: Run unit tests
run: |
cd ${CI_BUILD_DIR}
ctest --output-on-failure || ${{ matrix.os == 'macos-latest' && 'true' || 'false' }}

0 comments on commit c32d109

Please sign in to comment.