# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4

PortSystem              1.0
PortGroup               github 1.0
PortGroup               legacysupport 1.1
PortGroup               meson 1.0

# When updating, revbump mpv (non-legacy one).
github.setup            haasn libplacebo 7.360.0 v
revision                0
categories              devel multimedia
license                 LGPL-2
maintainers             {i0ntempest @i0ntempest} openmaintainer

description             Core rendering algorithms and ideas of mpv rewritten as an independent library
long_description        ${name} is, in a nutshell, the core rendering algorithms and ideas of mpv rewritten \
                        as an independent library. As of today, libplacebo contains a large assortment \
                        of video processing shaders, focusing on both quality and performance.
homepage                https://libplacebo.org

checksums               rmd160  300ac2a282944e12002e47a69d55216d2824ae4b \
                        sha256  c4c70d430083915a157cb790660749649f58fee1e946c0a6e554fd1cba5a2e8f \
                        size    861989
github.tarball_from     archive

set python_ver          3.14
set python_branch       [string map {. {}} ${python_ver}]

# Vulkan headers required regardless of vulkan feature
depends_build-append    port:fast-float \
                        path:bin/pkg-config:pkgconfig \
                        port:py${python_branch}-jinja2 \
                        port:vulkan-headers

depends_lib-append      port:lcms2 \
                        port:xxhashlib

configure.args-append   -Dd3d11=disabled \
                        -Ddovi=enabled \
                        -Ddemos=false \
                        -Dgl-proc-addr=disabled \
                        -Dglslang=disabled \
                        -Dlcms=enabled \
                        -Dlibdovi=disabled \
                        -Dopengl=disabled \
                        -Dshaderc=disabled \
                        -Dtests=false \
                        -Dunwind=disabled \
                        -Dvk-proc-addr=disabled \
                        -Dvulkan=disabled \
                        -Dxxhash=enabled

patch.pre_args-replace  -p0 -p1

# https://github.com/haasn/libplacebo/issues/361
patchfiles-append       fix-silly-bug.patch

# Not really used, but needed to find those libs:
patchfiles-append       libplacebo-spirv.patch

# Claude-assisted hacks attempting to fix GL 2.0
if {${os.platform} eq "darwin" && ${os.major} < 11} {
    patchfiles-append   libplacebo-gl2.patch
}

post-patch {
    reinplace "s|import\(\'python\'\).find_installation\(\)|import\(\'python\'\).find_installation\(\'${frameworks_dir}/Python.framework/Versions/${python_ver}/bin/python${python_ver}\'\)|" \
        ${worksrcpath}/meson.build
}

configure.ccache        no

compiler.c_standard     2011
compiler.cxx_standard   2020
# Undefined symbols: "std::__1::to_chars(char*, char*, double)"
legacysupport.newest_darwin_requires_legacy \
                        21
legacysupport.use_mp_libcxx \
                        yes

variant opengl description "Enable OpenGL support" {
    depends_build-append \
                        port:py${python_branch}-glad2
    configure.args-replace \
                        -Dopengl=disabled \
                        -Dopengl=enabled
    configure.args-replace \
                        -Dgl-proc-addr=disabled \
                        -Dgl-proc-addr=enabled
}

variant vulkan description "Enable Vulkan support" {
    depends_lib-append  port:vulkan-loader
    configure.args-replace \
                        -Dvulkan=disabled \
                        -Dvulkan=enabled
    configure.args-replace \
                        -Dvk-proc-addr=disabled \
                        -Dvk-proc-addr=enabled
}

variant demo description "Build demo programs" {
    configure.args-replace \
                        -Ddemos=false \
                        -Ddemos=true
}

variant glslang description "Enable glslang SPIR-V compiler" {
    depends_lib-append  port:glslang
    configure.args-replace \
                        -Dglslang=disabled \
                        -Dglslang=enabled
}

default_variants-append +opengl
