# -*- 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           cmake 1.1
PortGroup           github 1.0
PortGroup           legacysupport 1.1
PortGroup           openssl 1.0

github.setup        barracuda156 transmission 9f0a70125f98139211e90b3928bfb5b23ee05eed
version             4.1.3
revision            0
conflicts           ${github.project}-gtk ${github.project}-qt ${github.project}-x11
categories          net x11 p2p
platforms           {darwin >= 9}
license             {GPL-2 OpenSSLException}
maintainers         {@barracuda156 gmail.com:vital.had} openmaintainer
description         Lightweight BitTorrent client
long_description    Transmission is a free, light-weight BitTorrent client. \
                    It features a simple, intuitive interface on top of an efficient, \
                    cross-platform back-end. Transmission is open-source (MIT license) \
                    and runs on Mac OS X (Qt or GTK+ interfaces), Linux/NetBSD/FreeBSD/OpenBSD \
                    (GTK+ interface) and BeOS (native interface).

homepage            https://transmissionbt.com

checksums           rmd160  bbf01ef9eb8d064f966d6cd999dae2e5f6c234f5 \
                    sha256  bae7adf3c5f0282a0123a6e17e21e7cab5adede86416380585265ed89056ca77 \
                    size    9569963
github.tarball_from archive

github.livecheck.branch v${version}

# Do not remove this as it allows transmission and this port to share files
dist_subdir         transmission

depends_build-append \
                    port:gettext \
                    port:intltool \
                    port:libtool \
                    port:makeicns \
                    path:bin/pkg-config:pkgconfig

set libfmt_v        12
cmake.prefix_path-append \
                    ${prefix}/lib/libfmt${libfmt_v}/cmake

depends_lib-append  port:curl \
                    port:fast-float \
                    port:gettext-runtime \
                    port:libb64 \
                    port:libdeflate \
                    port:libevent \
                    port:libfmt${libfmt_v} \
                    port:libnatpmp \
                    port:libpsl \
                    port:miniupnpc \
                    path:lib/pkgconfig/RapidJSON.pc:rapidjson \
                    port:utfcpp \
                    port:zlib

depends_run-append  port:desktop-file-utils

if {[variant_isset gtk3] || [variant_isset gtk4]} {
    depends_run-append \
                    port:adwaita-icon-theme

    # transmission-gtk(47187) malloc: *** error for object 0x33480a4: Non-aligned pointer being freed
    legacysupport.redirect_bins transmission-cli transmission-create transmission-daemon transmission-edit transmission-gtk transmission-remote transmission-show
}

# TODO: support alternative crypto?
configure.args-append \
                    -DENABLE_CLI=ON \
                    -DENABLE_DAEMON=ON \
                    -DENABLE_GTK=OFF \
                    -DENABLE_MAC=OFF \
                    -DENABLE_NLS=ON \
                    -DENABLE_QT=OFF \
                    -DENABLE_QT_LEGACY=OFF \
                    -DENABLE_TESTS=OFF \
                    -DENABLE_UTILS=ON \
                    -DENABLE_UTP=ON \
                    -DINSTALL_DOC=OFF \
                    -DUSE_SYSTEM_B64=ON \
                    -DUSE_SYSTEM_DEFLATE=ON \
                    -DUSE_SYSTEM_FAST_FLOAT=ON \
                    -DUSE_SYSTEM_FMT=ON \
                    -DUSE_SYSTEM_DHT=OFF \
                    -DUSE_SYSTEM_EVENT2=ON \
                    -DUSE_SYSTEM_MINIUPNPC=ON \
                    -DUSE_SYSTEM_NATPMP=ON \
                    -DUSE_SYSTEM_PSL=ON \
                    -DUSE_SYSTEM_RAPIDJSON=ON \
                    -DUSE_SYSTEM_UTFCPP=ON \
                    -DUSE_SYSTEM_UTP=OFF \
                    -DWITH_APPINDICATOR=OFF \
                    -DWITH_CRYPTO="openssl"

compiler.c_standard     2011
compiler.cxx_standard   2020

variant gtk3 conflicts gtk4 qt description "Build Gtk3 front-end" {
    depends_lib-append      path:lib/pkgconfig/gtk+-3.0.pc:gtk3 \
                            port:gtkmm3 \
                            port:libnotify

    configure.args-replace  -DENABLE_GTK=OFF -DENABLE_GTK=ON
    configure.args-append   -DUSE_GTK_VERSION=3

    post-activate {
        system "${prefix}/bin/update-desktop-database ${prefix}/share/applications"
        system "${prefix}/bin/gtk-update-icon-cache -f -t ${prefix}/share/icons/hicolor"
    }
}

variant gtk4 conflicts gtk3 qt description "Build Gtk4 front-end" {
    depends_lib-append      path:lib/pkgconfig/gtk4.0.pc:gtk4 \
                            port:gtkmm4 \
                            port:libnotify

    configure.args-replace  -DENABLE_GTK=OFF -DENABLE_GTK=ON
    configure.args-append   -DUSE_GTK_VERSION=4

    post-activate {
        system "${prefix}/bin/update-desktop-database ${prefix}/share/applications"
        system "${prefix}/bin/gtk4-update-icon-cache -f -t ${prefix}/share/icons/hicolor"
    }
}

variant qt conflicts gtk3 gtk4 description "Build Qt4 front-end" {
    PortGroup               qt4 1.0

    configure.args-replace  -DENABLE_QT_LEGACY=OFF -DENABLE_QT_LEGACY=ON
    configure.args-append   -DTR_BUNDLE_INSTALL_PREFIX=${applications_dir}

    legacysupport.redirect_bins transmission-cli transmission-create transmission-daemon transmission-edit transmission-qt transmission-remote transmission-show

    post-activate {
        system "${prefix}/bin/update-desktop-database ${prefix}/share/applications"
    }
}

if {![variant_isset gtk3] && ![variant_isset gtk4]} {
    default_variants    +qt
}
