# -*- 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/
master_sites        sourceforge:project/tcl/Tcl/${version}

checksums           md5     1ec3444533f54d0f86cd120058e15e48 \
                    sha1    d9b11a7c4996886e3fb1e5e50fc2f5ca006be270 \
                    rmd160  7ba0f589c661c8dd94b9733ad2c5436eb91c1919 \
                    sha256  a3903371efcce8a405c5c245d029e9f6850258a60fa3761c4d58995610949b31 \
                    size    11724552

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

depends_lib         port:zlib

configure.args      --mandir=${prefix}/share/man \
                    --disable-corefoundation \
                    --disable-threads
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 {
    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
    }
}

variant threads description {add multithreading support} {
    configure.args-replace --disable-threads \
                           --enable-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"
}

default_variants-append +threads

platform darwin 8 {
    # See http://trac.macports.org/ticket/32930 for why this is needed.
    configure.cppflags-append -DSQLITE_WITHOUT_ZONEMALLOC
}

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
livecheck.regex     {Tcl/Tk (\d+(?:\.\d+)*)</a>}
