Skip to content

ci: Run tests, add sanitizer build configurations that run tests too #20

ci: Run tests, add sanitizer build configurations that run tests too

ci: Run tests, add sanitizer build configurations that run tests too #20

Workflow file for this run

name: CI
on: [push, pull_request]
jobs:
linux-autotools:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Build
run: |
./autogen.sh
./configure --enable-example
make -j$(nproc) CFLAGS="-g -O2 -Werror" CXXFLAGS="-g -O2 -Werror"
- name: Run tests
run: |
sudo apt-get install --no-install-recommends ffmpeg
./test/run-test.sh
linux-cmake:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Build
run: |
cmake . -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_PROGRAMS=YES -DCMAKE_C_FLAGS="-Werror" -DCMAKE_CXX_FLAGS="-Werror -Wno-stringop-overflow"
cmake --build build
- name: Run tests
run: |
sudo apt-get install --no-install-recommends ffmpeg
cd build
../test/run-test.sh
linux-sanitizers-gcc-autotools:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Build
run: |
./autogen.sh
FLAGS="-fsanitize=address,undefined -fno-omit-frame-pointer -fno-sanitize=shift-base -DDEBUG -fno-sanitize-recover=all"
CC="gcc $FLAGS" CXX="g++ $FLAGS" ./configure --enable-example
make -j$(nproc)
- name: Run tests
run: |
sudo apt-get install --no-install-recommends ffmpeg
./test/run-test.sh
linux-sanitizers-clang-cmake:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Build
run: |
FLAGS="-fsanitize=address,undefined -fno-omit-frame-pointer -fno-sanitize=shift-base -DDEBUG -fno-sanitize-recover=all -fno-sanitize=vptr -fno-sanitize=function"
cmake . -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_PROGRAMS=YES -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_FLAGS="$FLAGS" -DCMAKE_CXX_FLAGS="$FLAGS"
cmake --build build
- name: Run tests
run: |
sudo apt-get install --no-install-recommends ffmpeg
cd build
../test/run-test.sh
macos-autotools:
runs-on: macos-latest
steps:
- name: Install autotools
run: |
brew install automake
- name: Checkout sources
uses: actions/checkout@v4
- name: Build
run: |
./autogen.sh
./configure --enable-example
make -j$(sysctl -n hw.ncpu) CFLAGS="-g -O2 -Werror" CXXFLAGS="-g -O2 -Werror -Wno-deprecated-declarations"
macos-cmake:
runs-on: macos-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Build
run: |
cmake . -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_PROGRAMS=YES -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DCMAKE_C_FLAGS="-Werror" -DCMAKE_CXX_FLAGS="-Werror -Wno-deprecated-declarations"
cmake --build build
mingw-cross-autotools:
runs-on: ubuntu-latest
steps:
- name: Install cross compiler
run: |
sudo apt-get install g++-mingw-w64-x86-64
- name: Checkout sources
uses: actions/checkout@v4
- name: Build
run: |
./autogen.sh
./configure --enable-example --host=x86_64-w64-mingw32
make -j$(nproc) CFLAGS="-g -O2 -Werror" CXXFLAGS="-g -O2 -Werror"
mingw-cross-cmake:
runs-on: ubuntu-latest
steps:
- name: Install cross compiler
run: |
sudo apt-get install g++-mingw-w64-x86-64
- name: Checkout sources
uses: actions/checkout@v4
- name: Build
run: |
cmake . -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_PROGRAMS=YES -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ -DCMAKE_CROSSCOMPILING=TRUE -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_C_FLAGS="-Werror" -DCMAKE_CXX_FLAGS="-Werror -Wno-stringop-overflow"
cmake --build build
msys-cmake:
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
steps:
- uses: msys2/setup-msys2@v2
with:
msystem: mingw64
update: true
install: >-
git
mingw-w64-x86_64-toolchain
mingw-w64-x86_64-cmake
mingw-w64-x86_64-ninja
- name: Checkout sources
uses: actions/checkout@v4
- name: Build
run: |
cmake . -G Ninja -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_PROGRAMS=YES
cmake --build build
msvc-cmake:
runs-on: windows-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Build
run: |
cmake . -B build -DBUILD_PROGRAMS=YES
cmake --build build --config Release
msvc-cmake-ninja-arm:
runs-on: windows-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Set up the environment
uses: ilammy/msvc-dev-cmd@v1
with:
arch: amd64_arm
- name: Build
run: |
cmake . -G Ninja -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_PROGRAMS=YES
cmake --build build
msvc-cmake-arm64:
runs-on: windows-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Build
run: |
cmake . -B build -DBUILD_PROGRAMS=YES -A ARM64
cmake --build build --config Release
llvm-mingw:
runs-on: ubuntu-latest
steps:
- name: Install llvm-mingw
run: |
wget https://github.com/mstorsjo/llvm-mingw/releases/download/20231003/llvm-mingw-20231003-ucrt-ubuntu-20.04-x86_64.tar.xz
tar -Jxvf llvm-mingw-*-ucrt-ubuntu-*-x86_64.tar.xz
rm llvm-mingw-*.tar.xz
sudo mv llvm-mingw-* /opt/llvm-mingw
echo /opt/llvm-mingw/bin >> $GITHUB_PATH
- name: Checkout sources
uses: actions/checkout@v4
- name: Build fdk-aac
run: |
./autogen.sh
./configure --host=aarch64-w64-mingw32 --enable-example
make -j$(nproc) CFLAGS="-g -O2 -Werror" CXXFLAGS="-g -O2 -Werror"
linux-ffmpeg:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Build fdk-aac
run: |
./autogen.sh
mkdir build
cd build
../configure --enable-example --prefix=$(pwd)/../prefix
make -j$(nproc)
make -j$(nproc) install
- name: Checkout FFmpeg
uses: actions/checkout@v4
with:
repository: ffmpeg/ffmpeg
path: ffmpeg
- name: Build FFmpeg
run: |
sudo apt-get install -y nasm
cd ffmpeg
PKG_CONFIG_PATH=$(pwd)/../prefix/lib/pkgconfig ./configure --enable-libfdk-aac --enable-nonfree
make -j$(nproc)