# -*- 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               meson 1.0
PortGroup               legacysupport 1.1

github.setup            haasn libplacebo 7.351.0 v
github.tarball_from     archive
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  05beba269fcc6dd433a195af36fac41c01278978 \
                        sha256  716954501d9b76e6906fddda66febc5886493d0673dd265ec1e6e52f4e5cd7c6 \
                        size    848715

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

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

depends_lib-append      port:lcms2 \
                        port:xxhashlib

# See https://github.com/macos-powerpc/powerpc-ports/commit/0e1710ce6734a2f8e6608656e89a20f0db55739d
patchfiles-append       patch-fix-silly-bug.diff
# See https://github.com/haasn/libplacebo/commit/12509c0f1ee8c22ae163017f0a5e7b8a9d983a17
patchfiles-append       patch-12509c0f1ee8c22ae163017f0a5e7b8a9d983a17.diff

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.args-append   -Dvulkan=disabled \
                        -Dvk-proc-addr=disabled \
                        -Dopengl=disabled \
                        -Dgl-proc-addr=disabled \
                        -Dd3d11=disabled \
                        -Ddovi=enabled \
                        -Dlibdovi=disabled \
                        -Ddemos=false \
                        -Dtests=false \
                        -Dglslang=disabled \
                        -Dxxhash=enabled \
                        -Dlcms=enabled \
                        -Dunwind=disabled

compiler.c_standard     2011
compiler.cxx_standard   2020
# Undefined symbols:
# "std::__1::to_chars(char*, char*, double)"
# "std::__1::__from_chars_result<double> std::__1::__from_chars_floating_point<double>(char const*, char const*, std::__1::chars_format)"
legacysupport.newest_darwin_requires_legacy \
                        22
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
