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

name                tcl
version             8.6.17
revision            0
# Tk (x11/tk) port depends on this version
categories          lang
license             Tcl/Tk
maintainers         {mcalhoun @MarcusCalhoun-Lopez} {gmx.us:chrischavez @chrstphrchvz} openmaintainer
platforms           darwin freebsd
description         Tool Command Language
long_description    \
    Tcl (Tool Command Language) is a very powerful but easy to learn dynamic \
    programming language, suitable for a very wide range of uses, including web \
    and desktop applications, networking, administration, testing and many more. \
    Open source and business-friendly, Tcl is a mature yet evolving language \
    that is truly cross platform, easily deployed and highly extensible.

homepage            https://www.tcl-lang.org/

if {$subport eq $name} {
    checksums       md5     1ec3444533f54d0f86cd120058e15e48 \
                    sha1    d9b11a7c4996886e3fb1e5e50fc2f5ca006be270 \
                    rmd160  7ba0f589c661c8dd94b9733ad2c5436eb91c1919 \
                    sha256  a3903371efcce8a405c5c245d029e9f6850258a60fa3761c4d58995610949b31 \
                    size    11724552
}
subport tcl9 {
    version         9.0.3
    revision        0
    checksums       md5     820aeed1e4e1a89038d0302d2f839e84 \
                    sha1    bd34b94a649063a880ca8f234ab4731145b6197a \
                    rmd160  b23f8344930fb2d5e41401124f365d7bde87b227 \
                    sha256  2537ba0c86112c8c953f7c09d33f134dd45c0fb3a71f2d7f7691fd301d2c33a6
}
master_sites        sourceforge:project/tcl/Tcl/${version}

distname            ${name}${version}-src
worksrcdir          ${name}${version}/unix

depends_lib         port:zlib

configure.args      --disable-corefoundation

if {$subport eq $name} {
    configure.args-append   --mandir=${prefix}/share/man
} else {
    depends_lib-append  port:libtommath
    configure.cppflags-append   -I${prefix}/include/libtommath
    configure.args-append   --includedir=${prefix}/include/${subport} \
                            --libdir=${prefix}/lib/${subport} \
                            --mandir=${prefix}/share/${subport}/man \
                            --enable-man-symlinks \
                            --with-system-libtommath
}

configure.cppflags-delete  -I${prefix}/include
configure.ldflags-delete   -L${prefix}/lib

pre-configure {
    # sqlite3 package is provided by sqlite3-tcl
    delete [glob ${worksrcpath}/../pkgs/sqlite*]
}

post-configure {
    reinplace -E {s|-arch [^ ]+||g} ${worksrcpath}/tclConfig.sh
}

# see https://trac.macports.org/ticket/17189
destroot.target-append \
                    install-private-headers
destroot.destdir    INSTALL_ROOT=${destroot}
post-destroot {
    if {$subport eq $name} {
        ln -s tclsh8.6 ${destroot}${prefix}/bin/tclsh
        ln -s libtcl8.6.dylib ${destroot}${prefix}/lib/libtcl.dylib
    }

    if {${configure.ccache}} {
        reinplace {/TCL_CC/s/ccache //} ${destroot}${prefix}/lib/tclConfig.sh
    }
}

if {$subport eq $name} {
    configure.args-append   --disable-threads

    variant threads description {add multithreading support} {
        configure.args-replace --disable-threads \
                               --enable-threads
    }
    default_variants-append +threads
}

platform macosx {
    # CF is not fork()-safe and software e.g. using tk and fork() will crash
    variant corefoundation description {Enable CoreFoundation support (not fork-safe)} {
        configure.args-replace --disable-corefoundation \
                               --enable-corefoundation
    }
    # tk +quartz crashes at launch without CF support
    default_variants-append +corefoundation
}

variant memdebug description {enable memory debugging support} {
    configure.args-append --enable-symbols=mem
}

variant dtrace description {Enable DTrace static probes} {
    configure.args-append --enable-dtrace
}

platform darwin {
    configure.args-append tcl_cv_type_64bit="long long"
}

if {$subport eq $name} {
    notes "
    The Sqlite3 Tcl package is now being provided by the sqlite3-tcl port:
    sudo port install sqlite3-tcl
    "
}

test.run            yes

livecheck.type      regex
if {$subport eq $name} {
    livecheck.regex     {Tcl/Tk (8(?:\.\d+)*)</a>}
} else {
    livecheck.regex     {Tcl/Tk (\d+(?:\.\d+)*)</a>}
}
