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

name                spice-gtk
version             0.43
revision            0
checksums           rmd160  8335309f2dd34b81d5b44138d8b61b6740cb4ac4 \
                    sha256  cee26e5b2d22909f35b40a94398d1e863ca3962ee46494ca97aab206abc3203b \
                    size    818860

categories          gnome devel
license             LGPL-2.1+
maintainers         {makr @mohd-akram} openmaintainer

description         spice-gtk is a GTK+3 SPICE widget.
long_description    ${description} \
                    It features glib-based objects for SPICE protocol parsing \
                    and a gtk widget for embedding the SPICE display into other \
                    applications such as virt-manager or Boxes. \
                    Python and Vala bindings are available too.

homepage            https://www.spice-space.org/spice-gtk.html
master_sites        https://www.spice-space.org/download/gtk/
use_xz              yes

set py_ver          3.14
set py_ver_nodot    [string map {. {}} ${py_ver}]

patchfiles          patch-keymap-gen.diff

# https://gitlab.freedesktop.org/spice/spice-gtk/-/work_items/200
patchfiles-append   patch-src-channel-display.diff

post-patch {
    reinplace "s|@PYTHON@|${configure.python}|g" \
        ${worksrcpath}/subprojects/keycodemapdb/tools/keymap-gen
}

depends_build       port:asciidoc \
                    path:bin/pkg-config:pkgconfig \
                    port:python${py_ver_nodot} \
                    port:py${py_ver_nodot}-parsing \
                    path:bin/vala:vala \
                    port:spice-protocol \
                    port:gettext

depends_lib         path:lib/pkgconfig/cairo.pc:cairo \
                    path:lib/pkgconfig/gdk-pixbuf-2.0.pc:gdk-pixbuf2 \
                    port:gettext-runtime \
                    path:lib/pkgconfig/glib-2.0.pc:glib2 \
                    port:gstreamer1 \
                    port:gstreamer1-gst-plugins-base \
                    path:lib/pkgconfig/gtk+-3.0.pc:gtk3 \
                    port:json-glib \
                    port:libepoxy \
                    path:include/turbojpeg.h:libjpeg-turbo \
                    port:libopus \
                    path:lib/pkgconfig/pixman-1.pc:libpixman \
                    path:lib/pkgconfig/libusb-1.0.pc:libusb \
                    port:lz4 \
                    path:lib/libssl.dylib:openssl \
                    port:usbredir \
                    port:zlib

depends_run         port:hwdata

license_noconflict  vala

configure.python    ${prefix}/bin/python${py_ver}

meson.native.binaries   python=${configure.python}

# for ucontext
configure.cppflags-append \
                    -D_XOPEN_SOURCE

configure.args      -Dgtk_doc=disabled \
                    -Dpolkit=disabled \
                    -Dsasl=disabled \
                    -Dsmartcard=disabled \
                    -Dusbredir=enabled \
                    -Dwebdav=disabled

# enums.h:380: error: expected ‘,’ or ‘}’ before ‘__attribute__’
compiler.blacklist-append \
                    *gcc-4.0 *gcc-4.2

variant quartz conflicts x11 {
    # Quartz & X11 binaries are incompatible, although built similarly
    require_active_variants gtk3 quartz x11
}

variant x11 conflicts quartz {
    # Quartz & X11 binaries are incompatible, although built similarly
    require_active_variants gtk3 x11 quartz
    depends_lib-append  port:xorg-libX11
}

if {![catch {set result [active_variants gtk3 quartz x11]}] && $result} {
    default_variants +quartz
} elseif {![variant_isset quartz]} {
    default_variants +x11
}
