# Maintainer: Coelacanthus <CoelacanthusHex at gmail dot com>
# Contributor: DuckSoft <realducksoft at gmail dot com>

pkgname=mpv-git
_gitname=mpv
pkgver=0.41.0.r920.gdd5d17d
epoch=1
pkgrel=2
pkgdesc='A free, open source, and cross-platform media player (with all possible libs)'
arch=('x86_64')
license=('GPL-3.0-or-later AND LGPL-2.1-or-later')
url='https://mpv.io/'
depends=(
    'alsa-lib'
    'bash'
    'ffmpeg'
    'gcc-libs'
    'glibc'
    'hicolor-icon-theme'
    'lcms2'
    'libarchive'
    'libass'
    'libbluray'
    'libcaca'
    'libcdio'
    'libcdio-paranoia'
    'libdisplay-info'
    'libdrm'
    'libdvdnav'
    'libdvdread'
    'libgl'
    'libjpeg-turbo'
    'libpipewire'
    'libplacebo'
    'libpulse'
    'libsixel'
    'libva'
    'libvdpau'
    'libx11'
    'libxext'
    'libxfixes'
    'libxkbcommon'
    'libxpresent'
    'libxrandr'
    'libxss'
    'libxv'
    'luajit'
    'mesa'
    'mujs'
    'rubberband'
    'sdl2'
    'sndio'
    'subrandr'
    'uchardet'
    'vapoursynth'
    'vulkan-icd-loader'
    'wayland'
    'zimg'
    'zlib'

    # for development
    'ffnvcodec-headers'
    'wayland-protocols'
)
makedepends=(
    'amf-headers'
    'git'
    'meson'
    'openal'
    'python-docutils'
    'vulkan-headers'
)
optdepends=(
    'nvidia-utils: for hardware accelerated video decoding with CUDA'
    'openal: OpenAL audio output'
    'pipewire: PipeWire audio output'
    'pulseaudio: PulseAudio audio output'
    'smbclient: Samba support'
    'youtube-dl: for video-sharing websites playback'
    'yt-dlp: for video-sharing websites playback'
)
provides=('mpv' 'libmpv.so')
conflicts=('mpv')
options=('!emptydirs')
source=("mpv::git+https://github.com/mpv-player/mpv")
sha256sums=('SKIP')

pkgver() {
    cd "mpv"
    git describe --long --tags --abbrev=7 --exclude 'git-release' | sed 's/\([^-]*-g\)/r\1/;s/-/./g;s/^v//g'
}

build() {
    local _opt_extra_flags=(
        '-Dgpl=true'
        '-Dtests=true'
        '-Dcdda=enabled'
        '-Dlua=enabled' '-Dlua=luajit'
        '-Ddvbin=enabled'
        '-Dsdl2-gamepad=enabled'
        '-Dsdl2-audio=enabled'
        '-Dsdl2-video=enabled'
        '-Ddvdnav=enabled'
        '-Dopenal=enabled'
    )
    
    local _other_os_flags=(
        '-Dmacos-10-15-4-features=disabled' # macOS
        '-Dmacos-11-features=disabled' # macOS
        '-Dmacos-11-3-features=disabled' # macOS
        '-Dmacos-12-features=disabled' # macOS
        '-Dmacos-cocoa-cb=disabled' # macOS
        '-Dmacos-media-player=disabled' # macOS
        '-Dmacos-touchbar=disabled' # macOS
        '-Dswift-build=disabled' # macOS
        '-Dswift-flags=disabled' # macOS
        '-Dgl-cocoa=disabled' # macOS
        '-Dcocoa=disabled' # macOS
        '-Daudiounit=disabled' # macOS
        '-Davfoundation=disabled' # macOS
        '-Dvideotoolbox-gl=disabled' # macOS and iOS
        '-Dvideotoolbox-pl=disabled' # macOS and iOS
        '-Dcoreaudio=disabled' # iOS
        '-Dios-gl=disabled' # iOS
        '-Dgl-dxinterop=disabled' # Windows
        '-Dd3d-hwaccel=disabled' # Windows
        '-Dd3d9-hwaccel=disabled' # Windows
        '-Dgl-dxinterop-d3d9=disabled' # Windows
        '-Dgl-win32=disabled' # Windows
        '-Degl-angle-win32=disabled' # Windows
        '-Degl-angle-lib=disabled' # Windows
        '-Degl-angle=disabled' # Windows
        '-Ddirect3d=disabled' # Windows
        '-Dd3d11=disabled' # Windows
        '-Dwasapi=disabled' # Windows
        '-Dwin32-threads=disabled' # Windows
        '-Duwp=disabled' # Windows
        '-Dvaapi-win32=disabled' # Windows
        '-Dspirv-cross=disabled' '-Dshaderc=disabled' # Windows, see https://github.com/mpv-player/mpv/commit/60a31a8a284e539043c47a33ff90f3d55aade6a8
        '-Damf=disabled' # TODO: Currently only support DirectX.
        '-Dopensles=disabled' # Android
        '-Degl-android=disabled' # Android
        '-Dandroid-media-ndk=disabled' # Android
        '-Daaudio=disabled' # Android
        '-Daudiotrack=disabled' # Android
        '-Doss-audio=disabled' # Not Linux
    )
    
    arch-meson mpv build \
        -Dlibmpv=true \
        -Ddefault_library=shared \
        "${_opt_extra_flags[@]}" \
        "${_other_os_flags[@]}"
    meson compile -C build
}

package() {
    depends+=(
        'libarchive.so'
        'libasound.so'
        'libass.so'
        'libavcodec.so' 'libavdevice.so' 'libavfilter.so' 'libavformat.so' 'libavutil.so' 'libswresample.so' 'libswscale.so'
        'libbluray.so'
        'libdisplay-info.so'
        'libjack.so'
        'libjpeg.so'
        'liblcms2.so'
        'libpipewire-0.3.so'
        'libplacebo.so'
        'libpulse.so'
        'librubberband.so'
        'libsndio.so'
        'libsubrandr.so'
        'libva.so' 'libva-x11.so' 'libva-wayland.so' 'libva-drm.so'
        'libvdpau.so'
        'libvulkan.so'
        'libwayland-client.so' 'libwayland-cursor.so' 'libwayland-egl.so'
        'libxkbcommon.so'
        'libzimg.so'
    )
    
    meson install -C build --no-rebuild --destdir="$pkgdir"
    
    install -Dm644 mpv/DOCS/{encoding.rst,tech-overview.txt} -t "$pkgdir/usr/share/doc/mpv"
    install -Dm644 mpv/TOOLS/lua/* -t "$pkgdir/usr/share/mpv/script"
}

check() {
    meson test -C build --print-errorlogs --no-suite ffmpeg # ffmpeg testsuite need fixed ffmpeg version
}

# vim: set ts=4 sw=4 et:
