# -*- 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.42
revision            3
checksums           rmd160  19bbc933dff9be4db1f1b0a93319305374b4d756 \
                    sha256  9380117f1811ad1faa1812cb6602479b6290d4a0d8cc442d44427f7f6c0e7a58 \
                    size    812776

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 python_version  3.12
set python_ver_no_dot [string map {. {}} ${python_version}]

patchfiles-append   patch-meson-python.diff \
                    1511f0ad5ea67b4657540c631e3a8c959bb8d578.patch

post-patch {
    reinplace "s|@@PYTHON_BIN@@|${prefix}/bin/python${python_version}|g" \
        ${worksrcpath}/subprojects/keycodemapdb/tools/keymap-gen \
        ${worksrcpath}/subprojects/spice-common/meson.build
}

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

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

depends_run-append  port:hwdata

# 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
}
