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

name                fuse-t
# https://github.com/macos-fuse-t/fuse-t/issues/92
github.setup        macos-fuse-t libfuse 4eb26b4b45cd9a1baf5e846955d43b76de1c7be3
# Use version from https://github.com/macos-fuse-t/libfuse/blob/4eb26b4b45cd9a1baf5e846955d43b76de1c7be3/include/config.h
version             2.9.9-20260716
revision            0
categories          fuse devel
license             GPL-2
maintainers         nomaintainer
description         FUSE-T is a kext-less implementation of FUSE for macOS
long_description    {*}${description}
checksums           rmd160  4959c659a4736de77efbfbb6eecbe7d9dedc4282 \
                    sha256  e151cdeba219f8078e0ae6fd77be758891dd2e55f23f8c10196ba03eb6f23e48 \
                    size    173205
github.tarball_from archive

conflicts           osxfuse macfuse

cmake.generator     Ninja

depends_lib-append  port:libiconv

# https://github.com/macos-fuse-t/libfuse/issues/6
# https://github.com/macos-fuse-t/libfuse/issues/7
patchfiles          patch-CMakeLists.txt

# https://github.com/macos-fuse-t/libfuse/issues/9
patchfiles-append   fuse.c.patch

# fuse_misc.h:48:39: error: 'const struct stat' has no member named 'st_mtimespec'; did you mean 'st_mtimensec'?
patchfiles-append   fuse_misc.h.patch

# https://github.com/macos-fuse-t/libfuse/issues/8
if {[string match *gcc* ${configure.compiler}]} {
    patchfiles-append \
                    fuse_kern_chan-get-rid-of-clangisms.patch
}

compiler.c_standard 2023

# https://github.com/macos-fuse-t/libfuse/issues/10
destroot {
    copy ${cmake.build_dir}/lib/libfuse-t.a ${destroot}${prefix}/lib/
    copy ${cmake.build_dir}/lib/libfuse-t.dylib ${destroot}${prefix}/lib/
    set incdir ${prefix}/include/osxfuse
    xinstall -d ${destroot}${incdir}
    copy ${worksrcpath}/include/old/fuse.h ${destroot}${incdir}/
    delete -f ${worksrcpath}/include/config.h
    delete -f ${worksrcpath}/include/old
    delete -f ${worksrcpath}/include/stamp-h1
    move ${worksrcpath}/include ${destroot}${incdir}/fuse
    xinstall -m 755 ${cmake.build_dir}/example/fusexmp_fh ${destroot}${prefix}/bin/

    platform darwin {
        set dylib ${prefix}/lib/libfuse-t.dylib
        system "install_name_tool -id ${dylib} ${destroot}${dylib}"
        system "install_name_tool -change @rpath/libfuse-t.dylib ${dylib} ${destroot}${prefix}/bin/fusexmp_fh"
    }
}
