Skip to content

webui-1.10

webui-1.10 #1436

name: Meson Test (Linux GCC)
on:
push:
branches: [ "main" ]
pull_request:
branches: []
jobs:
test-linux-gcc:
strategy:
matrix:
dep: ["apt", "source"]
gcc-ver: [7, 9, 11, 13]
include:
- os: ubuntu-20.04
gcc_ver: 7
- os: ubuntu-20.04
gcc_ver: 9
- os: ubuntu-22.04
gcc_ver: 11
- os: ubuntu-24.04
gcc_ver: 13
- dep: static
os: ubuntu-20.04
gcc_ver: 9
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v4
# - run: git submodule update --init
# if: matrix.dep == 'submodule'
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y ninja-build
sudo apt-get install -y gcc-${{matrix.gcc_ver}} g++-${{matrix.gcc_ver}}
if [[ ${{matrix.dep}} = apt ]]; then sudo apt-get install -y libspdlog-dev libjpeg-dev libpng-dev libwebp-dev; fi
if [[ ${{matrix.dep}} = apt ]]; then sudo apt-get install -y libopencv-dev googletest; fi
if [[ ${{matrix.dep}} = apt ]] && [[ ${{matrix.os}} = ubuntu-22.04 ]]; then sudo apt-get install -y libcli11-dev; fi
if [[ ${{matrix.dep}} = apt ]] && [[ ${{matrix.os}} = ubuntu-24.04 ]]; then sudo apt-get install -y libcli11-dev libmsgpack-cxx-dev; fi
- name: Install meson
run: pip install meson || pip install --break-system-packages meson
- name: Setup Meson
env:
CC: gcc-${{matrix.gcc_ver}}
CXX: g++-${{matrix.gcc_ver}}
run: >
meson setup build
--buildtype=debug
$([[ ${{matrix.dep}} = apt ]] && echo -Dwrap_mode=default)
-Dtest_wait=200
$([[ ${{matrix.dep}} = static ]] && echo -Ddefault_library=static)
--prefix=${{github.workspace}}/build/install
- name: Compile
run: meson compile -C build || meson compile -C build
- name: Test
run: meson test -C build --print-errorlog
- name: Check Exported Symbol
if: matrix.dep == 'source'
run: |
bash -c "! nm -g --defined-only build/libwebcface.so | grep -v webcface | grep -v wcf | grep -v St | grep -v gnu_cxx"
bash -c "! nm -g --defined-only build/libwebcface.so | grep -v webcface | grep -v wcf | grep spdlog"
bash -c "! nm -g --defined-only build/libwebcface.so | grep -v webcface | grep -v wcf | grep crow"
bash -c "! nm -g --defined-only build/libwebcface.so | grep -v webcface | grep -v wcf | grep asio"
bash -c "! nm -g --defined-only build/libwebcface.so | grep -v webcface | grep -v wcf | grep utf8"
- name: install
run: meson install -C build
- name: Test CMake with installed package
if: matrix.dep != 'static'
working-directory: ${{github.workspace}}/.github/test
env:
CC: gcc-${{matrix.gcc_ver}}
CXX: g++-${{matrix.gcc_ver}}
run: |
cmake -B build -DCMAKE_PREFIX_PATH=${{github.workspace}}/build/install
cmake --build build
- name: Test building with pkg-config
working-directory: ${{github.workspace}}/.github/test
env:
PKG_CONFIG_PATH: ${{github.workspace}}/build/install/lib/x86_64-linux-gnu/pkgconfig
run: |
pkg-config --cflags --libs webcface
g++-${{matrix.gcc_ver}} -std=c++17 test.cc $(pkg-config --cflags --libs webcface)
gcc-${{matrix.gcc_ver}} -std=c99 test.c $(pkg-config --cflags --libs webcface) -lstdc++
- name: Test building with Meson using pkg-config
working-directory: ${{github.workspace}}/.github/test
env:
CC: gcc-${{matrix.gcc_ver}}
CXX: g++-${{matrix.gcc_ver}}
PKG_CONFIG_PATH: ${{github.workspace}}/build/install/lib/x86_64-linux-gnu/pkgconfig
run: |
meson setup buildm
meson compile -Cbuildm
- name: Test building with Meson using CMake
if: matrix.dep != 'static'
working-directory: ${{github.workspace}}/.github/test
env:
CC: gcc-${{matrix.gcc_ver}}
CXX: g++-${{matrix.gcc_ver}}
run: |
meson setup buildmc -Dcmake_prefix_path=${{github.workspace}}/build/install
meson compile -Cbuildmc