blob: d6b405c64bbf82f2baaf03d4d81fef3c1697565e [file] [log] [blame] [edit]
# Maintainer: Alexey Pavlov <alexpux@gmail.com>
# Contributor: James Ross-Gowan <rossymiles@gmail.com>
_realname=mpv
pkgbase="mingw-w64-${_realname}"
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=0.33.1
pkgrel=1
pkgdesc="Video player based on MPlayer/mplayer2 (mingw-w64)"
url="https://mpv.io/"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64')
license=('GPL')
depends=("${MINGW_PACKAGE_PREFIX}-ffmpeg"
"${MINGW_PACKAGE_PREFIX}-lcms2"
"${MINGW_PACKAGE_PREFIX}-libarchive"
"${MINGW_PACKAGE_PREFIX}-libass"
"${MINGW_PACKAGE_PREFIX}-libbluray"
"${MINGW_PACKAGE_PREFIX}-libcaca"
"${MINGW_PACKAGE_PREFIX}-libcdio"
"${MINGW_PACKAGE_PREFIX}-libcdio-paranoia"
"${MINGW_PACKAGE_PREFIX}-libdvdnav"
"${MINGW_PACKAGE_PREFIX}-libdvdread"
"${MINGW_PACKAGE_PREFIX}-libjpeg-turbo"
"${MINGW_PACKAGE_PREFIX}-libplacebo"
"${MINGW_PACKAGE_PREFIX}-lua51"
"${MINGW_PACKAGE_PREFIX}-pkg-config"
"${MINGW_PACKAGE_PREFIX}-rubberband"
"${MINGW_PACKAGE_PREFIX}-shaderc"
"${MINGW_PACKAGE_PREFIX}-spirv-cross"
"${MINGW_PACKAGE_PREFIX}-uchardet"
"${MINGW_PACKAGE_PREFIX}-vapoursynth"
"${MINGW_PACKAGE_PREFIX}-vulkan"
"winpty")
makedepends=("${MINGW_PACKAGE_PREFIX}-python-docutils"
"${MINGW_PACKAGE_PREFIX}-python-rst2pdf"
"${MINGW_PACKAGE_PREFIX}-vulkan-headers"
"perl"
"python")
optdepends=("${MINGW_PACKAGE_PREFIX}-youtube-dl: for video-sharing websites playback")
source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/mpv-player/${_realname}/archive/v${pkgver}.tar.gz"
"7c4465c.patch"::"https://github.com/mpv-player/mpv/commit/7c4465c.patch")
sha256sums=('100a116b9f23bdcda3a596e9f26be3a69f166a4f1d00910d1789b6571c46f3a9'
'ae67fd51cc42db3f2629c9a5fd5cbd11390fea7cae90b5e5c12ab9e8ac5019a9')
# strip doesn't work well with the mpv.com wrapper, so strip manually instead
options=(!strip !emptydirs)
prepare() {
cd "${srcdir}/${_realname}-${pkgver}"
# vo_gpu: placebo: update for upstream API changes
patch -Np1 -i "${srcdir}/7c4465c.patch"
[[ -x ./waf ]] || /usr/bin/python ./bootstrap.py
sed -i 's:bin/env python$:bin/env python:' waf
}
build() {
cd "${srcdir}/${_realname}-${pkgver}"
DEST_OS=win32 \
TARGET=${MINGW_CHOST} \
PKG_CONFIG=${MINGW_PREFIX}/bin/pkg-config \
CC=gcc PERL=/usr/bin/perl \
AR=${MINGW_PREFIX}/bin/ar \
WINDRES=${MINGW_PREFIX}/bin/windres \
/usr/bin/python3 ./waf configure \
--prefix=${MINGW_PREFIX} \
--check-c-compiler=gcc \
--enable-libmpv-shared \
--enable-caca \
--enable-cdda \
--enable-d3d-hwaccel \
--enable-d3d11 \
--enable-dvdnav \
--disable-egl-angle \
--disable-egl-angle-lib \
--enable-jpeg \
--enable-lcms2 \
--enable-libarchive \
--enable-libbluray \
--enable-lua \
--enable-rubberband \
--enable-shaderc \
--enable-spirv-cross \
--enable-uchardet \
--enable-vapoursynth \
--enable-vulkan \
--out="${srcdir}/build-${MINGW_CHOST}"
/usr/bin/python ./waf build
}
package() {
cd "${srcdir}/${_realname}-${pkgver}"
export PYTHON=${MINGW_PREFIX}/bin/python
/usr/bin/python ./waf install --destdir="${pkgdir}"
# Strip binaries manually
${MINGW_PREFIX}/bin/strip "${STRIP_BINARIES}" "${pkgdir}${MINGW_PREFIX}/bin/mpv.exe"
${MINGW_PREFIX}/bin/strip "${STRIP_BINARIES}" "${pkgdir}${MINGW_PREFIX}/bin/mpv.com"
${MINGW_PREFIX}/bin/strip "${STRIP_SHARED}" "${pkgdir}${MINGW_PREFIX}/bin/mpv-1.dll"
# Move encoding-profiles.conf to share/doc alongside the example .conf files.
# mpv doesn't search /etc for configuration on MinGW.
mv "${pkgdir}${MINGW_PREFIX}/etc/mpv/"*.conf "${pkgdir}${MINGW_PREFIX}/share/doc/mpv/"
# mpv needs winpty for key bindings to work on the terminal
mv "${pkgdir}${MINGW_PREFIX}/bin/mpv.exe" "${pkgdir}${MINGW_PREFIX}/bin/mpv_exe"
_exename=mpv
echo '#!/usr/bin/env bash' > "${pkgdir}${MINGW_PREFIX}/bin/${_exename}"
echo 'export _started_from_console=yes' >> "${pkgdir}${MINGW_PREFIX}/bin/${_exename}"
echo '/usr/bin/winpty "$( dirname ${BASH_SOURCE[0]} )/'${_exename}'.exe" "$@"' >> "${pkgdir}${MINGW_PREFIX}/bin/${_exename}"
mv "${pkgdir}${MINGW_PREFIX}/bin/mpv_exe" "${pkgdir}${MINGW_PREFIX}/bin/mpv.exe"
}