Skip to content

add cflow constants #134

add cflow constants

add cflow constants #134

Workflow file for this run

name: Unix Build
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
formatting:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: Install clang-format
env:
DEBIAN_FRONTEND: noninteractive
run: |
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 14
rm llvm.sh
sudo apt-get install -y --no-install-recommends clang-format-14
- name: Format files
run: find test include -type f -not -name catch.hpp -a \( -name "*.cc" -o -name "*.h" \) -print0 | xargs -0 clang-format-14 -i
- name: Check for differences
run: |
git status --porcelain
git status --porcelain | xargs -I {} -0 test -z \"{}\"
build:
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
config:
- name: MacOS Release
cxx: clang++
cc: clang
mode: Release
cxxflags: -stdlib=libc++
os: macos-latest
- name: GCC 10 Release
cxx: g++-10
cc: gcc-10
mode: Release
os: ubuntu-20.04
- name: GCC 10 Release
cxx: g++-10
cc: gcc-10
mode: Release
os: ubuntu-20.04
- name: GCC 10 Debug
cxx: g++-10
cc: gcc-10
mode: Debug
os: ubuntu-20.04
- name: Clang 14 Release
cxx: clang++-14
cc: clang-14
mode: Release
cxxflags: -stdlib=libc++
ldflags: -lc++abi
os: ubuntu-20.04
- name: Clang Tidy
cxx: clang++-14
cc: clang-14
mode: Debug
cxxflags: -stdlib=libc++
ldflags: -lc++abi
lint: true
os: ubuntu-20.04
- key: GCC 10 Sanitizer
cxx: g++-10
cc: gcc-10
mode: Release
cflags: -fsanitize=address,undefined -fno-omit-frame-pointer
cxxflags: -fsanitize=address,undefined -fno-omit-frame-pointer
os: ubuntu-20.04
env:
DEBIAN_FRONTEND: noninteractive
UBSAN_OPTIONS: halt_on_error=1:abort_on_error=1
steps:
- uses: actions/checkout@v2
- uses: seanmiddleditch/gha-setup-ninja@master
if: matrix.config.os == 'macos-latest'
# ==== INSTALL ====
- name: Update APT
if: matrix.config.os != 'macos-latest'
run: sudo apt-get update
- name: Install LLVM
if: matrix.config.os != 'macos-latest' && matrix.config.cc == 'clang-14'
run: |
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 14
rm llvm.sh
sudo apt-get install -y --no-install-recommends libc++-14-dev libc++abi-14-dev clang-tidy-14 libunwind-14-dev llvm-14
- name: Install Valgrind
if: matrix.config.mode == 'Debug' && matrix.config.cc == 'gcc-10'
run: sudo apt-get install -y --no-install-recommends valgrind
- name: Install Ninja
if: matrix.config.os != 'macos-latest'
run: sudo apt-get install -y --no-install-recommends ninja-build
# ==== BUILD ====
- name: CMake
run: |
cmake \
-G Ninja -S . -B build \
-DCMAKE_C_COMPILER=${{ matrix.config.cc }} \
-DCMAKE_CXX_COMPILER=${{ matrix.config.cxx }} \
-DCMAKE_C_FLAGS="${{ matrix.config.cflags }}" \
-DCMAKE_CXX_FLAGS="${{ matrix.config.cxxflags }}" \
-DCMAKE_CXX_FLAGS_DEBUG="" \
-DCMAKE_CXX_LINKER_FLAGS=${{ matrix.config.ldflags }}" \
-DCMAKE_CXX_EXE_LINKER_FLAGS="${{ matrix.config.ldflags }} \
-DCMAKE_BUILD_TYPE=${{ matrix.config.mode }} \
-UTL_LINT=${{ matrix.config.lint }}
- name: Build
run: |
cmake --build build --target utl-test
# ==== TESTS ====
- name: Run Tests
run: ./build/utl-test
# ==== VALGRIND ====
- name: Run Tests Valgrind
if: matrix.config.mode == 'Debug' && matrix.config.cc == 'gcc-10'
run: valgrind --error-exitcode=1 --show-reachable=yes --leak-check=full ./build/utl-test