dlib/.github/workflows/build_cpp.yml
pfeatherstone 3ca155da68
[FFMPEG] support ffmpeg 7 (#2987)
* support ffmpeg 7

* you need assembler

---------

Co-authored-by: pfeatherstone <pfeatherstone@pf>
2024-08-01 08:48:47 -04:00

275 lines
8.5 KiB
YAML

name: C++
on:
push:
branches:
- master
paths:
- ".github/workflows/build_cpp.yml"
- "**.cpp"
- "**.h"
- "**.c"
- "**.cu"
- "**.cmake"
- "**CMakeLists.txt"
pull_request:
branches:
- master
paths:
- ".github/workflows/build_cpp.yml"
- "**.cpp"
- "**.h"
- "**.c"
- "**.cu"
- "**.cmake"
- "**CMakeLists.txt"
defaults:
run:
shell: bash
working-directory: dlib/test
jobs:
ubuntu-latest-gcc-default-cmake-3-8-ffmpeg5:
runs-on: 'ubuntu-latest'
steps:
- uses: actions/checkout@v2
- name: Install dependencies
run: |
sudo apt update
sudo apt install libwebp-dev make yasm
- name: Cache cmake 3.8.0
uses: actions/cache@v3
id: cache-cmake-download
with:
# cache this folder:
path: ~/cmake-3.8.0-Linux-x86_64
key: cmake-3.8.0_try3
- run: |
# Get the minimum version of cmake dlib supports
wget https://cmake.org/files/v3.8/cmake-3.8.0-Linux-x86_64.tar.gz
tar -xf cmake-3.8.0-Linux-x86_64.tar.gz -C ~
if: steps.cache-cmake-download.outputs.cache-hit != 'true'
- name: Cache FFmpeg 5
uses: actions/cache@v3
id: cache-ffmpeg5
with:
path: /home/runner/ffmpeg-n5.1.3_installation
key: ffmpeg-n5.1.3_try4
- name: Build FFmpeg 5
if: steps.cache-ffmpeg5.outputs.cache-hit != 'true'
run: |
wget https://github.com/FFmpeg/FFmpeg/archive/refs/tags/n5.1.3.tar.gz
tar -xf n5.1.3.tar.gz
cd FFmpeg-n5.1.3
./configure --prefix=/home/runner/ffmpeg-n5.1.3_installation --disable-doc --disable-programs
make -j4
make install
cd ..
- name: Configure
run: |
mkdir build
cd build
~/cmake-3.8.0-Linux-x86_64/bin/cmake -DCMAKE_PREFIX_PATH=/home/runner/ffmpeg-n5.1.3_installation ..
- name: Build just tests
run: |
cd build
make -j4 dtest
- name: Test
run: build/dtest --runall -q
- name: Build examples, etc
run: |
cd build
make -j2
ubuntu-latest-gcc-11-blas:
runs-on: 'ubuntu-latest'
steps:
- uses: actions/checkout@v2
- name: Install dependencies
run: |
sudo apt update
sudo apt install libwebp-dev libavformat-dev libavcodec-dev libavdevice-dev libavfilter-dev libswresample-dev libswscale-dev libavutil-dev
sudo apt install libopenblas-dev liblapack-dev
- name: Install gcc 11
run: |
sudo apt install gcc-11 g++-11
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 --slave /usr/bin/g++ g++ /usr/bin/g++-11 --slave /usr/bin/gcov gcov /usr/bin/gcov-11
- name: Configure
run: cmake ${{ github.workspace }}/dlib/test -B build
- name: Build just tests
run: cmake --build build --config Release --target dtest --parallel 4
- name: Test
run: build/dtest --runall -q
- name: Build examples, etc
run: cmake --build build --config Release --parallel 2
# Test the BLAS bindings
- name: Configure BLAS binding tests
run: cmake ${{ github.workspace }}/dlib/test/blas_bindings -B build_blas_bindings
- name: Build blas binding tests
run: cmake --build build_blas_bindings --config Debug --parallel 4
- name: Test BLAS bindings
run: build_blas_bindings/dtest --runall -q
ubuntu-20_04-gcc-7:
runs-on: 'ubuntu-20.04'
steps:
- uses: actions/checkout@v2
- name: Install dependencies
run: |
sudo apt update
sudo apt install libwebp-dev make yasm
- name: Install gcc 7
run: |
sudo apt install gcc-7 g++-7
- name: Cache FFmpeg 3.2.18
uses: actions/cache@v3
id: cache-ffmpeg3
with:
path: /home/runner/ffmpeg-n3.2.18_installation
key: ffmpeg-n3.2.18_try1
- name: Build FFmpeg 3.2.18
if: steps.cache-ffmpeg3.outputs.cache-hit != 'true'
run: |
wget https://github.com/FFmpeg/FFmpeg/archive/refs/tags/n3.2.18.tar.gz
tar -xf n3.2.18.tar.gz
cd FFmpeg-n3.2.18
./configure --prefix=/home/runner/ffmpeg-n3.2.18_installation --disable-doc --disable-programs
make -j4
make install
cd ..
- name: Configure
run: |
export CC=/usr/bin/gcc-7
export CXX=/usr/bin/g++-7
cmake ${{ github.workspace }}/dlib/test -B build -DCMAKE_PREFIX_PATH=/home/runner/ffmpeg-n3.2.18_installation
- name: Build just tests
run: cmake --build build --config Release --target dtest --parallel 4
- name: Test
run: build/dtest --runall -q
- name: Build examples, etc
run: cmake --build build --config Release --parallel 2
# Test cmake scrips can build standalone dlib as a shared library
- name: Configure dlib as shared library
run: cmake ${{ github.workspace }}/dlib -B build_dlib_shared -DBUILD_SHARED_LIBS=1 -DCMAKE_PREFIX_PATH=/home/runner/ffmpeg-n3.2.18_installation
- name: Build dlib as shared library
run: cmake --build build_dlib_shared --parallel 4
ubuntu-latest-clang-default-avx:
runs-on: 'ubuntu-latest'
steps:
- uses: actions/checkout@v2
- name: Install dependencies
run: |
sudo apt update
sudo apt install libwebp-dev libavformat-dev libavcodec-dev libavdevice-dev libavfilter-dev libswresample-dev libswscale-dev libavutil-dev
- name: Configure
run: |
export CC=/usr/bin/clang
export CXX=/usr/bin/clang++
cmake ${{ github.workspace }}/dlib/test -B build -DUSE_AVX_INSTRUCTIONS=1
- name: Build just tests
run: cmake --build build --config Release --target dtest --parallel 4
- name: Test
run: build/dtest --runall -q
- name: Build examples, etc
run: cmake --build build --config Release --parallel 2
ubuntu-latest-ffmpeg7:
runs-on: 'ubuntu-latest'
steps:
- uses: actions/checkout@v2
- name: Install dependencies
run: |
sudo apt update
sudo apt install make yasm
- name: Cache FFmpeg 7
uses: actions/cache@v3
id: cache-ffmpeg7
with:
path: /home/runner/ffmpeg-n7.0.1_installation
key: ffmpeg-n7.0.1_try2
- name: Build FFmpeg 7
if: steps.cache-ffmpeg7.outputs.cache-hit != 'true'
run: |
wget https://github.com/FFmpeg/FFmpeg/archive/refs/tags/n7.0.1.tar.gz
tar -xf n7.0.1.tar.gz
cd FFmpeg-n7.0.1
./configure --prefix=/home/runner/ffmpeg-n7.0.1_installation --disable-doc --disable-programs
make -j4
make install
cd ..
- name: Configure
run: cmake . -B build -DCMAKE_PREFIX_PATH=/home/runner/ffmpeg-n7.0.1_installation
- name: Build ffmpeg example
run: cmake --build build --config Release --target ffmpeg_video_muxing_ex --parallel 4
windows-latest:
runs-on: 'windows-latest'
steps:
- uses: actions/checkout@v2
- name: Configure
run: |
# don't use CMake 3.25.0 https://gitlab.kitware.com/cmake/cmake/-/issues/23975
pip3 install cmake==3.24.0
cmake . -B build
- name: Build just tests
run: cmake --build build --config Release --target dtest --parallel 4
- name: Test
run: build/Release/dtest.exe --runall -q
- name: Build ancillary tools
run: cmake --build build --config Release --target imglab htmlify dtoc --parallel 4
windows-2019:
runs-on: 'windows-2019'
steps:
- uses: actions/checkout@v2
- name: Configure
run: |
# don't use CMake 3.25.0 https://gitlab.kitware.com/cmake/cmake/-/issues/23975
pip3 install cmake==3.24.0
cmake . -B build
- name: Build just tests
run: cmake --build build --config Debug --target dtest --parallel 4
- name: Build ancillary tools
run: cmake --build build --config Release --target imglab htmlify dtoc --parallel 4
# Disable this because macos targets aren't working on github actions right now.
#macos-latest:
# runs-on: 'macos-latest'
# steps:
# - uses: actions/checkout@v2
# - name: Configure
# # MacOS machines often come with low quality BLAS libraries installed, so don't use those.
# run: cmake ${{ github.workspace }}/dlib/test -B build -DDLIB_USE_BLAS=0 -DDLIB_USE_LAPACK=0
# - name: Build just tests
# run: cmake --build build --config Release --target dtest --parallel 4
# - name: Test
# run: build/dtest --runall --no_test_timer -q
# - name: Build examples, etc
# run: cmake --build build --config Release --parallel 2