ci: add meson builds

Update the github workflows to also do meson builds for every OS.
Additionally, make every workflow execute the built mpv executable
(except for windows and FreeBSD's waf executable) to make sure that it
runs. As an aside, FreeBSD unfortunately is a bit less elegant since it
is in a VM.
This commit is contained in:
Dudemanguy 2021-11-07 13:29:11 -06:00
parent ff322864f2
commit 31780a6db5
5 changed files with 160 additions and 36 deletions

View File

@ -28,15 +28,28 @@ jobs:
run: |
sudo apt-get update
sudo apt-get install -y autoconf automake pkg-config g++-mingw-w64 gcc-multilib nasm yasm
# Meson from apt is too old
pip3 install --no-input meson ninja
./bootstrap.py
- name: Build
- name: Build with meson
run: |
./ci/build-mingw64.sh
./ci/build-mingw64.sh meson
env:
TARGET: ${{ matrix.target }}
- name: Print configure log
- name: Print meson log
if: ${{ failure() }}
run: |
cat ./build/meson-logs/meson-log.txt
- name: Build with waf
run: |
./ci/build-mingw64.sh waf
env:
TARGET: ${{ matrix.target }}
- name: Print waf log
if: ${{ failure() }}
run: |
cat ./build/config.log
@ -66,16 +79,28 @@ jobs:
- name: Install dependencies
run: |
brew update
brew install autoconf automake pkg-config libtool python freetype fribidi little-cms2 luajit libass ffmpeg
brew install autoconf automake pkg-config libtool python freetype fribidi little-cms2 luajit libass ffmpeg meson
- name: Build
- name: Build with meson
run: |
./ci/build-macos.sh
./ci/build-macos.sh meson
env:
CC: "${{ matrix.cc }}"
TRAVIS_OS_NAME: "${{ matrix.os }}"
- name: Print configure log
- name: Print meson log
if: ${{ failure() }}
run: |
cat ./build/meson-logs/meson-log.txt
- name: Build with waf
run: |
./ci/build-macos.sh waf
env:
CC: "${{ matrix.cc }}"
TRAVIS_OS_NAME: "${{ matrix.os }}"
- name: Print waf log
if: ${{ failure() }}
run: |
cat ./build/config.log
@ -101,12 +126,25 @@ jobs:
- name: Install dependencies
run: |
./bootstrap.py
# TODO: switch back to zypper when OpenSuse updates Meson
# zypper -n install meson
zypper -n install python3-pip
pip install --no-input meson ninja
- name: Build
- name: Build with meson
run: |
./ci/build-tumbleweed.sh
./ci/build-tumbleweed.sh meson
- name: Print configure log
- name: Print meson log
if: ${{ failure() }}
run: |
cat ./build/meson-logs/meson-log.txt
- name: Build with waf
run: |
./ci/build-tumbleweed.sh waf
- name: Print waf log
if: ${{ failure() }}
run: |
cat ./build/config.log
@ -122,6 +160,7 @@ jobs:
prepare: |
# Requested in ci/build-freebsd.sh
pkg install -y \
cmake \
evdev-proto \
ffmpeg \
libplacebo \
@ -151,5 +190,8 @@ jobs:
uchardet \
v4l_compat \
#
# Meson from pkg is too old
python3 -m ensurepip
pip3 install --no-input meson ninja
run: |
./ci/build-freebsd.sh

View File

@ -5,6 +5,24 @@ export CFLAGS="$CFLAGS -isystem/usr/local/include"
export CXXFLAGS="$CXXFLAGS -isystem/usr/local/include"
export LDFLAGS="$LDFLAGS -L/usr/local/lib"
meson build \
-Dlibmpv=true \
-Dlua=enabled \
-Degl-drm=enabled \
-Dopenal=enabled \
-Dsdl2=enabled \
-Dvaapi-wayland=enabled \
-Dvdpau=enabled \
-Dvulkan=enabled \
-Doss-audio=enabled \
$(pkg info -q v4l_compat && echo -Ddvbin=enabled) \
$(pkg info -q libdvdnav && echo -Ddvdnav=enabled) \
$(pkg info -q libcdio-paranoia && echo -Dcdda=enabled) \
$NULL
meson compile -C build
./build/mpv
if [ ! -e "./waf" ] ; then
python3 ./bootstrap.py
fi

View File

@ -10,18 +10,35 @@ if [[ -d "./build/${MPV_VARIANT}" ]] ; then
rm -rf "./build/${MPV_VARIANT}"
fi
if [[ ! -e "./waf" ]] ; then
python3 ./bootstrap.py
if [[ $1 = "meson" ]]; then
PKG_CONFIG_PATH="${FFMPEG_SYSROOT}/lib/pkgconfig/" CC="${CC}" CXX="${CXX}" \
meson build \
-Dprefix="${MPV_INSTALL_PREFIX}" \
-Dlibmpv=true \
-D{gl,iconv,lcms2,lua,jpeg,plain-gl,zlib}=enabled \
-D{cocoa,coreaudio,gl-cocoa,macos-cocoa-cb,macos-touchbar,videotoolbox-gl}=enabled
meson compile -C build -j4
meson install -C build
./build/mpv
fi
PKG_CONFIG_PATH="${FFMPEG_SYSROOT}/lib/pkgconfig/" CC="${CC}" CXX="${CXX}" python3 \
./waf configure \
--variant="${MPV_VARIANT}" \
--prefix="${MPV_INSTALL_PREFIX}" \
--enable-{gl,iconv,lcms2,libmpv-shared,lua,jpeg,plain-gl,zlib} \
--enable-{cocoa,coreaudio,gl-cocoa,macos-cocoa-cb,macos-touchbar,videotoolbox-gl} \
--swift-flags="${CI_SWIFT_FLAGS}"
if [[ $1 = "waf" ]]; then
if [[ ! -e "./waf" ]] ; then
python3 ./bootstrap.py
fi
python3 ./waf build --variant="${MPV_VARIANT}" -j4
PKG_CONFIG_PATH="${FFMPEG_SYSROOT}/lib/pkgconfig/" CC="${CC}" CXX="${CXX}" python3 \
./waf configure \
--variant="${MPV_VARIANT}" \
--prefix="${MPV_INSTALL_PREFIX}" \
--enable-{gl,iconv,lcms2,libmpv-shared,lua,jpeg,plain-gl,zlib} \
--enable-{cocoa,coreaudio,gl-cocoa,macos-cocoa-cb,macos-touchbar,videotoolbox-gl} \
--swift-flags="${CI_SWIFT_FLAGS}"
python3 ./waf install --variant="${MPV_VARIANT}"
python3 ./waf build --variant="${MPV_VARIANT}" -j4
python3 ./waf install --variant="${MPV_VARIANT}"
./build/mpv
fi

View File

@ -154,9 +154,39 @@ if [ ! -e "$prefix_dir/lib/libluajit-5.1.a" ]; then
fi
## mpv
PKG_CONFIG=pkg-config CFLAGS="-I'$prefix_dir/include'" LDFLAGS="-L'$prefix_dir/lib'" \
python3 ./waf configure \
--enable-libmpv-shared --lua=luajit \
--enable-{shaderc,spirv-cross,d3d11}
python3 ./waf build --verbose
if [ $1 = "meson" ]; then
CPU="x86_64"
mkdir -p "${TARGET}_mingw_build" && pushd "${TARGET}_mingw_build"
cat > mingw64_crossfile << EOF
[binaries]
c = '${CC}'
cpp = '${CXX}'
ar = '${AR}'
strip = '${TARGET}-strip'
pkgconfig = 'pkg-config'
exe_wrapper = 'wine64' # A command used to run generated executables.
windres = '${TARGET}-windres'
[host_machine]
system = 'windows'
cpu_family = '${CPU}'
cpu = '${CPU}'
endian = 'little'
EOF
CFLAGS="-I'$prefix_dir/include'" LDFLAGS="-L'$prefix_dir/lib'" \
meson .. --cross-file mingw64_crossfile --libdir lib \
-Dlibmpv=true -Dlua=luajit -D{shaderc,spirv-cross,d3d11}=enabled
meson compile
fi
if [ $1 = "waf" ]; then
PKG_CONFIG=pkg-config CFLAGS="-I'$prefix_dir/include'" LDFLAGS="-L'$prefix_dir/lib'" \
python3 ./waf configure \
--enable-libmpv-shared --lua=luajit \
--enable-{shaderc,spirv-cross,d3d11}
python3 ./waf build --verbose
fi

View File

@ -1,13 +1,30 @@
#!/bin/sh
set -e
python3 ./waf configure \
--enable-cdda \
--enable-dvbin \
--enable-dvdnav \
--enable-libarchive \
--enable-libmpv-shared \
--enable-manpage-build \
--enable-shaderc \
--enable-vulkan
python3 ./waf build --verbose
if [ "$1" = "meson" ]; then
meson build \
-Dcdda=enabled \
-Ddvbin=enabled \
-Ddvdnav=enabled \
-Dlibarchive=enabled \
-Dlibmpv=true \
-Dmanpage-build=enabled \
-Dshaderc=enabled \
-Dvulkan=enabled
meson compile -C build --verbose
./build/mpv
fi
if [ "$1" = "waf" ]; then
python3 ./waf configure \
--enable-cdda \
--enable-dvbin \
--enable-dvdnav \
--enable-libarchive \
--enable-libmpv-shared \
--enable-manpage-build \
--enable-shaderc \
--enable-vulkan
python3 ./waf build --verbose
./build/mpv
fi