package/mpv: switch to meson from waf

Since commit fd562315, which updated waf to v2.1.1, Buildroot has
encountered issues building mpv, likely due to an outdated version of
the waf build system.

Starting with mpv v0.35, meson was introduced as an alternative to waf,
and in mpv v0.37, waf was completely removed.

This commit updates the mpv makefile to use meson, resolving the build
issues and simplifying future updates to newer versions of mpv.

All options previously used for Waf have been translated to the new
build system by replacing `--disable-feature` with `-Dfeature=disabled`
(and similarly for enabling features). Some features have special
handling:

- The `/usr` prefix is automatically passed to meson packages by
  default.
- The Android feature "has been removed since meson can detect if a
  machine is Android"[1].
- The `libmpv` parameter has been enabled in the makefile as `libmpv`
  must be built by default with mpv.
- Meson packages automatically set whether the library should be built
  statically using the `default_library` meson parameter.
- Meson automatically detects the presence of `libatomic` and passes the
  correct argument to the linker. However, it is possible to set the
  `stdatomic` meson parameter to specify whether `libatomic` must or
  must not be used.

Fixes:
    https://autobuild.buildroot.org/results/68d42441fc0da34e1bf2a4247726f5f4ec3b8e77/

[1]: 140ec21c89/DOCS/build-system-differences.md (L48)

Signed-off-by: Thomas Bonnefille <thomas.bonnefille@bootlin.com>
Tested-by: J. Neuschäfer <j.ne@posteo.net>
Signed-off-by: Julien Olivain <ju.o@free.fr>
This commit is contained in:
Thomas Bonnefille
2025-04-19 17:56:07 +02:00
committed by Julien Olivain
parent 3d90ae79a8
commit 8f69974c20

View File

