# -*- 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           boost 1.0
PortGroup           github 1.0
PortGroup           qmake 1.0

# Keep in sync with i2pd port.

boost.version       1.81

github.setup        PurpleI2P i2pd-qt 2.59.0
revision            0
categories          aqua security net
license             BSD
maintainers         nomaintainer
description         GUI for i2pd
long_description    ${description}

github.tarball_from archive
master_sites-append https://github.com/PurpleI2P/i2pd/archive/${version}/:daemon
distfiles-append    i2pd-${version}.tar.gz:daemon

checksums           ${distname}${extract.suffix} \
                    rmd160  8f53ad3b03f2beb195df56191c5050f168ca8324 \
                    sha256  51d7777d9535be23158c5cdca691d855e77fc10bd1d62c01a5cd071269688edf \
                    size    422247 \
                    i2pd-${version}${extract.suffix} \
                    rmd160  05a1693b4219ba172c18f4b7c519be441effaeb4 \
                    sha256  0ebeb05e4f36ab3809449561a095dc767ad821ac6a61c95623ab49be4ffd398b \
                    size    743516

post-extract {
    delete ${worksrcpath}/src/i2pd
    move ${workpath}/i2pd-${version} ${worksrcpath}/src/i2pd
}

compiler.cxx_standard   2017

depends_build-append \
                    port:i2pd

patch.pre_args-replace  -p0 -p1
patchfiles          i2pd-qt4.patch
# src/i2pd/libi2pd/FS.h:148:9: error: 'uint32_t' does not name a type
patchfiles-append   i2pd-includes.patch

# ___atomic_fetch_add_8, ___atomic_load_8
if {[string match *gcc* ${configure.compiler}] && ${configure.build_arch} in [list arm i386 ppc]} {
    patchfiles-append \
                    libatomic.patch
}

post-patch {
    reinplace "s|@BOOST_V@|${boost.version}|" ${worksrcpath}/i2pd_qt.pro
    reinplace "s|@PREFIX@|${prefix}|g" ${worksrcpath}/i2pd_qt.pro
    reinplace "s|@CXX_FLAGS@|${configure.cxxflags}|" ${worksrcpath}/i2pd_qt.pro
}

destroot {
    copy ${worksrcpath}/i2pd_qt.app ${destroot}${applications_dir}
}

post-destroot {
    if {${configure.cxx_stdlib} ne "libc++"} {
        set i2p_bin ${applications_dir}/i2pd_qt.app/Contents/MacOS/i2pd_qt
        set i2p_gui ${prefix}/bin/i2pd-gui

        set  wrapper    [open "${destroot}${i2p_gui}" w 0755]
        puts ${wrapper} "#!/bin/sh"
        puts ${wrapper} ""
        puts ${wrapper} {if [ -n "$DYLD_LIBRARY_PATH" ]; then}
        puts ${wrapper} "   DYLD_LIBRARY_PATH=${prefix}/lib/libgcc:\${DYLD_LIBRARY_PATH}"
        puts ${wrapper} {else}
        puts ${wrapper} "   DYLD_LIBRARY_PATH=${prefix}/lib/libgcc"
        puts ${wrapper} {fi}
        puts ${wrapper} {export DYLD_LIBRARY_PATH}
        puts ${wrapper} ""
        puts ${wrapper} "   PATH=${prefix}/bin:${prefix}/sbin:\$PATH"
        puts ${wrapper} {export PATH}
        puts ${wrapper} ""
        puts ${wrapper} "exec ${i2p_bin} \"\$@\""
        close $wrapper
    }
}

if {${configure.cxx_stdlib} ne "libc++"} {
    notes "
        Please launch the app via `i2pd-gui` wrapper.
    "
}
