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

# https://bugzilla.gnome.org/show_bug.cgi?id=636134
PortGroup           muniversal 1.0

name                gstreamer1-gst-plugins-bad
set my_name         gst-plugins-bad
# please only commit stable updates (even numbered releases)
version             1.24.9
revision            2
description         A set of plug-ins for GStreamer that need more quality.
long_description    GStreamer Bad Plug-ins is a set of plug-ins that aren't up to par compared \
                    to the rest. They might be close to being good quality, but they're missing \
                    something - be it a good code review, some documentation, a set of tests, \
                    a real live maintainer, or some actual wide use.
license             GPL LGPL
maintainers         nomaintainer
categories          gnome
homepage            https://gstreamer.freedesktop.org/modules/${my_name}.html
master_sites        https://gstreamer.freedesktop.org/src/${my_name}/
distname            ${my_name}-${version}
use_xz              yes

checksums           rmd160  505fb126316b41b8f93aecc084fbd16c2a0fd9a1 \
                    sha256  36fcf7a9af0a753b43bb03b9835246f74d72f7124369e66a1e2dc7b04f5a5cab \
                    size    7075040

set py_ver          3.12
set py_ver_nodot    [string map {. {}} ${py_ver}]
set python.bin      ${prefix}/bin/python${py_ver}

depends_build-append \
                    port:gtk-doc \
                    path:bin/pkg-config:pkgconfig \
                    port:python${py_ver_nodot}

depends_lib-append  port:aom \
                    port:curl \
                    port:faad2 \
                    port:fluidsynth \
                    path:lib/pkgconfig/gobject-introspection-1.0.pc:gobject-introspection \
                    port:gstreamer1-gst-plugins-base \
                    port:json-glib \
                    port:lcms2 \
                    path:lib/pkgconfig/libass.pc:libass \
                    port:libdca \
                    port:libde265 \
                    port:libdvdnav \
                    port:libdvdread \
                    port:libexif \
                    port:libGLU \
                    port:libgsm \
                    port:libmms \
                    port:libmodplug \
                    port:libmpcdec \
                    port:libnice \
                    path:lib/pkgconfig/librsvg-2.0.pc:librsvg \
                    port:libssh2 \
                    port:mesa \
                    port:neon \
                    port:nettle \
                    port:openal-soft \
                    port:openexr \
                    port:openjpeg \
                    port:orc \
                    port:rtmpdump \
                    port:soundtouch \
                    port:spandsp-devel \
                    port:tiff \
                    port:webp \
                    port:x265

patchfiles          modplug.patch \
                    libressl.patch \
                    no_pqueue_size.patch

post-patch {
    reinplace "s|/usr/bin/env python3|${python.bin}|" \
        ${worksrcpath}/scripts/extract-release-date-from-doap-file.py \
        ${worksrcpath}/scripts/dist-translations.py \
        ${worksrcpath}/scripts/update-orc-dist-files.py \
        ${worksrcpath}/tests/check/media/download-media \
        ${worksrcpath}/gst-libs/gst/vulkan/vulkan_mkenum.py \
        ${worksrcpath}/ext/vulkan/shaders/bin2array.py
}

# could depend on tons for multimedia stuff +variants
# the following ports are available but don't configure
# and/or build correctly
#
# port:mjpegtools (mpeg2enc mplex build fails) need to disable mpeg2enc mplex explicitly in case mjpegtools is installed
# port:faac has a restrictive license, disable faac plugin by default
# port:libfdk-aac has a restrictive license, disable fdkaac plugin by default
# path:lib/opencv3/libopencv_core.dylib:opencv3 (opencv plugin fails to configure with opencv 3.0.0+, can't find opencv2/bgsegm.hpp, now opencv2/video/background_segm.hpp)
# plugin opus is now contained in gstreamer1-gst-plugins-base, disable this version
# plugin ipcpipeline fails to build

# fatal error: 'stdatomic.h' file not found
compiler.blacklist-append {clang < 700}
# requires support for C11 (redefinition of typedef ‘GstTestHTTPSrc’ at elements/test_http_src.c:101)
compiler.c_standard         2011
# OpenExr requires C++11
compiler.cxx_standard       2011

configure.args-append \
                    -Dapplemedia=disabled \
                    -Dexamples=disabled \
                    -Dfaac=disabled \
                    -Dfdkaac=disabled \
                    -Dopencv=disabled \
                    -Dsctp=disabled \
                    -Dsrtp=disabled \
                    -Dsvtav1=disabled \
                    -Dvulkan=disabled

configure.cppflags-append   -L${prefix}/lib
configure.cflags-append     -std=c11 -funroll-loops -fstrict-aliasing
configure.cxxflags-append   -std=gnu++11
configure.env-append        "HAVE_CXX=yes"

variant faac description {Enable faac AAC plugin} {
    depends_lib-append      port:faac
    configure.args-replace  -Dfaac=disabled \
                            -Dfaac=enabled
    notes-append "Use of the +faac variant may affect licensing due to the restrictive license of port faac itself."
}

variant fdkaac description {Enable fdkaac AAC plugin} {
    depends_lib-append      port:libfdk-aac
    configure.args-replace  -Dfdkaac=disabled \
                            -Dfdkaac=enabled
    notes-append "Use of the +fdkaac variant may affect licensing due to the restrictive license of port libfdk-aac itself."
}

variant gpl description {Enable glp-licenced plugins} {
    configure.args-append   -Dgpl=enabled
}

# Window system is provided by gstreamer1-gst-plugins-base, so sync up.
variant x11 {
    require_active_variants port:gstreamer1-gst-plugins-base x11
    configure.args-append   -Dx11=enabled
}

default_variants    +x11

# plugin applemedia (Apple video) now only builds on darwin 18 and later
platform macosx {
    if {![variant_isset x11] && ${os.major} >= 18} {
        # Apple_Media requires CGL, which can only be provided on newer platforms and without X11 enabled.
        require_active_variants port:gstreamer1-gst-plugins-base {} x11
        configure.args-replace  -Dapplemedia=disabled \
                                -Dapplemedia=enabled
    }
}

livecheck.type      regex
livecheck.url       ${master_sites}
livecheck.regex     "${my_name}-(\\d+\\\.\\d*\[02468\](?:\\.\\d+)*)${extract.suffix}"