@@ -14,197 +14,188 @@ MPV_LICENSE_FILES = LICENSE.GPL
MPV_CPE_ID_VENDOR = mpv
MPV_INSTALL_STAGING = YES
MPV_NEEDS_EXTERNAL_WAF = YES
# Some of these options need testing and/or tweaks
MPV_CONF_OPTS = \
--prefix=/usr \
--disable-android \
--disable-caca \
--disable-cocoa \
--disable-coreaudio \
--disable-cuda-hwaccel \
--disable-opensles \
--disable-rubberband \
--disable-uchardet \
--disable-vapoursynth
-Dcaca=disabled \
-Dcocoa=disabled \
-Dcoreaudio=disabled \
-Dcuda-hwaccel=disabled \
-Dlibmpv=true \
-Dopensles=disabled \
-Drubberband=disabled \
-Duchardet=disabled \
-Dvapoursynth=disabled
ifeq ($(BR2_REPRODUCIBLE),y)
MPV_CONF_OPTS += --disable-build-date
endif
ifeq ($(BR2_STATIC_LIBS),y)
MPV_CONF_OPTS += --disable-libmpv-shared --enable-libmpv-static
else
MPV_CONF_OPTS += --enable-libmpv-shared --disable-libmpv-static
MPV_CONF_OPTS += -Dbuild-date=false
endif
ifeq ($(BR2_PACKAGE_ALSA_LIB),y)
MPV_CONF_OPTS += --enable-alsa
MPV_CONF_OPTS += -Dalsa=enabled
MPV_DEPENDENCIES += alsa-lib
else
MPV_CONF_OPTS += --disable-alsa
MPV_CONF_OPTS += -Dalsa=disabled
endif
ifeq ($(BR2_PACKAGE_MESA3D_GBM),y)
MPV_CONF_OPTS += --enable-gbm
MPV_CONF_OPTS += -Dgbm=enabled
MPV_DEPENDENCIES += mesa3d
ifeq ($(BR2_PACKAGE_LIBDRM),y)
MPV_CONF_OPTS += --enable-egl-drm
MPV_CONF_OPTS += -Degl-drm=enabled
else
MPV_CONF_OPTS += --disable-egl-drm
MPV_CONF_OPTS += -Degl-drm=disabled
endif
else
MPV_CONF_OPTS += --disable-gbm --disable-egl-drm
MPV_CONF_OPTS += -Dgbm=disabled -Degl-drm=disabled
endif
# jack support
# It also requires 64-bit sync intrinsics
ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_8)$(BR2_PACKAGE_JACK2),yy)
MPV_CONF_OPTS += --enable-jack
MPV_CONF_OPTS += -Djack=enabled
MPV_DEPENDENCIES += jack2
else
MPV_CONF_OPTS += --disable-jack
MPV_CONF_OPTS += -Djack=disabled
endif
# jpeg support
ifeq ($(BR2_PACKAGE_JPEG),y)
MPV_CONF_OPTS += --enable-jpeg
MPV_CONF_OPTS += -Djpeg=enabled
MPV_DEPENDENCIES += jpeg
else
MPV_CONF_OPTS += --disable-jpeg
MPV_CONF_OPTS += -Djpeg=disabled
endif
# lcms2 support
ifeq ($(BR2_PACKAGE_LCMS2),y)
MPV_CONF_OPTS += --enable-lcms2
MPV_CONF_OPTS += -Dlcms2=enabled
MPV_DEPENDENCIES += lcms2
else
MPV_CONF_OPTS += --disable-lcms2
MPV_CONF_OPTS += -Dlcms2=disabled
endif
# libarchive support
ifeq ($(BR2_PACKAGE_LIBARCHIVE),y)
MPV_CONF_OPTS += --enable-libarchive
MPV_CONF_OPTS += -Dlibarchive=enabled
MPV_DEPENDENCIES += libarchive
else
MPV_CONF_OPTS += --disable-libarchive
MPV_CONF_OPTS += -Dlibarchive=disabled
endif
# bluray support
ifeq ($(BR2_PACKAGE_LIBBLURAY),y)
MPV_CONF_OPTS += --enable-libbluray
MPV_CONF_OPTS += -Dlibbluray=enabled
MPV_DEPENDENCIES += libbluray
else
MPV_CONF_OPTS += --disable-libbluray
MPV_CONF_OPTS += -Dlibbluray=disabled
endif
# libcdio-paranoia
ifeq ($(BR2_PACKAGE_LIBCDIO_PARANOIA),y)
MPV_CONF_OPTS += --enable-cdda
MPV_CONF_OPTS += -Dcdda=enabled
MPV_DEPENDENCIES += libcdio-paranoia
else
MPV_CONF_OPTS += --disable-cdda
MPV_CONF_OPTS += -Dcdda=disabled
endif
# libdvdnav
ifeq ($(BR2_PACKAGE_LIBDVDNAV),y)
MPV_CONF_OPTS += --enable-dvdnav
MPV_CONF_OPTS += -Ddvdnav=enabled
MPV_DEPENDENCIES += libdvdnav
else
MPV_CONF_OPTS += --disable-dvdnav
MPV_CONF_OPTS += -Ddvdnav=disabled
endif
# libdrm
ifeq ($(BR2_PACKAGE_LIBDRM),y)
MPV_CONF_OPTS += --enable-drm
MPV_CONF_OPTS += -Ddrm=enabled
MPV_DEPENDENCIES += libdrm
else
MPV_CONF_OPTS += --disable-drm
MPV_CONF_OPTS += -Ddrm=disabled
endif
# libvdpau
ifeq ($(BR2_PACKAGE_LIBVDPAU),y)
MPV_CONF_OPTS += --enable-vdpau
MPV_CONF_OPTS += -Dvdpau=enabled
MPV_DEPENDENCIES += libvdpau
else
MPV_CONF_OPTS += --disable-vdpau
MPV_CONF_OPTS += -Dvdpau=disabled
endif
# LUA support, only for lua51/lua52/luajit
# This enables the controller (OSD) together with libass
ifeq ($(BR2_PACKAGE_LUA_5_1)$(BR2_PACKAGE_LUAJIT),y)
MPV_CONF_OPTS += --enable-lua
MPV_CONF_OPTS += -Dlua=enabled
MPV_DEPENDENCIES += luainterpreter
else
MPV_CONF_OPTS += --disable-lua
MPV_CONF_OPTS += -Dlua=disabled
endif
# OpenGL support
ifeq ($(BR2_PACKAGE_HAS_LIBGL),y)
MPV_CONF_OPTS += --enable-gl
MPV_CONF_OPTS += -Dgl=enabled
MPV_DEPENDENCIES += libgl
else ifeq ($(BR2_PACKAGE_HAS_LIBGLES),y)
MPV_CONF_OPTS += --enable-gl
MPV_CONF_OPTS += -Dgl=enabled
MPV_DEPENDENCIES += libgles
else ifeq ($(BR2_PACKAGE_HAS_LIBEGL),y)
MPV_CONF_OPTS += --enable-gl
MPV_CONF_OPTS += -Dgl=enabled
MPV_DEPENDENCIES += libegl
else
MPV_CONF_OPTS += --disable-gl
MPV_CONF_OPTS += -Dgl=disabled
endif
# pulseaudio support
ifeq ($(BR2_PACKAGE_PULSEAUDIO),y)
MPV_CONF_OPTS += --enable-pulse
MPV_CONF_OPTS += -Dpulse=enabled
MPV_DEPENDENCIES += pulseaudio
else
MPV_CONF_OPTS += --disable-pulse
MPV_CONF_OPTS += -Dpulse=disabled
endif
# SDL support
# Sdl2 requires 64-bit sync intrinsics
ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_8)$(BR2_PACKAGE_SDL2),yy)
MPV_CONF_OPTS += --enable-sdl2
MPV_CONF_OPTS += -Dsdl2=enabled
MPV_DEPENDENCIES += sdl2
else
MPV_CONF_OPTS += --disable-sdl2
MPV_CONF_OPTS += -Dsdl2=disabled
endif
# Raspberry Pi support
ifeq ($(BR2_PACKAGE_RPI_USERLAND),y)
MPV_CONF_OPTS += --enable-rpi --enable-gl
MPV_CONF_OPTS += -Drpi=enabled -Dgl=enabled
MPV_DEPENDENCIES += rpi-userland
else
MPV_CONF_OPTS += --disable-rpi
MPV_CONF_OPTS += -Drpi=disabled
endif
# va-api support
ifeq ($(BR2_PACKAGE_LIBVA)$(BR2_PACKAGE_MPV_SUPPORTS_VAAPI),yy)
MPV_CONF_OPTS += --enable-vaapi
MPV_CONF_OPTS += -Dvaapi=enabled
MPV_DEPENDENCIES += libva
ifeq ($(BR2_PACKAGE_LIBDRM)$(BR2_PACKAGE_MESA3D_OPENGL_EGL),yy)
MPV_CONF_OPTS += --enable-vaapi-drm
MPV_CONF_OPTS += -Dvaapi-drm=enabled
else
MPV_CONF_OPTS += --disable-vaapi-drm
MPV_CONF_OPTS += -Dvaapi-drm=disabled
endif
else
MPV_CONF_OPTS += --disable-vaapi --disable-vaapi-drm
MPV_CONF_OPTS += -Dvaapi=disabled -Dvaapi-drm=disabled
endif
# wayland support
ifeq ($(BR2_PACKAGE_WAYLAND),y)
MPV_CONF_OPTS += --enable-wayland
MPV_CONF_OPTS += -Dwayland=enabled
MPV_DEPENDENCIES += libxkbcommon wayland wayland-protocols
else
MPV_CONF_OPTS += --disable-wayland
MPV_CONF_OPTS += -Dwayland=disabled
endif
# Base X11 support. Config.in ensures that if BR2_PACKAGE_XORG7 is
# enabled, xlib_libX11, xlib_libXext, xlib_libXinerama,
# xlib_libXrandr, xlib_libXScrnSaver.
ifeq ($(BR2_PACKAGE_XORG7),y)
MPV_CONF_OPTS += --enable-x11
MPV_CONF_OPTS += -Dx11=enabled
MPV_DEPENDENCIES += \
xlib_libX11 \
xlib_libXext \
@@ -214,17 +205,19 @@ MPV_DEPENDENCIES += \
xlib_libXScrnSaver
# XVideo
ifeq ($(BR2_PACKAGE_XLIB_LIBXV),y)
MPV_CONF_OPTS += --enable-xv
MPV_CONF_OPTS += -Dxv=enabled
MPV_DEPENDENCIES += xlib_libXv
else
MPV_CONF_OPTS += --disable-xv
MPV_CONF_OPTS += -Dxv=disabled
endif
else
MPV_CONF_OPTS += --disable-x11
MPV_CONF_OPTS += -Dx11=disabled
endif
ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
MPV_CONF_ENV += LDFLAGS="$(TARGET_LDFLAGS) -latomic"
MPV_CONF_OPTS += -Dstdatomic=enabled
else
MPV_CONF_OPTS += -Dstdatomic=disabled
endif
$(eval $(waf-package))
$(eval $(meson-package))