# -*- 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.9
revision            1
# Tk (x11/tk) port depends on this version
categories          lang
license             Tcl/Tk
maintainers         {mcalhoun @MarcusCalhoun-Lopez} 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           rmd160  73d064888101ab3a4a832bd9b242937e5f26315c \
                    sha256  ad0cd2de2c87b9ba8086b43957a0de3eb2eb565c7159d5f53ccbba3feb915f4e \
                    size    10000896

# see https://trac.macports.org/ticket/57636
dist_subdir         tcltk_1
distname            ${name}${version}-src
worksrcdir          ${name}${version}/unix
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
}

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-delete --disable-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 +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>}